Copy disabled (too large)
Download .txt
Showing preview only (25,211K chars total). Download the full file to get everything.
Repository: 2014shijina2014/open-capacity-platform
Branch: master
Commit: 2edfb17e330c
Files: 2815
Total size: 22.9 MB
Directory structure:
gitextract_7yrrkpra/
├── .gitee/
│ ├── ISSUE_TEMPLATE.zh-CN.md
│ └── PULL_REQUEST_TEMPLATE.zh-CN.md
├── .gitignore
├── .tgitconfig
├── LICENSE
├── README.md
├── open-api-gateway/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── docker/
│ │ └── Dockerfile
│ ├── java/
│ │ └── com/
│ │ └── open/
│ │ └── capacity/
│ │ ├── GatewayApp.java
│ │ ├── client/
│ │ │ └── oauth2/
│ │ │ ├── OAuth2ClientConfig.java
│ │ │ ├── authorize/
│ │ │ │ ├── AuthorizeConfigManager.java
│ │ │ │ ├── AuthorizeConfigProvider.java
│ │ │ │ ├── OpenAuthorizeConfigManager.java
│ │ │ │ └── provider/
│ │ │ │ └── AuthAuthorizeConfigProvider.java
│ │ │ ├── config/
│ │ │ │ ├── DocumentationConfig.java
│ │ │ │ ├── SecurityHandlerConfig.java
│ │ │ │ └── SwaggerConfig.java
│ │ │ ├── dao/
│ │ │ │ └── ServiceDao.java
│ │ │ ├── filter/
│ │ │ │ ├── AccessFilter.java
│ │ │ │ └── IPFilter.java
│ │ │ ├── service/
│ │ │ │ ├── RbacService.java
│ │ │ │ └── impl/
│ │ │ │ └── RbacServiceImpl.java
│ │ │ └── token/
│ │ │ ├── TokenStoreConfig.java
│ │ │ └── store/
│ │ │ └── RedisTemplateTokenStore.java
│ │ └── controller/
│ │ ├── TestController.java
│ │ └── UserController.java
│ └── resources/
│ ├── application.yml
│ └── bootstrap.yml
├── open-commons/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── open/
│ └── capacity/
│ └── security/
│ ├── dto/
│ │ ├── LoginUser.java
│ │ ├── ResponseInfo.java
│ │ ├── RoleDto.java
│ │ └── UserDto.java
│ └── model/
│ ├── BaseEntity.java
│ ├── Permission.java
│ ├── Role.java
│ ├── SysLogs.java
│ ├── SysUser.java
│ └── TokenModel.java
├── open-config-center/
│ ├── apollo/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── apollo-adminservice/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── assembly/
│ │ │ │ └── assembly-descriptor.xml
│ │ │ ├── main/
│ │ │ │ ├── config/
│ │ │ │ │ ├── apollo-adminservice.conf
│ │ │ │ │ └── app.properties
│ │ │ │ ├── docker/
│ │ │ │ │ └── Dockerfile
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── ctrip/
│ │ │ │ │ └── framework/
│ │ │ │ │ └── apollo/
│ │ │ │ │ └── adminservice/
│ │ │ │ │ ├── AdminServiceApplication.java
│ │ │ │ │ ├── AdminServiceHealthIndicator.java
│ │ │ │ │ ├── aop/
│ │ │ │ │ │ ├── NamespaceAcquireLockAspect.java
│ │ │ │ │ │ ├── NamespaceUnlockAspect.java
│ │ │ │ │ │ └── PreAcquireNamespaceLock.java
│ │ │ │ │ └── controller/
│ │ │ │ │ ├── AppController.java
│ │ │ │ │ ├── AppNamespaceController.java
│ │ │ │ │ ├── ClusterController.java
│ │ │ │ │ ├── CommitController.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── InstanceConfigController.java
│ │ │ │ │ ├── ItemController.java
│ │ │ │ │ ├── ItemSetController.java
│ │ │ │ │ ├── NamespaceBranchController.java
│ │ │ │ │ ├── NamespaceController.java
│ │ │ │ │ ├── NamespaceLockController.java
│ │ │ │ │ ├── ReleaseController.java
│ │ │ │ │ └── ReleaseHistoryController.java
│ │ │ │ ├── resources/
│ │ │ │ │ ├── META-INF/
│ │ │ │ │ │ └── app.properties
│ │ │ │ │ ├── adminservice.properties
│ │ │ │ │ ├── application.yml
│ │ │ │ │ ├── bootstrap.yml
│ │ │ │ │ └── logback.xml
│ │ │ │ └── scripts/
│ │ │ │ ├── shutdown.sh
│ │ │ │ └── startup.sh
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ ├── application.properties
│ │ │ ├── application.yml
│ │ │ ├── bootstrap.yml
│ │ │ ├── controller/
│ │ │ │ ├── cleanup.sql
│ │ │ │ ├── test-itemset.sql
│ │ │ │ └── test-release.sql
│ │ │ ├── data.sql
│ │ │ └── logback-test.xml
│ │ ├── apollo-biz/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── ctrip/
│ │ │ │ └── framework/
│ │ │ │ └── apollo/
│ │ │ │ └── biz/
│ │ │ │ ├── ApolloBizConfig.java
│ │ │ │ ├── auth/
│ │ │ │ │ └── WebSecurityConfig.java
│ │ │ │ ├── config/
│ │ │ │ │ └── BizConfig.java
│ │ │ │ ├── customize/
│ │ │ │ │ ├── BizLoggingCustomizer.java
│ │ │ │ │ └── package-info.java
│ │ │ │ ├── entity/
│ │ │ │ │ ├── Audit.java
│ │ │ │ │ ├── Cluster.java
│ │ │ │ │ ├── Commit.java
│ │ │ │ │ ├── GrayReleaseRule.java
│ │ │ │ │ ├── Instance.java
│ │ │ │ │ ├── InstanceConfig.java
│ │ │ │ │ ├── Item.java
│ │ │ │ │ ├── Namespace.java
│ │ │ │ │ ├── NamespaceLock.java
│ │ │ │ │ ├── Privilege.java
│ │ │ │ │ ├── Release.java
│ │ │ │ │ ├── ReleaseHistory.java
│ │ │ │ │ ├── ReleaseMessage.java
│ │ │ │ │ └── ServerConfig.java
│ │ │ │ ├── eureka/
│ │ │ │ │ └── ApolloEurekaClientConfig.java
│ │ │ │ ├── grayReleaseRule/
│ │ │ │ │ ├── GrayReleaseRuleCache.java
│ │ │ │ │ └── GrayReleaseRulesHolder.java
│ │ │ │ ├── message/
│ │ │ │ │ ├── DatabaseMessageSender.java
│ │ │ │ │ ├── MessageSender.java
│ │ │ │ │ ├── ReleaseMessageListener.java
│ │ │ │ │ ├── ReleaseMessageScanner.java
│ │ │ │ │ └── Topics.java
│ │ │ │ ├── repository/
│ │ │ │ │ ├── AppNamespaceRepository.java
│ │ │ │ │ ├── AppRepository.java
│ │ │ │ │ ├── AuditRepository.java
│ │ │ │ │ ├── ClusterRepository.java
│ │ │ │ │ ├── CommitRepository.java
│ │ │ │ │ ├── GrayReleaseRuleRepository.java
│ │ │ │ │ ├── InstanceConfigRepository.java
│ │ │ │ │ ├── InstanceRepository.java
│ │ │ │ │ ├── ItemRepository.java
│ │ │ │ │ ├── NamespaceLockRepository.java
│ │ │ │ │ ├── NamespaceRepository.java
│ │ │ │ │ ├── PrivilegeRepository.java
│ │ │ │ │ ├── ReleaseHistoryRepository.java
│ │ │ │ │ ├── ReleaseMessageRepository.java
│ │ │ │ │ ├── ReleaseRepository.java
│ │ │ │ │ └── ServerConfigRepository.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── AdminService.java
│ │ │ │ │ ├── AppNamespaceService.java
│ │ │ │ │ ├── AppService.java
│ │ │ │ │ ├── AuditService.java
│ │ │ │ │ ├── BizDBPropertySource.java
│ │ │ │ │ ├── ClusterService.java
│ │ │ │ │ ├── CommitService.java
│ │ │ │ │ ├── InstanceService.java
│ │ │ │ │ ├── ItemService.java
│ │ │ │ │ ├── ItemSetService.java
│ │ │ │ │ ├── NamespaceBranchService.java
│ │ │ │ │ ├── NamespaceLockService.java
│ │ │ │ │ ├── NamespaceService.java
│ │ │ │ │ ├── ReleaseHistoryService.java
│ │ │ │ │ ├── ReleaseMessageService.java
│ │ │ │ │ └── ReleaseService.java
│ │ │ │ └── utils/
│ │ │ │ ├── ConfigChangeContentBuilder.java
│ │ │ │ ├── EntityManagerUtil.java
│ │ │ │ ├── ReleaseKeyGenerator.java
│ │ │ │ └── ReleaseMessageKeyGenerator.java
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ ├── application.properties
│ │ │ ├── data.sql
│ │ │ ├── logback-test.xml
│ │ │ └── sql/
│ │ │ ├── clean.sql
│ │ │ ├── namespace-branch-test.sql
│ │ │ ├── namespace-test.sql
│ │ │ └── release-creation-test.sql
│ │ ├── apollo-client/
│ │ │ ├── README.md
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── ctrip/
│ │ │ │ │ └── framework/
│ │ │ │ │ └── apollo/
│ │ │ │ │ ├── Config.java
│ │ │ │ │ ├── ConfigChangeListener.java
│ │ │ │ │ ├── ConfigFile.java
│ │ │ │ │ ├── ConfigFileChangeListener.java
│ │ │ │ │ ├── ConfigService.java
│ │ │ │ │ ├── build/
│ │ │ │ │ │ └── ApolloInjector.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ └── PropertyChangeType.java
│ │ │ │ │ ├── exceptions/
│ │ │ │ │ │ ├── ApolloConfigException.java
│ │ │ │ │ │ └── ApolloConfigStatusCodeException.java
│ │ │ │ │ ├── internals/
│ │ │ │ │ │ ├── AbstractConfig.java
│ │ │ │ │ │ ├── AbstractConfigFile.java
│ │ │ │ │ │ ├── AbstractConfigRepository.java
│ │ │ │ │ │ ├── ConfigManager.java
│ │ │ │ │ │ ├── ConfigRepository.java
│ │ │ │ │ │ ├── ConfigServiceLocator.java
│ │ │ │ │ │ ├── DefaultConfig.java
│ │ │ │ │ │ ├── DefaultConfigManager.java
│ │ │ │ │ │ ├── DefaultInjector.java
│ │ │ │ │ │ ├── Injector.java
│ │ │ │ │ │ ├── JsonConfigFile.java
│ │ │ │ │ │ ├── LocalFileConfigRepository.java
│ │ │ │ │ │ ├── PlainTextConfigFile.java
│ │ │ │ │ │ ├── PropertiesConfigFile.java
│ │ │ │ │ │ ├── RemoteConfigLongPollService.java
│ │ │ │ │ │ ├── RemoteConfigRepository.java
│ │ │ │ │ │ ├── RepositoryChangeListener.java
│ │ │ │ │ │ ├── SimpleConfig.java
│ │ │ │ │ │ ├── XmlConfigFile.java
│ │ │ │ │ │ ├── YamlConfigFile.java
│ │ │ │ │ │ └── YmlConfigFile.java
│ │ │ │ │ ├── model/
│ │ │ │ │ │ ├── ConfigChange.java
│ │ │ │ │ │ ├── ConfigChangeEvent.java
│ │ │ │ │ │ └── ConfigFileChangeEvent.java
│ │ │ │ │ ├── spi/
│ │ │ │ │ │ ├── ConfigFactory.java
│ │ │ │ │ │ ├── ConfigFactoryManager.java
│ │ │ │ │ │ ├── ConfigRegistry.java
│ │ │ │ │ │ ├── DefaultConfigFactory.java
│ │ │ │ │ │ ├── DefaultConfigFactoryManager.java
│ │ │ │ │ │ └── DefaultConfigRegistry.java
│ │ │ │ │ ├── spring/
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ ├── ApolloAnnotationProcessor.java
│ │ │ │ │ │ │ ├── ApolloConfig.java
│ │ │ │ │ │ │ ├── ApolloConfigChangeListener.java
│ │ │ │ │ │ │ ├── ApolloConfigRegistrar.java
│ │ │ │ │ │ │ ├── EnableApolloConfig.java
│ │ │ │ │ │ │ └── SpringValueProcessor.java
│ │ │ │ │ │ ├── boot/
│ │ │ │ │ │ │ ├── ApolloApplicationContextInitializer.java
│ │ │ │ │ │ │ └── ApolloAutoConfiguration.java
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ ├── ConfigPropertySource.java
│ │ │ │ │ │ │ ├── ConfigPropertySourceFactory.java
│ │ │ │ │ │ │ ├── ConfigPropertySourcesProcessor.java
│ │ │ │ │ │ │ ├── NamespaceHandler.java
│ │ │ │ │ │ │ ├── PropertySourcesConstants.java
│ │ │ │ │ │ │ └── PropertySourcesProcessor.java
│ │ │ │ │ │ ├── package-info.java
│ │ │ │ │ │ ├── property/
│ │ │ │ │ │ │ ├── PlaceholderHelper.java
│ │ │ │ │ │ │ ├── SpringValue.java
│ │ │ │ │ │ │ ├── SpringValueDefinition.java
│ │ │ │ │ │ │ └── SpringValueDefinitionProcessor.java
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── BeanRegistrationUtil.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── ConfigUtil.java
│ │ │ │ │ ├── ExceptionUtil.java
│ │ │ │ │ ├── function/
│ │ │ │ │ │ └── Functions.java
│ │ │ │ │ ├── http/
│ │ │ │ │ │ ├── HttpRequest.java
│ │ │ │ │ │ ├── HttpResponse.java
│ │ │ │ │ │ └── HttpUtil.java
│ │ │ │ │ └── parser/
│ │ │ │ │ ├── ParserException.java
│ │ │ │ │ └── Parsers.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ ├── apollo-1.0.0.xsd
│ │ │ │ ├── services/
│ │ │ │ │ └── com.ctrip.framework.apollo.internals.Injector
│ │ │ │ ├── spring.factories
│ │ │ │ ├── spring.handlers
│ │ │ │ └── spring.schemas
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── com.ctrip.framework.apollo.internals.Injector
│ │ │ ├── log4j2.xml
│ │ │ └── spring/
│ │ │ ├── XmlConfigAnnotationTest1.xml
│ │ │ ├── XmlConfigAnnotationTest2.xml
│ │ │ ├── XmlConfigAnnotationTest3.xml
│ │ │ ├── XmlConfigAnnotationTest4.xml
│ │ │ ├── XmlConfigAnnotationTest5.xml
│ │ │ ├── XmlConfigPlaceholderTest1.xml
│ │ │ ├── XmlConfigPlaceholderTest10.xml
│ │ │ ├── XmlConfigPlaceholderTest2.xml
│ │ │ ├── XmlConfigPlaceholderTest3.xml
│ │ │ ├── XmlConfigPlaceholderTest4.xml
│ │ │ ├── XmlConfigPlaceholderTest5.xml
│ │ │ ├── XmlConfigPlaceholderTest6.xml
│ │ │ ├── XmlConfigPlaceholderTest7.xml
│ │ │ ├── XmlConfigPlaceholderTest8.xml
│ │ │ └── XmlConfigPlaceholderTest9.xml
│ │ ├── apollo-common/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── ctrip/
│ │ │ │ │ └── framework/
│ │ │ │ │ └── apollo/
│ │ │ │ │ └── common/
│ │ │ │ │ ├── ApolloCommonConfig.java
│ │ │ │ │ ├── aop/
│ │ │ │ │ │ └── RepositoryAspect.java
│ │ │ │ │ ├── condition/
│ │ │ │ │ │ ├── ConditionalOnMissingProfile.java
│ │ │ │ │ │ ├── ConditionalOnProfile.java
│ │ │ │ │ │ └── OnProfileCondition.java
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── RefreshableConfig.java
│ │ │ │ │ │ └── RefreshablePropertySource.java
│ │ │ │ │ ├── constants/
│ │ │ │ │ │ ├── GsonType.java
│ │ │ │ │ │ ├── NamespaceBranchStatus.java
│ │ │ │ │ │ ├── ReleaseOperation.java
│ │ │ │ │ │ └── ReleaseOperationContext.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── ApolloInfoController.java
│ │ │ │ │ │ ├── CharacterEncodingFilterConfiguration.java
│ │ │ │ │ │ ├── GlobalDefaultExceptionHandler.java
│ │ │ │ │ │ ├── HttpMessageConverterConfiguration.java
│ │ │ │ │ │ └── WebMvcConfig.java
│ │ │ │ │ ├── customize/
│ │ │ │ │ │ ├── LoggingCustomizer.java
│ │ │ │ │ │ ├── TomcatContainerCustomizer.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ │ ├── datasource/
│ │ │ │ │ │ ├── TitanCondition.java
│ │ │ │ │ │ ├── TitanEntityManager.java
│ │ │ │ │ │ ├── TitanSettings.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ │ ├── dto/
│ │ │ │ │ │ ├── AppDTO.java
│ │ │ │ │ │ ├── AppNamespaceDTO.java
│ │ │ │ │ │ ├── BaseDTO.java
│ │ │ │ │ │ ├── ClusterDTO.java
│ │ │ │ │ │ ├── CommitDTO.java
│ │ │ │ │ │ ├── GrayReleaseRuleDTO.java
│ │ │ │ │ │ ├── GrayReleaseRuleItemDTO.java
│ │ │ │ │ │ ├── InstanceConfigDTO.java
│ │ │ │ │ │ ├── InstanceDTO.java
│ │ │ │ │ │ ├── ItemChangeSets.java
│ │ │ │ │ │ ├── ItemDTO.java
│ │ │ │ │ │ ├── NamespaceDTO.java
│ │ │ │ │ │ ├── NamespaceLockDTO.java
│ │ │ │ │ │ ├── PageDTO.java
│ │ │ │ │ │ ├── ReleaseDTO.java
│ │ │ │ │ │ └── ReleaseHistoryDTO.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── App.java
│ │ │ │ │ │ ├── AppNamespace.java
│ │ │ │ │ │ ├── BaseEntity.java
│ │ │ │ │ │ └── EntityPair.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── AbstractApolloHttpException.java
│ │ │ │ │ │ ├── BadRequestException.java
│ │ │ │ │ │ ├── BeanUtilsException.java
│ │ │ │ │ │ ├── NotFoundException.java
│ │ │ │ │ │ └── ServiceException.java
│ │ │ │ │ ├── http/
│ │ │ │ │ │ ├── MultiResponseEntity.java
│ │ │ │ │ │ └── RichResponseEntity.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── BeanUtils.java
│ │ │ │ │ ├── ExceptionUtils.java
│ │ │ │ │ ├── GrayReleaseRuleItemTransformer.java
│ │ │ │ │ ├── InputValidator.java
│ │ │ │ │ ├── RequestPrecondition.java
│ │ │ │ │ └── UniqueKeyGenerator.java
│ │ │ │ └── resources/
│ │ │ │ ├── application-ctrip.properties
│ │ │ │ ├── application-github.properties
│ │ │ │ ├── application.properties
│ │ │ │ └── datasource.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── ctrip/
│ │ │ └── framework/
│ │ │ └── apollo/
│ │ │ └── common/
│ │ │ ├── AllTests.java
│ │ │ ├── conditional/
│ │ │ │ └── ConditionalOnProfileTest.java
│ │ │ └── utils/
│ │ │ └── InputValidatorTest.java
│ │ ├── apollo-configservice/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── assembly/
│ │ │ │ └── assembly-descriptor.xml
│ │ │ ├── main/
│ │ │ │ ├── config/
│ │ │ │ │ ├── apollo-configservice.conf
│ │ │ │ │ └── app.properties
│ │ │ │ ├── docker/
│ │ │ │ │ └── Dockerfile
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── ctrip/
│ │ │ │ │ └── framework/
│ │ │ │ │ └── apollo/
│ │ │ │ │ ├── configservice/
│ │ │ │ │ │ ├── ConfigServiceApplication.java
│ │ │ │ │ │ ├── ConfigServiceAutoConfiguration.java
│ │ │ │ │ │ ├── ConfigServiceHealthIndicator.java
│ │ │ │ │ │ ├── ServletInitializer.java
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── ConfigController.java
│ │ │ │ │ │ │ ├── ConfigFileController.java
│ │ │ │ │ │ │ ├── NotificationController.java
│ │ │ │ │ │ │ └── NotificationControllerV2.java
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── AppNamespaceServiceWithCache.java
│ │ │ │ │ │ │ ├── ReleaseMessageServiceWithCache.java
│ │ │ │ │ │ │ └── config/
│ │ │ │ │ │ │ ├── AbstractConfigService.java
│ │ │ │ │ │ │ ├── ConfigService.java
│ │ │ │ │ │ │ ├── ConfigServiceWithCache.java
│ │ │ │ │ │ │ └── DefaultConfigService.java
│ │ │ │ │ │ ├── util/
│ │ │ │ │ │ │ ├── InstanceConfigAuditUtil.java
│ │ │ │ │ │ │ ├── NamespaceUtil.java
│ │ │ │ │ │ │ └── WatchKeysUtil.java
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ ├── CaseInsensitiveMapWrapper.java
│ │ │ │ │ │ └── DeferredResultWrapper.java
│ │ │ │ │ └── metaservice/
│ │ │ │ │ ├── ApolloMetaServiceConfig.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ └── ServiceController.java
│ │ │ │ │ └── service/
│ │ │ │ │ └── DiscoveryService.java
│ │ │ │ ├── resources/
│ │ │ │ │ ├── META-INF/
│ │ │ │ │ │ └── app.properties
│ │ │ │ │ ├── application.yml
│ │ │ │ │ ├── bootstrap.yml
│ │ │ │ │ ├── configservice.properties
│ │ │ │ │ └── logback.xml
│ │ │ │ └── scripts/
│ │ │ │ ├── shutdown.sh
│ │ │ │ └── startup.sh
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ ├── application.properties
│ │ │ ├── application.yml
│ │ │ ├── bootstrap.yml
│ │ │ ├── data.sql
│ │ │ ├── integration-test/
│ │ │ │ ├── cleanup.sql
│ │ │ │ ├── test-gray-release.sql
│ │ │ │ ├── test-release-message.sql
│ │ │ │ ├── test-release-public-dc-override.sql
│ │ │ │ ├── test-release-public-default-override.sql
│ │ │ │ └── test-release.sql
│ │ │ └── logback-test.xml
│ │ ├── apollo-core/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── ctrip/
│ │ │ │ │ └── framework/
│ │ │ │ │ ├── apollo/
│ │ │ │ │ │ ├── Apollo.java
│ │ │ │ │ │ ├── core/
│ │ │ │ │ │ │ ├── ConfigConsts.java
│ │ │ │ │ │ │ ├── MetaDomainConsts.java
│ │ │ │ │ │ │ ├── ServiceNameConsts.java
│ │ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ │ ├── ApolloConfig.java
│ │ │ │ │ │ │ │ ├── ApolloConfigNotification.java
│ │ │ │ │ │ │ │ ├── ApolloNotificationMessages.java
│ │ │ │ │ │ │ │ └── ServiceDTO.java
│ │ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ │ ├── ConfigFileFormat.java
│ │ │ │ │ │ │ │ ├── Env.java
│ │ │ │ │ │ │ │ └── EnvUtils.java
│ │ │ │ │ │ │ ├── schedule/
│ │ │ │ │ │ │ │ ├── ExponentialSchedulePolicy.java
│ │ │ │ │ │ │ │ └── SchedulePolicy.java
│ │ │ │ │ │ │ └── utils/
│ │ │ │ │ │ │ ├── ApolloThreadFactory.java
│ │ │ │ │ │ │ ├── ByteUtil.java
│ │ │ │ │ │ │ ├── ClassLoaderUtil.java
│ │ │ │ │ │ │ ├── DNSUtil.java
│ │ │ │ │ │ │ ├── MachineUtil.java
│ │ │ │ │ │ │ ├── PropertiesUtil.java
│ │ │ │ │ │ │ ├── ResourceUtils.java
│ │ │ │ │ │ │ └── StringUtils.java
│ │ │ │ │ │ └── tracer/
│ │ │ │ │ │ ├── Tracer.java
│ │ │ │ │ │ ├── internals/
│ │ │ │ │ │ │ ├── DefaultMessageProducerManager.java
│ │ │ │ │ │ │ ├── NullMessageProducer.java
│ │ │ │ │ │ │ ├── NullMessageProducerManager.java
│ │ │ │ │ │ │ ├── NullTransaction.java
│ │ │ │ │ │ │ └── cat/
│ │ │ │ │ │ │ ├── CatMessageProducer.java
│ │ │ │ │ │ │ ├── CatNames.java
│ │ │ │ │ │ │ └── CatTransaction.java
│ │ │ │ │ │ └── spi/
│ │ │ │ │ │ ├── MessageProducer.java
│ │ │ │ │ │ ├── MessageProducerManager.java
│ │ │ │ │ │ └── Transaction.java
│ │ │ │ │ └── foundation/
│ │ │ │ │ ├── Foundation.java
│ │ │ │ │ ├── internals/
│ │ │ │ │ │ ├── DefaultProviderManager.java
│ │ │ │ │ │ ├── NetworkInterfaceManager.java
│ │ │ │ │ │ ├── NullProviderManager.java
│ │ │ │ │ │ ├── ServiceBootstrap.java
│ │ │ │ │ │ ├── Utils.java
│ │ │ │ │ │ ├── io/
│ │ │ │ │ │ │ ├── BOMInputStream.java
│ │ │ │ │ │ │ ├── ByteOrderMark.java
│ │ │ │ │ │ │ ├── IOUtils.java
│ │ │ │ │ │ │ └── ProxyInputStream.java
│ │ │ │ │ │ └── provider/
│ │ │ │ │ │ ├── DefaultApplicationProvider.java
│ │ │ │ │ │ ├── DefaultNetworkProvider.java
│ │ │ │ │ │ ├── DefaultServerProvider.java
│ │ │ │ │ │ └── NullProvider.java
│ │ │ │ │ └── spi/
│ │ │ │ │ ├── ProviderManager.java
│ │ │ │ │ └── provider/
│ │ │ │ │ ├── ApplicationProvider.java
│ │ │ │ │ ├── NetworkProvider.java
│ │ │ │ │ ├── Provider.java
│ │ │ │ │ └── ServerProvider.java
│ │ │ │ └── resources/
│ │ │ │ ├── META-INF/
│ │ │ │ │ └── services/
│ │ │ │ │ ├── com.ctrip.framework.apollo.tracer.spi.MessageProducerManager
│ │ │ │ │ └── com.ctrip.framework.foundation.spi.ProviderManager
│ │ │ │ └── apollo-env.properties
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ ├── app-with-utf8bom.properties
│ │ │ │ ├── app.properties
│ │ │ │ ├── services/
│ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface1
│ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface3
│ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface4
│ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface5
│ │ │ │ │ └── com.ctrip.framework.apollo.tracer.spi.MessageProducerManager
│ │ │ │ └── some-invalid-app.properties
│ │ │ ├── apollo-env.properties
│ │ │ ├── log4j2.xml
│ │ │ └── properties/
│ │ │ ├── server-with-utf8bom.properties
│ │ │ └── server.properties
│ │ ├── apollo-portal/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── assembly/
│ │ │ │ └── assembly-descriptor.xml
│ │ │ ├── main/
│ │ │ │ ├── config/
│ │ │ │ │ ├── apollo-portal.conf
│ │ │ │ │ └── app.properties
│ │ │ │ ├── docker/
│ │ │ │ │ └── Dockerfile
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── ctrip/
│ │ │ │ │ └── framework/
│ │ │ │ │ └── apollo/
│ │ │ │ │ ├── openapi/
│ │ │ │ │ │ ├── PortalOpenApiConfig.java
│ │ │ │ │ │ ├── auth/
│ │ │ │ │ │ │ └── ConsumerPermissionValidator.java
│ │ │ │ │ │ ├── dto/
│ │ │ │ │ │ │ ├── OpenAppNamespaceDTO.java
│ │ │ │ │ │ │ ├── OpenEnvClusterDTO.java
│ │ │ │ │ │ │ ├── OpenItemDTO.java
│ │ │ │ │ │ │ ├── OpenNamespaceDTO.java
│ │ │ │ │ │ │ ├── OpenNamespaceLockDTO.java
│ │ │ │ │ │ │ └── OpenReleaseDTO.java
│ │ │ │ │ │ ├── entity/
│ │ │ │ │ │ │ ├── Consumer.java
│ │ │ │ │ │ │ ├── ConsumerAudit.java
│ │ │ │ │ │ │ ├── ConsumerRole.java
│ │ │ │ │ │ │ └── ConsumerToken.java
│ │ │ │ │ │ ├── filter/
│ │ │ │ │ │ │ └── ConsumerAuthenticationFilter.java
│ │ │ │ │ │ ├── repository/
│ │ │ │ │ │ │ ├── ConsumerAuditRepository.java
│ │ │ │ │ │ │ ├── ConsumerRepository.java
│ │ │ │ │ │ │ ├── ConsumerRoleRepository.java
│ │ │ │ │ │ │ └── ConsumerTokenRepository.java
│ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ ├── ConsumerRolePermissionService.java
│ │ │ │ │ │ │ └── ConsumerService.java
│ │ │ │ │ │ ├── util/
│ │ │ │ │ │ │ ├── ConsumerAuditUtil.java
│ │ │ │ │ │ │ ├── ConsumerAuthUtil.java
│ │ │ │ │ │ │ └── OpenApiBeanUtils.java
│ │ │ │ │ │ └── v1/
│ │ │ │ │ │ └── controller/
│ │ │ │ │ │ ├── AppController.java
│ │ │ │ │ │ ├── ItemController.java
│ │ │ │ │ │ ├── NamespaceController.java
│ │ │ │ │ │ └── ReleaseController.java
│ │ │ │ │ └── portal/
│ │ │ │ │ ├── PortalApplication.java
│ │ │ │ │ ├── api/
│ │ │ │ │ │ ├── API.java
│ │ │ │ │ │ └── AdminServiceAPI.java
│ │ │ │ │ ├── component/
│ │ │ │ │ │ ├── AdminServiceAddressLocator.java
│ │ │ │ │ │ ├── ItemsComparator.java
│ │ │ │ │ │ ├── PermissionValidator.java
│ │ │ │ │ │ ├── PortalSettings.java
│ │ │ │ │ │ ├── RestTemplateFactory.java
│ │ │ │ │ │ ├── RetryableRestTemplate.java
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ └── PortalConfig.java
│ │ │ │ │ │ ├── emailbuilder/
│ │ │ │ │ │ │ ├── ConfigPublishEmailBuilder.java
│ │ │ │ │ │ │ ├── GrayPublishEmailBuilder.java
│ │ │ │ │ │ │ ├── MergeEmailBuilder.java
│ │ │ │ │ │ │ ├── NormalPublishEmailBuilder.java
│ │ │ │ │ │ │ └── RollbackEmailBuilder.java
│ │ │ │ │ │ └── txtresolver/
│ │ │ │ │ │ ├── ConfigTextResolver.java
│ │ │ │ │ │ ├── FileTextResolver.java
│ │ │ │ │ │ └── PropertyResolver.java
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ ├── PermissionType.java
│ │ │ │ │ │ ├── RoleType.java
│ │ │ │ │ │ └── TracerEventType.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── AppController.java
│ │ │ │ │ │ ├── ClusterController.java
│ │ │ │ │ │ ├── CommitController.java
│ │ │ │ │ │ ├── ConsumerController.java
│ │ │ │ │ │ ├── EnvController.java
│ │ │ │ │ │ ├── FavoriteController.java
│ │ │ │ │ │ ├── InstanceController.java
│ │ │ │ │ │ ├── ItemController.java
│ │ │ │ │ │ ├── NamespaceBranchController.java
│ │ │ │ │ │ ├── NamespaceController.java
│ │ │ │ │ │ ├── NamespaceLockController.java
│ │ │ │ │ │ ├── OrganizationController.java
│ │ │ │ │ │ ├── PageSettingController.java
│ │ │ │ │ │ ├── PermissionController.java
│ │ │ │ │ │ ├── ReleaseController.java
│ │ │ │ │ │ ├── ReleaseHistoryController.java
│ │ │ │ │ │ ├── ServerConfigController.java
│ │ │ │ │ │ ├── SignInController.java
│ │ │ │ │ │ ├── SsoHeartbeatController.java
│ │ │ │ │ │ └── UserInfoController.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── bo/
│ │ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ │ ├── ItemBO.java
│ │ │ │ │ │ │ ├── KVEntity.java
│ │ │ │ │ │ │ ├── NamespaceBO.java
│ │ │ │ │ │ │ ├── ReleaseBO.java
│ │ │ │ │ │ │ ├── ReleaseHistoryBO.java
│ │ │ │ │ │ │ └── UserInfo.java
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── AppModel.java
│ │ │ │ │ │ │ ├── NamespaceCreationModel.java
│ │ │ │ │ │ │ ├── NamespaceReleaseModel.java
│ │ │ │ │ │ │ ├── NamespaceSyncModel.java
│ │ │ │ │ │ │ ├── NamespaceTextModel.java
│ │ │ │ │ │ │ └── Verifiable.java
│ │ │ │ │ │ ├── po/
│ │ │ │ │ │ │ ├── Favorite.java
│ │ │ │ │ │ │ ├── Permission.java
│ │ │ │ │ │ │ ├── Role.java
│ │ │ │ │ │ │ ├── RolePermission.java
│ │ │ │ │ │ │ ├── ServerConfig.java
│ │ │ │ │ │ │ ├── UserPO.java
│ │ │ │ │ │ │ └── UserRole.java
│ │ │ │ │ │ └── vo/
│ │ │ │ │ │ ├── AppRolesAssignedUsers.java
│ │ │ │ │ │ ├── Change.java
│ │ │ │ │ │ ├── EnvClusterInfo.java
│ │ │ │ │ │ ├── ItemDiffs.java
│ │ │ │ │ │ ├── LockInfo.java
│ │ │ │ │ │ ├── NamespaceIdentifier.java
│ │ │ │ │ │ ├── NamespaceRolesAssignedUsers.java
│ │ │ │ │ │ ├── Number.java
│ │ │ │ │ │ ├── Organization.java
│ │ │ │ │ │ ├── PageSetting.java
│ │ │ │ │ │ ├── PermissionCondition.java
│ │ │ │ │ │ └── ReleaseCompareResult.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ └── ChangeType.java
│ │ │ │ │ ├── listener/
│ │ │ │ │ │ ├── AppCreationEvent.java
│ │ │ │ │ │ ├── AppInfoChangedEvent.java
│ │ │ │ │ │ ├── AppInfoChangedListener.java
│ │ │ │ │ │ ├── AppNamespaceCreationEvent.java
│ │ │ │ │ │ ├── ConfigPublishEvent.java
│ │ │ │ │ │ ├── ConfigPublishListener.java
│ │ │ │ │ │ └── CreationListener.java
│ │ │ │ │ ├── repository/
│ │ │ │ │ │ ├── AppNamespaceRepository.java
│ │ │ │ │ │ ├── AppRepository.java
│ │ │ │ │ │ ├── FavoriteRepository.java
│ │ │ │ │ │ ├── PermissionRepository.java
│ │ │ │ │ │ ├── RolePermissionRepository.java
│ │ │ │ │ │ ├── RoleRepository.java
│ │ │ │ │ │ ├── ServerConfigRepository.java
│ │ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ │ └── UserRoleRepository.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── AppNamespaceService.java
│ │ │ │ │ │ ├── AppService.java
│ │ │ │ │ │ ├── ClusterService.java
│ │ │ │ │ │ ├── CommitService.java
│ │ │ │ │ │ ├── FavoriteService.java
│ │ │ │ │ │ ├── InstanceService.java
│ │ │ │ │ │ ├── ItemService.java
│ │ │ │ │ │ ├── NamespaceBranchService.java
│ │ │ │ │ │ ├── NamespaceLockService.java
│ │ │ │ │ │ ├── NamespaceService.java
│ │ │ │ │ │ ├── PortalDBPropertySource.java
│ │ │ │ │ │ ├── ReleaseHistoryService.java
│ │ │ │ │ │ ├── ReleaseService.java
│ │ │ │ │ │ ├── RoleInitializationService.java
│ │ │ │ │ │ └── RolePermissionService.java
│ │ │ │ │ ├── spi/
│ │ │ │ │ │ ├── EmailService.java
│ │ │ │ │ │ ├── LogoutHandler.java
│ │ │ │ │ │ ├── MQService.java
│ │ │ │ │ │ ├── SsoHeartbeatHandler.java
│ │ │ │ │ │ ├── UserInfoHolder.java
│ │ │ │ │ │ ├── UserService.java
│ │ │ │ │ │ ├── configuration/
│ │ │ │ │ │ │ ├── AuthConfiguration.java
│ │ │ │ │ │ │ ├── AuthFilterConfiguration.java
│ │ │ │ │ │ │ ├── EmailConfiguration.java
│ │ │ │ │ │ │ ├── MQConfiguration.java
│ │ │ │ │ │ │ └── RoleConfiguration.java
│ │ │ │ │ │ ├── ctrip/
│ │ │ │ │ │ │ ├── BizLoggingCustomizer.java
│ │ │ │ │ │ │ ├── CtripEmailRequestBuilder.java
│ │ │ │ │ │ │ ├── CtripEmailService.java
│ │ │ │ │ │ │ ├── CtripLogoutHandler.java
│ │ │ │ │ │ │ ├── CtripMQService.java
│ │ │ │ │ │ │ ├── CtripSsoHeartbeatHandler.java
│ │ │ │ │ │ │ ├── CtripUserInfoHolder.java
│ │ │ │ │ │ │ ├── CtripUserService.java
│ │ │ │ │ │ │ ├── WebContextConfiguration.java
│ │ │ │ │ │ │ └── filters/
│ │ │ │ │ │ │ └── UserAccessFilter.java
│ │ │ │ │ │ ├── defaultimpl/
│ │ │ │ │ │ │ ├── DefaultEmailService.java
│ │ │ │ │ │ │ ├── DefaultLogoutHandler.java
│ │ │ │ │ │ │ ├── DefaultMQService.java
│ │ │ │ │ │ │ ├── DefaultRoleInitializationService.java
│ │ │ │ │ │ │ ├── DefaultRolePermissionService.java
│ │ │ │ │ │ │ ├── DefaultSsoHeartbeatHandler.java
│ │ │ │ │ │ │ ├── DefaultUserInfoHolder.java
│ │ │ │ │ │ │ └── DefaultUserService.java
│ │ │ │ │ │ ├── package-info.java
│ │ │ │ │ │ └── springsecurity/
│ │ │ │ │ │ ├── SpringSecurityUserInfoHolder.java
│ │ │ │ │ │ └── SpringSecurityUserService.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── RelativeDateFormat.java
│ │ │ │ │ └── RoleUtils.java
│ │ │ │ ├── resources/
│ │ │ │ │ ├── META-INF/
│ │ │ │ │ │ └── app.properties
│ │ │ │ │ ├── application-ctrip.yml
│ │ │ │ │ ├── application.yml
│ │ │ │ │ ├── logback.xml
│ │ │ │ │ ├── portal.properties
│ │ │ │ │ └── static/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ └── setting.html
│ │ │ │ │ ├── app.html
│ │ │ │ │ ├── cluster.html
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── history.html
│ │ │ │ │ │ └── sync.html
│ │ │ │ │ ├── config.html
│ │ │ │ │ ├── ctrip_sso_heartbeat.html
│ │ │ │ │ ├── default_sso_heartbeat.html
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── example/
│ │ │ │ │ │ └── demo/
│ │ │ │ │ │ └── EcvoicesystemDemoApplicationTests.java
│ │ │ │ │ ├── login.html
│ │ │ │ │ ├── namespace/
│ │ │ │ │ │ └── role.html
│ │ │ │ │ ├── namespace.html
│ │ │ │ │ ├── open/
│ │ │ │ │ │ └── manage.html
│ │ │ │ │ ├── scripts/
│ │ │ │ │ │ ├── AppUtils.js
│ │ │ │ │ │ ├── PageCommon.js
│ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── AppController.js
│ │ │ │ │ │ │ ├── ClusterController.js
│ │ │ │ │ │ │ ├── IndexController.js
│ │ │ │ │ │ │ ├── LoginController.js
│ │ │ │ │ │ │ ├── NamespaceController.js
│ │ │ │ │ │ │ ├── ServerConfigController.js
│ │ │ │ │ │ │ ├── SettingController.js
│ │ │ │ │ │ │ ├── UserController.js
│ │ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ │ ├── ConfigBaseInfoController.js
│ │ │ │ │ │ │ │ ├── ConfigNamespaceController.js
│ │ │ │ │ │ │ │ ├── ReleaseHistoryController.js
│ │ │ │ │ │ │ │ └── SyncConfigController.js
│ │ │ │ │ │ │ ├── open/
│ │ │ │ │ │ │ │ └── OpenManageController.js
│ │ │ │ │ │ │ └── role/
│ │ │ │ │ │ │ └── NamespaceRoleController.js
│ │ │ │ │ │ ├── directive/
│ │ │ │ │ │ │ ├── delete-namespace-modal-directive.js
│ │ │ │ │ │ │ ├── diff-directive.js
│ │ │ │ │ │ │ ├── directive.js
│ │ │ │ │ │ │ ├── gray-release-rules-modal-directive.js
│ │ │ │ │ │ │ ├── item-modal-directive.js
│ │ │ │ │ │ │ ├── merge-and-publish-modal-directive.js
│ │ │ │ │ │ │ ├── namespace-panel-directive.js
│ │ │ │ │ │ │ ├── publish-deny-modal-directive.js
│ │ │ │ │ │ │ ├── release-modal-directive.js
│ │ │ │ │ │ │ ├── rollback-modal-directive.js
│ │ │ │ │ │ │ └── show-text-modal-directive.js
│ │ │ │ │ │ ├── services/
│ │ │ │ │ │ │ ├── AppService.js
│ │ │ │ │ │ │ ├── ClusterService.js
│ │ │ │ │ │ │ ├── CommitService.js
│ │ │ │ │ │ │ ├── CommonService.js
│ │ │ │ │ │ │ ├── ConfigService.js
│ │ │ │ │ │ │ ├── ConsumerService.js
│ │ │ │ │ │ │ ├── EnvService.js
│ │ │ │ │ │ │ ├── EventManager.js
│ │ │ │ │ │ │ ├── FavoriteService.js
│ │ │ │ │ │ │ ├── InstanceService.js
│ │ │ │ │ │ │ ├── NamespaceBranchService.js
│ │ │ │ │ │ │ ├── NamespaceLockService.js
│ │ │ │ │ │ │ ├── NamespaceService.js
│ │ │ │ │ │ │ ├── OrganizationService.js
│ │ │ │ │ │ │ ├── PermissionService.js
│ │ │ │ │ │ │ ├── ReleaseHistoryService.js
│ │ │ │ │ │ │ ├── ReleaseService.js
│ │ │ │ │ │ │ ├── ServerConfigService.js
│ │ │ │ │ │ │ └── UserService.js
│ │ │ │ │ │ └── valdr.js
│ │ │ │ │ ├── server_config.html
│ │ │ │ │ ├── styles/
│ │ │ │ │ │ └── common-style.css
│ │ │ │ │ ├── user-manage.html
│ │ │ │ │ ├── vendor/
│ │ │ │ │ │ └── ui-ace/
│ │ │ │ │ │ ├── ace.js
│ │ │ │ │ │ ├── mode-json.js
│ │ │ │ │ │ ├── mode-properties.js
│ │ │ │ │ │ ├── mode-xml.js
│ │ │ │ │ │ ├── mode-yaml.js
│ │ │ │ │ │ ├── theme-eclipse.js
│ │ │ │ │ │ ├── worker-json.js
│ │ │ │ │ │ └── worker-xml.js
│ │ │ │ │ └── views/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── footer.html
│ │ │ │ │ │ └── nav.html
│ │ │ │ │ └── component/
│ │ │ │ │ ├── confirm-dialog.html
│ │ │ │ │ ├── delete-namespace-modal.html
│ │ │ │ │ ├── diff.html
│ │ │ │ │ ├── entrance.html
│ │ │ │ │ ├── env-selector.html
│ │ │ │ │ ├── gray-release-rules-modal.html
│ │ │ │ │ ├── item-modal.html
│ │ │ │ │ ├── merge-and-publish-modal.html
│ │ │ │ │ ├── multiple-user-selector.html
│ │ │ │ │ ├── namespace-panel-branch-tab.html
│ │ │ │ │ ├── namespace-panel-header.html
│ │ │ │ │ ├── namespace-panel-master-tab.html
│ │ │ │ │ ├── namespace-panel.html
│ │ │ │ │ ├── publish-deny-modal.html
│ │ │ │ │ ├── release-modal.html
│ │ │ │ │ ├── rollback-modal.html
│ │ │ │ │ ├── show-text-modal.html
│ │ │ │ │ └── user-selector.html
│ │ │ │ └── scripts/
│ │ │ │ ├── shutdown.sh
│ │ │ │ └── startup.sh
│ │ │ └── test/
│ │ │ └── resources/
│ │ │ ├── application.properties
│ │ │ ├── application.yml
│ │ │ ├── logback-test.xml
│ │ │ └── sql/
│ │ │ ├── appnamespaceservice/
│ │ │ │ └── init-appnamespace.sql
│ │ │ ├── cleanup.sql
│ │ │ ├── favorites/
│ │ │ │ └── favorites.sql
│ │ │ └── permission/
│ │ │ ├── insert-test-consumerroles.sql
│ │ │ ├── insert-test-permissions.sql
│ │ │ ├── insert-test-rolepermissions.sql
│ │ │ ├── insert-test-roles.sql
│ │ │ └── insert-test-userroles.sql
│ │ ├── pom.xml
│ │ └── scripts/
│ │ ├── build.bat
│ │ ├── build.sh
│ │ ├── docker-quick-start/
│ │ │ ├── docker-compose.yml
│ │ │ └── sql/
│ │ │ ├── apolloconfigdb.sql
│ │ │ └── apolloportaldb.sql
│ │ └── sql/
│ │ ├── apolloconfigdb.sql
│ │ └── apolloportaldb.sql
│ ├── apollo-gateway/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── ApiGateWayApp.java
│ │ │ └── config/
│ │ │ ├── ZuulConfig.java
│ │ │ └── ZuulConfigRreshConfig.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── app.properties
│ │ └── bootstrap.yml
│ └── pom.xml
├── open-db-core/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ ├── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── db/
│ │ │ │ └── config/
│ │ │ │ ├── DruidConfig.java
│ │ │ │ └── dynamic/
│ │ │ │ ├── annotation/
│ │ │ │ │ └── DataSource.java
│ │ │ │ ├── aop/
│ │ │ │ │ └── DataSourceAspect.java
│ │ │ │ └── config/
│ │ │ │ ├── DynamicDataSourceConfig.java
│ │ │ │ └── util/
│ │ │ │ ├── DataSourceHolder.java
│ │ │ │ ├── DataSourceKey.java
│ │ │ │ └── DynamicDataSource.java
│ │ │ └── redis/
│ │ │ └── config/
│ │ │ ├── RedisConfig.java
│ │ │ └── util/
│ │ │ ├── FastJson2JsonRedisSerializer.java
│ │ │ └── RedisObjectSerializer.java
│ │ └── mybatis.cfg.xml
│ └── resources/
│ └── jdbc.bcv.properties
├── open-eureka-center/
│ ├── README.md
│ ├── open-eureka-client/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── EurekaClientApplication.java
│ │ │ ├── config/
│ │ │ │ └── SwaggerConfig.java
│ │ │ ├── controller/
│ │ │ │ ├── EurekaController.java
│ │ │ │ ├── EurekaManageController.java
│ │ │ │ └── HelloController.java
│ │ │ └── health/
│ │ │ ├── EurekaClientHealthIndicator.java
│ │ │ └── EurekaHealthCheckHandler.java
│ │ └── resources/
│ │ ├── application.yml
│ │ └── logback.xml
│ ├── open-eureka-server/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── EurekaServerApp.java
│ │ │ ├── controller/
│ │ │ │ └── EurekaController.java
│ │ │ └── listener/
│ │ │ └── EurekaInstanceCanceledListener.java
│ │ └── resources/
│ │ ├── application.yml
│ │ └── templates/
│ │ ├── .keep
│ │ └── eureka/
│ │ ├── .keep
│ │ ├── header.ftl
│ │ ├── lastn.ftl
│ │ ├── navbar.ftl
│ │ └── status.ftl
│ └── pom.xml
├── open-layui-web/
│ ├── .gitignore
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── docker/
│ │ └── Dockerfile
│ ├── java/
│ │ └── com/
│ │ └── open/
│ │ └── capacity/
│ │ ├── SecurityApplication.java
│ │ ├── activiti/
│ │ │ ├── config/
│ │ │ │ ├── ActPropertiesConfig.java
│ │ │ │ └── ActivitiConfig.java
│ │ │ ├── controller/
│ │ │ │ └── ActivitiController.java
│ │ │ ├── entity/
│ │ │ │ ├── ActAssignee.java
│ │ │ │ ├── ActDeployment.java
│ │ │ │ ├── ActModel.java
│ │ │ │ ├── LeaveOpinion.java
│ │ │ │ ├── ProcessDefinition.java
│ │ │ │ ├── Task.java
│ │ │ │ └── UserLeave.java
│ │ │ ├── mapper/
│ │ │ │ ├── ActAssigneeMapper.java
│ │ │ │ ├── ActAssigneeMapper.xml
│ │ │ │ ├── UserLeaveMapper.java
│ │ │ │ └── UserLeaveMapper.xml
│ │ │ ├── rest/
│ │ │ │ └── editor/
│ │ │ │ ├── main/
│ │ │ │ │ └── StencilsetRestResource.java
│ │ │ │ └── model/
│ │ │ │ ├── ModelEditorJsonRestResource.java
│ │ │ │ └── ModelSaveRestResource.java
│ │ │ ├── service/
│ │ │ │ ├── ActAssigneeService.java
│ │ │ │ ├── UserLeaveService.java
│ │ │ │ └── impl/
│ │ │ │ ├── ActAssigneeServiceImpl.java
│ │ │ │ └── UserLeaveServiceImpl.java
│ │ │ └── util/
│ │ │ ├── AssigneeType.java
│ │ │ ├── Checkbox.java
│ │ │ ├── JsonUtil.java
│ │ │ └── ResultType.java
│ │ └── security/
│ │ ├── advice/
│ │ │ ├── ExceptionHandlerAdvice.java
│ │ │ └── LogAdvice.java
│ │ ├── annotation/
│ │ │ └── LogAnnotation.java
│ │ ├── config/
│ │ │ ├── AsycTaskExecutorConfig.java
│ │ │ ├── LoginPageConfig.java
│ │ │ ├── SecurityConfig.java
│ │ │ ├── SecurityHandlerConfig.java
│ │ │ ├── SwaggerConfig.java
│ │ │ └── WebMvcConfig.java
│ │ ├── controller/
│ │ │ ├── ClientController.java
│ │ │ ├── DictController.java
│ │ │ ├── EurekaController.java
│ │ │ ├── ExcelController.java
│ │ │ ├── FileController.java
│ │ │ ├── GenerateController.java
│ │ │ ├── MailController.java
│ │ │ ├── NoticeController.java
│ │ │ ├── PermissionController.java
│ │ │ ├── RoleController.java
│ │ │ ├── ServiceController.java
│ │ │ ├── SysLogsController.java
│ │ │ └── UserController.java
│ │ ├── dao/
│ │ │ ├── ClientDao.java
│ │ │ ├── ClientDao.xml
│ │ │ ├── DictDao.java
│ │ │ ├── DictDaoxml
│ │ │ ├── FileDao.xml
│ │ │ ├── FileInfoDao.java
│ │ │ ├── MailDao.java
│ │ │ ├── MailDao.xml
│ │ │ ├── NoticeDao.java
│ │ │ ├── NoticeDao.xml
│ │ │ ├── PermissionDao.java
│ │ │ ├── RoleDao.java
│ │ │ ├── RoleDao.xml
│ │ │ ├── ServiceDao.java
│ │ │ ├── SysLogsDao.java
│ │ │ ├── SysLogsDao.xml
│ │ │ ├── TokenDao.java
│ │ │ ├── UserDao.java
│ │ │ └── UserDao.xml
│ │ ├── dto/
│ │ │ ├── BeanField.java
│ │ │ ├── ClientDto.java
│ │ │ ├── GenerateDetail.java
│ │ │ ├── GenerateInput.java
│ │ │ ├── LayuiFile.java
│ │ │ ├── LoginUser.java
│ │ │ ├── NoticeReadVO.java
│ │ │ ├── NoticeVO.java
│ │ │ ├── ResponseInfo.java
│ │ │ ├── RoleDto.java
│ │ │ ├── Token.java
│ │ │ └── UserDto.java
│ │ ├── filter/
│ │ │ └── TokenFilter.java
│ │ ├── model/
│ │ │ ├── BaseEntity.java
│ │ │ ├── Client.java
│ │ │ ├── Dict.java
│ │ │ ├── FileInfo.java
│ │ │ ├── Mail.java
│ │ │ ├── MailTo.java
│ │ │ ├── Notice.java
│ │ │ ├── Permission.java
│ │ │ ├── Role.java
│ │ │ ├── SysLogs.java
│ │ │ ├── SysUser.java
│ │ │ └── TokenModel.java
│ │ ├── page/
│ │ │ └── table/
│ │ │ ├── PageTableArgumentResolver.java
│ │ │ ├── PageTableHandler.java
│ │ │ ├── PageTableRequest.java
│ │ │ └── PageTableResponse.java
│ │ ├── service/
│ │ │ ├── ClientService.java
│ │ │ ├── FileService.java
│ │ │ ├── GenerateService.java
│ │ │ ├── MailService.java
│ │ │ ├── MicroServiceService.java
│ │ │ ├── PermissionService.java
│ │ │ ├── RoleService.java
│ │ │ ├── SendMailSevice.java
│ │ │ ├── SysLogService.java
│ │ │ ├── TokenService.java
│ │ │ ├── UserService.java
│ │ │ └── impl/
│ │ │ ├── ClientServiceImpl.java
│ │ │ ├── FileServiceImpl.java
│ │ │ ├── GenerateServiceImpl.java
│ │ │ ├── MailServiceImpl.java
│ │ │ ├── MicroServicesServiceImpl.java
│ │ │ ├── PermissionServiceImpl.java
│ │ │ ├── RoleServiceImpl.java
│ │ │ ├── SendMailSeviceImpl.java
│ │ │ ├── SysLogServiceImpl.java
│ │ │ ├── TokenServiceImpl.java
│ │ │ ├── UserDetailsServiceImpl.java
│ │ │ └── UserServiceImpl.java
│ │ └── utils/
│ │ ├── ExcelUtil.java
│ │ ├── FileUtil.java
│ │ ├── ResponseUtil.java
│ │ ├── SpringUtil.java
│ │ ├── StrUtil.java
│ │ ├── TemplateUtil.java
│ │ └── UserUtil.java
│ ├── resources/
│ │ ├── activiti.properties
│ │ ├── application.yml
│ │ ├── bootstrap.yml
│ │ ├── bpmn/
│ │ │ ├── demo.xml
│ │ │ ├── leave.bpmn
│ │ │ ├── leave2.bpmn
│ │ │ └── vacationRequest.bpmn
│ │ ├── db/
│ │ │ └── boot_security.sql
│ │ ├── generate/
│ │ │ ├── controller.ftl
│ │ │ ├── dao.ftl
│ │ │ ├── htmlAdd.ftl
│ │ │ ├── htmlList.ftl
│ │ │ ├── htmlUpdate.ftl
│ │ │ ├── java.ftl
│ │ │ └── mapper.ftl
│ │ ├── logback-admin.xml
│ │ ├── mybatis.cfg.xml
│ │ └── stencilset.json
│ └── view/
│ └── static/
│ ├── admin.html
│ ├── assets/
│ │ ├── css/
│ │ │ ├── admin.css
│ │ │ ├── amazeui.css
│ │ │ ├── amazeui.flat.css
│ │ │ ├── app.css
│ │ │ └── login.css
│ │ ├── fonts/
│ │ │ └── FontAwesome.otf
│ │ └── js/
│ │ ├── amazeui.ie8polyfill.js
│ │ ├── amazeui.js
│ │ ├── amazeui.widgets.helper.js
│ │ ├── app.js
│ │ ├── area.js
│ │ ├── config.js
│ │ ├── iscroll.js
│ │ ├── login.js
│ │ └── summernote.js
│ ├── base-component/
│ │ ├── amazeui/
│ │ │ ├── css/
│ │ │ │ ├── admin.css
│ │ │ │ ├── amazeui.css
│ │ │ │ ├── amazeui.flat.css
│ │ │ │ └── app.css
│ │ │ ├── fonts/
│ │ │ │ └── FontAwesome.otf
│ │ │ └── js/
│ │ │ ├── amazeui.ie8polyfill.js
│ │ │ ├── amazeui.js
│ │ │ ├── amazeui.widgets.helper.js
│ │ │ ├── app.js
│ │ │ ├── area.js
│ │ │ ├── config.js
│ │ │ ├── iscroll.js
│ │ │ └── summernote.js
│ │ └── layer/
│ │ ├── layer.js
│ │ └── skin/
│ │ └── layer.css
│ ├── css/
│ │ ├── bootstrap-treeview.css
│ │ ├── font-awesome/
│ │ │ ├── css/
│ │ │ │ └── font-awesome.css
│ │ │ └── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── login.css
│ │ ├── simple-line-icons/
│ │ │ └── css/
│ │ │ └── simple-line-icons.css
│ │ ├── style.css
│ │ ├── treetable/
│ │ │ ├── jquery.treetable.css
│ │ │ ├── jquery.treetable.theme.default.css
│ │ │ └── screen.css
│ │ ├── your_style.css
│ │ └── ztree/
│ │ ├── awesomeStyle/
│ │ │ ├── awesome.css
│ │ │ ├── awesome.less
│ │ │ └── fa.less
│ │ ├── demo.css
│ │ ├── metroStyle/
│ │ │ └── metroStyle.css
│ │ └── zTreeStyle/
│ │ └── zTreeStyle.css
│ ├── editor-app/
│ │ ├── app.js
│ │ ├── editor/
│ │ │ ├── css/
│ │ │ │ └── editor.css
│ │ │ └── oryx.debug.js
│ │ └── libs/
│ │ ├── angular-dragdrop.min-1.0.3.js
│ │ ├── angular-mocks_1.2.13/
│ │ │ └── angular-mocks.js
│ │ ├── angular-resource_1.2.13/
│ │ │ └── angular-resource.js
│ │ ├── angular-route_1.2.13/
│ │ │ └── angular-route.js
│ │ ├── angular-sanitize_1.2.13/
│ │ │ └── angular-sanitize.js
│ │ ├── angular-translate-loader-static-files/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-loader-static-files.js
│ │ ├── angular-translate-storage-cookie/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-storage-cookie.js
│ │ ├── angular-translate_2.4.2/
│ │ │ └── angular-translate.js
│ │ ├── bootstrap-daterangepicker_1.3.7/
│ │ │ ├── daterangepicker-bs3.css
│ │ │ └── daterangepicker.js
│ │ ├── jquery.autogrow-textarea.js
│ │ ├── ng-grid-2.0.7-min.js
│ │ └── ui-utils.min-0.0.4.js
│ ├── img/
│ │ └── bg.jpg1
│ ├── index.html
│ ├── index.html.aaa
│ ├── index.html.bak1
│ ├── index.html.bak2
│ ├── js/
│ │ ├── app.js
│ │ ├── bootstrap/
│ │ │ └── bootstrap-treeview.js
│ │ ├── common.js
│ │ ├── dict.js
│ │ ├── index.js
│ │ ├── jq.js
│ │ ├── libs/
│ │ │ └── jquery.treetable.js
│ │ ├── main.js
│ │ ├── main2.js
│ │ ├── my/
│ │ │ ├── job.js
│ │ │ ├── permission.js
│ │ │ ├── roles/
│ │ │ │ └── role.js
│ │ │ ├── ztree-menu.js
│ │ │ └── ztree-service.js
│ │ ├── plugin/
│ │ │ └── datatables/
│ │ │ ├── Chinese.lang
│ │ │ └── swf/
│ │ │ ├── copy_csv_xls.swf
│ │ │ └── copy_csv_xls_pdf.swf
│ │ └── util/
│ │ └── ajaxutils.js
│ ├── layui/
│ │ ├── css/
│ │ │ ├── layui.css
│ │ │ ├── layui.mobile.css
│ │ │ └── modules/
│ │ │ ├── code.css
│ │ │ ├── laydate/
│ │ │ │ └── default/
│ │ │ │ └── laydate.css
│ │ │ └── layer/
│ │ │ └── default/
│ │ │ └── layer.css
│ │ ├── lay/
│ │ │ └── modules/
│ │ │ ├── carousel.js
│ │ │ ├── code.js
│ │ │ ├── element.js
│ │ │ ├── flow.js
│ │ │ ├── form.js
│ │ │ ├── jquery.js
│ │ │ ├── laydate.js
│ │ │ ├── layedit.js
│ │ │ ├── layer.js
│ │ │ ├── laypage.js
│ │ │ ├── laytpl.js
│ │ │ ├── mobile.js
│ │ │ ├── rate.js
│ │ │ ├── table.js
│ │ │ ├── tree.js
│ │ │ ├── upload.js
│ │ │ └── util.js
│ │ ├── layui.all.js
│ │ └── layui.js
│ ├── lib/
│ │ ├── bootstrap/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-grid.css
│ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ └── bootstrap.js
│ │ ├── font-awesome/
│ │ │ ├── css/
│ │ │ │ └── font-awesome.css
│ │ │ └── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── jquery/
│ │ │ ├── core.js
│ │ │ ├── jquery.js
│ │ │ └── jquery.slim.js
│ │ ├── layer/
│ │ │ ├── layer.js
│ │ │ ├── mobile/
│ │ │ │ ├── layer.js
│ │ │ │ └── need/
│ │ │ │ └── layer.css
│ │ │ └── theme/
│ │ │ └── default/
│ │ │ └── layer.css
│ │ ├── layui/
│ │ │ ├── css/
│ │ │ │ ├── global.css
│ │ │ │ ├── layui.css
│ │ │ │ ├── layui.mobile.css
│ │ │ │ └── modules/
│ │ │ │ ├── code.css
│ │ │ │ ├── laydate/
│ │ │ │ │ └── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ └── layer/
│ │ │ │ └── default/
│ │ │ │ └── layer.css
│ │ │ ├── lay/
│ │ │ │ └── modules/
│ │ │ │ ├── carousel.js
│ │ │ │ ├── code.js
│ │ │ │ ├── element.js
│ │ │ │ ├── flow.js
│ │ │ │ ├── form.js
│ │ │ │ ├── jquery.js
│ │ │ │ ├── laydate.js
│ │ │ │ ├── layedit.js
│ │ │ │ ├── layer.js
│ │ │ │ ├── laypage.js
│ │ │ │ ├── laytpl.js
│ │ │ │ ├── mobile.js
│ │ │ │ ├── table.js
│ │ │ │ ├── tree.js
│ │ │ │ ├── upload.js
│ │ │ │ └── util.js
│ │ │ ├── layui.all.js
│ │ │ ├── layui.js
│ │ │ └── layuiextend/
│ │ │ ├── treeSelect/
│ │ │ │ ├── css/
│ │ │ │ │ └── treeSelect.css
│ │ │ │ └── treeselect.js
│ │ │ ├── treegrid/
│ │ │ │ ├── css/
│ │ │ │ │ └── grid.css
│ │ │ │ ├── grid.js
│ │ │ │ └── treegrid.js
│ │ │ └── ztree/
│ │ │ ├── css/
│ │ │ │ ├── treeselect.css
│ │ │ │ └── ztree/
│ │ │ │ ├── awesome/
│ │ │ │ │ ├── fa.less
│ │ │ │ │ ├── ztree.css
│ │ │ │ │ └── ztree.less
│ │ │ │ ├── default/
│ │ │ │ │ └── ztree.css
│ │ │ │ └── metro/
│ │ │ │ └── ztree.css
│ │ │ └── js/
│ │ │ ├── treeselect.js
│ │ │ └── ztree.js
│ │ ├── popper.js/
│ │ │ ├── popper-utils.js
│ │ │ └── popper.js
│ │ ├── simple-line-icons/
│ │ │ └── css/
│ │ │ └── simple-line-icons.css
│ │ └── skin/
│ │ └── css/
│ │ ├── admin.css
│ │ ├── console.css
│ │ └── login.css
│ ├── login.html
│ ├── login.html.bak
│ ├── login.html.bak1
│ ├── pages/
│ │ ├── activiti/
│ │ │ ├── actList.html
│ │ │ ├── actModelList.html
│ │ │ ├── deploy/
│ │ │ │ └── act-node.html
│ │ │ ├── diagram-viewer/
│ │ │ │ ├── index.html
│ │ │ │ ├── js/
│ │ │ │ │ ├── ActivitiRest.js
│ │ │ │ │ ├── ActivityImpl.js
│ │ │ │ │ ├── Color.js
│ │ │ │ │ ├── LineBreakMeasurer.js
│ │ │ │ │ ├── Polyline.js
│ │ │ │ │ ├── ProcessDiagramCanvas.js
│ │ │ │ │ ├── ProcessDiagramGenerator.js
│ │ │ │ │ ├── jquery/
│ │ │ │ │ │ ├── jquery.asyncqueue.js
│ │ │ │ │ │ ├── jquery.js
│ │ │ │ │ │ └── jquery.progressbar.js
│ │ │ │ │ ├── jstools.js
│ │ │ │ │ ├── raphael.2.1.1.js
│ │ │ │ │ ├── raphael.js
│ │ │ │ │ ├── raphael_uncompressed.js
│ │ │ │ │ └── textlayout.js
│ │ │ │ └── style.css
│ │ │ ├── editor-app/
│ │ │ │ ├── app-cfg.js
│ │ │ │ ├── app.js
│ │ │ │ ├── configuration/
│ │ │ │ │ ├── properties/
│ │ │ │ │ │ ├── assignment-display-template.html
│ │ │ │ │ │ ├── assignment-popup.html
│ │ │ │ │ │ ├── assignment-write-template.html
│ │ │ │ │ │ ├── boolean-property-template.html
│ │ │ │ │ │ ├── condition-expression-display-template.html
│ │ │ │ │ │ ├── condition-expression-popup.html
│ │ │ │ │ │ ├── condition-expression-write-template.html
│ │ │ │ │ │ ├── default-value-display-template.html
│ │ │ │ │ │ ├── event-listeners-display-template.html
│ │ │ │ │ │ ├── event-listeners-popup.html
│ │ │ │ │ │ ├── event-listeners-write-template.html
│ │ │ │ │ │ ├── execution-listeners-display-template.html
│ │ │ │ │ │ ├── execution-listeners-popup.html
│ │ │ │ │ │ ├── execution-listeners-write-template.html
│ │ │ │ │ │ ├── feedback-popup.html
│ │ │ │ │ │ ├── fields-display-template.html
│ │ │ │ │ │ ├── fields-popup.html
│ │ │ │ │ │ ├── fields-write-template.html
│ │ │ │ │ │ ├── form-properties-display-template.html
│ │ │ │ │ │ ├── form-properties-popup.html
│ │ │ │ │ │ ├── form-properties-write-template.html
│ │ │ │ │ │ ├── in-parameters-display-template.html
│ │ │ │ │ │ ├── in-parameters-popup.html
│ │ │ │ │ │ ├── in-parameters-write-template.html
│ │ │ │ │ │ ├── message-definitions-display-template.html
│ │ │ │ │ │ ├── message-definitions-popup.html
│ │ │ │ │ │ ├── message-definitions-write-template.html
│ │ │ │ │ │ ├── message-property-write-template.html
│ │ │ │ │ │ ├── multiinstance-property-write-template.html
│ │ │ │ │ │ ├── out-parameters-display-template.html
│ │ │ │ │ │ ├── out-parameters-popup.html
│ │ │ │ │ │ ├── out-parameters-write-template.html
│ │ │ │ │ │ ├── sequenceflow-order-display-template.html
│ │ │ │ │ │ ├── sequenceflow-order-popup.html
│ │ │ │ │ │ ├── sequenceflow-order-write-template.html
│ │ │ │ │ │ ├── signal-definitions-display-template.html
│ │ │ │ │ │ ├── signal-definitions-popup.html
│ │ │ │ │ │ ├── signal-definitions-write-template.html
│ │ │ │ │ │ ├── signal-property-write-template.html
│ │ │ │ │ │ ├── string-property-write-mode-template.html
│ │ │ │ │ │ ├── subprocess-reference-display-template.html
│ │ │ │ │ │ ├── subprocess-reference-popup.html
│ │ │ │ │ │ ├── subprocess-reference-write-template.html
│ │ │ │ │ │ ├── task-listeners-display-template.html
│ │ │ │ │ │ ├── task-listeners-popup.html
│ │ │ │ │ │ ├── task-listeners-write-template.html
│ │ │ │ │ │ ├── text-popup.html
│ │ │ │ │ │ └── text-property-write-template.html
│ │ │ │ │ ├── properties-assignment-controller.js
│ │ │ │ │ ├── properties-condition-expression-controller.js
│ │ │ │ │ ├── properties-custom-controllers.js
│ │ │ │ │ ├── properties-default-controllers.js
│ │ │ │ │ ├── properties-event-listeners-controller.js
│ │ │ │ │ ├── properties-execution-listeners-controller.js
│ │ │ │ │ ├── properties-fields-controller.js
│ │ │ │ │ ├── properties-form-properties-controller.js
│ │ │ │ │ ├── properties-in-parameters-controller.js
│ │ │ │ │ ├── properties-message-definitions-controller.js
│ │ │ │ │ ├── properties-message-scope-controller.js
│ │ │ │ │ ├── properties-multiinstance-controller.js
│ │ │ │ │ ├── properties-out-parameters-controller.js
│ │ │ │ │ ├── properties-sequenceflow-order-controller.js
│ │ │ │ │ ├── properties-signal-definitions-controller.js
│ │ │ │ │ ├── properties-signal-scope-controller.js
│ │ │ │ │ ├── properties-task-listeners-controller.js
│ │ │ │ │ ├── properties.js
│ │ │ │ │ ├── toolbar-custom-actions.js
│ │ │ │ │ ├── toolbar-default-actions.js
│ │ │ │ │ ├── toolbar.js
│ │ │ │ │ └── url-config.js
│ │ │ │ ├── css/
│ │ │ │ │ ├── style-common.css
│ │ │ │ │ ├── style-editor.css
│ │ │ │ │ └── style.css
│ │ │ │ ├── editor/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── editor.css
│ │ │ │ │ ├── i18n/
│ │ │ │ │ │ ├── translation_de.js
│ │ │ │ │ │ ├── translation_en_us.js
│ │ │ │ │ │ ├── translation_signavio_de.js
│ │ │ │ │ │ └── translation_signavio_en_us.js
│ │ │ │ │ ├── oryx.debug.js
│ │ │ │ │ └── oryx.js
│ │ │ │ ├── editor-config.js
│ │ │ │ ├── editor-controller.js
│ │ │ │ ├── editor-utils.js
│ │ │ │ ├── editor.html
│ │ │ │ ├── eventbus.js
│ │ │ │ ├── header-controller.js
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── en.json
│ │ │ │ │ └── en.json_bak
│ │ │ │ ├── libs/
│ │ │ │ │ ├── angular-dragdrop.min-1.0.3.js
│ │ │ │ │ ├── angular-mocks_1.2.13/
│ │ │ │ │ │ └── angular-mocks.js
│ │ │ │ │ ├── angular-resource_1.2.13/
│ │ │ │ │ │ └── angular-resource.js
│ │ │ │ │ ├── angular-route_1.2.13/
│ │ │ │ │ │ └── angular-route.js
│ │ │ │ │ ├── angular-sanitize_1.2.13/
│ │ │ │ │ │ └── angular-sanitize.js
│ │ │ │ │ ├── angular-translate-loader-static-files/
│ │ │ │ │ │ ├── .bower.json
│ │ │ │ │ │ └── angular-translate-loader-static-files.js
│ │ │ │ │ ├── angular-translate-storage-cookie/
│ │ │ │ │ │ ├── .bower.json
│ │ │ │ │ │ └── angular-translate-storage-cookie.js
│ │ │ │ │ ├── angular-translate_2.4.2/
│ │ │ │ │ │ └── angular-translate.js
│ │ │ │ │ ├── bootstrap-daterangepicker_1.3.7/
│ │ │ │ │ │ ├── daterangepicker-bs3.css
│ │ │ │ │ │ └── daterangepicker.js
│ │ │ │ │ ├── bootstrap_3.1.1/
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ ├── bootstrap-theme.css
│ │ │ │ │ │ │ └── bootstrap.css
│ │ │ │ │ │ └── js/
│ │ │ │ │ │ └── bootstrap.js
│ │ │ │ │ ├── es5-shim-15.3.4.5/
│ │ │ │ │ │ ├── .bower.json
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── CHANGES
│ │ │ │ │ │ ├── CONTRIBUTORS.md
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── es5-sham.js
│ │ │ │ │ │ ├── es5-shim.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ ├── helpers/
│ │ │ │ │ │ │ ├── h-kill.js
│ │ │ │ │ │ │ ├── h-matchers.js
│ │ │ │ │ │ │ └── h.js
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── index.min.html
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ ├── jasmine-html.js
│ │ │ │ │ │ │ ├── jasmine.css
│ │ │ │ │ │ │ ├── jasmine.js
│ │ │ │ │ │ │ └── json2.js
│ │ │ │ │ │ └── spec/
│ │ │ │ │ │ ├── s-array.js
│ │ │ │ │ │ ├── s-date.js
│ │ │ │ │ │ ├── s-function.js
│ │ │ │ │ │ ├── s-number.js
│ │ │ │ │ │ ├── s-object.js
│ │ │ │ │ │ └── s-string.js
│ │ │ │ │ ├── jquery.autogrow-textarea.js
│ │ │ │ │ ├── jquery_1.11.0/
│ │ │ │ │ │ └── jquery.js
│ │ │ │ │ ├── json3_3.2.6/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ └── json3.js
│ │ │ │ │ ├── ng-grid-2.0.7-min.js
│ │ │ │ │ ├── path_parser.js
│ │ │ │ │ ├── prototype-1.5.1.js
│ │ │ │ │ └── ui-utils.min-0.0.4.js
│ │ │ │ ├── partials/
│ │ │ │ │ ├── root-stencil-item-template.html
│ │ │ │ │ └── stencil-item-template.html
│ │ │ │ ├── plugins.xml
│ │ │ │ ├── popups/
│ │ │ │ │ ├── icon-template.html
│ │ │ │ │ ├── save-model.html
│ │ │ │ │ ├── select-shape.html
│ │ │ │ │ └── unsaved-changes.html
│ │ │ │ ├── select-shape-controller.js
│ │ │ │ ├── stencil-controller.js
│ │ │ │ └── toolbar-controller.js
│ │ │ └── modeler.html
│ │ ├── client/
│ │ │ ├── addClient.html
│ │ │ └── clientList.html
│ │ ├── dashboard.html
│ │ ├── dict/
│ │ │ ├── addDict.html
│ │ │ ├── dictList.html
│ │ │ └── updateDict.html
│ │ ├── euraka/
│ │ │ └── euraka.html
│ │ ├── excel/
│ │ │ └── sql.html
│ │ ├── file/
│ │ │ └── fileList.html
│ │ ├── generate/
│ │ │ └── edit.html
│ │ ├── job/
│ │ │ ├── addJob.html
│ │ │ ├── jobList.html
│ │ │ └── updateJob.html
│ │ ├── log/
│ │ │ └── logList.html
│ │ ├── mail/
│ │ │ ├── addMail.html
│ │ │ ├── mailDetail.html
│ │ │ └── mailList.html
│ │ ├── menu/
│ │ │ ├── addMenu.html
│ │ │ ├── icon.html
│ │ │ ├── menuList.html
│ │ │ └── updateMenu.html
│ │ ├── notice/
│ │ │ ├── addNotice.html
│ │ │ ├── detail.html
│ │ │ ├── noticeList.html
│ │ │ ├── noticePubList.html
│ │ │ └── updateNotice.html
│ │ ├── role/
│ │ │ ├── addRole.html
│ │ │ └── roleList.html
│ │ ├── service/
│ │ │ ├── addService.html
│ │ │ ├── icon.html
│ │ │ ├── serviceList.html
│ │ │ └── updateService.html
│ │ └── user/
│ │ ├── addUser.html
│ │ ├── changePassword.html
│ │ ├── updateHeadImg.html
│ │ ├── updateMyself.html
│ │ ├── updateUser.html
│ │ └── userList.html
│ └── public/
│ ├── css/
│ │ ├── index1.css
│ │ └── main.css
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── js/
│ │ ├── common.js
│ │ ├── index.js
│ │ ├── navtab.js
│ │ └── sys/
│ │ ├── config.js
│ │ ├── generator.js
│ │ ├── log.js
│ │ ├── menu.js
│ │ ├── role.js
│ │ ├── schedule.js
│ │ ├── schedule_log.js
│ │ └── user.js
│ ├── libs/
│ │ ├── ajaxupload.js
│ │ ├── app.js
│ │ └── router.js
│ └── plugins/
│ ├── jqgrid/
│ │ ├── grid.locale-cn.js
│ │ ├── ui.jqgrid-bootstrap-ui.css
│ │ ├── ui.jqgrid-bootstrap.css
│ │ └── ui.jqgrid.css
│ ├── layer/
│ │ ├── layer.js
│ │ ├── mobile/
│ │ │ ├── layer.js
│ │ │ └── need/
│ │ │ └── layer.css
│ │ └── skin/
│ │ ├── default/
│ │ │ └── layer.css
│ │ └── moon/
│ │ └── style.css
│ ├── layui/
│ │ ├── css/
│ │ │ ├── layui.css
│ │ │ └── modules/
│ │ │ ├── code.css
│ │ │ ├── icheck/
│ │ │ │ ├── flat/
│ │ │ │ │ ├── _all.css
│ │ │ │ │ ├── aero.css
│ │ │ │ │ ├── blue.css
│ │ │ │ │ ├── flat.css
│ │ │ │ │ ├── green.css
│ │ │ │ │ ├── grey.css
│ │ │ │ │ ├── orange.css
│ │ │ │ │ ├── pink.css
│ │ │ │ │ ├── purple.css
│ │ │ │ │ ├── red.css
│ │ │ │ │ └── yellow.css
│ │ │ │ ├── futurico/
│ │ │ │ │ └── futurico.css
│ │ │ │ ├── icheck.css
│ │ │ │ ├── line/
│ │ │ │ │ ├── _all.css
│ │ │ │ │ ├── aero.css
│ │ │ │ │ ├── blue.css
│ │ │ │ │ ├── green.css
│ │ │ │ │ ├── grey.css
│ │ │ │ │ ├── line.css
│ │ │ │ │ ├── orange.css
│ │ │ │ │ ├── pink.css
│ │ │ │ │ ├── purple.css
│ │ │ │ │ ├── red.css
│ │ │ │ │ └── yellow.css
│ │ │ │ ├── minimal/
│ │ │ │ │ ├── _all.css
│ │ │ │ │ ├── aero.css
│ │ │ │ │ ├── blue.css
│ │ │ │ │ ├── green.css
│ │ │ │ │ ├── grey.css
│ │ │ │ │ ├── minimal.css
│ │ │ │ │ ├── orange.css
│ │ │ │ │ ├── pink.css
│ │ │ │ │ ├── purple.css
│ │ │ │ │ ├── red.css
│ │ │ │ │ └── yellow.css
│ │ │ │ ├── polaris/
│ │ │ │ │ └── polaris.css
│ │ │ │ └── square/
│ │ │ │ ├── _all.css
│ │ │ │ ├── aero.css
│ │ │ │ ├── blue.css
│ │ │ │ ├── green.css
│ │ │ │ ├── grey.css
│ │ │ │ ├── orange.css
│ │ │ │ ├── pink.css
│ │ │ │ ├── purple.css
│ │ │ │ ├── red.css
│ │ │ │ ├── square.css
│ │ │ │ └── yellow.css
│ │ │ ├── laydate/
│ │ │ │ └── laydate.css
│ │ │ └── layer/
│ │ │ └── default/
│ │ │ └── layer.css
│ │ ├── lay/
│ │ │ ├── dest/
│ │ │ │ ├── layui.all.js
│ │ │ │ └── layui.mod.js
│ │ │ ├── lib/
│ │ │ │ └── jquery.js
│ │ │ └── modules/
│ │ │ ├── code.js
│ │ │ ├── element.js
│ │ │ ├── flow.js
│ │ │ ├── form.js
│ │ │ ├── laydate.js
│ │ │ ├── layedit.js
│ │ │ ├── layer.js
│ │ │ ├── laypage.js
│ │ │ ├── laytpl.js
│ │ │ ├── tree.js
│ │ │ ├── upload.js
│ │ │ └── util.js
│ │ ├── layui.js
│ │ └── modules/
│ │ ├── icheck.js
│ │ └── pjax.js
│ └── ztree/
│ └── css/
│ ├── awesomeStyle/
│ │ ├── awesome.css
│ │ ├── awesome.less
│ │ └── fa.less
│ ├── metroStyle/
│ │ └── metroStyle.css
│ └── zTreeStyle/
│ └── zTreeStyle.css
├── open-monitor-center/
│ ├── cachecloud/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── cachecloud-open-client/
│ │ │ ├── cachecloud-jedis/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── redis/
│ │ │ │ │ └── clients/
│ │ │ │ │ ├── jedis/
│ │ │ │ │ │ ├── BinaryClient.java
│ │ │ │ │ │ ├── BinaryJedis.java
│ │ │ │ │ │ ├── BinaryJedisCluster.java
│ │ │ │ │ │ ├── BinaryJedisPubSub.java
│ │ │ │ │ │ ├── BinaryShardedJedis.java
│ │ │ │ │ │ ├── BitOP.java
│ │ │ │ │ │ ├── BitPosParams.java
│ │ │ │ │ │ ├── Builder.java
│ │ │ │ │ │ ├── BuilderFactory.java
│ │ │ │ │ │ ├── Client.java
│ │ │ │ │ │ ├── Connection.java
│ │ │ │ │ │ ├── DebugParams.java
│ │ │ │ │ │ ├── GeoCoordinate.java
│ │ │ │ │ │ ├── GeoRadiusResponse.java
│ │ │ │ │ │ ├── GeoUnit.java
│ │ │ │ │ │ ├── HostAndPort.java
│ │ │ │ │ │ ├── Jedis.java
│ │ │ │ │ │ ├── JedisCluster.java
│ │ │ │ │ │ ├── JedisClusterCommand.java
│ │ │ │ │ │ ├── JedisClusterConnectionHandler.java
│ │ │ │ │ │ ├── JedisClusterInfoCache.java
│ │ │ │ │ │ ├── JedisFactory.java
│ │ │ │ │ │ ├── JedisMonitor.java
│ │ │ │ │ │ ├── JedisPool.java
│ │ │ │ │ │ ├── JedisPoolAbstract.java
│ │ │ │ │ │ ├── JedisPoolConfig.java
│ │ │ │ │ │ ├── JedisPubSub.java
│ │ │ │ │ │ ├── JedisSentinelPool.java
│ │ │ │ │ │ ├── JedisShardInfo.java
│ │ │ │ │ │ ├── JedisSlotBasedConnectionHandler.java
│ │ │ │ │ │ ├── MultiKeyPipelineBase.java
│ │ │ │ │ │ ├── Pipeline.java
│ │ │ │ │ │ ├── PipelineBase.java
│ │ │ │ │ │ ├── PipelineCluster.java
│ │ │ │ │ │ ├── PipelineClusterCommand.java
│ │ │ │ │ │ ├── Protocol.java
│ │ │ │ │ │ ├── Queable.java
│ │ │ │ │ │ ├── RedisPipeline.java
│ │ │ │ │ │ ├── Response.java
│ │ │ │ │ │ ├── ScanParams.java
│ │ │ │ │ │ ├── ScanResult.java
│ │ │ │ │ │ ├── ShardedJedis.java
│ │ │ │ │ │ ├── ShardedJedisPipeline.java
│ │ │ │ │ │ ├── ShardedJedisPool.java
│ │ │ │ │ │ ├── SortingParams.java
│ │ │ │ │ │ ├── SubPubClusterCommand.java
│ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ ├── Tuple.java
│ │ │ │ │ │ ├── ZParams.java
│ │ │ │ │ │ ├── commands/
│ │ │ │ │ │ │ ├── AdvancedBinaryJedisCommands.java
│ │ │ │ │ │ │ ├── AdvancedJedisCommands.java
│ │ │ │ │ │ │ ├── BasicCommands.java
│ │ │ │ │ │ │ ├── BasicRedisPipeline.java
│ │ │ │ │ │ │ ├── BinaryJedisClusterCommands.java
│ │ │ │ │ │ │ ├── BinaryJedisCommands.java
│ │ │ │ │ │ │ ├── BinaryRedisPipeline.java
│ │ │ │ │ │ │ ├── BinaryScriptingCommands.java
│ │ │ │ │ │ │ ├── BinaryScriptingCommandsPipeline.java
│ │ │ │ │ │ │ ├── ClusterCommands.java
│ │ │ │ │ │ │ ├── ClusterPipeline.java
│ │ │ │ │ │ │ ├── Commands.java
│ │ │ │ │ │ │ ├── JedisClusterBinaryScriptingCommands.java
│ │ │ │ │ │ │ ├── JedisClusterCommands.java
│ │ │ │ │ │ │ ├── JedisClusterScriptingCommands.java
│ │ │ │ │ │ │ ├── JedisCommands.java
│ │ │ │ │ │ │ ├── MultiKeyBinaryCommands.java
│ │ │ │ │ │ │ ├── MultiKeyBinaryJedisClusterCommands.java
│ │ │ │ │ │ │ ├── MultiKeyBinaryRedisPipeline.java
│ │ │ │ │ │ │ ├── MultiKeyCommands.java
│ │ │ │ │ │ │ ├── MultiKeyCommandsPipeline.java
│ │ │ │ │ │ │ ├── MultiKeyJedisClusterCommands.java
│ │ │ │ │ │ │ ├── ProtocolCommand.java
│ │ │ │ │ │ │ ├── RedisPipeline.java
│ │ │ │ │ │ │ ├── ScriptingCommands.java
│ │ │ │ │ │ │ ├── ScriptingCommandsPipeline.java
│ │ │ │ │ │ │ └── SentinelCommands.java
│ │ │ │ │ │ ├── exceptions/
│ │ │ │ │ │ │ ├── InvalidURIException.java
│ │ │ │ │ │ │ ├── JedisAskDataException.java
│ │ │ │ │ │ │ ├── JedisClusterCrossSlotException.java
│ │ │ │ │ │ │ ├── JedisClusterException.java
│ │ │ │ │ │ │ ├── JedisClusterMaxRedirectionsException.java
│ │ │ │ │ │ │ ├── JedisConnectionException.java
│ │ │ │ │ │ │ ├── JedisDataException.java
│ │ │ │ │ │ │ ├── JedisException.java
│ │ │ │ │ │ │ ├── JedisMovedDataException.java
│ │ │ │ │ │ │ └── JedisRedirectionException.java
│ │ │ │ │ │ ├── params/
│ │ │ │ │ │ │ ├── Params.java
│ │ │ │ │ │ │ ├── geo/
│ │ │ │ │ │ │ │ └── GeoRadiusParam.java
│ │ │ │ │ │ │ ├── set/
│ │ │ │ │ │ │ │ └── SetParams.java
│ │ │ │ │ │ │ └── sortedset/
│ │ │ │ │ │ │ ├── ZAddParams.java
│ │ │ │ │ │ │ └── ZIncrByParams.java
│ │ │ │ │ │ ├── serializable/
│ │ │ │ │ │ │ ├── ProtostuffSerializer.java
│ │ │ │ │ │ │ └── VO.java
│ │ │ │ │ │ └── valueobject/
│ │ │ │ │ │ ├── RangeScoreVO.java
│ │ │ │ │ │ ├── ReshardProcess.java
│ │ │ │ │ │ └── SortedSetVO.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── ClusterNodeInformation.java
│ │ │ │ │ ├── ClusterNodeInformationParser.java
│ │ │ │ │ ├── Hashing.java
│ │ │ │ │ ├── IOUtils.java
│ │ │ │ │ ├── JedisByteHashMap.java
│ │ │ │ │ ├── JedisClusterCRC16.java
│ │ │ │ │ ├── JedisURIHelper.java
│ │ │ │ │ ├── KeyMergeUtil.java
│ │ │ │ │ ├── MurmurHash.java
│ │ │ │ │ ├── Pool.java
│ │ │ │ │ ├── RedisInputStream.java
│ │ │ │ │ ├── RedisOutputStream.java
│ │ │ │ │ ├── SafeEncoder.java
│ │ │ │ │ ├── ShardInfo.java
│ │ │ │ │ ├── Sharded.java
│ │ │ │ │ └── Slowlog.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── redis/
│ │ │ │ └── clients/
│ │ │ │ └── jedis/
│ │ │ │ ├── PipelineClusterTest.java
│ │ │ │ ├── TupleTest.java
│ │ │ │ └── tests/
│ │ │ │ ├── BuilderFactoryTest.java
│ │ │ │ ├── ConnectionCloseTest.java
│ │ │ │ ├── ConnectionTest.java
│ │ │ │ ├── FragmentedByteArrayInputStream.java
│ │ │ │ ├── HostAndPortUtil.java
│ │ │ │ ├── JedisClusterNodeInformationParserTest.java
│ │ │ │ ├── JedisClusterTest.java
│ │ │ │ ├── JedisPoolTest.java
│ │ │ │ ├── JedisSentinelPoolTest.java
│ │ │ │ ├── JedisSentinelTest.java
│ │ │ │ ├── JedisTest.java
│ │ │ │ ├── JedisTestBase.java
│ │ │ │ ├── KeyMergeUtilTest.java
│ │ │ │ ├── PipeliningTest.java
│ │ │ │ ├── ProtocolTest.java
│ │ │ │ ├── ShardedJedisPipelineTest.java
│ │ │ │ ├── ShardedJedisPoolTest.java
│ │ │ │ ├── ShardedJedisTest.java
│ │ │ │ ├── benchmark/
│ │ │ │ │ ├── CRC16Benchmark.java
│ │ │ │ │ ├── GetSetBenchmark.java
│ │ │ │ │ ├── HashingBenchmark.java
│ │ │ │ │ ├── PipelinedGetSetBenchmark.java
│ │ │ │ │ ├── PoolBenchmark.java
│ │ │ │ │ ├── ProtocolBenchmark.java
│ │ │ │ │ ├── SafeEncoderBenchmark.java
│ │ │ │ │ └── ShardedBenchmark.java
│ │ │ │ ├── collections/
│ │ │ │ │ └── SetFromListTest.java
│ │ │ │ ├── commands/
│ │ │ │ │ ├── AllKindOfValuesCommandsTest.java
│ │ │ │ │ ├── BinaryValuesCommandsTest.java
│ │ │ │ │ ├── BitCommandsTest.java
│ │ │ │ │ ├── ClusterBinaryJedisCommandsTest.java
│ │ │ │ │ ├── ClusterCommandsTest.java
│ │ │ │ │ ├── ClusterScriptingCommandsTest.java
│ │ │ │ │ ├── ConnectionHandlingCommandsTest.java
│ │ │ │ │ ├── ControlCommandsTest.java
│ │ │ │ │ ├── GeoCommandsTest.java
│ │ │ │ │ ├── HashesCommandsTest.java
│ │ │ │ │ ├── HyperLogLogCommandsTest.java
│ │ │ │ │ ├── JedisCommandTestBase.java
│ │ │ │ │ ├── ListCommandsTest.java
│ │ │ │ │ ├── ObjectCommandsTest.java
│ │ │ │ │ ├── PublishSubscribeCommandsTest.java
│ │ │ │ │ ├── ScriptingCommandsTest.java
│ │ │ │ │ ├── SetCommandsTest.java
│ │ │ │ │ ├── SlowlogCommandsTest.java
│ │ │ │ │ ├── SortedSetCommandsTest.java
│ │ │ │ │ ├── SortingCommandsTest.java
│ │ │ │ │ ├── StringValuesCommandsTest.java
│ │ │ │ │ ├── TransactionCommandsTest.java
│ │ │ │ │ └── VariadicCommandsTest.java
│ │ │ │ └── utils/
│ │ │ │ ├── ClientKillerUtil.java
│ │ │ │ ├── FailoverAbortedException.java
│ │ │ │ ├── JedisClusterCRC16Test.java
│ │ │ │ ├── JedisClusterTestUtil.java
│ │ │ │ ├── JedisSentinelTestUtil.java
│ │ │ │ └── JedisURIHelperTest.java
│ │ │ ├── cachecloud-open-client-basic/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── sohu/
│ │ │ │ │ │ └── tv/
│ │ │ │ │ │ ├── cache/
│ │ │ │ │ │ │ └── client/
│ │ │ │ │ │ │ └── common/
│ │ │ │ │ │ │ └── jmx/
│ │ │ │ │ │ │ ├── CachecloudDataWatcher.java
│ │ │ │ │ │ │ └── CachecloudDataWatcherMBean.java
│ │ │ │ │ │ ├── cachecloud/
│ │ │ │ │ │ │ └── client/
│ │ │ │ │ │ │ └── basic/
│ │ │ │ │ │ │ ├── component/
│ │ │ │ │ │ │ │ ├── EmailComponent.java
│ │ │ │ │ │ │ │ ├── EmailComponentImpl.java
│ │ │ │ │ │ │ │ ├── MobileAlertComponent.java
│ │ │ │ │ │ │ │ └── MobileAlertComponentImpl.java
│ │ │ │ │ │ │ ├── exception/
│ │ │ │ │ │ │ │ └── CacheCloudClientHttpUtilsException.java
│ │ │ │ │ │ │ ├── heartbeat/
│ │ │ │ │ │ │ │ ├── ClientStatusEnum.java
│ │ │ │ │ │ │ │ └── HeartbeatInfo.java
│ │ │ │ │ │ │ └── util/
│ │ │ │ │ │ │ ├── ConstUtils.java
│ │ │ │ │ │ │ ├── DateUtils.java
│ │ │ │ │ │ │ ├── HttpUtils.java
│ │ │ │ │ │ │ ├── JsonUtil.java
│ │ │ │ │ │ │ ├── NamedThreadFactory.java
│ │ │ │ │ │ │ ├── NetUtils.java
│ │ │ │ │ │ │ └── StringUtil.java
│ │ │ │ │ │ └── jedis/
│ │ │ │ │ │ └── stat/
│ │ │ │ │ │ ├── constant/
│ │ │ │ │ │ │ └── ClientReportConstant.java
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ └── UsefulDataCollector.java
│ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ ├── ClientCollectDataTypeEnum.java
│ │ │ │ │ │ │ ├── ClientExceptionType.java
│ │ │ │ │ │ │ ├── CostTimeDistriEnum.java
│ │ │ │ │ │ │ └── ValueSizeDistriEnum.java
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── ClientReportBean.java
│ │ │ │ │ │ │ ├── CostTimeDetailStatKey.java
│ │ │ │ │ │ │ ├── CostTimeDetailStatModel.java
│ │ │ │ │ │ │ ├── CostTimeModel.java
│ │ │ │ │ │ │ ├── ExceptionModel.java
│ │ │ │ │ │ │ ├── UsefulDataModel.java
│ │ │ │ │ │ │ └── ValueLengthModel.java
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── AtomicLongMap.java
│ │ │ │ │ │ ├── NamedThreadFactory.java
│ │ │ │ │ │ └── NumberUtil.java
│ │ │ │ │ └── resources/
│ │ │ │ │ └── cacheCloudClient.properties
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── sohu/
│ │ │ │ └── tv/
│ │ │ │ └── base/
│ │ │ │ └── test/
│ │ │ │ └── BaseTest.java
│ │ │ ├── cachecloud-open-client-redis/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── sohu/
│ │ │ │ │ └── tv/
│ │ │ │ │ ├── builder/
│ │ │ │ │ │ ├── ClientBuilder.java
│ │ │ │ │ │ ├── RedisClusterBuilder.java
│ │ │ │ │ │ ├── RedisSentinelBuilder.java
│ │ │ │ │ │ └── RedisStandaloneBuilder.java
│ │ │ │ │ └── cachecloud/
│ │ │ │ │ └── client/
│ │ │ │ │ └── jedis/
│ │ │ │ │ └── stat/
│ │ │ │ │ ├── ClientDataCollectReportExecutor.java
│ │ │ │ │ └── ClientReportDataCenter.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── sohu/
│ │ │ │ └── tv/
│ │ │ │ └── test/
│ │ │ │ ├── base/
│ │ │ │ │ └── BaseTest.java
│ │ │ │ └── client/
│ │ │ │ ├── RedisClusterTest.java
│ │ │ │ ├── RedisSentinelTest.java
│ │ │ │ └── RedisStandaloneTest.java
│ │ │ ├── cachecloud-open-jedis-stat/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── sohu/
│ │ │ │ │ └── tv/
│ │ │ │ │ ├── cache/
│ │ │ │ │ │ └── client/
│ │ │ │ │ │ └── common/
│ │ │ │ │ │ └── jmx/
│ │ │ │ │ │ ├── CachecloudDataWatcher.java
│ │ │ │ │ │ └── CachecloudDataWatcherMBean.java
│ │ │ │ │ └── jedis/
│ │ │ │ │ └── stat/
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ └── ClientReportConstant.java
│ │ │ │ │ ├── data/
│ │ │ │ │ │ └── UsefulDataCollector.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ ├── ClientCollectDataTypeEnum.java
│ │ │ │ │ │ ├── ClientExceptionType.java
│ │ │ │ │ │ ├── CostTimeDistriEnum.java
│ │ │ │ │ │ └── ValueSizeDistriEnum.java
│ │ │ │ │ ├── model/
│ │ │ │ │ │ ├── ClientReportBean.java
│ │ │ │ │ │ ├── CostTimeDetailStatKey.java
│ │ │ │ │ │ ├── CostTimeDetailStatModel.java
│ │ │ │ │ │ ├── CostTimeModel.java
│ │ │ │ │ │ ├── ExceptionModel.java
│ │ │ │ │ │ ├── UsefulDataModel.java
│ │ │ │ │ │ └── ValueLengthModel.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── AtomicLongMap.java
│ │ │ │ │ ├── DateUtils.java
│ │ │ │ │ ├── NamedThreadFactory.java
│ │ │ │ │ └── NumberUtil.java
│ │ │ │ └── test/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── sohu/
│ │ │ │ │ └── tv/
│ │ │ │ │ └── jedis/
│ │ │ │ │ └── stat/
│ │ │ │ │ └── data/
│ │ │ │ │ └── test/
│ │ │ │ │ └── UsefulDataCollectorTest.java
│ │ │ │ └── resources/
│ │ │ │ └── logback-test.xml
│ │ │ └── pom.xml
│ │ ├── cachecloud-open-common/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── sohu/
│ │ │ └── cache/
│ │ │ ├── util/
│ │ │ │ ├── ConstUtils.java
│ │ │ │ └── DemoCodeUtil.java
│ │ │ └── web/
│ │ │ ├── component/
│ │ │ │ ├── EmailComponent.java
│ │ │ │ ├── EmailComponentImpl.java
│ │ │ │ ├── MobileAlertComponent.java
│ │ │ │ └── MobileAlertComponentImpl.java
│ │ │ └── util/
│ │ │ ├── HttpRequestUtil.java
│ │ │ └── LoginUtil.java
│ │ ├── cachecloud-open-web/
│ │ │ ├── .gitignore
│ │ │ ├── nmon/
│ │ │ │ └── linux/
│ │ │ │ ├── x86/
│ │ │ │ │ ├── centos6
│ │ │ │ │ ├── centos7
│ │ │ │ │ ├── debian5
│ │ │ │ │ ├── debian50
│ │ │ │ │ ├── debian6
│ │ │ │ │ ├── debian60
│ │ │ │ │ ├── debian7
│ │ │ │ │ ├── debian8
│ │ │ │ │ ├── fedora14
│ │ │ │ │ ├── fedora15
│ │ │ │ │ ├── fedora16
│ │ │ │ │ ├── fedora17
│ │ │ │ │ ├── fedora18
│ │ │ │ │ ├── fedora19
│ │ │ │ │ ├── fedora20
│ │ │ │ │ ├── fedora21
│ │ │ │ │ ├── fedora22
│ │ │ │ │ ├── fedoracore4
│ │ │ │ │ ├── knoppix4
│ │ │ │ │ ├── knoppix5
│ │ │ │ │ ├── knoppix6
│ │ │ │ │ ├── knoppix7
│ │ │ │ │ ├── linux
│ │ │ │ │ ├── linux_old
│ │ │ │ │ ├── mint12
│ │ │ │ │ ├── mint14
│ │ │ │ │ ├── mint15
│ │ │ │ │ ├── mint16
│ │ │ │ │ ├── mint17
│ │ │ │ │ ├── mint7
│ │ │ │ │ ├── mint8
│ │ │ │ │ ├── opensuse11
│ │ │ │ │ ├── opensuse12
│ │ │ │ │ ├── opensuse13
│ │ │ │ │ ├── rhel5
│ │ │ │ │ ├── rhel52
│ │ │ │ │ ├── rhel54
│ │ │ │ │ ├── rhel6
│ │ │ │ │ ├── rhel65
│ │ │ │ │ ├── rhel7
│ │ │ │ │ ├── rhel71
│ │ │ │ │ ├── rhel72
│ │ │ │ │ ├── sles11
│ │ │ │ │ ├── sles12
│ │ │ │ │ ├── sles13
│ │ │ │ │ ├── ubuntu10
│ │ │ │ │ ├── ubuntu1004
│ │ │ │ │ ├── ubuntu1104
│ │ │ │ │ ├── ubuntu1110
│ │ │ │ │ ├── ubuntu13
│ │ │ │ │ ├── ubuntu14
│ │ │ │ │ ├── ubuntu1404
│ │ │ │ │ ├── ubuntu15
│ │ │ │ │ ├── ubuntu1504
│ │ │ │ │ ├── ubuntu1510
│ │ │ │ │ ├── ubuntu6
│ │ │ │ │ ├── ubuntu7
│ │ │ │ │ ├── ubuntu8
│ │ │ │ │ ├── ubuntu810
│ │ │ │ │ ├── ubuntu9
│ │ │ │ │ └── ubuntu910
│ │ │ │ └── x86_64/
│ │ │ │ ├── centos6
│ │ │ │ ├── centos7
│ │ │ │ ├── debian5
│ │ │ │ ├── debian50
│ │ │ │ ├── debian6
│ │ │ │ ├── debian60
│ │ │ │ ├── debian7
│ │ │ │ ├── debian8
│ │ │ │ ├── fedora14
│ │ │ │ ├── fedora15
│ │ │ │ ├── fedora16
│ │ │ │ ├── fedora17
│ │ │ │ ├── fedora18
│ │ │ │ ├── fedora19
│ │ │ │ ├── fedora20
│ │ │ │ ├── fedora21
│ │ │ │ ├── fedora22
│ │ │ │ ├── linux
│ │ │ │ ├── linux_old
│ │ │ │ ├── mint12
│ │ │ │ ├── mint14
│ │ │ │ ├── mint15
│ │ │ │ ├── mint16
│ │ │ │ ├── mint17
│ │ │ │ ├── opensuse11
│ │ │ │ ├── opensuse12
│ │ │ │ ├── opensuse13
│ │ │ │ ├── rhel4
│ │ │ │ ├── rhel45
│ │ │ │ ├── rhel5
│ │ │ │ ├── rhel54
│ │ │ │ ├── rhel6
│ │ │ │ ├── rhel7
│ │ │ │ ├── sles11
│ │ │ │ ├── sles12
│ │ │ │ ├── sles13
│ │ │ │ ├── ubuntu1004
│ │ │ │ ├── ubuntu1010
│ │ │ │ ├── ubuntu1104
│ │ │ │ ├── ubuntu1110
│ │ │ │ ├── ubuntu13
│ │ │ │ ├── ubuntu14
│ │ │ │ ├── ubuntu1404
│ │ │ │ ├── ubuntu1410
│ │ │ │ ├── ubuntu15
│ │ │ │ ├── ubuntu6
│ │ │ │ ├── ubuntu7
│ │ │ │ ├── ubuntu810
│ │ │ │ └── ubuntu910
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── sohu/
│ │ │ │ │ └── cache/
│ │ │ │ │ ├── alert/
│ │ │ │ │ │ ├── AppAlertService.java
│ │ │ │ │ │ ├── InstanceAlertService.java
│ │ │ │ │ │ ├── bean/
│ │ │ │ │ │ │ └── AlertConfigBaseData.java
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── AppAlertServiceImpl.java
│ │ │ │ │ │ │ ├── BaseAlertService.java
│ │ │ │ │ │ │ └── InstanceAlertServiceImpl.java
│ │ │ │ │ │ └── strategy/
│ │ │ │ │ │ ├── AlertConfigStrategy.java
│ │ │ │ │ │ ├── AofCurrentSizeAlertStrategy.java
│ │ │ │ │ │ ├── ClientBiggestInputBufAlertStrategy.java
│ │ │ │ │ │ ├── ClientLongestOutputListAlertStrategy.java
│ │ │ │ │ │ ├── ClusterSlotsOkAlertStrategy.java
│ │ │ │ │ │ ├── ClusterStateAlertStrategy.java
│ │ │ │ │ │ ├── InstantaneousOpsPerSecAlertStrategy.java
│ │ │ │ │ │ ├── LatestForkUsecAlertStrategy.java
│ │ │ │ │ │ ├── MasterSlaveOffsetAlertStrategy.java
│ │ │ │ │ │ ├── MemFragmentationRatioAlertStrategy.java
│ │ │ │ │ │ ├── MinuteAofDelayedFsyncAlertStrategy.java
│ │ │ │ │ │ ├── MinuteRejectedConnectionsAlertStrategy.java
│ │ │ │ │ │ ├── MinuteSyncFullAlertStrategy.java
│ │ │ │ │ │ ├── MinuteSyncPartialErrAlertStrategy.java
│ │ │ │ │ │ ├── MinuteSyncPartialOkAlertStrategy.java
│ │ │ │ │ │ ├── MinuteTotalNetInputMBytesAlertStrategy.java
│ │ │ │ │ │ ├── MinuteTotalNetOutputMBytesAlertStrategy.java
│ │ │ │ │ │ └── RdbLastBgsaveStatusAlertStrategy.java
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── AliasesResourceSqlSessionFactoryBean.java
│ │ │ │ │ │ ├── ApplicationStarter.java
│ │ │ │ │ │ └── JvmConfiger.java
│ │ │ │ │ ├── async/
│ │ │ │ │ │ ├── AsyncService.java
│ │ │ │ │ │ ├── AsyncThreadPoolFactory.java
│ │ │ │ │ │ ├── KeyCallable.java
│ │ │ │ │ │ ├── KeyFuture.java
│ │ │ │ │ │ ├── NamedThreadFactory.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ └── AsyncServiceImpl.java
│ │ │ │ │ ├── client/
│ │ │ │ │ │ ├── heartbeat/
│ │ │ │ │ │ │ ├── RedisClientController.java
│ │ │ │ │ │ │ └── RedisClientReportDataController.java
│ │ │ │ │ │ └── service/
│ │ │ │ │ │ ├── AppInstanceClientRelationService.java
│ │ │ │ │ │ ├── ClientReportCostDistriService.java
│ │ │ │ │ │ ├── ClientReportDataService.java
│ │ │ │ │ │ ├── ClientReportDataSizeService.java
│ │ │ │ │ │ ├── ClientReportExceptionService.java
│ │ │ │ │ │ ├── ClientReportInstanceService.java
│ │ │ │ │ │ ├── ClientReportValueDistriService.java
│ │ │ │ │ │ ├── ClientVersionService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── AppInstanceClientRelationServiceImpl.java
│ │ │ │ │ │ ├── ClientReportCostDistriServiceImpl.java
│ │ │ │ │ │ ├── ClientReportDataServiceImpl.java
│ │ │ │ │ │ ├── ClientReportDataSizeServiceImpl.java
│ │ │ │ │ │ ├── ClientReportExceptionServiceImpl.java
│ │ │ │ │ │ ├── ClientReportInstanceServiceImpl.java
│ │ │ │ │ │ ├── ClientReportValueDistriServiceImplV2.java
│ │ │ │ │ │ └── ClientVersionServiceImpl.java
│ │ │ │ │ ├── constant/
│ │ │ │ │ │ ├── AppAuditLogTypeEnum.java
│ │ │ │ │ │ ├── AppAuditType.java
│ │ │ │ │ │ ├── AppCheckEnum.java
│ │ │ │ │ │ ├── AppDataMigrateEnum.java
│ │ │ │ │ │ ├── AppDataMigrateResult.java
│ │ │ │ │ │ ├── AppDataMigrateStatusEnum.java
│ │ │ │ │ │ ├── AppDescEnum.java
│ │ │ │ │ │ ├── AppStatusEnum.java
│ │ │ │ │ │ ├── AppTopology.java
│ │ │ │ │ │ ├── AppUserTypeEnum.java
│ │ │ │ │ │ ├── BaseConstant.java
│ │ │ │ │ │ ├── ClientStatusEnum.java
│ │ │ │ │ │ ├── ClusterOperateResult.java
│ │ │ │ │ │ ├── CommandResult.java
│ │ │ │ │ │ ├── DataFormatCheckResult.java
│ │ │ │ │ │ ├── EmptyObjectConstant.java
│ │ │ │ │ │ ├── ErrorMessageEnum.java
│ │ │ │ │ │ ├── HorizontalResult.java
│ │ │ │ │ │ ├── ImportAppResult.java
│ │ │ │ │ │ ├── InstanceStatusEnum.java
│ │ │ │ │ │ ├── MachineConstant.java
│ │ │ │ │ │ ├── MachineInfoEnum.java
│ │ │ │ │ │ ├── PipelineEnum.java
│ │ │ │ │ │ ├── RedisConfigTemplateChangeEnum.java
│ │ │ │ │ │ ├── RedisConstant.java
│ │ │ │ │ │ ├── RedisExcludeCommand.java
│ │ │ │ │ │ ├── RedisMigrateToolConstant.java
│ │ │ │ │ │ ├── ReshardStatusEnum.java
│ │ │ │ │ │ ├── SymbolConstant.java
│ │ │ │ │ │ ├── TimeDimensionalityEnum.java
│ │ │ │ │ │ └── UserLoginTypeEnum.java
│ │ │ │ │ ├── dao/
│ │ │ │ │ │ ├── AppAuditDao.java
│ │ │ │ │ │ ├── AppAuditLogDao.java
│ │ │ │ │ │ ├── AppClientCostTimeStatDao.java
│ │ │ │ │ │ ├── AppClientCostTimeTotalStatDao.java
│ │ │ │ │ │ ├── AppClientExceptionStatDao.java
│ │ │ │ │ │ ├── AppClientReportDataSizeDao.java
│ │ │ │ │ │ ├── AppClientValueStatDao.java
│ │ │ │ │ │ ├── AppClientVersionDao.java
│ │ │ │ │ │ ├── AppDailyDao.java
│ │ │ │ │ │ ├── AppDao.java
│ │ │ │ │ │ ├── AppDataMigrateStatusDao.java
│ │ │ │ │ │ ├── AppInstanceClientRelationDao.java
│ │ │ │ │ │ ├── AppStatsDao.java
│ │ │ │ │ │ ├── AppToUserDao.java
│ │ │ │ │ │ ├── AppUserDao.java
│ │ │ │ │ │ ├── ConfigDao.java
│ │ │ │ │ │ ├── InstanceAlertConfigDao.java
│ │ │ │ │ │ ├── InstanceConfigDao.java
│ │ │ │ │ │ ├── InstanceDao.java
│ │ │ │ │ │ ├── InstanceFaultDao.java
│ │ │ │ │ │ ├── InstanceReshardProcessDao.java
│ │ │ │ │ │ ├── InstanceSlowLogDao.java
│ │ │ │ │ │ ├── InstanceStatsDao.java
│ │ │ │ │ │ ├── MachineDao.java
│ │ │ │ │ │ ├── MachineStatsDao.java
│ │ │ │ │ │ ├── MemFaultDao.java
│ │ │ │ │ │ ├── QuartzDao.java
│ │ │ │ │ │ └── ServerStatusDao.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── AppAudit.java
│ │ │ │ │ │ ├── AppAuditLog.java
│ │ │ │ │ │ ├── AppClientCostTimeStat.java
│ │ │ │ │ │ ├── AppClientCostTimeTotalStat.java
│ │ │ │ │ │ ├── AppClientDataSizeStat.java
│ │ │ │ │ │ ├── AppClientExceptionStat.java
│ │ │ │ │ │ ├── AppClientValueDistriSimple.java
│ │ │ │ │ │ ├── AppClientValueDistriStat.java
│ │ │ │ │ │ ├── AppClientValueDistriStatTotal.java
│ │ │ │ │ │ ├── AppClientVersion.java
│ │ │ │ │ │ ├── AppCommandGroup.java
│ │ │ │ │ │ ├── AppCommandStats.java
│ │ │ │ │ │ ├── AppDailyData.java
│ │ │ │ │ │ ├── AppDataMigrateSearch.java
│ │ │ │ │ │ ├── AppDataMigrateStatus.java
│ │ │ │ │ │ ├── AppDesc.java
│ │ │ │ │ │ ├── AppInstanceClientRelation.java
│ │ │ │ │ │ ├── AppSearch.java
│ │ │ │ │ │ ├── AppStats.java
│ │ │ │ │ │ ├── AppToUser.java
│ │ │ │ │ │ ├── AppUser.java
│ │ │ │ │ │ ├── ClientInstanceException.java
│ │ │ │ │ │ ├── InstanceAlertConfig.java
│ │ │ │ │ │ ├── InstanceAlertValueResult.java
│ │ │ │ │ │ ├── InstanceCommandStats.java
│ │ │ │ │ │ ├── InstanceConfig.java
│ │ │ │ │ │ ├── InstanceFault.java
│ │ │ │ │ │ ├── InstanceInfo.java
│ │ │ │ │ │ ├── InstanceReshardProcess.java
│ │ │ │ │ │ ├── InstanceSlotModel.java
│ │ │ │ │ │ ├── InstanceSlowLog.java
│ │ │ │ │ │ ├── InstanceStats.java
│ │ │ │ │ │ ├── LoginResult.java
│ │ │ │ │ │ ├── MachineInfo.java
│ │ │ │ │ │ ├── MachineMemInfo.java
│ │ │ │ │ │ ├── MachineStats.java
│ │ │ │ │ │ ├── ServerInfo.java
│ │ │ │ │ │ ├── ServerStatus.java
│ │ │ │ │ │ ├── StandardStats.java
│ │ │ │ │ │ ├── SystemConfig.java
│ │ │ │ │ │ ├── TimeBetween.java
│ │ │ │ │ │ ├── TimeDimensionality.java
│ │ │ │ │ │ └── TriggerInfo.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── IllegalParamException.java
│ │ │ │ │ │ └── SSHException.java
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── AsyncLoad.java
│ │ │ │ │ │ ├── MachineInitLoad.java
│ │ │ │ │ │ └── RedisInitLoad.java
│ │ │ │ │ ├── inspect/
│ │ │ │ │ │ ├── InspectHandler.java
│ │ │ │ │ │ ├── InspectParamEnum.java
│ │ │ │ │ │ ├── Inspector.java
│ │ │ │ │ │ ├── InspectorJob.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── AbstractInspectHandler.java
│ │ │ │ │ │ ├── AppClientConnInspector.java
│ │ │ │ │ │ ├── AppInspectHandler.java
│ │ │ │ │ │ ├── AppMemInspector.java
│ │ │ │ │ │ ├── HostInspectHandler.java
│ │ │ │ │ │ ├── InstanceRunInspector.java
│ │ │ │ │ │ └── RedisIsolationPersistenceInspector.java
│ │ │ │ │ ├── interceptor/
│ │ │ │ │ │ ├── AppAndInstanceAuthorityInterceptor.java
│ │ │ │ │ │ ├── FrontUserLoginInterceptor.java
│ │ │ │ │ │ ├── LoginInterceptorUtil.java
│ │ │ │ │ │ └── ManageUserLoginInterceptor.java
│ │ │ │ │ ├── jmx/
│ │ │ │ │ │ ├── ErrorLoggerWatcher.java
│ │ │ │ │ │ ├── ErrorLoggerWatcherMBean.java
│ │ │ │ │ │ ├── ThreadPoolStatisticsImpl.java
│ │ │ │ │ │ └── ThreadPoolStatisticsMBean.java
│ │ │ │ │ ├── log/
│ │ │ │ │ │ └── statistic/
│ │ │ │ │ │ └── ErrorStatisticsAppender.java
│ │ │ │ │ ├── machine/
│ │ │ │ │ │ ├── MachineCenter.java
│ │ │ │ │ │ ├── MachineDeployCenter.java
│ │ │ │ │ │ ├── MachineProperty.java
│ │ │ │ │ │ ├── PortGenerator.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── MachineCenterImpl.java
│ │ │ │ │ │ └── MachineDeployCenterImpl.java
│ │ │ │ │ ├── protocol/
│ │ │ │ │ │ ├── MachineProtocol.java
│ │ │ │ │ │ └── RedisProtocol.java
│ │ │ │ │ ├── redis/
│ │ │ │ │ │ ├── RedisCenter.java
│ │ │ │ │ │ ├── RedisClusterNode.java
│ │ │ │ │ │ ├── RedisClusterReshard.java
│ │ │ │ │ │ ├── RedisConfigTemplateService.java
│ │ │ │ │ │ ├── RedisDeployCenter.java
│ │ │ │ │ │ ├── enums/
│ │ │ │ │ │ │ ├── InstanceAlertCheckCycleEnum.java
│ │ │ │ │ │ │ ├── InstanceAlertCompareTypeEnum.java
│ │ │ │ │ │ │ ├── InstanceAlertStatusEnum.java
│ │ │ │ │ │ │ ├── InstanceAlertTypeEnum.java
│ │ │ │ │ │ │ ├── RedisAlertConfigEnum.java
│ │ │ │ │ │ │ ├── RedisClusterConfigEnum.java
│ │ │ │ │ │ │ ├── RedisClusterInfoEnum.java
│ │ │ │ │ │ │ ├── RedisConfigEnum.java
│ │ │ │ │ │ │ ├── RedisInfoEnum.java
│ │ │ │ │ │ │ ├── RedisReadOnlyCommandEnum.java
│ │ │ │ │ │ │ └── RedisSentinelConfigEnum.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── RedisCenterImpl.java
│ │ │ │ │ │ ├── RedisConfigTemplateServiceImpl.java
│ │ │ │ │ │ └── RedisDeployCenterImpl.java
│ │ │ │ │ ├── schedule/
│ │ │ │ │ │ ├── SchedulerCenter.java
│ │ │ │ │ │ ├── TriggerCenter.java
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── SchedulerCenterImpl.java
│ │ │ │ │ │ │ └── TriggerCenterImpl.java
│ │ │ │ │ │ └── jobs/
│ │ │ │ │ │ ├── AppDailyJob.java
│ │ │ │ │ │ ├── CacheBaseJob.java
│ │ │ │ │ │ ├── CleanUpStatisticsJob.java
│ │ │ │ │ │ ├── ErrorStatisticsJob.java
│ │ │ │ │ │ ├── InstanceAlertValueJob.java
│ │ │ │ │ │ ├── MachineJob.java
│ │ │ │ │ │ ├── MachineMonitorJob.java
│ │ │ │ │ │ ├── RedisJob.java
│ │ │ │ │ │ ├── RedisSlowLogJob.java
│ │ │ │ │ │ ├── ServerJob.java
│ │ │ │ │ │ └── SystemConfigRefreshJob.java
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── ServerStatusCollector.java
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ ├── CPU.java
│ │ │ │ │ │ │ ├── Connection.java
│ │ │ │ │ │ │ ├── Disk.java
│ │ │ │ │ │ │ ├── LineParser.java
│ │ │ │ │ │ │ ├── Load.java
│ │ │ │ │ │ │ ├── Memory.java
│ │ │ │ │ │ │ ├── Net.java
│ │ │ │ │ │ │ ├── OS.java
│ │ │ │ │ │ │ ├── OSInfo.java
│ │ │ │ │ │ │ └── Server.java
│ │ │ │ │ │ └── nmon/
│ │ │ │ │ │ └── NMONService.java
│ │ │ │ │ ├── ssh/
│ │ │ │ │ │ ├── SSHTemplate.java
│ │ │ │ │ │ └── SSHUtil.java
│ │ │ │ │ ├── stats/
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── AppDailyDataCenter.java
│ │ │ │ │ │ │ ├── AppDataMigrateCenter.java
│ │ │ │ │ │ │ ├── AppDeployCenter.java
│ │ │ │ │ │ │ ├── AppStatsCenter.java
│ │ │ │ │ │ │ ├── ImportAppCenter.java
│ │ │ │ │ │ │ └── impl/
│ │ │ │ │ │ │ ├── AppDailyDataCenterImpl.java
│ │ │ │ │ │ │ ├── AppDataMigrateCenterImpl.java
│ │ │ │ │ │ │ ├── AppDeployCenterImpl.java
│ │ │ │ │ │ │ ├── AppStatsCenterImpl.java
│ │ │ │ │ │ │ └── ImportAppCenterImpl.java
│ │ │ │ │ │ └── instance/
│ │ │ │ │ │ ├── InstanceAlertConfigService.java
│ │ │ │ │ │ ├── InstanceDeployCenter.java
│ │ │ │ │ │ ├── InstanceStatsCenter.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── InstanceAlertConfigServiceImpl.java
│ │ │ │ │ │ ├── InstanceDeployCenterImpl.java
│ │ │ │ │ │ └── InstanceStatsCenterImpl.java
│ │ │ │ │ ├── util/
│ │ │ │ │ │ ├── AppKeyUtil.java
│ │ │ │ │ │ ├── IdempotentConfirmer.java
│ │ │ │ │ │ ├── IntegerUtil.java
│ │ │ │ │ │ ├── JsonUtil.java
│ │ │ │ │ │ ├── NMONFileFactory.java
│ │ │ │ │ │ ├── OSFactory.java
│ │ │ │ │ │ ├── ObjectConvert.java
│ │ │ │ │ │ ├── ScheduleUtil.java
│ │ │ │ │ │ ├── StringUtil.java
│ │ │ │ │ │ └── TypeUtil.java
│ │ │ │ │ └── web/
│ │ │ │ │ ├── chart/
│ │ │ │ │ │ ├── key/
│ │ │ │ │ │ │ └── ChartKeysUtil.java
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ ├── AreaChartEntity.java
│ │ │ │ │ │ ├── ChartEntity.java
│ │ │ │ │ │ ├── HighchartPoint.java
│ │ │ │ │ │ ├── SimpleChartData.java
│ │ │ │ │ │ └── SplineChartEntity.java
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── AppClientDataShowController.java
│ │ │ │ │ │ ├── AppController.java
│ │ │ │ │ │ ├── AppDataMigrateController.java
│ │ │ │ │ │ ├── AppManageController.java
│ │ │ │ │ │ ├── BaseController.java
│ │ │ │ │ │ ├── ClientManageController.java
│ │ │ │ │ │ ├── ConfigManageController.java
│ │ │ │ │ │ ├── FaultController.java
│ │ │ │ │ │ ├── ImportAppController.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── InstanceAlertValueController.java
│ │ │ │ │ │ ├── InstanceController.java
│ │ │ │ │ │ ├── InstanceManageController.java
│ │ │ │ │ │ ├── JobController.java
│ │ │ │ │ │ ├── LoginController.java
│ │ │ │ │ │ ├── MachineManageController.java
│ │ │ │ │ │ ├── NoticeManageController.java
│ │ │ │ │ │ ├── QuartzManageController.java
│ │ │ │ │ │ ├── RedisConfigTemplateController.java
│ │ │ │ │ │ ├── ServerController.java
│ │ │ │ │ │ ├── TotalManageController.java
│ │ │ │ │ │ ├── TriggerController.java
│ │ │ │ │ │ ├── UserController.java
│ │ │ │ │ │ └── UserManageController.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ ├── AdminEnum.java
│ │ │ │ │ │ ├── AppOrderByEnum.java
│ │ │ │ │ │ ├── LoginEnum.java
│ │ │ │ │ │ ├── RedisOperateEnum.java
│ │ │ │ │ │ └── SuccessEnum.java
│ │ │ │ │ ├── factory/
│ │ │ │ │ │ └── UserLoginStatusFactory.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── AppService.java
│ │ │ │ │ │ ├── ConfigService.java
│ │ │ │ │ │ ├── MemFaultService.java
│ │ │ │ │ │ ├── ServerDataService.java
│ │ │ │ │ │ ├── UserLoginStatusService.java
│ │ │ │ │ │ ├── UserService.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── AppServiceImpl.java
│ │ │ │ │ │ ├── ConfigServiceImpl.java
│ │ │ │ │ │ ├── MemFaultServiceImpl.java
│ │ │ │ │ │ ├── ServerDataServiceImpl.java
│ │ │ │ │ │ ├── UserLoginStatusCookieServiceImpl.java
│ │ │ │ │ │ ├── UserLoginStatusSessionServiceImpl.java
│ │ │ │ │ │ └── UserServiceImpl.java
│ │ │ │ │ ├── util/
│ │ │ │ │ │ ├── AppEmailUtil.java
│ │ │ │ │ │ ├── DateUtil.java
│ │ │ │ │ │ ├── IpUtil.java
│ │ │ │ │ │ ├── Page.java
│ │ │ │ │ │ ├── SimpleFileUtil.java
│ │ │ │ │ │ └── VelocityUtils.java
│ │ │ │ │ └── vo/
│ │ │ │ │ ├── AppDetailVO.java
│ │ │ │ │ └── RedisSlowLog.java
│ │ │ │ ├── resources/
│ │ │ │ │ ├── application.properties
│ │ │ │ │ ├── cachecloud-web.conf
│ │ │ │ │ ├── logback.xml
│ │ │ │ │ ├── mapper/
│ │ │ │ │ │ ├── AppAuditDao.xml
│ │ │ │ │ │ ├── AppAuditLogDao.xml
│ │ │ │ │ │ ├── AppClientCostTimeStatDao.xml
│ │ │ │ │ │ ├── AppClientCostTimeTotalStatDao.xml
│ │ │ │ │ │ ├── AppClientExceptionStatDao.xml
│ │ │ │ │ │ ├── AppClientReportDataSizeDao.xml
│ │ │ │ │ │ ├── AppClientValueStatDao.xml
│ │ │ │ │ │ ├── AppClientVersionDao.xml
│ │ │ │ │ │ ├── AppDailyDao.xml
│ │ │ │ │ │ ├── AppDao.xml
│ │ │ │ │ │ ├── AppDataMigrateStatusDao.xml
│ │ │ │ │ │ ├── AppInstanceClientRelationDao.xml
│ │ │ │ │ │ ├── AppStatsDao.xml
│ │ │ │ │ │ ├── AppToUserDao.xml
│ │ │ │ │ │ ├── AppUserDao.xml
│ │ │ │ │ │ ├── ConfigDao.xml
│ │ │ │ │ │ ├── InstanceAlertConfigDao.xml
│ │ │ │ │ │ ├── InstanceConfigDao.xml
│ │ │ │ │ │ ├── InstanceDao.xml
│ │ │ │ │ │ ├── InstanceFaultDao.xml
│ │ │ │ │ │ ├── InstanceReshardProcessDao.xml
│ │ │ │ │ │ ├── InstanceSlowLogDao.xml
│ │ │ │ │ │ ├── InstanceStatsDao.xml
│ │ │ │ │ │ ├── MachineDao.xml
│ │ │ │ │ │ ├── MachineStatsDao.xml
│ │ │ │ │ │ ├── QuartzDao.xml
│ │ │ │ │ │ └── ServerStatusDao.xml
│ │ │ │ │ ├── mybatis-config.xml
│ │ │ │ │ ├── spring/
│ │ │ │ │ │ ├── spring-alert.xml
│ │ │ │ │ │ ├── spring-client-report.xml
│ │ │ │ │ │ ├── spring-config.xml
│ │ │ │ │ │ ├── spring-data.xml
│ │ │ │ │ │ ├── spring-inspector.xml
│ │ │ │ │ │ ├── spring-jmx.xml
│ │ │ │ │ │ ├── spring-load.xml
│ │ │ │ │ │ ├── spring-local.xml
│ │ │ │ │ │ ├── spring-manage.xml
│ │ │ │ │ │ ├── spring-mvc.xml
│ │ │ │ │ │ ├── spring-mybatis.xml
│ │ │ │ │ │ ├── spring-online.xml
│ │ │ │ │ │ ├── spring-quartz.xml
│ │ │ │ │ │ ├── spring-service.xml
│ │ │ │ │ │ └── spring.xml
│ │ │ │ │ └── templates/
│ │ │ │ │ ├── appAudit.vm
│ │ │ │ │ ├── appDaily.vm
│ │ │ │ │ └── instanceAlert.vm
│ │ │ │ ├── swap/
│ │ │ │ │ ├── local.properties
│ │ │ │ │ └── online.properties
│ │ │ │ └── webapp/
│ │ │ │ ├── WEB-INF/
│ │ │ │ │ ├── include/
│ │ │ │ │ │ ├── contact.jsp
│ │ │ │ │ │ ├── foot.jsp
│ │ │ │ │ │ ├── head.jsp
│ │ │ │ │ │ ├── headAdmin.jsp
│ │ │ │ │ │ └── headMenu.jsp
│ │ │ │ │ ├── jsp/
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── appCommand.jsp
│ │ │ │ │ │ │ ├── appCommandAnalysis.jsp
│ │ │ │ │ │ │ ├── appDaily.jsp
│ │ │ │ │ │ │ ├── appDemo.jsp
│ │ │ │ │ │ │ ├── appDetail.jsp
│ │ │ │ │ │ │ ├── appInit.jsp
│ │ │ │ │ │ │ ├── appInstanceNetStat.jsp
│ │ │ │ │ │ │ ├── appList.jsp
│ │ │ │ │ │ │ ├── appMachineInstancesTopology.jsp
│ │ │ │ │ │ │ ├── appScaleApply.jsp
│ │ │ │ │ │ │ ├── appStat.jsp
│ │ │ │ │ │ │ ├── appTopology.jsp
│ │ │ │ │ │ │ ├── initBecomeContributor.jsp
│ │ │ │ │ │ │ ├── manageUser.jsp
│ │ │ │ │ │ │ ├── slowLog.jsp
│ │ │ │ │ │ │ └── userAppsIndex.jsp
│ │ │ │ │ │ ├── client/
│ │ │ │ │ │ │ ├── appClientIndex.jsp
│ │ │ │ │ │ │ ├── clientCostDistribute.jsp
│ │ │ │ │ │ │ ├── clientException.jsp
│ │ │ │ │ │ │ └── clientValueDistribute.jsp
│ │ │ │ │ │ ├── import/
│ │ │ │ │ │ │ └── init.jsp
│ │ │ │ │ │ ├── instance/
│ │ │ │ │ │ │ ├── instanceAdvancedAnalysis.jsp
│ │ │ │ │ │ │ ├── instanceClientList.jsp
│ │ │ │ │ │ │ ├── instanceCommand.jsp
│ │ │ │ │ │ │ ├── instanceConfigSelect.jsp
│ │ │ │ │ │ │ ├── instanceFault.jsp
│ │ │ │ │ │ │ ├── instanceIndex.jsp
│ │ │ │ │ │ │ ├── instanceSlowSelect.jsp
│ │ │ │ │ │ │ └── instanceStat.jsp
│ │ │ │ │ │ ├── manage/
│ │ │ │ │ │ │ ├── appAudit/
│ │ │ │ │ │ │ │ ├── addAudit.jsp
│ │ │ │ │ │ │ │ ├── appAuditList.jsp
│ │ │ │ │ │ │ │ ├── appConfigChangeDetail.jsp
│ │ │ │ │ │ │ │ ├── appDeploy.jsp
│ │ │ │ │ │ │ │ ├── appDeployDetail.jsp
│ │ │ │ │ │ │ │ ├── appIntanceReferList.jsp
│ │ │ │ │ │ │ │ ├── appScaleApplyDetail.jsp
│ │ │ │ │ │ │ │ ├── handleHorizontalScale.jsp
│ │ │ │ │ │ │ │ ├── handleHorizontalScaleDetail.jsp
│ │ │ │ │ │ │ │ ├── horizontalScaleApplyDetail.jsp
│ │ │ │ │ │ │ │ ├── horizontalScaleProcessList.jsp
│ │ │ │ │ │ │ │ ├── initAppConfigChange.jsp
│ │ │ │ │ │ │ │ ├── initAppDeploy.jsp
│ │ │ │ │ │ │ │ ├── initAppScaleApply.jsp
│ │ │ │ │ │ │ │ ├── initHorizontalScaleApply.jsp
│ │ │ │ │ │ │ │ ├── initInstanceConfigChange.jsp
│ │ │ │ │ │ │ │ ├── instanceConfig.jsp
│ │ │ │ │ │ │ │ ├── instanceConfigChangeDetail.jsp
│ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ ├── machineForHorizontalScaleList.jsp
│ │ │ │ │ │ │ │ └── machineReferList.jsp
│ │ │ │ │ │ │ ├── appOps/
│ │ │ │ │ │ │ │ ├── appInfoAndAudit.jsp
│ │ │ │ │ │ │ │ ├── appInstance.jsp
│ │ │ │ │ │ │ │ ├── appMachine.jsp
│ │ │ │ │ │ │ │ └── appOpsIndex.jsp
│ │ │ │ │ │ │ ├── client/
│ │ │ │ │ │ │ │ ├── exception/
│ │ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ │ └── statList.jsp
│ │ │ │ │ │ │ │ └── version/
│ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ └── statList.jsp
│ │ │ │ │ │ │ ├── commons/
│ │ │ │ │ │ │ │ ├── appConstants.jsp
│ │ │ │ │ │ │ │ └── taglibs.jsp
│ │ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ │ ├── init.jsp
│ │ │ │ │ │ │ │ └── initConfigDetail.jsp
│ │ │ │ │ │ │ ├── fault/
│ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ └── memFaultList.jsp
│ │ │ │ │ │ │ ├── include/
│ │ │ │ │ │ │ │ ├── cache_cloud_main_css.jsp
│ │ │ │ │ │ │ │ ├── cache_cloud_main_js.jsp
│ │ │ │ │ │ │ │ ├── foot.jsp
│ │ │ │ │ │ │ │ ├── head.jsp
│ │ │ │ │ │ │ │ └── left.jsp
│ │ │ │ │ │ │ ├── instance/
│ │ │ │ │ │ │ │ └── log.jsp
│ │ │ │ │ │ │ ├── instanceAlert/
│ │ │ │ │ │ │ │ ├── init.jsp
│ │ │ │ │ │ │ │ └── initConfigDetail.jsp
│ │ │ │ │ │ │ ├── login.jsp
│ │ │ │ │ │ │ ├── machine/
│ │ │ │ │ │ │ │ ├── addMachine.jsp
│ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ ├── machineInstances.jsp
│ │ │ │ │ │ │ │ ├── machineInstancesDetail.jsp
│ │ │ │ │ │ │ │ └── machineList.jsp
│ │ │ │ │ │ │ ├── notice/
│ │ │ │ │ │ │ │ ├── initNotice.jsp
│ │ │ │ │ │ │ │ └── initNoticeDetail.jsp
│ │ │ │ │ │ │ ├── quartz/
│ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ └── quartzList.jsp
│ │ │ │ │ │ │ ├── redisConfig/
│ │ │ │ │ │ │ │ ├── init.jsp
│ │ │ │ │ │ │ │ ├── initConfigDetail.jsp
│ │ │ │ │ │ │ │ └── preview.jsp
│ │ │ │ │ │ │ ├── total/
│ │ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ │ └── totalList.jsp
│ │ │ │ │ │ │ └── user/
│ │ │ │ │ │ │ ├── addUser.jsp
│ │ │ │ │ │ │ ├── initUser.jsp
│ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ └── userList.jsp
│ │ │ │ │ │ ├── migrate/
│ │ │ │ │ │ │ ├── checkData.jsp
│ │ │ │ │ │ │ ├── config.jsp
│ │ │ │ │ │ │ ├── init.jsp
│ │ │ │ │ │ │ ├── list.jsp
│ │ │ │ │ │ │ ├── log.jsp
│ │ │ │ │ │ │ └── process.jsp
│ │ │ │ │ │ ├── server/
│ │ │ │ │ │ │ ├── cpu.jsp
│ │ │ │ │ │ │ ├── disk.jsp
│ │ │ │ │ │ │ ├── index.jsp
│ │ │ │ │ │ │ ├── net.jsp
│ │ │ │ │ │ │ └── overview.jsp
│ │ │ │ │ │ └── user/
│ │ │ │ │ │ └── userRegister.jsp
│ │ │ │ │ ├── resources/
│ │ │ │ │ │ ├── My97DatePicker/
│ │ │ │ │ │ │ ├── My97DatePicker.htm
│ │ │ │ │ │ │ ├── WdatePicker.js
│ │ │ │ │ │ │ ├── calendar.js
│ │ │ │ │ │ │ ├── config.js
│ │ │ │ │ │ │ ├── lang/
│ │ │ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ │ │ │ └── zh-tw.js
│ │ │ │ │ │ │ ├── skin/
│ │ │ │ │ │ │ │ ├── WdatePicker.css
│ │ │ │ │ │ │ │ ├── default/
│ │ │ │ │ │ │ │ │ └── datepicker.css
│ │ │ │ │ │ │ │ └── whyGreen/
│ │ │ │ │ │ │ │ └── datepicker.css
│ │ │ │ │ │ │ └── test_02.html
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── flash/
│ │ │ │ │ │ │ └── ZeroClipboard.swf
│ │ │ │ │ │ ├── bootstrap/
│ │ │ │ │ │ │ ├── bootstrap3/
│ │ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ │ ├── bootstrap-theme.css
│ │ │ │ │ │ │ │ │ └── bootstrap.css
│ │ │ │ │ │ │ │ └── js/
│ │ │ │ │ │ │ │ └── bootstrap.js
│ │ │ │ │ │ │ ├── jquery/
│ │ │ │ │ │ │ │ └── jquery-1.11.0.js
│ │ │ │ │ │ │ ├── paginator/
│ │ │ │ │ │ │ │ ├── bootstrap-paginator.js
│ │ │ │ │ │ │ │ └── custom-pagenitor.js
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── respond.matchmedia.addListener.src.js
│ │ │ │ │ │ │ └── respond.src.js
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ ├── login.css
│ │ │ │ │ │ │ └── mem-cloud.css
│ │ │ │ │ │ ├── error/
│ │ │ │ │ │ │ └── noPower.jsp
│ │ │ │ │ │ ├── highchart3/
│ │ │ │ │ │ │ └── js/
│ │ │ │ │ │ │ ├── adapters/
│ │ │ │ │ │ │ │ ├── mootools-adapter.js
│ │ │ │ │ │ │ │ ├── mootools-adapter.src.js
│ │ │ │ │ │ │ │ ├── prototype-adapter.js
│ │ │ │ │ │ │ │ └── prototype-adapter.src.js
│ │ │ │ │ │ │ ├── highcharts-more.js
│ │ │ │ │ │ │ ├── highcharts-more.src.js
│ │ │ │ │ │ │ ├── highcharts.js
│ │ │ │ │ │ │ ├── highcharts.src.js
│ │ │ │ │ │ │ ├── modules/
│ │ │ │ │ │ │ │ ├── annotations.js
│ │ │ │ │ │ │ │ ├── annotations.src.js
│ │ │ │ │ │ │ │ ├── canvas-tools.js
│ │ │ │ │ │ │ │ ├── canvas-tools.src.js
│ │ │ │ │ │ │ │ ├── data.js
│ │ │ │ │ │ │ │ ├── data.src.js
│ │ │ │ │ │ │ │ ├── exporting.js
│ │ │ │ │ │ │ │ ├── exporting.src.js
│ │ │ │ │ │ │ │ ├── funnel.js
│ │ │ │ │ │ │ │ ├── funnel.src.js
│ │ │ │ │ │ │ │ ├── heatmap.js
│ │ │ │ │ │ │ │ ├── heatmap.src.js
│ │ │ │ │ │ │ │ ├── map.js
│ │ │ │ │ │ │ │ └── map.src.js
│ │ │ │ │ │ │ └── themes/
│ │ │ │ │ │ │ ├── dark-blue.js
│ │ │ │ │ │ │ ├── dark-green.js
│ │ │ │ │ │ │ ├── gray.js
│ │ │ │ │ │ │ ├── grid.js
│ │ │ │ │ │ │ └── skies.js
│ │ │ │ │ │ ├── js/
│ │ │ │ │ │ │ ├── appClient.js
│ │ │ │ │ │ │ ├── appDetail.js
│ │ │ │ │ │ │ ├── appInit.js
│ │ │ │ │ │ │ ├── appStat.js
│ │ │ │ │ │ │ ├── chart.js
│ │ │ │ │ │ │ ├── instanceExecute.js
│ │ │ │ │ │ │ ├── jquery-console.js
│ │ │ │ │ │ │ ├── mem-cloud.js
│ │ │ │ │ │ │ ├── myPopover.js
│ │ │ │ │ │ │ ├── myhighchart.js
│ │ │ │ │ │ │ ├── prettify.css
│ │ │ │ │ │ │ ├── prettify.js
│ │ │ │ │ │ │ └── run_prettify.js
│ │ │ │ │ │ ├── manage/
│ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ ├── animate.css
│ │ │ │ │ │ │ │ ├── custom.css
│ │ │ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ │ │ ├── about-us.css
│ │ │ │ │ │ │ │ │ ├── blog.css
│ │ │ │ │ │ │ │ │ ├── coming-soon.css
│ │ │ │ │ │ │ │ │ ├── email.css
│ │ │ │ │ │ │ │ │ ├── error.css
│ │ │ │ │ │ │ │ │ ├── image-crop.css
│ │ │ │ │ │ │ │ │ ├── inbox.css
│ │ │ │ │ │ │ │ │ ├── invoice.css
│ │ │ │ │ │ │ │ │ ├── lock.css
│ │ │ │ │ │ │ │ │ ├── login-soft.css
│ │ │ │ │ │ │ │ │ ├── login.css
│ │ │ │ │ │ │ │ │ ├── news.css
│ │ │ │ │ │ │ │ │ ├── portfolio.css
│ │ │ │ │ │ │ │ │ ├── pricing-tables.css
│ │ │ │ │ │ │ │ │ ├── profile.css
│ │ │ │ │ │ │ │ │ ├── promo.css
│ │ │ │ │ │ │ │ │ ├── search.css
│ │ │ │ │ │ │ │ │ ├── tasks.css
│ │ │ │ │ │ │ │ │ └── timeline.css
│ │ │ │ │ │ │ │ ├── plugins.css
│ │ │ │ │ │ │ │ ├── print.css
│ │ │ │ │ │ │ │ ├── style-metronic.css
│ │ │ │ │ │ │ │ ├── style-non-responsive.css
│ │ │ │ │ │ │ │ ├── style-responsive.css
│ │ │ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ │ │ └── themes/
│ │ │ │ │ │ │ │ ├── blue.css
│ │ │ │ │ │ │ │ ├── brown.css
│ │ │ │ │ │ │ │ ├── default.css
│ │ │ │ │ │ │ │ ├── grey.css
│ │ │ │ │ │ │ │ ├── light.css
│ │ │ │ │ │ │ │ └── purple.css
│ │ │ │ │ │ │ ├── fonts/
│ │ │ │ │ │ │ │ └── font.css
│ │ │ │ │ │ │ ├── manage/
│ │ │ │ │ │ │ │ ├── auditManage.js
│ │ │ │ │ │ │ │ ├── machineManage.js
│ │ │ │ │ │ │ │ └── userManage.js
│ │ │ │ │ │ │ ├── oldMemResource/
│ │ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ │ ├── invalid.css
│ │ │ │ │ │ │ │ │ ├── reset.css
│ │ │ │ │ │ │ │ │ └── style.css
│ │ │ │ │ │ │ │ └── scripts/
│ │ │ │ │ │ │ │ ├── facebox.js
│ │ │ │ │ │ │ │ ├── jquery.wysiwyg.js
│ │ │ │ │ │ │ │ ├── session-create.js
│ │ │ │ │ │ │ │ └── simpla.jquery.configuration.js
│ │ │ │ │ │ │ ├── plugins/
│ │ │ │ │ │ │ │ ├── bootstrap/
│ │ │ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ │ │ └── bootstrap.css
│ │ │ │ │ │ │ │ │ └── js/
│ │ │ │ │ │ │ │ │ ├── bootstrap.js
│ │ │ │ │ │ │ │ │ └── bootstrap2-typeahead.js
│ │ │ │ │ │ │ │ ├── data-tables/
│ │ │ │ │ │ │ │ │ ├── DT_bootstrap.css
│ │ │ │ │ │ │ │ │ ├── DT_bootstrap.js
│ │ │ │ │ │ │ │ │ └── jquery.dataTables.js
│ │ │ │ │ │ │ │ └── font-awesome/
│ │ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ │ └── font-awesome.css
│ │ │ │ │ │ │ │ ├── fonts/
│ │ │ │ │ │ │ │ │ └── FontAwesome.otf
│ │ │ │ │ │ │ │ ├── less/
│ │ │ │ │ │ │ │ │ ├── bordered-pulled.less
│ │ │ │ │ │ │ │ │ ├── core.less
│ │ │ │ │ │ │ │ │ ├── fixed-width.less
│ │ │ │ │ │ │ │ │ ├── font-awesome.less
│ │ │ │ │ │ │ │ │ ├── icons.less
│ │ │ │ │ │ │ │ │ ├── larger.less
│ │ │ │ │ │ │ │ │ ├── list.less
│ │ │ │ │ │ │ │ │ ├── mixins.less
│ │ │ │ │ │ │ │ │ ├── path.less
│ │ │ │ │ │ │ │ │ ├── rotated-flipped.less
│ │ │ │ │ │ │ │ │ ├── spinning.less
│ │ │ │ │ │ │ │ │ ├── stacked.less
│ │ │ │ │ │ │ │ │ └── variables.less
│ │ │ │ │ │ │ │ └── scss/
│ │ │ │ │ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ │ │ │ │ ├── _core.scss
│ │ │ │ │ │ │ │ ├── _fixed-width.scss
│ │ │ │ │ │ │ │ ├── _icons.scss
│ │ │ │ │ │ │ │ ├── _larger.scss
│ │ │ │ │ │ │ │ ├── _list.scss
│ │ │ │ │ │ │ │ ├── _mixins.scss
│ │ │ │ │ │ │ │ ├── _path.scss
│ │ │ │ │ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ │ │ │ │ ├── _spinning.scss
│ │ │ │ │ │ │ │ ├── _stacked.scss
│ │ │ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ │ │ └── font-awesome.scss
│ │ │ │ │ │ │ └── scripts/
│ │ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ │ ├── calendar.js
│ │ │ │ │ │ │ ├── charts.js
│ │ │ │ │ │ │ ├── coming-soon.js
│ │ │ │ │ │ │ ├── contact-us.js
│ │ │ │ │ │ │ ├── custom.js
│ │ │ │ │ │ │ ├── form-components.js
│ │ │ │ │ │ │ ├── form-dropzone.js
│ │ │ │ │ │ │ ├── form-editable.js
│ │ │ │ │ │ │ ├── form-fileupload.js
│ │ │ │ │ │ │ ├── form-image-crop.js
│ │ │ │ │ │ │ ├── form-samples.js
│ │ │ │ │ │ │ ├── form-validation.js
│ │ │ │ │ │ │ ├── form-wizard.js
│ │ │ │ │ │ │ ├── idle-timeout.js
│ │ │ │ │ │ │ ├── inbox.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── lock.js
│ │ │ │ │ │ │ ├── login-soft.js
│ │ │ │ │ │ │ ├── login.js
│ │ │ │ │ │ │ ├── maps-google.js
│ │ │ │ │ │ │ ├── maps-vector.js
│ │ │ │ │ │ │ ├── portfolio.js
│ │ │ │ │ │ │ ├── portlet-draggable.js
│ │ │ │ │ │ │ ├── search.js
│ │ │ │ │ │ │ ├── table-advanced.js
│ │ │ │ │ │ │ ├── table-ajax.js
│ │ │ │ │ │ │ ├── table-editable.js
│ │ │ │ │ │ │ ├── table-managed.js
│ │ │ │ │ │ │ ├── tasks.js
│ │ │ │ │ │ │ ├── ui-bootbox.js
│ │ │ │ │ │ │ ├── ui-datepaginator.js
│ │ │ │ │ │ │ ├── ui-extended-modals.js
│ │ │ │ │ │ │ ├── ui-general.js
│ │ │ │ │ │ │ ├── ui-ion-sliders.js
│ │ │ │ │ │ │ ├── ui-jqueryui-sliders.js
│ │ │ │ │ │ │ ├── ui-knob.js
│ │ │ │ │ │ │ ├── ui-nestable.js
│ │ │ │ │ │ │ ├── ui-nouisliders.js
│ │ │ │ │ │ │ ├── ui-toastr.js
│ │ │ │ │ │ │ └── ui-tree.js
│ │ │ │ │ │ └── widgets/
│ │ │ │ │ │ └── jscalendar/
│ │ │ │ │ │ ├── calendar-setup.js
│ │ │ │ │ │ ├── calendar-setup_stripped.js
│ │ │ │ │ │ ├── calendar.js
│ │ │ │ │ │ ├── calendar_stripped.js
│ │ │ │ │ │ ├── lang/
│ │ │ │ │ │ │ ├── calendar-af.js
│ │ │ │ │ │ │ ├── calendar-al.js
│ │ │ │ │ │ │ ├── calendar-bg.js
│ │ │ │ │ │ │ ├── calendar-big5-utf8.js
│ │ │ │ │ │ │ ├── calendar-big5.js
│ │ │ │ │ │ │ ├── calendar-br.js
│ │ │ │ │ │ │ ├── calendar-ca.js
│ │ │ │ │ │ │ ├── calendar-cs-utf8.js
│ │ │ │ │ │ │ ├── calendar-cs-win.js
│ │ │ │ │ │ │ ├── calendar-da.js
│ │ │ │ │ │ │ ├── calendar-de.js
│ │ │ │ │ │ │ ├── calendar-du.js
│ │ │ │ │ │ │ ├── calendar-el.js
│ │ │ │ │ │ │ ├── calendar-en.js
│ │ │ │ │ │ │ ├── calendar-es.js
│ │ │ │ │ │ │ ├── calendar-fi.js
│ │ │ │ │ │ │ ├── calendar-fr.js
│ │ │ │ │ │ │ ├── calendar-he-utf8.js
│ │ │ │ │ │ │ ├── calendar-hr-utf8.js
│ │ │ │ │ │ │ ├── calendar-hr.js
│ │ │ │ │ │ │ ├── calendar-hu.js
│ │ │ │ │ │ │ ├── calendar-it.js
│ │ │ │ │ │ │ ├── calendar-jp.js
│ │ │ │ │ │ │ ├── calendar-ko-utf8.js
│ │ │ │ │ │ │ ├── calendar-ko.js
│ │ │ │ │ │ │ ├── calendar-lt-utf8.js
│ │ │ │ │ │ │ ├── calendar-lt.js
│ │ │ │ │ │ │ ├── calendar-lv.js
│ │ │ │ │ │ │ ├── calendar-nl.js
│ │ │ │ │ │ │ ├── calendar-no.js
│ │ │ │ │ │ │ ├── calendar-pl-utf8.js
│ │ │ │ │ │ │ ├── calendar-pl.js
│ │ │ │ │ │ │ ├── calendar-pt.js
│ │ │ │ │ │ │ ├── calendar-ro.js
│ │ │ │ │ │ │ ├── calendar-ru.js
│ │ │ │ │ │ │ ├── calendar-ru_win_.js
│ │ │ │ │ │ │ ├── calendar-si.js
│ │ │ │ │ │ │ ├── calendar-sk.js
│ │ │ │ │ │ │ ├── calendar-sp.js
│ │ │ │ │ │ │ ├── calendar-sv.js
│ │ │ │ │ │ │ ├── calendar-tr.js
│ │ │ │ │ │ │ ├── calendar-zh.js
│ │ │ │ │ │ │ └── cn_utf8.js
│ │ │ │ │ │ └── skins/
│ │ │ │ │ │ └── aqua/
│ │ │ │ │ │ └── theme.css
│ │ │ │ │ └── web.xml
│ │ │ │ ├── daily.jsp
│ │ │ │ ├── error.jsp
│ │ │ │ ├── index.jsp
│ │ │ │ └── test.jsp
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── sohu/
│ │ │ │ ├── cache/
│ │ │ │ │ ├── dao/
│ │ │ │ │ │ ├── InstanceDaoTest.java
│ │ │ │ │ │ ├── InstanceFaultDaoTest.java
│ │ │ │ │ │ ├── InstanceReshardProcessDaoTest.java
│ │ │ │ │ │ └── MachineDaoTest.java
│ │ │ │ │ └── stats/
│ │ │ │ │ └── app/
│ │ │ │ │ ├── AppDataMigrateCenterTest.java
│ │ │ │ │ └── ImportAppCenterTest.java
│ │ │ │ └── test/
│ │ │ │ ├── BaseTest.java
│ │ │ │ ├── SimpleBaseTest.java
│ │ │ │ ├── alert/
│ │ │ │ │ └── AppServiceAlertImplTest.java
│ │ │ │ ├── app/
│ │ │ │ │ └── AppStatsCenterImplTest.java
│ │ │ │ ├── cache/
│ │ │ │ │ └── inspect/
│ │ │ │ │ └── AppClientConnInspectorTest.java
│ │ │ │ ├── dao/
│ │ │ │ │ ├── AppAuditDaoTest.java
│ │ │ │ │ ├── AppAuditLogDaoTest.java
│ │ │ │ │ ├── AppClientReportDataSizeDaoTest.java
│ │ │ │ │ ├── AppClientVersionDaoTest.java
│ │ │ │ │ ├── AppDaoTest.java
│ │ │ │ │ ├── AppDataMigrateStatusDaoTest.java
│ │ │ │ │ ├── AppStatsDaoTest.java
│ │ │ │ │ ├── AppToUserDaoTest.java
│ │ │ │ │ ├── AppUserDaoTest.java
│ │ │ │ │ ├── InstanceConfigDaoTest.java
│ │ │ │ │ └── QuartzDaoTest.java
│ │ │ │ ├── init/
│ │ │ │ │ └── MachineInitTest.java
│ │ │ │ ├── inspect/
│ │ │ │ │ └── InspectHandlerTest.java
│ │ │ │ ├── instance/
│ │ │ │ │ └── InstanceStatsCenterTest.java
│ │ │ │ ├── machine/
│ │ │ │ │ └── PortGeneratorTest.java
│ │ │ │ ├── misc/
│ │ │ │ │ └── MiscTest.java
│ │ │ │ ├── protocol/
│ │ │ │ │ └── RedisProtocolTest.java
│ │ │ │ ├── redis/
│ │ │ │ │ ├── Node.java
│ │ │ │ │ ├── RedisConfigTemplateTest.java
│ │ │ │ │ └── RedisImportantDataDeal.java
│ │ │ │ ├── schedule/
│ │ │ │ │ ├── ScheduleUtilTestTest.java
│ │ │ │ │ └── SchedulerCenterTest.java
│ │ │ │ ├── stats/
│ │ │ │ │ └── app/
│ │ │ │ │ └── AppCenterTest.java
│ │ │ │ └── util/
│ │ │ │ ├── ObjectConvertTest.java
│ │ │ │ ├── SSHUtilTest.java
│ │ │ │ └── ScheduleUtilTest.java
│ │ │ └── resources/
│ │ │ ├── logback-test.xml
│ │ │ └── spring-test.xml
│ │ ├── pom.xml
│ │ └── script/
│ │ ├── cachecloud-init.sh
│ │ ├── cachecloud.sql
│ │ ├── deploy.sh
│ │ ├── start.sh
│ │ └── stop.sh
│ ├── open-admin-server/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── Controller.java
│ │ │ └── OpenAdminApp.java
│ │ └── resources/
│ │ └── application.yml
│ ├── open-zipkin-center/
│ │ ├── SPRING CLOUD微服务日志挖掘的应用研究.doc
│ │ ├── open-zipkin-kafka-client/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── open/
│ │ │ │ └── capacity/
│ │ │ │ └── ZipKinClientApp.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ ├── open-zipkin-kafka-server/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── open/
│ │ │ │ └── capacity/
│ │ │ │ └── OpenZipkinServer.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ ├── open-zipkin-memery-client/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── open/
│ │ │ │ └── capacity/
│ │ │ │ ├── TestController.java
│ │ │ │ └── ZipKinClientApp.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ ├── open-zipkin-memery-server/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── open/
│ │ │ │ └── capacity/
│ │ │ │ └── OpenZipkinSerApp.java
│ │ │ └── resources/
│ │ │ └── application.yml
│ │ └── pom.xml
│ └── pom.xml
├── open-oauth-center/
│ ├── README.md
│ ├── db/
│ │ └── init.sql
│ ├── open-oauth-client/
│ │ ├── .gitignore
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── UnieapAuthServerApp.java
│ │ │ ├── client/
│ │ │ │ └── oauth2/
│ │ │ │ ├── OAuth2ClientConfig.java
│ │ │ │ ├── authorize/
│ │ │ │ │ ├── AuthorizeConfigManager.java
│ │ │ │ │ ├── AuthorizeConfigProvider.java
│ │ │ │ │ ├── OpenAuthorizeConfigManager.java
│ │ │ │ │ └── provider/
│ │ │ │ │ └── AuthAuthorizeConfigProvider.java
│ │ │ │ ├── config/
│ │ │ │ │ └── SecurityHandlerConfig.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── RbacService.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── RbacServiceImpl.java
│ │ │ │ └── token/
│ │ │ │ ├── TokenStoreConfig.java
│ │ │ │ └── store/
│ │ │ │ └── RedisTemplateTokenStore.java
│ │ │ └── controller/
│ │ │ ├── TestController.java
│ │ │ └── UserController.java
│ │ └── resources/
│ │ └── application.yml
│ ├── open-oauth-client-two/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── UnieapAuthServerApp.java
│ │ │ ├── client/
│ │ │ │ └── oauth2/
│ │ │ │ ├── OAuth2ClientConfig.java
│ │ │ │ ├── config/
│ │ │ │ │ └── SecurityHandlerConfig.java
│ │ │ │ ├── controller/
│ │ │ │ │ └── UserController.java
│ │ │ │ └── token/
│ │ │ │ ├── TokenStoreConfig.java
│ │ │ │ └── store/
│ │ │ │ └── RedisTemplateTokenStore.java
│ │ │ └── controller/
│ │ │ └── TestController.java
│ │ └── resources/
│ │ └── application.yml
│ ├── open-oauth-server/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── open/
│ │ │ └── capacity/
│ │ │ ├── OpenAuthServerApp.java
│ │ │ ├── config/
│ │ │ │ ├── FeignConfig.java
│ │ │ │ └── TokenStorePostProcessor.java
│ │ │ ├── controller/
│ │ │ │ ├── PermissionController.java
│ │ │ │ ├── TestController.java
│ │ │ │ ├── UserController.java
│ │ │ │ └── UserTokenController.java
│ │ │ ├── fegin/
│ │ │ │ ├── PermissionClient.java
│ │ │ │ ├── RoleClient.java
│ │ │ │ └── UserClient.java
│ │ │ ├── filter/
│ │ │ │ └── InspectHeaderFilter.java
│ │ │ ├── httpclient/
│ │ │ │ └── HttpAuthInvoker.java
│ │ │ ├── server/
│ │ │ │ └── oauth2/
│ │ │ │ ├── OAuth2ServerConfig.java
│ │ │ │ ├── client/
│ │ │ │ │ └── RedisClientDetailsService.java
│ │ │ │ ├── code/
│ │ │ │ │ └── RedisAuthorizationCodeServices.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── OauthLogoutHandler.java
│ │ │ │ │ ├── PasswordConfig.java
│ │ │ │ │ ├── SecurityConfig.java
│ │ │ │ │ ├── SecurityHandlerConfig.java
│ │ │ │ │ └── SwaggerConfig.java
│ │ │ │ ├── dao/
│ │ │ │ │ └── UserDao.java
│ │ │ │ ├── service/
│ │ │ │ │ └── UnieapUserDetailsService.java
│ │ │ │ └── token/
│ │ │ │ ├── TokenStoreConfig.java
│ │ │ │ └── store/
│ │ │ │ └── RedisTemplateTokenStore.java
│ │ │ └── utils/
│ │ │ └── SpringUtil.java
│ │ ├── resources/
│ │ │ └── application.yml
│ │ └── view/
│ │ └── st
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitee/ISSUE_TEMPLATE.zh-CN.md
================================================
### 该问题是怎么引起的?
### 重现步骤
### 报错信息
================================================
FILE: .gitee/PULL_REQUEST_TEMPLATE.zh-CN.md
================================================
### 该Pull Request关联的Issue
### 修改描述
### 测试用例
### 修复效果的截屏
================================================
FILE: .gitignore
================================================
# maven ignore
target/
*.jar
*.war
*.zip
*.tar
*.tar.gz
*.class
*.project
# eclipse ignore
.settings/
.classpath
target/
bin/
open-cxf-service/
open-elasticsearch/
# idea ignore
.idea/
*.ipr
*.iml
*.iws
# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp
# system ignore
.DS_Store
Thumbs.db
# else
.springBeans
/open-layui-web/logs/
================================================
FILE: .tgitconfig
================================================
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
3. Grant of Patent License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of
this License; and
You must cause any modified files to carry prominent notices stating that You
changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
6. Trademarks.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability.
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "{}" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
Copyright 2018 owen
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# <H1 align="center">open-capacity-platform 微服务能力开发平台</H1 >
<p align="center">
<img src="https://img.shields.io/circleci/project/vuejs/vue/dev.svg" alt="Build Status">
<img src="https://img.shields.io/badge/Spring%20Cloud-Edgware.SR3-blue.svg" alt="Coverage Status">
<img src="https://img.shields.io/badge/Spring%20Boot-1.5.9-blue.svg" alt="Downloads">
<img src="https://img.shields.io/npm/l/vue.svg" alt="License">
</p>
### 欢迎进群(群内领资料)
`一键加群`
<a target="_blank" href="https://jq.qq.com/?_wv=1027&k=5JSjd5D"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="open-capacity-platform交流" title="open-capacity-platform交流"></a>

### 简介
简称ocp是基于layui+springcloud的企业级微服务框架(用户权限管理,配置中心管理,应用管理,....),其核心的设计目标是分离前后端,快速开发部署,学习简单,功能强大,提供快速接入核心接口能力,其目标是帮助企业搭建一套类似百度能力开放平台的框架。
### 基于OCP的企业微服务体验地址
http://47.94.252.160:8066
用户名/密码:admin/admin
### 组织结构
open-capacity-platform
```
├ open-db-core -- 数据库逻辑封装
├ open-eureka-center -- eureka服务注册发现套件
├ ├── open-eureka-server --服务注册中心[1111]
├ └── open-eureka-client --注册服务样例工程[7768]
├ open-config-center -- 配置中心
├ ├── apollo -- 阿波罗配置中心
├ ├ ├── apollo-adminservice --[8090]
├ ├ ├── apollo-assembly
├ ├ ├── apollo-biz
├ ├ ├── apollo-buildtools
├ ├ ├── apollo-client
├ ├ ├── apollo-common
├ ├ ├── apollo-configservice --[8080]
├ ├ ├── apollo-core
├ ├ └── apollo-demo
├ └ apollo-gateway -- 阿波罗整合网关样例工程[9000]
├ open-oauth-center --oauth2套件
├ ├── open-oauth-server --oauth认证中心[8000]
├ ├── open-oauth-client --oauth资源服务器样例工程[8100]
├ ├── open-capacity-client-two --oauth资源服务器样例工程[8200]
├ └── open-oauth-sso --oauth sso样例工程[9997]
├ open-api-gateway -- 服务网关[9200]
├ open-layui-web -- 基于jwt spring security的layui后台管理系统
├ open-xxl-job -- 分布式调度任务
├ ├── xxl-job-core --核心库
├ ├── xxl-job-admin --job管理器
├ └── xxl-job-demo --job执行器
├ open-monitor-center -- 监控中心
├ ├── open-admin-server -- spring boot admin server[9998]
├ ├ cachecloud-open-parent -- 搜狐redis云平台
├ ├ ├── cachecloud-open-client
├ ├ ├── cachecloud-open-common
├ ├ └── cachecloud-open-web
├ └─ open-zipkin-center -- zipkin链路跟踪[9412]
├ ├── open-zipkin-server-kafka --zipkin链路跟踪服务端
└ └── open-zipkin-client-kafka --zipkin链路跟踪客户端
```
#### 开发工具:
- MySql: 数据库
- Tomcat: 应用服务器
- SVN|Git: 版本管理
- Nginx: 反向代理服务器
- IntelliJ IDEA/STS-3.8.0.RELEASE : 开发IDE/STS
- Navicat for MySQL: 数据库客户端
### 开发环境
JDK8+
READIS 3.X
MySQL 5.6 +
MAVEN 3.3.9
### 技术介绍

### 框架设计

## ocp项目演示

## 阿波罗配置中心演示

## oauth认证方式

## oauth单点登录

## 一. open-capacity-platform能力开放平台管理
01.用户登录
<img src="https://i.imgur.com/Wpo9STn.png" />
02.用户管理

03.角色管理

04.菜单管理

05.注册中心


06.配置中心


07.服务管理

08.应用管理

09.定时任务

## 部署
1.cd /root/sop/eureka-server/bin/ && ./start.sh 启动注册中心服务
2.cd /root/sop/config-center/configservice/bin/ && ./start.sh 启动配置中心configservice服务
3.cd /root/sop/config-center/adminservice/bin/ && ./start.sh 启动配置中心adminservice 服务
4.cd /root/sop/config-center/portalservice/bin/ && ./start.sh 启动配置中心portalservice服务
5.cd /root/sop/apollo-zuul/bin/ && ./start.sh 启动演示apollo-zuul项目
启动后效果预览

================================================
FILE: open-api-gateway/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.open.capacity</groupId>
<artifactId>open-capacity-platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>open-api-gateway</artifactId>
<description>zuul oauth swagger集成</description>
<properties>
<docker.image.prefix>gitgeek</docker.image.prefix>
</properties>
<dependencies>
<!-- 关系型和非关系型数据库配置 -->
<dependency>
<groupId>com.open.capacity</groupId>
<artifactId>open-db-core</artifactId>
<version>${core.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-web</artifactId>
</dependency>
<!-- 加入spring security spring security oauth2的处理 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-jwt</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- swagger -->
<dependency>
<groupId>com.didispace</groupId>
<artifactId>swagger-butler-core</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.zyplayer/swagger-mg-ui -->
<dependency>
<groupId>com.zyplayer</groupId>
<artifactId>swagger-mg-ui</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-core</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<!-- 形成带第三方jar包的可执行jar包,jar包目录结构如下 application.properties lib META-INF mybatis
org -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.3.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
<finalName>open-api-gateway</finalName>
</build>
</project>
================================================
FILE: open-api-gateway/src/main/docker/Dockerfile
================================================
FROM frolvlad/alpine-oraclejdk8
VOLUME /tmp
ADD open-api-gateway.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/GatewayApp.java
================================================
package com.open.capacity;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年11月12日 上午22:57:51 类说明
*/
@Configuration
@EnableZuulProxy
@EnableDiscoveryClient
@SpringBootApplication
public class GatewayApp {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
// 前后分离 ajax跨域调用处理
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true); // 允许cookies跨域
config.addAllowedOrigin("*");// 允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如http://xxxx:8080
// ,以降低安全风险。。
config.addAllowedHeader("*");// 允许访问的头信息,*表示全部
config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
config.addAllowedMethod("*");// 允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等
/*
* config.addAllowedMethod("HEAD"); config.addAllowedMethod("GET");//
* 允许Get的请求方法 config.addAllowedMethod("PUT");
* config.addAllowedMethod("POST"); config.addAllowedMethod("DELETE");
* config.addAllowedMethod("PATCH");
*/
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
public static void main(String[] args) {
SpringApplication.run(GatewayApp.class, args);
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/OAuth2ClientConfig.java
================================================
package com.open.capacity.client.oauth2;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler;
import org.springframework.security.oauth2.provider.expression.OAuth2WebSecurityExpressionHandler;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.context.SecurityContextPersistenceFilter;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.open.capacity.client.oauth2.authorize.AuthorizeConfigManager;
import com.open.capacity.client.oauth2.filter.IPFilter;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年11月12日 上午22:57:51
*/
@Component
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class OAuth2ClientConfig extends ResourceServerConfigurerAdapter {
@Resource
private ObjectMapper objectMapper; // springmvc启动时自动装配json处理类
@Autowired(required = false)
private TokenStore redisTokenStore;
@Autowired(required = false)
private JwtTokenStore jwtTokenStore;
@Autowired(required = false)
private JwtAccessTokenConverter jwtAccessTokenConverter;
@Autowired
private AuthenticationEntryPoint authenticationEntryPoint;
@Autowired
private AuthenticationFailureHandler authenticationFailureHandler;
@Autowired
private AuthorizeConfigManager authorizeConfigManager;
@Autowired
private OAuth2WebSecurityExpressionHandler expressionHandler;
@Autowired
private OAuth2AccessDeniedHandler oAuth2AccessDeniedHandler;
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/health");
}
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
if (jwtTokenStore != null) {
resources.tokenStore(jwtTokenStore);
} else if (redisTokenStore != null) {
resources.tokenStore(redisTokenStore);
}
resources.stateless(true);
resources.authenticationEntryPoint(authenticationEntryPoint) ;
resources.expressionHandler(expressionHandler);
resources.accessDeniedHandler(oAuth2AccessDeniedHandler);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.headers().frameOptions().disable();
authorizeConfigManager.config(http.authorizeRequests());
IPFilter iPFilter = new IPFilter();
iPFilter.setAuthenticationFailureHandler(authenticationFailureHandler);
iPFilter.afterPropertiesSet();
http.addFilterAfter(iPFilter, SecurityContextPersistenceFilter.class);
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/AuthorizeConfigManager.java
================================================
package com.open.capacity.client.oauth2.authorize;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2018年2月1日 下午9:47:00
* 类说明
*/
public interface AuthorizeConfigManager {
/**
* @param config
*/
void config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry config);
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/AuthorizeConfigProvider.java
================================================
package com.open.capacity.client.oauth2.authorize;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
/**
* @author 作者 owen E-mail:624191343@qq.com
* @version 创建时间:2018年2月1日 下午9:46:25
* 类说明
*/
public interface AuthorizeConfigProvider {
boolean config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry config);
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/OpenAuthorizeConfigManager.java
================================================
package com.open.capacity.client.oauth2.authorize;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.stereotype.Component;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2018年2月1日 下午9:50:27
* 类说明
*/
@Component
public class OpenAuthorizeConfigManager implements AuthorizeConfigManager {
@Autowired
private List<AuthorizeConfigProvider> authorizeConfigProviders;
/* (non-Javadoc)
* @see com.imooc.security.core.authorize.AuthorizeConfigManager#config(org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry)
*/
@Override
public void config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry config) {
//设置访问
for (AuthorizeConfigProvider authorizeConfigProvider : authorizeConfigProviders) {
authorizeConfigProvider.config(config) ;
}
//token正确登录
config.anyRequest().authenticated() ;
// 放开则全部可以不需要认证访问
// config
// .anyRequest()
// .access("@rbacService.hasPermission(request, authentication)");
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/provider/AuthAuthorizeConfigProvider.java
================================================
package com.open.capacity.client.oauth2.authorize.provider;
import com.open.capacity.client.oauth2.authorize.AuthorizeConfigProvider;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.stereotype.Component;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2018年1月31日 下午9:11:36
* 类说明
* 白名单
*/
@Component
@Order(Integer.MAX_VALUE - 1)
public class AuthAuthorizeConfigProvider implements AuthorizeConfigProvider {
@Override
public boolean config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry config) {
//免token登录设置
config.antMatchers("/test163").permitAll();
config.antMatchers("/auth/**").permitAll();
config.antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**").permitAll();
config.antMatchers("/**/v2/api-docs", "/**/configuration/ui", "/**/swagger-resources", "/**/configuration/security", "/**/swagger-ui.html", "/**/webjars/**").permitAll();
return true;
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/DocumentationConfig.java
================================================
package com.open.capacity.client.oauth2.config;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
import java.util.ArrayList;
import java.util.List;
@Primary
@Component
public class DocumentationConfig implements SwaggerResourcesProvider {
@Override
public List<SwaggerResource> get() {
List resources = new ArrayList<>();
// zuul routes /client/ zuul 集中管理api文档
// 分布式文档集成
resources.add(swaggerResource("认证中心", "/auth/v2/api-docs", "2.0"));
resources.add(swaggerResource("erukea客户端", "/client/v2/api-docs", "2.0"));
return resources;
}
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/SecurityHandlerConfig.java
================================================
package com.open.capacity.client.oauth2.config;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler;
import org.springframework.security.oauth2.provider.expression.OAuth2WebSecurityExpressionHandler;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2018年4月5日 下午7:52:21
* 类说明
*/
@Component
@Configuration
public class SecurityHandlerConfig {
@Resource
private ObjectMapper objectMapper ; //springmvc启动时自动装配json处理类
/**
* 登陆失败
*
* @return
*/
@Bean
public AuthenticationFailureHandler loginFailureHandler() {
return new AuthenticationFailureHandler() {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
String msg = null;
if (exception instanceof BadCredentialsException) {
msg = "密码错误";
} else {
msg = exception.getMessage();
}
Map<String, String> rsp = new HashMap<>();
response.setStatus(HttpStatus.UNAUTHORIZED.value());
rsp.put("resp_code", HttpStatus.UNAUTHORIZED.value() + "");
rsp.put("rsp_msg", msg);
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(rsp));
response.getWriter().flush();
response.getWriter().close();
}
};
}
/**
* 未登录,返回401
*
* @return
*/
@Bean
public AuthenticationEntryPoint authenticationEntryPoint() {
return new AuthenticationEntryPoint() {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException, ServletException {
Map<String ,String > rsp =new HashMap<>();
response.setStatus(HttpStatus.UNAUTHORIZED.value() );
rsp.put("resp_code", HttpStatus.UNAUTHORIZED.value() + "") ;
rsp.put("resp_msg", authException.getMessage()) ;
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(rsp));
response.getWriter().flush();
response.getWriter().close();
}
};
}
@Bean
public OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler(ApplicationContext applicationContext) {
OAuth2WebSecurityExpressionHandler expressionHandler = new OAuth2WebSecurityExpressionHandler();
expressionHandler.setApplicationContext(applicationContext);
return expressionHandler;
}
@Bean
public OAuth2AccessDeniedHandler oAuth2AccessDeniedHandler(){
return new OAuth2AccessDeniedHandler(){
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException authException) throws IOException, ServletException {
Map<String ,String > rsp =new HashMap<>();
response.setContentType("application/json;charset=UTF-8");
response.setStatus(HttpStatus.UNAUTHORIZED.value() );
rsp.put("resp_code", HttpStatus.UNAUTHORIZED.value() + "") ;
rsp.put("resp_msg", authException.getMessage()) ;
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(rsp));
response.getWriter().flush();
response.getWriter().close();
}
};
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/SwaggerConfig.java
================================================
package com.open.capacity.client.oauth2.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Component
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.open.capacity"))
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/dao/ServiceDao.java
================================================
package com.open.capacity.client.oauth2.dao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@Mapper
public interface ServiceDao {
@Select("select p.* from sys_services p inner join sys_client_permission rp on p.id = rp.permissionId where rp.clientId = #{clientId} order by p.sort")
List<Map> listByClientId(Long clientId);
@Select("select * from oauth_client_details t where t.client_id = #{clientId}")
Map getClient(String clientId);
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/filter/AccessFilter.java
================================================
package com.open.capacity.client.oauth2.filter;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
* Created by owen on 2017/9/10.
*/
@Component
public class AccessFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
try {
//解决zuul token传递问题
Authentication user = SecurityContextHolder.getContext()
.getAuthentication();
if (user != null) {
if (user instanceof OAuth2Authentication) {
Authentication athentication = (Authentication) user;
OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) athentication.getDetails();
ctx.addZuulRequestHeader("Authorization", "bearer " + details.getTokenValue());
}
}
} catch (Exception e) {
}
return null;
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/filter/IPFilter.java
================================================
package com.open.capacity.client.oauth2.filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
/**
* IP过滤器
*
* @author owen 624191343@qq.com
* <p>
* 2017年10月14日
*/
public class IPFilter extends OncePerRequestFilter implements InitializingBean {
Logger logger = LoggerFactory.getLogger(getClass());
private AuthenticationFailureHandler authenticationFailureHandler;
public AuthenticationFailureHandler getAuthenticationFailureHandler() {
return authenticationFailureHandler;
}
public void setAuthenticationFailureHandler(AuthenticationFailureHandler authenticationFailureHandler) {
this.authenticationFailureHandler = authenticationFailureHandler;
}
// 所有需要拦截的url
private Set<String> urls = new HashSet<>();
// url匹配器
private AntPathMatcher pathMatcher = new AntPathMatcher();
@Override
public void afterPropertiesSet() throws ServletException {
super.afterPropertiesSet(); // 初始化其他bean参数
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String accessToken = null;
accessToken = extractToken(request);
// if(!pathMatcher.match("/auth/**", request.getRequestURI())){
//
// if (accessToken == null) {
// authenticationFailureHandler.onAuthenticationFailure(request, response,
// new AuthenticationException("token 不存在") {
//
// private static final long serialVersionUID = 6154557943607468780L;
//
// });
// return;
// }
// }
// String ipAddr = this.getIpAddr(req);
// logger.info("请求IP地址为:[{}]", ipAddr);
// // 配置本地IP白名单,生产环境可放入数据库或者redis中
// List<String> ips = new ArrayList<String>();
// ips.add("127.0.0.1");
//
// if (!ips.contains(ipAddr)) {
// logger.info("IP地址校验不通过!!!");
// ctx.setResponseStatusCode(401);
// ctx.setSendZuulResponse(false);
// ctx.setResponseBody("IpAddr is forbidden!");
// }
// logger.info("IP校验通过。");
filterChain.doFilter(request, response);
}
protected String extractToken(HttpServletRequest request) {
// first check the header...
String token = extractHeaderToken(request);
// bearer type allows a request parameter as well
if (token == null) {
logger.debug("Token not found in headers. Trying request parameters.");
token = request.getParameter(OAuth2AccessToken.ACCESS_TOKEN);
if (token == null) {
logger.debug("Token not found in request parameters. Not an OAuth2 request.");
} else {
request.setAttribute(OAuth2AuthenticationDetails.ACCESS_TOKEN_TYPE, OAuth2AccessToken.BEARER_TYPE);
}
}
return token;
}
/**
* Extract the OAuth bearer token from a header.
*
* @param request The request.
* @return The token, or null if no OAuth authorization header was supplied.
*/
protected String extractHeaderToken(HttpServletRequest request) {
Enumeration<String> headers = request.getHeaders("Authorization");
while (headers.hasMoreElements()) { // typically there is only one (most
// servers enforce that)
String value = headers.nextElement();
if ((value.toLowerCase().startsWith(OAuth2AccessToken.BEARER_TYPE.toLowerCase()))) {
String authHeaderValue = value.substring(OAuth2AccessToken.BEARER_TYPE.length()).trim();
// Add this here for the auth details later. Would be better to
// change the signature of this method.
request.setAttribute(OAuth2AuthenticationDetails.ACCESS_TOKEN_TYPE,
value.substring(0, OAuth2AccessToken.BEARER_TYPE.length()).trim());
int commaIndex = authHeaderValue.indexOf(',');
if (commaIndex > 0) {
authHeaderValue = authHeaderValue.substring(0, commaIndex);
}
return authHeaderValue;
}
}
return null;
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/service/RbacService.java
================================================
package com.open.capacity.client.oauth2.service;
import org.springframework.security.core.Authentication;
import javax.servlet.http.HttpServletRequest;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年12月4日 下午5:32:29
* 类说明
*/
public interface RbacService {
boolean hasPermission(HttpServletRequest request, Authentication authentication);
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/service/impl/RbacServiceImpl.java
================================================
package com.open.capacity.client.oauth2.service.impl;
import com.open.capacity.client.oauth2.dao.ServiceDao;
import com.open.capacity.client.oauth2.service.RbacService;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.stereotype.Service;
import org.springframework.util.AntPathMatcher;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* API 级别权限认证
*
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年12月4日 下午5:32:29
* 类说明
*/
@Service("rbacService")
public class RbacServiceImpl implements RbacService {
@Resource
private ServiceDao serviceDao;
private AntPathMatcher antPathMatcher = new AntPathMatcher();
/**
* @param request HttpServletRequest
* @param authentication 认证信息
* @return 是否有权限
*/
@Override
public boolean hasPermission(HttpServletRequest request, Authentication authentication) {
Authentication user = SecurityContextHolder.getContext()
.getAuthentication();
if (user != null) {
if (user instanceof OAuth2Authentication) {
OAuth2Authentication athentication = (OAuth2Authentication) user;
String clientId = athentication.getOAuth2Request().getClientId();
Map map = serviceDao.getClient(clientId);
if (map == null) {
return false;
} else {
List<Map> list = serviceDao.listByClientId(Long.valueOf(String.valueOf(map.get("id"))));
;
for (Iterator<Map> it = list.iterator(); it.hasNext(); ) {
Map temp = it.next();
if (antPathMatcher.match(request.getRequestURI(), String.valueOf(temp.get("href")))) {
return true;
}
}
return false;
}
}
}
//TODO 目前都是true
boolean hasPermission = true;
return hasPermission;
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/token/TokenStoreConfig.java
================================================
package com.open.capacity.client.oauth2.token;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.oauth2.provider.token.store.JdbcTokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
import com.open.capacity.client.oauth2.token.store.RedisTemplateTokenStore;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年12月18日 下午3:15:22
* 类说明
* redis存储token
*/
@Configuration
public class TokenStoreConfig {
@Resource
private DataSource dataSource ;
@Autowired(required=false)
private RedisTemplate<String, Object> redisTemplate ;
@Bean
@ConditionalOnProperty(prefix="security.oauth2.token.store",name="type" ,havingValue="jdbc" ,matchIfMissing=true)
public JdbcTokenStore jdbcTokenStore(){
// oauth_access_token oauth_refresh_token 创建两张表
// return new JdbcTokenStore( dataSource ) ;
return new JdbcTokenStore( dataSource ) ;
}
@Bean
@ConditionalOnProperty(prefix="security.oauth2.token.store",name="type" ,havingValue="redis" ,matchIfMissing=true)
public RedisTemplateTokenStore redisTokenStore(){
// return new RedisTokenStore( redisTemplate.getConnectionFactory() ) ; //单台redis服务器
RedisTemplateTokenStore redisTemplateStore = new RedisTemplateTokenStore() ;
redisTemplateStore.setRedisTemplate(redisTemplate);
return redisTemplateStore ;
}
//使用jwt替换原有的uuid生成token方式
@Configuration
@ConditionalOnProperty(prefix="security.oauth2.token.store",name="type" ,havingValue="jwt" ,matchIfMissing=true)
public static class JWTTokenConfig {
@Bean
public JwtTokenStore jwtTokenStore(){
return new JwtTokenStore( jwtAccessTokenConverter() ) ;
}
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter(){
JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();
accessTokenConverter.setSigningKey("neusoft");
return accessTokenConverter ;
}
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/token/store/RedisTemplateTokenStore.java
================================================
package com.open.capacity.client.oauth2.token.store;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.oauth2.common.ExpiringOAuth2RefreshToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2RefreshToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.AuthenticationKeyGenerator;
import org.springframework.security.oauth2.provider.token.DefaultAuthenticationKeyGenerator;
import org.springframework.security.oauth2.provider.token.TokenStore;
/**
* @author owen 624191343@qq.com
* @version 创建时间:2017年11月12日 上午22:57:51
* 类说明
* redis集群存储token
*/
public class RedisTemplateTokenStore implements TokenStore {
private static final String ACCESS = "access:";
private static final String AUTH_TO_ACCESS = "auth_to_access:";
private static final String AUTH = "auth:";
private static final String REFRESH_AUTH = "refresh_auth:";
private static final String ACCESS_TO_REFRESH = "access_to_refresh:";
private static final String REFRESH = "refresh:";
private static final String REFRESH_TO_ACCESS = "refresh_to_access:";
private static final String CLIENT_ID_TO_ACCESS = "client_id_to_access:";
private static final String UNAME_TO_ACCESS = "uname_to_access:";
private RedisTemplate<String,Object> redisTemplate ;
public RedisTemplate<String,Object> getRedisTemplate() {
return redisTemplate;
}
public void setRedisTemplate(RedisTemplate<String,Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
private AuthenticationKeyGenerator authenticationKeyGenerator = new DefaultAuthenticationKeyGenerator();
public void setAuthenticationKeyGenerator(AuthenticationKeyGenerator authenticationKeyGenerator) {
this.authenticationKeyGenerator = authenticationKeyGenerator;
}
public OAuth2AccessToken getAccessToken(OAuth2Authentication authentication) {
String key = authenticationKeyGenerator.extractKey(authentication);
OAuth2AccessToken accessToken = (OAuth2AccessToken) redisTemplate.opsForValue().get(AUTH_TO_ACCESS+key);
if (accessToken != null
&& !key.equals(authenticationKeyGenerator.extractKey(readAuthentication(accessToken.getValue())))) {
// Keep the stores consistent (maybe the same user is represented by this authentication but the details
// have changed)
storeAccessToken(accessToken, authentication);
}
return accessToken;
}
public OAuth2Authentication readAuthentication(OAuth2AccessToken token) {
return readAuthentication(token.getValue());
}
public OAuth2Authentication readAuthentication(String token) {
return (OAuth2Authentication) this.redisTemplate.opsForValue().get(AUTH + token);
}
public OAuth2Authentication readAuthenticationForRefreshToken(OAuth2RefreshToken token) {
return readAuthenticationForRefreshToken(token.getValue());
}
public OAuth2Authentication readAuthenticationForRefreshToken(String token) {
return (OAuth2Authentication) this.redisTemplate.opsForValue().get( REFRESH_AUTH+token);
}
public void storeAccessToken(OAuth2AccessToken token, OAuth2Authentication authentication) {
OAuth2AccessToken existingAccessToken = this.getAccessToken(authentication);
this.redisTemplate.opsForValue().set(ACCESS+ token.getValue(), token);
this.redisTemplate.opsForValue().set(AUTH +token.getValue(), authentication);
this.redisTemplate.opsForValue().set(AUTH_TO_ACCESS+authenticationKeyGenerator.extractKey(authentication), token);
if (!authentication.isClientOnly()) {
if (existingAccessToken != null) {
if (!existingAccessToken.isExpired()) {
int seconds = token.getExpiresIn();
redisTemplate.expire(UNAME_TO_ACCESS+authentication.getOAuth2Request().getClientId(), seconds, TimeUnit.SECONDS) ;
}else{
redisTemplate.opsForList().rightPush(UNAME_TO_ACCESS+getApprovalKey(authentication), token) ;
}
}else{
redisTemplate.opsForList().rightPush(UNAME_TO_ACCESS+getApprovalKey(authentication), token) ;
}
}
if (existingAccessToken != null) {
if (!existingAccessToken.isExpired()) {
int seconds = token.getExpiresIn();
redisTemplate.expire(CLIENT_ID_TO_ACCESS+authentication.getOAuth2Request().getClientId(), seconds, TimeUnit.SECONDS) ;
}else{
redisTemplate.opsForList().rightPush(CLIENT_ID_TO_ACCESS+authentication.getOAuth2Request().getClientId(), token) ;
}
}else{
redisTemplate.opsForList().rightPush(CLIENT_ID_TO_ACCESS+authentication.getOAuth2Request().getClientId(), token) ;
}
if (token.getExpiration() != null) {
int seconds = token.getExpiresIn();
redisTemplate.expire(ACCESS+ token.getValue(), seconds, TimeUnit.SECONDS) ;
redisTemplate.expire(AUTH+ token.getValue(), seconds, TimeUnit.SECONDS) ;
redisTemplate.expire(AUTH_TO_ACCESS+ authenticationKeyGenerator.extractKey(authentication), seconds, TimeUnit.SECONDS) ;
redisTemplate.expire(CLIENT_ID_TO_ACCESS+authentication.getOAuth2Request().getClientId(), seconds, TimeUnit.SECONDS) ;
redisTemplate.expire(UNAME_TO_ACCESS+ getApprovalKey(authentication), seconds, TimeUnit.SECONDS) ;
}
OAuth2RefreshToken refreshToken = token.getRefreshToken();
if (token.getRefreshToken() != null && token.getRefreshToken().getValue() != null) {
this.redisTemplate.opsForValue().set( REFRESH_TO_ACCESS+ token.getRefreshToken().getValue(), token.getValue());
this.redisTemplate.opsForValue().set(ACCESS_TO_REFRESH+token.getValue(), token.getRefreshToken().getValue());
if (refreshToken instanceof ExpiringOAuth2RefreshToken) {
ExpiringOAuth2RefreshToken expiringRefreshToken = (ExpiringOAuth2RefreshToken) refreshToken;
Date expiration = expiringRefreshToken.getExpiration();
if (expiration != null) {
int seconds = Long.valueOf((expiration.getTime() - System.currentTimeMillis()) / 1000L)
.intValue();
redisTemplate.expire( REFRESH_TO_ACCESS+ token.getRefreshToken().getValue() , seconds, TimeUnit.SECONDS) ;
redisTemplate.expire( ACCESS_TO_REFRESH+token.getValue(), seconds, TimeUnit.SECONDS) ;
}
}
}
}
private String getApprovalKey(OAuth2Authentication authentication) {
String userName = authentication.getUserAuthentication() == null ? "" : authentication.getUserAuthentication()
.getName();
return getApprovalKey(authentication.getOAuth2Request().getClientId(), userName);
}
private String getApprovalKey(String clientId, String userName) {
return clientId + (userName==null ? "" : ":" + userName);
}
public void removeAccessToken(OAuth2AccessToken accessToken) {
removeAccessToken(accessToken.getValue());
}
public OAuth2AccessToken readAccessToken(String tokenValue) {
return (OAuth2AccessToken) this.redisTemplate.opsForValue().get(ACCESS+tokenValue);
}
public void removeAccessToken(String tokenValue) {
OAuth2AccessToken removed = (OAuth2AccessToken) redisTemplate.opsForValue().get(ACCESS+tokenValue);
// Don't remove the refresh token - it's up to the caller to do that
OAuth2Authentication authentication = (OAuth2Authentication) this.redisTemplate.opsForValue().get(AUTH+tokenValue);
this.redisTemplate.delete(AUTH+tokenValue);
redisTemplate.delete(ACCESS+tokenValue);
this.redisTemplate.delete(ACCESS_TO_REFRESH +tokenValue);
if (authentication != null) {
this.redisTemplate.delete(AUTH_TO_ACCESS+authenticationKeyGenerator.extractKey(authentication));
String clientId = authentication.getOAuth2Request().getClientId();
// redisTemplate.opsForList().rightPush("UNAME_TO_ACCESS:"+getApprovalKey(authentication), token) ;
redisTemplate.opsForList().leftPop(UNAME_TO_ACCESS+getApprovalKey(clientId, authentication.getName()));
redisTemplate.opsForList().leftPop(CLIENT_ID_TO_ACCESS+clientId);
this.redisTemplate.delete(AUTH_TO_ACCESS+authenticationKeyGenerator.extractKey(authentication));
}
}
public void storeRefreshToken(OAuth2RefreshToken refreshToken, OAuth2Authentication authentication) {
this.redisTemplate.opsForValue().set(REFRESH+refreshToken.getValue(), refreshToken);
this.redisTemplate.opsForValue().set( REFRESH_AUTH + refreshToken.getValue(), authentication);
}
public OAuth2RefreshToken readRefreshToken(String tokenValue) {
return (OAuth2RefreshToken) this.redisTemplate.opsForValue().get(REFRESH+tokenValue);
}
public void removeRefreshToken(OAuth2RefreshToken refreshToken) {
removeRefreshToken(refreshToken.getValue());
}
public void removeRefreshToken(String tokenValue) {
this.redisTemplate.delete( REFRESH + tokenValue);
this.redisTemplate.delete( REFRESH_AUTH + tokenValue);
this.redisTemplate.delete(REFRESH_TO_ACCESS +tokenValue);
}
public void removeAccessTokenUsingRefreshToken(OAuth2RefreshToken refreshToken) {
removeAccessTokenUsingRefreshToken(refreshToken.getValue());
}
private void removeAccessTokenUsingRefreshToken(String refreshToken) {
String token = (String) this.redisTemplate.opsForValue().get( REFRESH_TO_ACCESS +refreshToken) ;
if (token != null) {
redisTemplate.delete(REFRESH_TO_ACCESS+ refreshToken);
}
}
public Collection<OAuth2AccessToken> findTokensByClientIdAndUserName(String clientId, String userName) {
List<Object> result = redisTemplate.opsForList().range(UNAME_TO_ACCESS+ getApprovalKey(clientId, userName), 0, -1);
if (result == null || result.size() == 0) {
return Collections.<OAuth2AccessToken> emptySet();
}
List<OAuth2AccessToken> accessTokens = new ArrayList<OAuth2AccessToken>(result.size());
for(Iterator<Object> it = result.iterator();it.hasNext();){
OAuth2AccessToken accessToken = (OAuth2AccessToken) it.next();
accessTokens.add(accessToken);
}
return Collections.<OAuth2AccessToken> unmodifiableCollection(accessTokens);
}
public Collection<OAuth2AccessToken> findTokensByClientId(String clientId) {
List<Object> result = redisTemplate.opsForList().range((CLIENT_ID_TO_ACCESS+clientId), 0, -1);
if (result == null || result.size() == 0) {
return Collections.<OAuth2AccessToken> emptySet();
}
List<OAuth2AccessToken> accessTokens = new ArrayList<OAuth2AccessToken>(result.size());
for(Iterator<Object> it = result.iterator();it.hasNext();){
OAuth2AccessToken accessToken = (OAuth2AccessToken) it.next();
accessTokens.add(accessToken);
}
return Collections.<OAuth2AccessToken> unmodifiableCollection(accessTokens);
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/controller/TestController.java
================================================
package com.open.capacity.controller;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年11月12日 上午22:57:51
*/
@RestController
public class TestController {
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
@Resource
private RedisTemplate< String, Object> redisTemplate ;
@GetMapping("/test111")
public String hello() {
return "hello";
}
}
================================================
FILE: open-api-gateway/src/main/java/com/open/capacity/controller/UserController.java
================================================
package com.open.capacity.controller;
import java.security.Principal;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.open.capacity.client.oauth2.token.store.RedisTemplateTokenStore;
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年11月12日 上午22:57:51
*/
@RestController
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Resource
private RedisTemplate< String, Object> redisTemplate ;
@GetMapping("/hello")
public String hello() {
redisTemplate.opsForValue().set("hello", "owen");
return "hello";
}
@RequestMapping(value = { "/users" }, produces = "application/json") // 获取用户信息。/auth/user
public Map<String, Object> user(OAuth2Authentication user) {
Map<String, Object> userInfo = new HashMap<>();
userInfo.put("user", user.getUserAuthentication().getPrincipal());
logger.debug("认证详细信息:" + user.getUserAuthentication().getPrincipal().toString());
userInfo.put("authorities", AuthorityUtils.authorityListToSet(user.getUserAuthentication().getAuthorities()));
return userInfo;
}
@RequestMapping(value = { "/user" }, produces = "application/json") // 获取用户信息。/auth/user
public Principal user(Principal user) {
return user;
}
@GetMapping("/del/{accessToken}/{refreshToken}")
public String hello2(@PathVariable String accessToken,@PathVariable String refreshToken) {
RedisTemplateTokenStore redisTemplateStore = new RedisTemplateTokenStore();
redisTemplateStore.setRedisTemplate(redisTemplate);
redisTemplateStore.removeAccessToken(accessToken);
redisTemplateStore.removeRefreshToken(refreshToken);
return "delR";
}
}
================================================
FILE: open-api-gateway/src/main/resources/application.yml
================================================
server:
port: 9200
spring:
application:
name: open-auth-gateway
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# driver-class-name: oracle.jdbc.OracleDriver
# url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
# username: crm_owner_user
# password: bss_crm_test
# filters: stat,wall
################## mysql start ############################
driver-class-name: com.mysql.jdbc.Driver
# 192.168.3.150 130.75.131.211 134.224.249.39 47.94.252.160
url: jdbc:mysql://192.168.3.150:3306/boot_security?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
username: root
password: root
filters: stat,wall
################### mysq end l##########################
redis:
################### redis 单机版 start ##########################
host: 127.0.0.1
port: 6379
timeout: 3000
database: 1
################### redis 单机版 end ##########################
# cluster:
# nodes: 192.168.3.157:7000,192.168.3.158:7000,192.168.3.159:7000,192.168.3.157:7001,192.168.3.158:7001,192.168.3.159:7001
## #130.75.131.237:7000,130.75.131.238:7000,130.75.131.239:7000,130.75.131.237:7001,130.75.131.238:7001,130.75.131.239:7001
# #192.168.3.157:7000,192.168.3.158:7000,192.168.3.159:7000,192.168.3.157:7001,192.168.3.158:7001,192.168.3.159:7001
# timeout: 1000 # 连接超时时间(毫秒)
# pool:
# max-active: 10 # 连接池最大连接数(使用负值表示没有限制)
# max-idle: 8 # 连接池中的最大空闲连接
# min-idle: 2 # 连接池中的最小空闲连接
# max-wait: 100 # 连接池最大阻塞等待时间(使用负值表示没有限制)
docker:
ipAddress: 47.94.252.160
mybatis:
config-location: classpath:mybatis.cfg.xml
mapper-locations: classpath*:com/open/**/dao/*.xml
security:
oauth2:
token:
store:
type: redis
#设置最大超时时间
ribbon:
httpclient:
enabled: false
okhttp:
enabled: true
ReadTimeout: 90000
ConnectTimeout: 90000
#设置最大容错超时时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 90000
hystrix:
command:
default:
execution:
timeout:
enabled: false #设置熔断的超时时间开启 false关闭熔断功能,true开启熔断功能
isolation:
thread:
timeoutInMilliseconds: 90000
swagger:
butler:
api-docs-path: v2/api-docs
auto-generate-from-zuul-routes: true
zuul:
retryable: false #关闭重试
sensitive-headers: #/oauth/token需要请求头处理
add-host-header: true
routes:
baidu:
path: /test163/**
url: http://www.163.com
auth:
path: /auth/**
service-id: open-auth-server
strip-prefix: true
custom-sensitive-headers: true #http://blog.didispace.com/spring-cloud-zuul-cookie-redirect/ zuul授权码跳转问题
client:
path: /client/**
service-id: open-eureka-client
strip-prefix: true
auth_client:
path: /auth-client/**
service-id: open-auth-client
strip-prefix: true
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:1111/eureka/
#http://192.168.3.170:1111/eureka,http://192.168.3.171:1111/eureka,http://192.168.3.173:1111/eureka
#http://130.75.131.243:1111/eureka/,http://130.75.131.244:1111/eureka/,http://130.75.131.245:1111/eureka/
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
# instance-id: ${spring.application.name}:${docker.ipAddress}:${spring.application.instance_id:${server.port}}
lease-renewal-interval-in-seconds: 5
#注册实例文档
status-page-url: http://${spring.cloud.client.ipAddress}:${server.port}/swagger-ui.html # ${server.port}为该服务的端口号
# status-page-url: http://${docker.ipAddress}:${server.port}/swagger-ui.html # ${server.port}为该服务的端口号
================================================
FILE: open-api-gateway/src/main/resources/bootstrap.yml
================================================
management:
security:
enabled: false
#spring:
# cloud:
# config:
# discovery:
# enabled: true
# service-id: unieap-config-server
# name: unieap-config-server
# fail-fast: true
# profile: dev # eureka-config-client-dev.yml
================================================
FILE: open-commons/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.open.capacity</groupId>
<artifactId>open-capacity-platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>open-commons</artifactId>
<!-- spring security 核心包 -->
<dependencies>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
</dependencies>
</project>
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/dto/LoginUser.java
================================================
package com.open.capacity.security.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.open.capacity.security.model.Permission;
import com.open.capacity.security.model.SysUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class LoginUser extends SysUser implements UserDetails {
private static final long serialVersionUID = -1379274258881257107L;
private List<Permission> permissions;
private String jwtToken;
private String token;
/**
* 登陆时间戳(毫秒)
*/
private Long loginTime;
/**
* 过期时间戳
*/
private Long expireTime;
public List<Permission> getPermissions() {
return permissions;
}
public void setPermissions(List<Permission> permissions) {
this.permissions = permissions;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
@Override
@JsonIgnore
public Collection<? extends GrantedAuthority> getAuthorities() {
List<GrantedAuthority> auths = new ArrayList<GrantedAuthority>();
for (Iterator<Permission> it = permissions.iterator(); it.hasNext(); ) {
Permission p = it.next();
if (!StringUtils.isEmpty(p.getPermission())) {
auths.add(new SimpleGrantedAuthority(p.getPermission()));
}
}
return auths;
// return permissions.parallelStream().filter(p -> !StringUtils.isEmpty(p.getPermission()))
// .map(p -> new SimpleGrantedAuthority(p.getPermission())).collect(Collectors.toSet());
}
public void setAuthorities(Collection<? extends GrantedAuthority> authorities) {
// do nothing
}
// 账户是否未过期
@JsonIgnore
@Override
public boolean isAccountNonExpired() {
return true;
}
// 账户是否未锁定
@JsonIgnore
@Override
public boolean isAccountNonLocked() {
return getStatus() != Status.LOCKED;
}
// 密码是否未过期
@JsonIgnore
@Override
public boolean isCredentialsNonExpired() {
return true;
}
// 账户是否激活
@JsonIgnore
@Override
public boolean isEnabled() {
return true;
}
public Long getLoginTime() {
return loginTime;
}
public void setLoginTime(Long loginTime) {
this.loginTime = loginTime;
}
public Long getExpireTime() {
return expireTime;
}
public void setExpireTime(Long expireTime) {
this.expireTime = expireTime;
}
@JsonIgnore
public String getJwtToken() {
return jwtToken;
}
public void setJwtToken(String jwtToken) {
this.jwtToken = jwtToken;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/dto/ResponseInfo.java
================================================
package com.open.capacity.security.dto;
import java.io.Serializable;
public class ResponseInfo implements Serializable {
private static final long serialVersionUID = -4417715614021482064L;
private String code;
private String message;
public ResponseInfo(String code, String message) {
super();
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/dto/RoleDto.java
================================================
package com.open.capacity.security.dto;
import com.open.capacity.security.model.Role;
import java.util.List;
public class RoleDto extends Role {
private static final long serialVersionUID = 4218495592167610193L;
private List<Long> permissionIds;
public List<Long> getPermissionIds() {
return permissionIds;
}
public void setPermissionIds(List<Long> permissionIds) {
this.permissionIds = permissionIds;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/dto/UserDto.java
================================================
package com.open.capacity.security.dto;
import com.open.capacity.security.model.SysUser;
import java.util.List;
public class UserDto extends SysUser {
private static final long serialVersionUID = -184009306207076712L;
private List<Long> roleIds;
public List<Long> getRoleIds() {
return roleIds;
}
public void setRoleIds(List<Long> roleIds) {
this.roleIds = roleIds;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/model/BaseEntity.java
================================================
package com.open.capacity.security.model;
import java.io.Serializable;
import java.util.Date;
public abstract class BaseEntity<ID extends Serializable> implements Serializable {
private static final long serialVersionUID = 2054813493011812469L;
private ID id;
private Date createTime = new Date();
private Date updateTime = new Date();
public ID getId() {
return id;
}
public void setId(ID id) {
this.id = id;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/model/Permission.java
================================================
package com.open.capacity.security.model;
import java.util.List;
public class Permission extends BaseEntity<Long> {
private static final long serialVersionUID = 6180869216498363919L;
private Long parentId;
private String name;
private String css;
private String href;
private Integer type;
private String permission;
private Integer sort;
private List<Permission> child;
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCss() {
return css;
}
public void setCss(String css) {
this.css = css;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getPermission() {
return permission;
}
public void setPermission(String permission) {
this.permission = permission;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public List<Permission> getChild() {
return child;
}
public void setChild(List<Permission> child) {
this.child = child;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/model/Role.java
================================================
package com.open.capacity.security.model;
public class Role extends BaseEntity<Long> {
private static final long serialVersionUID = -3802292814767103648L;
private String name;
private String description;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/model/SysLogs.java
================================================
package com.open.capacity.security.model;
public class SysLogs extends BaseEntity<Long> {
private static final long serialVersionUID = -7809315432127036583L;
private SysUser user;
private String module;
private Boolean flag;
private String remark;
public SysUser getUser() {
return user;
}
public void setUser(SysUser user) {
this.user = user;
}
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
}
public Boolean getFlag() {
return flag;
}
public void setFlag(Boolean flag) {
this.flag = flag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/model/SysUser.java
================================================
package com.open.capacity.security.model;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
public class SysUser extends BaseEntity<Long> {
private static final long serialVersionUID = -6525908145032868837L;
private String username;
private String password;
private String nickname;
private String headImgUrl;
private String phone;
private String telephone;
private String email;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
private Integer sex;
private Integer status;
private String intro;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getHeadImgUrl() {
return headImgUrl;
}
public void setHeadImgUrl(String headImgUrl) {
this.headImgUrl = headImgUrl;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
public interface Status {
int DISABLED = 0;
int VALID = 1;
int LOCKED = 2;
}
}
================================================
FILE: open-commons/src/main/java/com/open/capacity/security/model/TokenModel.java
================================================
package com.open.capacity.security.model;
import java.util.Date;
public class TokenModel extends BaseEntity<String> {
private static final long serialVersionUID = 4566334160572911795L;
/**
* 过期时间
*/
private Date expireTime;
/**
* LoginUser的json串
*/
private String val;
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}
================================================
FILE: open-config-center/apollo/.gitattributes
================================================
text=auto
================================================
FILE: open-config-center/apollo/.gitignore
================================================
*.class
.DS_Store
application.pid
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# Eclipse
.classpath
.project
target
.settings
bin/
target/
# Idea
.idea
*.iml
# git
*.orig
================================================
FILE: open-config-center/apollo/.travis.yml
================================================
language: java
jdk:
- oraclejdk8
notification:
email:
recipients:
- song_s@ctrip.com,zhanglea@ctrip.com
on_success: always
on_failure: always
before_script:
- echo "MAVEN_OPTS='-Xms1024m -Xmx3072m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m'" > ~/.mavenrc
before_install:
- pip install --user codecov
after_success:
- mvn clean test jacoco:report coveralls:report
- codecov
branches:
only:
- master
env:
global:
- secure: "DYJkJ7ArGJuIyTJsmjvUAJRyUKXEaGFWYZFAGZq6vxbrMN3tThz7drfNhhvP2YE7hdS7YX7hZBWVQEnNR+pBN+ykQFx7TpLr311eEk2/Yy3G5qegeHMsgqYXfAp3FFpYlE6Kr3Dcf4kFSWtRi735kSo5oHicoaxbyWENgmKT+uQjYERKhDXEoenMaDpcf8WO8KARzxI1cXf69ECnYP2rzNOfkNW4IGjTcJnplXPZ9BNBRn3WfyPwEHlemETAMwJxJXolNM9qn1bDBTB/35yJrneQY/pYp9Q8PbQID2lNJu7PFKYaI9mvsKHUgxjbzsC29zlMY94pDr6sQtr7IA0dSuk+qO2tEqAStTwRI5JOcozLAslTMNnUn6HLvy0/Kkq1TL+JrIohoRD58F34SzjcnuB4w0/GCWGU4BMSbzPwHsgQZM4lkHDWv+w1OSwP3dgCFI/vYYr9xNV0zqTgyZ9ITkMZPL0wOh0DZ7Bxxm80wyHfJuRwywemMtzitgjPR4BKENbpcoGN4lcKWciksAuiyX+dedOPfGoOWfnIKh1g7yeVB84LMggCSad/9cqnYf2Sm8xSyVzNmyhSOy2Ocy40RDas2uHIK3/QPy56Le/t1LD2On/x1TZBIoSavedNYA5N54s/ZCDZOcepUMvlwtjgnx/SMjU85ZLKCcliPGdTWws="
- "MAVEN_OPTS=-Xms1024m -Xmx3072m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m"
addons:
coverity_scan:
project:
name: "ctripcorp/apollo"
description: "Build submitted via Travis CI"
notification_email: song_s@ctrip.com,zhanglea@ctrip.com
build_command_prepend: "mvn clean"
build_command: "mvn -DskipTests=true compile"
branch_pattern: master
cache:
directories:
- $HOME/.m2
================================================
FILE: open-config-center/apollo/LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: open-config-center/apollo/apollo-adminservice/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.10.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apollo-adminservice</artifactId>
<name>Apollo AdminService</name>
<properties>
<github.path>${project.artifactId}</github.path>
</properties>
<dependencies>
<!-- apollo -->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-biz</artifactId>
</dependency>
<!-- end of apollo -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>
spring-cloud-starter-archaius
</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
<exclusion>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
<exclusion>
<artifactId>ribbon-eureka</artifactId>
<groupId>com.netflix.ribbon</groupId>
</exclusion>
<exclusion>
<artifactId>aws-java-sdk-core</artifactId>
<groupId>com.amazonaws</groupId>
</exclusion>
<exclusion>
<artifactId>aws-java-sdk-ec2</artifactId>
<groupId>com.amazonaws</groupId>
</exclusion>
<exclusion>
<artifactId>aws-java-sdk-autoscaling</artifactId>
<groupId>com.amazonaws</groupId>
</exclusion>
<exclusion>
<artifactId>aws-java-sdk-sts</artifactId>
<groupId>com.amazonaws</groupId>
</exclusion>
<exclusion>
<artifactId>aws-java-sdk-route53</artifactId>
<groupId>com.amazonaws</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>apollo-adminservice</finalName>
</build>
</project>
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/assembly/assembly-descriptor.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>apollo-assembly</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<!--scripts -->
<fileSet>
<directory>src/main/scripts</directory>
<outputDirectory>scripts</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
<fileMode>0755</fileMode>
<lineEnding>unix</lineEnding>
</fileSet>
<fileSet>
<directory>src/main/config</directory>
<outputDirectory>config</outputDirectory>
<excludes>
<exclude>apollo-adminservice.conf</exclude>
</excludes>
<lineEnding>unix</lineEnding>
</fileSet>
<fileSet>
<directory>src/main/config</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>apollo-adminservice.conf</include>
</includes>
<lineEnding>unix</lineEnding>
</fileSet>
<!--artifact -->
<fileSet>
<directory>target</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>${project.artifactId}-*.jar</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/config/apollo-adminservice.conf
================================================
MODE=service
PID_FOLDER=.
LOG_FOLDER=/opt/logs/100003172/
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/config/app.properties
================================================
appId=100003172
jdkVersion=1.8
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/docker/Dockerfile
================================================
# Dockerfile for apollo-adminservice
# Build with:
# docker build -t apollo-adminservice .
# Run with:
# docker run -p 8090:8090 -d -v /tmp/logs:/opt/logs --name apollo-adminservice apollo-adminservice
FROM openjdk:8-jre-alpine
MAINTAINER ameizi <sxyx2008@163.com>
ENV VERSION 0.9.0
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \
&& apk update upgrade \
&& apk add --no-cache procps unzip curl bash tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
ADD apollo-adminservice-${VERSION}-github.zip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip
RUN unzip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip -d /apollo-adminservice \
&& rm -rf /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip \
&& sed -i '$d' /apollo-adminservice/scripts/startup.sh \
&& echo "tail -f /dev/null" >> /apollo-adminservice/scripts/startup.sh
EXPOSE 8090
CMD ["/apollo-adminservice/scripts/startup.sh"]
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/AdminServiceApplication.java
================================================
package com.ctrip.framework.apollo.adminservice;
import com.ctrip.framework.apollo.biz.ApolloBizConfig;
import com.ctrip.framework.apollo.common.ApolloCommonConfig;
import org.springframework.boot.actuate.system.ApplicationPidFileWriter;
import org.springframework.boot.actuate.system.EmbeddedServerPortFileWriter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableAspectJAutoProxy
@EnableEurekaClient
@Configuration
@PropertySource(value = {"classpath:adminservice.properties"})
@EnableAutoConfiguration
@EnableTransactionManagement
@ComponentScan(basePackageClasses = {ApolloCommonConfig.class,
ApolloBizConfig.class,
AdminServiceApplication.class})
public class AdminServiceApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context =
new SpringApplicationBuilder(AdminServiceApplication.class).run(args);
context.addApplicationListener(new ApplicationPidFileWriter());
context.addApplicationListener(new EmbeddedServerPortFileWriter());
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/AdminServiceHealthIndicator.java
================================================
package com.ctrip.framework.apollo.adminservice;
import com.ctrip.framework.apollo.biz.service.AppService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Component;
@Component
public class AdminServiceHealthIndicator implements HealthIndicator {
@Autowired
private AppService appService;
@Override
public Health health() {
int errorCode = check();
if (errorCode != 0) {
return Health.down().withDetail("Error Code", errorCode).build();
}
return Health.up().build();
}
private int check() {
PageRequest pageable = new PageRequest(0, 1);
appService.findAll(pageable);
return 0;
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java
================================================
package com.ctrip.framework.apollo.adminservice.aop;
import com.ctrip.framework.apollo.biz.config.BizConfig;
import com.ctrip.framework.apollo.biz.entity.Item;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.entity.NamespaceLock;
import com.ctrip.framework.apollo.biz.service.ItemService;
import com.ctrip.framework.apollo.biz.service.NamespaceLockService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.common.dto.ItemChangeSets;
import com.ctrip.framework.apollo.common.dto.ItemDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.exception.ServiceException;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Component;
/**
* 一个namespace在一次发布中只能允许一个人修改配置
* 通过数据库lock表来实现
*/
@Aspect
@Component
public class NamespaceAcquireLockAspect {
private static final Logger logger = LoggerFactory.getLogger(NamespaceAcquireLockAspect.class);
@Autowired
private NamespaceLockService namespaceLockService;
@Autowired
private NamespaceService namespaceService;
@Autowired
private ItemService itemService;
@Autowired
private BizConfig bizConfig;
//create item
@Before("@annotation(PreAcquireNamespaceLock) && args(appId, clusterName, namespaceName, item, ..)")
public void requireLockAdvice(String appId, String clusterName, String namespaceName,
ItemDTO item) {
acquireLock(appId, clusterName, namespaceName, item.getDataChangeLastModifiedBy());
}
//update item
@Before("@annotation(PreAcquireNamespaceLock) && args(appId, clusterName, namespaceName, itemId, item, ..)")
public void requireLockAdvice(String appId, String clusterName, String namespaceName, long itemId,
ItemDTO item) {
acquireLock(appId, clusterName, namespaceName, item.getDataChangeLastModifiedBy());
}
//update by change set
@Before("@annotation(PreAcquireNamespaceLock) && args(appId, clusterName, namespaceName, changeSet, ..)")
public void requireLockAdvice(String appId, String clusterName, String namespaceName,
ItemChangeSets changeSet) {
acquireLock(appId, clusterName, namespaceName, changeSet.getDataChangeLastModifiedBy());
}
//delete item
@Before("@annotation(PreAcquireNamespaceLock) && args(itemId, operator, ..)")
public void requireLockAdvice(long itemId, String operator) {
Item item = itemService.findOne(itemId);
if (item == null){
throw new BadRequestException("item not exist.");
}
acquireLock(item.getNamespaceId(), operator);
}
void acquireLock(String appId, String clusterName, String namespaceName,
String currentUser) {
if (bizConfig.isNamespaceLockSwitchOff()) {
return;
}
Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName);
acquireLock(namespace, currentUser);
}
void acquireLock(long namespaceId, String currentUser) {
if (bizConfig.isNamespaceLockSwitchOff()) {
return;
}
Namespace namespace = namespaceService.findOne(namespaceId);
acquireLock(namespace, currentUser);
}
private void acquireLock(Namespace namespace, String currentUser) {
if (namespace == null) {
throw new BadRequestException("namespace not exist.");
}
long namespaceId = namespace.getId();
NamespaceLock namespaceLock = namespaceLockService.findLock(namespaceId);
if (namespaceLock == null) {
try {
tryLock(namespaceId, currentUser);
//lock success
} catch (DataIntegrityViolationException e) {
//lock fail
namespaceLock = namespaceLockService.findLock(namespaceId);
checkLock(namespace, namespaceLock, currentUser);
} catch (Exception e) {
logger.error("try lock error", e);
throw e;
}
} else {
//check lock owner is current user
checkLock(namespace, namespaceLock, currentUser);
}
}
private void tryLock(long namespaceId, String user) {
NamespaceLock lock = new NamespaceLock();
lock.setNamespaceId(namespaceId);
lock.setDataChangeCreatedBy(user);
lock.setDataChangeLastModifiedBy(user);
namespaceLockService.tryLock(lock);
}
private void checkLock(Namespace namespace, NamespaceLock namespaceLock,
String currentUser) {
if (namespaceLock == null) {
throw new ServiceException(
String.format("Check lock for %s failed, please retry.", namespace.getNamespaceName()));
}
String lockOwner = namespaceLock.getDataChangeCreatedBy();
if (!lockOwner.equals(currentUser)) {
throw new BadRequestException(
"namespace:" + namespace.getNamespaceName() + " is modified by " + lockOwner);
}
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java
================================================
package com.ctrip.framework.apollo.adminservice.aop;
import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.ctrip.framework.apollo.biz.config.BizConfig;
import com.ctrip.framework.apollo.biz.entity.Item;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.entity.Release;
import com.ctrip.framework.apollo.biz.service.ItemService;
import com.ctrip.framework.apollo.biz.service.NamespaceLockService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.biz.service.ReleaseService;
import com.ctrip.framework.apollo.common.constants.GsonType;
import com.ctrip.framework.apollo.common.dto.ItemChangeSets;
import com.ctrip.framework.apollo.common.dto.ItemDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.core.utils.StringUtils;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* unlock namespace if is redo operation.
* --------------------------------------------
* For example: If namespace has a item K1 = v1
* --------------------------------------------
* First operate: change k1 = v2 (lock namespace)
* Second operate: change k1 = v1 (unlock namespace)
*/
@Aspect
@Component
public class NamespaceUnlockAspect {
private Gson gson = new Gson();
@Autowired
private NamespaceLockService namespaceLockService;
@Autowired
private NamespaceService namespaceService;
@Autowired
private ItemService itemService;
@Autowired
private ReleaseService releaseService;
@Autowired
private BizConfig bizConfig;
//create item
@After("@annotation(PreAcquireNamespaceLock) && args(appId, clusterName, namespaceName, item, ..)")
public void requireLockAdvice(String appId, String clusterName, String namespaceName,
ItemDTO item) {
tryUnlock(namespaceService.findOne(appId, clusterName, namespaceName));
}
//update item
@After("@annotation(PreAcquireNamespaceLock) && args(appId, clusterName, namespaceName, itemId, item, ..)")
public void requireLockAdvice(String appId, String clusterName, String namespaceName, long itemId,
ItemDTO item) {
tryUnlock(namespaceService.findOne(appId, clusterName, namespaceName));
}
//update by change set
@After("@annotation(PreAcquireNamespaceLock) && args(appId, clusterName, namespaceName, changeSet, ..)")
public void requireLockAdvice(String appId, String clusterName, String namespaceName,
ItemChangeSets changeSet) {
tryUnlock(namespaceService.findOne(appId, clusterName, namespaceName));
}
//delete item
@After("@annotation(PreAcquireNamespaceLock) && args(itemId, operator, ..)")
public void requireLockAdvice(long itemId, String operator) {
Item item = itemService.findOne(itemId);
if (item == null) {
throw new BadRequestException("item not exist.");
}
tryUnlock(namespaceService.findOne(item.getNamespaceId()));
}
private void tryUnlock(Namespace namespace) {
if (bizConfig.isNamespaceLockSwitchOff()) {
return;
}
if (!isModified(namespace)) {
namespaceLockService.unlock(namespace.getId());
}
}
boolean isModified(Namespace namespace) {
Release release = releaseService.findLatestActiveRelease(namespace);
List<Item> items = itemService.findItemsWithoutOrdered(namespace.getId());
if (release == null) {
return hasNormalItems(items);
}
Map<String, String> releasedConfiguration = gson.fromJson(release.getConfigurations(), GsonType.CONFIG);
Map<String, String> configurationFromItems = generateConfigurationFromItems(namespace, items);
MapDifference<String, String> difference = Maps.difference(releasedConfiguration, configurationFromItems);
return !difference.areEqual();
}
private boolean hasNormalItems(List<Item> items) {
for (Item item : items) {
if (!StringUtils.isEmpty(item.getKey())) {
return true;
}
}
return false;
}
private Map<String, String> generateConfigurationFromItems(Namespace namespace, List<Item> namespaceItems) {
Map<String, String> configurationFromItems = Maps.newHashMap();
Namespace parentNamespace = namespaceService.findParentNamespace(namespace);
//parent namespace
if (parentNamespace == null) {
generateMapFromItems(namespaceItems, configurationFromItems);
} else {//child namespace
Release parentRelease = releaseService.findLatestActiveRelease(parentNamespace);
if (parentRelease != null) {
configurationFromItems = gson.fromJson(parentRelease.getConfigurations(), GsonType.CONFIG);
}
generateMapFromItems(namespaceItems, configurationFromItems);
}
return configurationFromItems;
}
private Map<String, String> generateMapFromItems(List<Item> items, Map<String, String> configurationFromItems) {
for (Item item : items) {
String key = item.getKey();
if (StringUtils.isBlank(key)) {
continue;
}
configurationFromItems.put(key, item.getValue());
}
return configurationFromItems;
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/PreAcquireNamespaceLock.java
================================================
package com.ctrip.framework.apollo.adminservice.aop;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 标识方法需要获取到namespace的lock才能执行
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PreAcquireNamespaceLock {
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.service.AdminService;
import com.ctrip.framework.apollo.biz.service.AppService;
import com.ctrip.framework.apollo.common.dto.AppDTO;
import com.ctrip.framework.apollo.common.entity.App;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.exception.NotFoundException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.common.utils.InputValidator;
import com.ctrip.framework.apollo.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
@RestController
public class AppController {
@Autowired
private AppService appService;
@Autowired
private AdminService adminService;
@RequestMapping(path = "/apps", method = RequestMethod.POST)
public AppDTO create(@RequestBody AppDTO dto) {
if (!InputValidator.isValidClusterNamespace(dto.getAppId())) {
throw new BadRequestException(String.format("AppId格式错误: %s", InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE));
}
App entity = BeanUtils.transfrom(App.class, dto);
App managedEntity = appService.findOne(entity.getAppId());
if (managedEntity != null) {
throw new BadRequestException("app already exist.");
}
entity = adminService.createNewApp(entity);
dto = BeanUtils.transfrom(AppDTO.class, entity);
return dto;
}
@RequestMapping(value = "/apps/{appId:.+}", method = RequestMethod.DELETE)
public void delete(@PathVariable("appId") String appId, @RequestParam String operator) {
App entity = appService.findOne(appId);
if (entity == null) {
throw new NotFoundException("app not found for appId " + appId);
}
appService.delete(entity.getId(), operator);
}
@RequestMapping(value = "/apps/{appId:.+}", method = RequestMethod.PUT)
public void update(@PathVariable String appId, @RequestBody App app) {
if (!Objects.equals(appId, app.getAppId())) {
throw new BadRequestException("The App Id of path variable and request body is different");
}
appService.update(app);
}
@RequestMapping(value = "/apps", method = RequestMethod.GET)
public List<AppDTO> find(@RequestParam(value = "name", required = false) String name,
Pageable pageable) {
List<App> app = null;
if (StringUtils.isBlank(name)) {
app = appService.findAll(pageable);
} else {
app = appService.findByName(name);
}
return BeanUtils.batchTransform(AppDTO.class, app);
}
@RequestMapping(value = "/apps/{appId:.+}", method = RequestMethod.GET)
public AppDTO get(@PathVariable("appId") String appId) {
App app = appService.findOne(appId);
if (app == null) {
throw new NotFoundException("app not found for appId " + appId);
}
return BeanUtils.transfrom(AppDTO.class, app);
}
@RequestMapping(value = "/apps/{appId}/unique", method = RequestMethod.GET)
public boolean isAppIdUnique(@PathVariable("appId") String appId) {
return appService.isAppIdUnique(appId);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.service.AppNamespaceService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.common.dto.AppNamespaceDTO;
import com.ctrip.framework.apollo.common.dto.NamespaceDTO;
import com.ctrip.framework.apollo.common.entity.AppNamespace;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.enums.ConfigFileFormat;
import com.ctrip.framework.apollo.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class AppNamespaceController {
@Autowired
private AppNamespaceService appNamespaceService;
@Autowired
private NamespaceService namespaceService;
@RequestMapping(value = "/apps/{appId}/appnamespaces", method = RequestMethod.POST)
public AppNamespaceDTO create(@RequestBody AppNamespaceDTO appNamespace) {
AppNamespace entity = BeanUtils.transfrom(AppNamespace.class, appNamespace);
AppNamespace managedEntity = appNamespaceService.findOne(entity.getAppId(), entity.getName());
if (managedEntity != null) {
throw new BadRequestException("app namespaces already exist.");
}
if (StringUtils.isEmpty(entity.getFormat())){
entity.setFormat(ConfigFileFormat.Properties.getValue());
}
entity = appNamespaceService.createAppNamespace(entity);
return BeanUtils.transfrom(AppNamespaceDTO.class, entity);
}
@RequestMapping(value = "/appnamespaces/{publicNamespaceName}/namespaces", method = RequestMethod.GET)
public List<NamespaceDTO> findPublicAppNamespaceAllNamespaces(@PathVariable String publicNamespaceName, Pageable pageable) {
List<Namespace> namespaces = namespaceService.findPublicAppNamespaceAllNamespaces(publicNamespaceName, pageable);
return BeanUtils.batchTransform(NamespaceDTO.class, namespaces);
}
@RequestMapping(value = "/appnamespaces/{publicNamespaceName}/associated-namespaces/count", method = RequestMethod.GET)
public int countPublicAppNamespaceAssociatedNamespaces(@PathVariable String publicNamespaceName) {
return namespaceService.countPublicAppNamespaceAssociatedNamespaces(publicNamespaceName);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.entity.Cluster;
import com.ctrip.framework.apollo.biz.service.ClusterService;
import com.ctrip.framework.apollo.common.dto.ClusterDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.exception.NotFoundException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.common.utils.InputValidator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class ClusterController {
@Autowired
private ClusterService clusterService;
@RequestMapping(path = "/apps/{appId}/clusters", method = RequestMethod.POST)
public ClusterDTO create(@PathVariable("appId") String appId,
@RequestParam(value = "autoCreatePrivateNamespace", defaultValue = "true") boolean autoCreatePrivateNamespace,
@RequestBody ClusterDTO dto) {
if (!InputValidator.isValidClusterNamespace(dto.getName())) {
throw new BadRequestException(String.format("Cluster格式错误: %s", InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE));
}
Cluster entity = BeanUtils.transfrom(Cluster.class, dto);
Cluster managedEntity = clusterService.findOne(appId, entity.getName());
if (managedEntity != null) {
throw new BadRequestException("cluster already exist.");
}
if (autoCreatePrivateNamespace) {
entity = clusterService.saveWithInstanceOfAppNamespaces(entity);
} else {
entity = clusterService.saveWithoutInstanceOfAppNamespaces(entity);
}
dto = BeanUtils.transfrom(ClusterDTO.class, entity);
return dto;
}
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName:.+}", method = RequestMethod.DELETE)
public void delete(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @RequestParam String operator) {
Cluster entity = clusterService.findOne(appId, clusterName);
if (entity == null) {
throw new NotFoundException("cluster not found for clusterName " + clusterName);
}
clusterService.delete(entity.getId(), operator);
}
@RequestMapping(value = "/apps/{appId}/clusters", method = RequestMethod.GET)
public List<ClusterDTO> find(@PathVariable("appId") String appId) {
List<Cluster> clusters = clusterService.findParentClusters(appId);
return BeanUtils.batchTransform(ClusterDTO.class, clusters);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName:.+}", method = RequestMethod.GET)
public ClusterDTO get(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName) {
Cluster cluster = clusterService.findOne(appId, clusterName);
if (cluster == null) {
throw new NotFoundException("cluster not found for name " + clusterName);
}
return BeanUtils.transfrom(ClusterDTO.class, cluster);
}
@RequestMapping(value = "/apps/{appId}/cluster/{clusterName}/unique", method = RequestMethod.GET)
public boolean isAppIdUnique(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName) {
return clusterService.isClusterNameUnique(appId, clusterName);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/CommitController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.entity.Commit;
import com.ctrip.framework.apollo.biz.service.CommitService;
import com.ctrip.framework.apollo.common.dto.CommitDTO;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class CommitController {
@Autowired
private CommitService commitService;
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/commit", method = RequestMethod.GET)
public List<CommitDTO> find(@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName, Pageable pageable){
List<Commit> commits = commitService.find(appId, clusterName, namespaceName, pageable);
return BeanUtils.batchTransform(CommitDTO.class, commits);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/IndexController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(path = "/")
public class IndexController {
@RequestMapping(path = "", method = RequestMethod.GET)
public String index() {
return "apollo-adminservice";
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.ctrip.framework.apollo.biz.entity.Instance;
import com.ctrip.framework.apollo.biz.entity.InstanceConfig;
import com.ctrip.framework.apollo.biz.entity.Release;
import com.ctrip.framework.apollo.biz.service.InstanceService;
import com.ctrip.framework.apollo.biz.service.ReleaseService;
import com.ctrip.framework.apollo.common.dto.InstanceConfigDTO;
import com.ctrip.framework.apollo.common.dto.InstanceDTO;
import com.ctrip.framework.apollo.common.dto.PageDTO;
import com.ctrip.framework.apollo.common.dto.ReleaseDTO;
import com.ctrip.framework.apollo.common.exception.NotFoundException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@RestController
@RequestMapping("/instances")
public class InstanceConfigController {
private static final Splitter RELEASES_SPLITTER = Splitter.on(",").omitEmptyStrings()
.trimResults();
@Autowired
private ReleaseService releaseService;
@Autowired
private InstanceService instanceService;
@RequestMapping(value = "/by-release", method = RequestMethod.GET)
public PageDTO<InstanceDTO> getByRelease(@RequestParam("releaseId") long releaseId,
Pageable pageable) {
Release release = releaseService.findOne(releaseId);
if (release == null) {
throw new NotFoundException(String.format("release not found for %s", releaseId));
}
Page<InstanceConfig> instanceConfigsPage = instanceService.findActiveInstanceConfigsByReleaseKey
(release.getReleaseKey(), pageable);
List<InstanceDTO> instanceDTOs = Collections.emptyList();
if (instanceConfigsPage.hasContent()) {
Multimap<Long, InstanceConfig> instanceConfigMap = HashMultimap.create();
Set<String> otherReleaseKeys = Sets.newHashSet();
for (InstanceConfig instanceConfig : instanceConfigsPage.getContent()) {
instanceConfigMap.put(instanceConfig.getInstanceId(), instanceConfig);
otherReleaseKeys.add(instanceConfig.getReleaseKey());
}
Set<Long> instanceIds = instanceConfigMap.keySet();
List<Instance> instances = instanceService.findInstancesByIds(instanceIds);
if (!CollectionUtils.isEmpty(instances)) {
instanceDTOs = BeanUtils.batchTransform(InstanceDTO.class, instances);
}
for (InstanceDTO instanceDTO : instanceDTOs) {
Collection<InstanceConfig> configs = instanceConfigMap.get(instanceDTO.getId());
List<InstanceConfigDTO> configDTOs = configs.stream().map(instanceConfig -> {
InstanceConfigDTO instanceConfigDTO = new InstanceConfigDTO();
//to save some space
instanceConfigDTO.setRelease(null);
instanceConfigDTO.setReleaseDeliveryTime(instanceConfig.getReleaseDeliveryTime());
instanceConfigDTO.setDataChangeLastModifiedTime(instanceConfig
.getDataChangeLastModifiedTime());
return instanceConfigDTO;
}).collect(Collectors.toList());
instanceDTO.setConfigs(configDTOs);
}
}
return new PageDTO<>(instanceDTOs, pageable, instanceConfigsPage.getTotalElements());
}
@RequestMapping(value = "/by-namespace-and-releases-not-in", method = RequestMethod.GET)
public List<InstanceDTO> getByReleasesNotIn(@RequestParam("appId") String appId,
@RequestParam("clusterName") String clusterName,
@RequestParam("namespaceName") String namespaceName,
@RequestParam("releaseIds") String releaseIds) {
Set<Long> releaseIdSet = RELEASES_SPLITTER.splitToList(releaseIds).stream().map(Long::parseLong)
.collect(Collectors.toSet());
List<Release> releases = releaseService.findByReleaseIds(releaseIdSet);
if (CollectionUtils.isEmpty(releases)) {
throw new NotFoundException(String.format("releases not found for %s", releaseIds));
}
Set<String> releaseKeys = releases.stream().map(Release::getReleaseKey).collect(Collectors
.toSet());
List<InstanceConfig> instanceConfigs = instanceService
.findInstanceConfigsByNamespaceWithReleaseKeysNotIn(appId, clusterName, namespaceName,
releaseKeys);
Multimap<Long, InstanceConfig> instanceConfigMap = HashMultimap.create();
Set<String> otherReleaseKeys = Sets.newHashSet();
for (InstanceConfig instanceConfig : instanceConfigs) {
instanceConfigMap.put(instanceConfig.getInstanceId(), instanceConfig);
otherReleaseKeys.add(instanceConfig.getReleaseKey());
}
List<Instance> instances = instanceService.findInstancesByIds(instanceConfigMap.keySet());
if (CollectionUtils.isEmpty(instances)) {
return Collections.emptyList();
}
List<InstanceDTO> instanceDTOs = BeanUtils.batchTransform(InstanceDTO.class, instances);
List<Release> otherReleases = releaseService.findByReleaseKeys(otherReleaseKeys);
Map<String, ReleaseDTO> releaseMap = Maps.newHashMap();
for (Release release : otherReleases) {
//unset configurations to save space
release.setConfigurations(null);
ReleaseDTO releaseDTO = BeanUtils.transfrom(ReleaseDTO.class, release);
releaseMap.put(release.getReleaseKey(), releaseDTO);
}
for (InstanceDTO instanceDTO : instanceDTOs) {
Collection<InstanceConfig> configs = instanceConfigMap.get(instanceDTO.getId());
List<InstanceConfigDTO> configDTOs = configs.stream().map(instanceConfig -> {
InstanceConfigDTO instanceConfigDTO = new InstanceConfigDTO();
instanceConfigDTO.setRelease(releaseMap.get(instanceConfig.getReleaseKey()));
instanceConfigDTO.setReleaseDeliveryTime(instanceConfig.getReleaseDeliveryTime());
instanceConfigDTO.setDataChangeLastModifiedTime(instanceConfig
.getDataChangeLastModifiedTime());
return instanceConfigDTO;
}).collect(Collectors.toList());
instanceDTO.setConfigs(configDTOs);
}
return instanceDTOs;
}
@RequestMapping(value = "/by-namespace", method = RequestMethod.GET)
public PageDTO<InstanceDTO> getInstancesByNamespace(
@RequestParam("appId") String appId, @RequestParam("clusterName") String clusterName,
@RequestParam("namespaceName") String namespaceName,
@RequestParam(value = "instanceAppId", required = false) String instanceAppId,
Pageable pageable) {
Page<Instance> instances;
if (Strings.isNullOrEmpty(instanceAppId)) {
instances = instanceService.findInstancesByNamespace(appId, clusterName,
namespaceName, pageable);
} else {
instances = instanceService.findInstancesByNamespaceAndInstanceAppId(instanceAppId, appId,
clusterName, namespaceName, pageable);
}
List<InstanceDTO> instanceDTOs = BeanUtils.batchTransform(InstanceDTO.class, instances.getContent());
return new PageDTO<>(instanceDTOs, pageable, instances.getTotalElements());
}
@RequestMapping(value = "/by-namespace/count", method = RequestMethod.GET)
public long getInstancesCountByNamespace(@RequestParam("appId") String appId,
@RequestParam("clusterName") String clusterName,
@RequestParam("namespaceName") String namespaceName) {
Page<Instance> instances = instanceService.findInstancesByNamespace(appId, clusterName,
namespaceName, new PageRequest(0, 1));
return instances.getTotalElements();
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.adminservice.aop.PreAcquireNamespaceLock;
import com.ctrip.framework.apollo.biz.entity.Commit;
import com.ctrip.framework.apollo.biz.entity.Item;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.service.CommitService;
import com.ctrip.framework.apollo.biz.service.ItemService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.biz.utils.ConfigChangeContentBuilder;
import com.ctrip.framework.apollo.common.dto.ItemDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.exception.NotFoundException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class ItemController {
@Autowired
private ItemService itemService;
@Autowired
private NamespaceService namespaceService;
@Autowired
private CommitService commitService;
@PreAcquireNamespaceLock
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items", method = RequestMethod.POST)
public ItemDTO create(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName, @RequestBody ItemDTO dto) {
Item entity = BeanUtils.transfrom(Item.class, dto);
ConfigChangeContentBuilder builder = new ConfigChangeContentBuilder();
Item managedEntity = itemService.findOne(appId, clusterName, namespaceName, entity.getKey());
if (managedEntity != null) {
throw new BadRequestException("item already exist");
} else {
entity = itemService.save(entity);
builder.createItem(entity);
}
dto = BeanUtils.transfrom(ItemDTO.class, entity);
Commit commit = new Commit();
commit.setAppId(appId);
commit.setClusterName(clusterName);
commit.setNamespaceName(namespaceName);
commit.setChangeSets(builder.build());
commit.setDataChangeCreatedBy(dto.getDataChangeLastModifiedBy());
commit.setDataChangeLastModifiedBy(dto.getDataChangeLastModifiedBy());
commitService.save(commit);
return dto;
}
@PreAcquireNamespaceLock
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{itemId}", method = RequestMethod.PUT)
public ItemDTO update(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName,
@PathVariable("itemId") long itemId,
@RequestBody ItemDTO itemDTO) {
Item entity = BeanUtils.transfrom(Item.class, itemDTO);
ConfigChangeContentBuilder builder = new ConfigChangeContentBuilder();
Item managedEntity = itemService.findOne(itemId);
if (managedEntity == null) {
throw new BadRequestException("item not exist");
}
Item beforeUpdateItem = BeanUtils.transfrom(Item.class, managedEntity);
//protect. only value,comment,lastModifiedBy can be modified
managedEntity.setValue(entity.getValue());
managedEntity.setComment(entity.getComment());
managedEntity.setDataChangeLastModifiedBy(entity.getDataChangeLastModifiedBy());
entity = itemService.update(managedEntity);
builder.updateItem(beforeUpdateItem, entity);
itemDTO = BeanUtils.transfrom(ItemDTO.class, entity);
if (builder.hasContent()) {
Commit commit = new Commit();
commit.setAppId(appId);
commit.setClusterName(clusterName);
commit.setNamespaceName(namespaceName);
commit.setChangeSets(builder.build());
commit.setDataChangeCreatedBy(itemDTO.getDataChangeLastModifiedBy());
commit.setDataChangeLastModifiedBy(itemDTO.getDataChangeLastModifiedBy());
commitService.save(commit);
}
return itemDTO;
}
@PreAcquireNamespaceLock
@RequestMapping(path = "/items/{itemId}", method = RequestMethod.DELETE)
public void delete(@PathVariable("itemId") long itemId, @RequestParam String operator) {
Item entity = itemService.findOne(itemId);
if (entity == null) {
throw new NotFoundException("item not found for itemId " + itemId);
}
itemService.delete(entity.getId(), operator);
Namespace namespace = namespaceService.findOne(entity.getNamespaceId());
Commit commit = new Commit();
commit.setAppId(namespace.getAppId());
commit.setClusterName(namespace.getClusterName());
commit.setNamespaceName(namespace.getNamespaceName());
commit.setChangeSets(new ConfigChangeContentBuilder().deleteItem(entity).build());
commit.setDataChangeCreatedBy(operator);
commit.setDataChangeLastModifiedBy(operator);
commitService.save(commit);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items", method = RequestMethod.GET)
public List<ItemDTO> findItems(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName) {
return BeanUtils.batchTransform(ItemDTO.class, itemService.findItemsWithOrdered(appId, clusterName, namespaceName));
}
@RequestMapping(value = "/items/{itemId}", method = RequestMethod.GET)
public ItemDTO get(@PathVariable("itemId") long itemId) {
Item item = itemService.findOne(itemId);
if (item == null) {
throw new NotFoundException("item not found for itemId " + itemId);
}
return BeanUtils.transfrom(ItemDTO.class, item);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key:.+}", method = RequestMethod.GET)
public ItemDTO get(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName, @PathVariable("key") String key) {
Item item = itemService.findOne(appId, clusterName, namespaceName, key);
if (item == null) {
throw new NotFoundException(
String.format("item not found for %s %s %s %s", appId, clusterName, namespaceName, key));
}
return BeanUtils.transfrom(ItemDTO.class, item);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemSetController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.adminservice.aop.PreAcquireNamespaceLock;
import com.ctrip.framework.apollo.biz.service.ItemSetService;
import com.ctrip.framework.apollo.common.dto.ItemChangeSets;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ItemSetController {
@Autowired
private ItemSetService itemSetService;
@PreAcquireNamespaceLock
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/itemset", method = RequestMethod.POST)
public ResponseEntity<Void> create(@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName, @RequestBody ItemChangeSets changeSet) {
itemSetService.updateSet(appId, clusterName, namespaceName, changeSet);
return ResponseEntity.status(HttpStatus.OK).build();
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.entity.GrayReleaseRule;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.message.MessageSender;
import com.ctrip.framework.apollo.biz.message.Topics;
import com.ctrip.framework.apollo.biz.service.NamespaceBranchService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.biz.utils.ReleaseMessageKeyGenerator;
import com.ctrip.framework.apollo.common.constants.NamespaceBranchStatus;
import com.ctrip.framework.apollo.common.dto.GrayReleaseRuleDTO;
import com.ctrip.framework.apollo.common.dto.NamespaceDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.common.utils.GrayReleaseRuleItemTransformer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class NamespaceBranchController {
@Autowired
private MessageSender messageSender;
@Autowired
private NamespaceBranchService namespaceBranchService;
@Autowired
private NamespaceService namespaceService;
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches", method = RequestMethod.POST)
public NamespaceDTO createBranch(@PathVariable String appId,
@PathVariable String clusterName,
@PathVariable String namespaceName,
@RequestParam("operator") String operator) {
checkNamespace(appId, clusterName, namespaceName);
Namespace createdBranch = namespaceBranchService.createBranch(appId, clusterName, namespaceName, operator);
return BeanUtils.transfrom(NamespaceDTO.class, createdBranch);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/rules",
method = RequestMethod.GET)
public GrayReleaseRuleDTO findBranchGrayRules(@PathVariable String appId,
@PathVariable String clusterName,
@PathVariable String namespaceName,
@PathVariable String branchName) {
checkBranch(appId, clusterName, namespaceName, branchName);
GrayReleaseRule rules = namespaceBranchService.findBranchGrayRules(appId, clusterName, namespaceName, branchName);
if (rules == null) {
return null;
}
GrayReleaseRuleDTO ruleDTO =
new GrayReleaseRuleDTO(rules.getAppId(), rules.getClusterName(), rules.getNamespaceName(),
rules.getBranchName());
ruleDTO.setReleaseId(rules.getReleaseId());
ruleDTO.setRuleItems(GrayReleaseRuleItemTransformer.batchTransformFromJSON(rules.getRules()));
return ruleDTO;
}
@Transactional
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/rules", method = RequestMethod.PUT)
public void updateBranchGrayRules(@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName, @PathVariable String branchName,
@RequestBody GrayReleaseRuleDTO newRuleDto) {
checkBranch(appId, clusterName, namespaceName, branchName);
GrayReleaseRule newRules = BeanUtils.transfrom(GrayReleaseRule.class, newRuleDto);
newRules.setRules(GrayReleaseRuleItemTransformer.batchTransformToJSON(newRuleDto.getRuleItems()));
newRules.setBranchStatus(NamespaceBranchStatus.ACTIVE);
namespaceBranchService.updateBranchGrayRules(appId, clusterName, namespaceName, branchName, newRules);
messageSender.sendMessage(ReleaseMessageKeyGenerator.generate(appId, clusterName, namespaceName),
Topics.APOLLO_RELEASE_TOPIC);
}
@Transactional
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}", method = RequestMethod.DELETE)
public void deleteBranch(@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName, @PathVariable String branchName,
@RequestParam("operator") String operator) {
checkBranch(appId, clusterName, namespaceName, branchName);
namespaceBranchService
.deleteBranch(appId, clusterName, namespaceName, branchName, NamespaceBranchStatus.DELETED, operator);
messageSender.sendMessage(ReleaseMessageKeyGenerator.generate(appId, clusterName, namespaceName),
Topics.APOLLO_RELEASE_TOPIC);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches", method = RequestMethod.GET)
public NamespaceDTO loadNamespaceBranch(@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName) {
checkNamespace(appId, clusterName, namespaceName);
Namespace childNamespace = namespaceBranchService.findBranch(appId, clusterName, namespaceName);
if (childNamespace == null) {
return null;
}
return BeanUtils.transfrom(NamespaceDTO.class, childNamespace);
}
private void checkBranch(String appId, String clusterName, String namespaceName, String branchName) {
//1. check parent namespace
checkNamespace(appId, clusterName, namespaceName);
//2. check child namespace
Namespace childNamespace = namespaceService.findOne(appId, branchName, namespaceName);
if (childNamespace == null) {
throw new BadRequestException(String.format("Namespace's branch not exist. AppId = %s, ClusterName = %s, "
+ "NamespaceName = %s, BranchName = %s",
appId, clusterName, namespaceName, branchName));
}
}
private void checkNamespace(String appId, String clusterName, String namespaceName) {
Namespace parentNamespace = namespaceService.findOne(appId, clusterName, namespaceName);
if (parentNamespace == null) {
throw new BadRequestException(String.format("Namespace not exist. AppId = %s, ClusterName = %s, NamespaceName = %s", appId,
clusterName, namespaceName));
}
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.common.dto.NamespaceDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.exception.NotFoundException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.common.utils.InputValidator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class NamespaceController {
@Autowired
private NamespaceService namespaceService;
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces", method = RequestMethod.POST)
public NamespaceDTO create(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @RequestBody NamespaceDTO dto) {
if (!InputValidator.isValidClusterNamespace(dto.getNamespaceName())) {
throw new BadRequestException(String.format("Namespace格式错误: %s", InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE));
}
Namespace entity = BeanUtils.transfrom(Namespace.class, dto);
Namespace managedEntity = namespaceService.findOne(appId, clusterName, entity.getNamespaceName());
if (managedEntity != null) {
throw new BadRequestException("namespace already exist.");
}
entity = namespaceService.save(entity);
dto = BeanUtils.transfrom(NamespaceDTO.class, entity);
return dto;
}
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName:.+}", method = RequestMethod.DELETE)
public void delete(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName, @RequestParam String operator) {
Namespace entity = namespaceService.findOne(appId, clusterName, namespaceName);
if (entity == null) throw new NotFoundException(
String.format("namespace not found for %s %s %s", appId, clusterName, namespaceName));
namespaceService.deleteNamespace(entity, operator);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces", method = RequestMethod.GET)
public List<NamespaceDTO> find(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName) {
List<Namespace> groups = namespaceService.findNamespaces(appId, clusterName);
return BeanUtils.batchTransform(NamespaceDTO.class, groups);
}
@RequestMapping(value = "/namespaces/{namespaceId}", method = RequestMethod.GET)
public NamespaceDTO get(@PathVariable("namespaceId") Long namespaceId) {
Namespace namespace = namespaceService.findOne(namespaceId);
if (namespace == null)
throw new NotFoundException(String.format("namespace not found for %s", namespaceId));
return BeanUtils.transfrom(NamespaceDTO.class, namespace);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName:.+}", method = RequestMethod.GET)
public NamespaceDTO get(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName) {
Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName);
if (namespace == null) throw new NotFoundException(
String.format("namespace not found for %s %s %s", appId, clusterName, namespaceName));
return BeanUtils.transfrom(NamespaceDTO.class, namespace);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/associated-public-namespace",
method = RequestMethod.GET)
public NamespaceDTO findPublicNamespaceForAssociatedNamespace(@PathVariable String appId,
@PathVariable String clusterName,
@PathVariable String namespaceName) {
Namespace namespace = namespaceService.findPublicNamespaceForAssociatedNamespace(clusterName, namespaceName);
if (namespace == null) {
throw new NotFoundException(String.format("public namespace not found. namespace:%s", namespaceName));
}
return BeanUtils.transfrom(NamespaceDTO.class, namespace);
}
/**
* cluster -> cluster has not published namespaces?
*/
@RequestMapping(value = "/apps/{appId}/namespaces/publish_info", method = RequestMethod.GET)
public Map<String, Boolean> namespacePublishInfo(@PathVariable String appId) {
return namespaceService.namespacePublishInfo(appId);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.ctrip.framework.apollo.biz.config.BizConfig;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.entity.NamespaceLock;
import com.ctrip.framework.apollo.biz.service.NamespaceLockService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.common.dto.NamespaceLockDTO;
import com.ctrip.framework.apollo.common.exception.BadRequestException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class NamespaceLockController {
@Autowired
private NamespaceLockService namespaceLockService;
@Autowired
private NamespaceService namespaceService;
@Autowired
private BizConfig bizConfig;
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/lock", method = RequestMethod.GET)
public NamespaceLockDTO getNamespaceLockOwner(@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName) {
Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName);
if (namespace == null) {
throw new BadRequestException("namespace not exist.");
}
if (bizConfig.isNamespaceLockSwitchOff()) {
return null;
}
NamespaceLock lock = namespaceLockService.findLock(namespace.getId());
if (lock == null) {
return null;
}
return BeanUtils.transfrom(NamespaceLockDTO.class, lock);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.google.common.base.Splitter;
import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.entity.Release;
import com.ctrip.framework.apollo.biz.message.MessageSender;
import com.ctrip.framework.apollo.biz.message.Topics;
import com.ctrip.framework.apollo.biz.service.NamespaceBranchService;
import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.biz.service.ReleaseService;
import com.ctrip.framework.apollo.biz.utils.ReleaseMessageKeyGenerator;
import com.ctrip.framework.apollo.common.constants.NamespaceBranchStatus;
import com.ctrip.framework.apollo.common.dto.ItemChangeSets;
import com.ctrip.framework.apollo.common.dto.ReleaseDTO;
import com.ctrip.framework.apollo.common.exception.NotFoundException;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@RestController
public class ReleaseController {
private static final Splitter RELEASES_SPLITTER = Splitter.on(",").omitEmptyStrings()
.trimResults();
@Autowired
private ReleaseService releaseService;
@Autowired
private NamespaceService namespaceService;
@Autowired
private MessageSender messageSender;
@Autowired
private NamespaceBranchService namespaceBranchService;
@RequestMapping(value = "/releases/{releaseId}", method = RequestMethod.GET)
public ReleaseDTO get(@PathVariable("releaseId") long releaseId) {
Release release = releaseService.findOne(releaseId);
if (release == null) {
throw new NotFoundException(String.format("release not found for %s", releaseId));
}
return BeanUtils.transfrom(ReleaseDTO.class, release);
}
@RequestMapping(value = "/releases", method = RequestMethod.GET)
public List<ReleaseDTO> findReleaseByIds(@RequestParam("releaseIds") String releaseIds) {
Set<Long> releaseIdSet = RELEASES_SPLITTER.splitToList(releaseIds).stream().map(Long::parseLong)
.collect(Collectors.toSet());
List<Release> releases = releaseService.findByReleaseIds(releaseIdSet);
return BeanUtils.batchTransform(ReleaseDTO.class, releases);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/all", method = RequestMethod.GET)
public List<ReleaseDTO> findAllReleases(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName,
Pageable page) {
List<Release> releases = releaseService.findAllReleases(appId, clusterName, namespaceName, page);
return BeanUtils.batchTransform(ReleaseDTO.class, releases);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/active", method = RequestMethod.GET)
public List<ReleaseDTO> findActiveReleases(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName,
Pageable page) {
List<Release> releases = releaseService.findActiveReleases(appId, clusterName, namespaceName, page);
return BeanUtils.batchTransform(ReleaseDTO.class, releases);
}
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/latest", method = RequestMethod.GET)
public ReleaseDTO getLatest(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName) {
Release release = releaseService.findLatestActiveRelease(appId, clusterName, namespaceName);
return BeanUtils.transfrom(ReleaseDTO.class, release);
}
@Transactional
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases", method = RequestMethod.POST)
public ReleaseDTO publish(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName,
@RequestParam("name") String releaseName,
@RequestParam(name = "comment", required = false) String releaseComment,
@RequestParam("operator") String operator,
@RequestParam(name = "isEmergencyPublish", defaultValue = "false") boolean isEmergencyPublish) {
Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName);
if (namespace == null) {
throw new NotFoundException(String.format("Could not find namespace for %s %s %s", appId,
clusterName, namespaceName));
}
Release release = releaseService.publish(namespace, releaseName, releaseComment, operator, isEmergencyPublish);
//send release message
Namespace parentNamespace = namespaceService.findParentNamespace(namespace);
String messageCluster;
if (parentNamespace != null) {
messageCluster = parentNamespace.getClusterName();
} else {
messageCluster = clusterName;
}
messageSender.sendMessage(ReleaseMessageKeyGenerator.generate(appId, messageCluster, namespaceName),
Topics.APOLLO_RELEASE_TOPIC);
return BeanUtils.transfrom(ReleaseDTO.class, release);
}
/**
* merge branch items to master and publish master
*
* @return published result
*/
@Transactional
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/updateAndPublish", method = RequestMethod.POST)
public ReleaseDTO updateAndPublish(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName,
@RequestParam("releaseName") String releaseName,
@RequestParam("branchName") String branchName,
@RequestParam(value = "deleteBranch", defaultValue = "true") boolean deleteBranch,
@RequestParam(name = "releaseComment", required = false) String releaseComment,
@RequestParam(name = "isEmergencyPublish", defaultValue = "false") boolean isEmergencyPublish,
@RequestBody ItemChangeSets changeSets) {
Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName);
if (namespace == null) {
throw new NotFoundException(String.format("Could not find namespace for %s %s %s", appId,
clusterName, namespaceName));
}
Release release = releaseService.mergeBranchChangeSetsAndRelease(namespace, branchName, releaseName,
releaseComment, isEmergencyPublish, changeSets);
if (deleteBranch) {
namespaceBranchService.deleteBranch(appId, clusterName, namespaceName, branchName,
NamespaceBranchStatus.MERGED, changeSets.getDataChangeLastModifiedBy());
}
messageSender.sendMessage(ReleaseMessageKeyGenerator.generate(appId, clusterName, namespaceName),
Topics.APOLLO_RELEASE_TOPIC);
return BeanUtils.transfrom(ReleaseDTO.class, release);
}
@Transactional
@RequestMapping(path = "/releases/{releaseId}/rollback", method = RequestMethod.PUT)
public void rollback(@PathVariable("releaseId") long releaseId,
@RequestParam("operator") String operator) {
Release release = releaseService.rollback(releaseId, operator);
String appId = release.getAppId();
String clusterName = release.getClusterName();
String namespaceName = release.getNamespaceName();
//send release message
messageSender.sendMessage(ReleaseMessageKeyGenerator.generate(appId, clusterName, namespaceName),
Topics.APOLLO_RELEASE_TOPIC);
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseHistoryController.java
================================================
package com.ctrip.framework.apollo.adminservice.controller;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.ctrip.framework.apollo.biz.entity.ReleaseHistory;
import com.ctrip.framework.apollo.biz.service.ReleaseHistoryService;
import com.ctrip.framework.apollo.common.dto.PageDTO;
import com.ctrip.framework.apollo.common.dto.ReleaseHistoryDTO;
import com.ctrip.framework.apollo.common.utils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@RestController
public class ReleaseHistoryController {
private Gson gson = new Gson();
private Type configurationTypeReference = new TypeToken<Map<String, Object>>() {
}.getType();
@Autowired
private ReleaseHistoryService releaseHistoryService;
@RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/histories",
method = RequestMethod.GET)
public PageDTO<ReleaseHistoryDTO> findReleaseHistoriesByNamespace(
@PathVariable String appId, @PathVariable String clusterName,
@PathVariable String namespaceName,
Pageable pageable) {
Page<ReleaseHistory> result = releaseHistoryService.findReleaseHistoriesByNamespace(appId, clusterName,
namespaceName, pageable);
return transform2PageDTO(result, pageable);
}
@RequestMapping(value = "/releases/histories/by_release_id_and_operation", method = RequestMethod.GET)
public PageDTO<ReleaseHistoryDTO> findReleaseHistoryByReleaseIdAndOperation(
@RequestParam("releaseId") long releaseId,
@RequestParam("operation") int operation,
Pageable pageable) {
Page<ReleaseHistory> result = releaseHistoryService.findByReleaseIdAndOperation(releaseId, operation, pageable);
return transform2PageDTO(result, pageable);
}
@RequestMapping(value = "/releases/histories/by_previous_release_id_and_operation", method = RequestMethod.GET)
public PageDTO<ReleaseHistoryDTO> findReleaseHistoryByPreviousReleaseIdAndOperation(
@RequestParam("previousReleaseId") long previousReleaseId,
@RequestParam("operation") int operation,
Pageable pageable) {
Page<ReleaseHistory> result = releaseHistoryService.findByPreviousReleaseIdAndOperation(previousReleaseId, operation, pageable);
return transform2PageDTO(result, pageable);
}
private PageDTO<ReleaseHistoryDTO> transform2PageDTO(Page<ReleaseHistory> releaseHistoriesPage, Pageable pageable){
if (!releaseHistoriesPage.hasContent()) {
return null;
}
List<ReleaseHistory> releaseHistories = releaseHistoriesPage.getContent();
List<ReleaseHistoryDTO> releaseHistoryDTOs = new ArrayList<>(releaseHistories.size());
for (ReleaseHistory releaseHistory : releaseHistories) {
releaseHistoryDTOs.add(transformReleaseHistory2DTO(releaseHistory));
}
return new PageDTO<>(releaseHistoryDTOs, pageable, releaseHistoriesPage.getTotalElements());
}
private ReleaseHistoryDTO transformReleaseHistory2DTO(ReleaseHistory releaseHistory) {
ReleaseHistoryDTO dto = new ReleaseHistoryDTO();
BeanUtils.copyProperties(releaseHistory, dto, "operationContext");
dto.setOperationContext(gson.fromJson(releaseHistory.getOperationContext(),
configurationTypeReference));
return dto;
}
}
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/resources/META-INF/app.properties
================================================
app.id=100003172
jdkVersion=1.8
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/resources/adminservice.properties
================================================
#Used for apollo-assembly
spring.application.name= apollo-adminservice
ctrip.appid= 100003172
server.port= 8090
#logging.file= /opt/logs/100003172/apollo-adminservice.log
apollo_profile=github
spring.datasource.url=jdbc:mysql://47.94.252.160:3306/ApolloConfigDB?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#spring.jpa.properties.hibernate.show_sql=true
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5Dialect
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/resources/application.yml
================================================
spring:
application:
name: apollo-adminservice
profiles:
active: ${apollo_profile}
ctrip:
appid: 100003172
server:
port: 8090
logging:
level:
com.ctrip: INFO
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/resources/bootstrap.yml
================================================
eureka:
instance:
hostname: ${spring.cloud.client.ipAddress}
preferIpAddress: true
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:8080/eureka/
healthcheck:
enabled: true
eurekaServiceUrlPollIntervalSeconds: 60
endpoints:
health:
sensitive: false
management:
security:
enabled: false
health:
status:
order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/resources/logback.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE"
value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}apollo-adminservice.log}" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/scripts/shutdown.sh
================================================
#!/bin/bash
SERVICE_NAME=apollo-adminservice
if [[ -z "$JAVA_HOME" && -d /usr/java/latest/ ]]; then
export JAVA_HOME=/usr/java/latest/
fi
cd `dirname $0`/..
if [[ ! -f $SERVICE_NAME".jar" && -d current ]]; then
cd current
fi
if [[ -f $SERVICE_NAME".jar" ]]; then
chmod a+x $SERVICE_NAME".jar"
./$SERVICE_NAME".jar" stop
fi
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/main/scripts/startup.sh
================================================
#!/bin/bash
SERVICE_NAME=apollo-adminservice
## Adjust log dir if necessary
LOG_DIR=/opt/logs/100003172
## Adjust server port if necessary
SERVER_PORT=8090
## Adjust memory settings if necessary
#export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
## Only uncomment the following when you are using server jvm
#export JAVA_OPTS="$JAVA_OPTS -server -XX:-ReduceInitialCardMarks"
########### The following is the same for configservice, adminservice, portal ###########
export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"
function checkPidAlive {
for i in `ls -t $SERVICE_NAME*.pid 2>/dev/null`
do
read pid < $i
result=$(ps -p "$pid")
if [ "$?" -eq 0 ]; then
return 0
else
printf "\npid - $pid just quit unexpectedly, please check logs under $LOG_DIR and /tmp for more information!\n"
exit 1;
fi
done
printf "\nNo pid file found, startup may failed. Please check logs under $LOG_DIR and /tmp for more information!\n"
exit 1;
}
if [ "$(uname)" == "Darwin" ]; then
windows="0"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
windows="0"
elif [ "$(expr substr $(uname -s) 1 5)" == "MINGW" ]; then
windows="1"
else
windows="0"
fi
# for Windows
if [ "$windows" == "1" ] && [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
tmp_java_home=`cygpath -sw "$JAVA_HOME"`
export JAVA_HOME=`cygpath -u $tmp_java_home`
echo "Windows new JAVA_HOME is: $JAVA_HOME"
fi
cd `dirname $0`/..
for i in `ls $SERVICE_NAME-*.jar 2>/dev/null`
do
if [[ ! $i == *"-sources.jar" ]]
then
PATH_TO_JAR=$i
break
fi
done
if [[ ! -f PATH_TO_JAR && -d current ]]; then
cd current
for i in `ls $SERVICE_NAME-*.jar 2>/dev/null`
do
if [[ ! $i == *"-sources.jar" ]]
then
PATH_TO_JAR=$i
break
fi
done
fi
if [[ -f $SERVICE_NAME".jar" ]]; then
rm -rf $SERVICE_NAME".jar"
fi
printf "$(date) ==== Starting ==== \n"
ln $PATH_TO_JAR $SERVICE_NAME".jar"
chmod a+x $SERVICE_NAME".jar"
./$SERVICE_NAME".jar" start
rc=$?;
if [[ $rc != 0 ]];
then
echo "$(date) Failed to start $SERVICE_NAME.jar, return code: $rc"
exit $rc;
fi
declare -i counter=0
declare -i max_counter=48 # 48*5=240s
declare -i total_time=0
printf "Waiting for server startup"
until [[ (( counter -ge max_counter )) || "$(curl -X GET --silent --connect-timeout 1 --max-time 2 --head $SERVER_URL | grep "Coyote")" != "" ]];
do
printf "."
counter+=1
sleep 5
checkPidAlive
done
total_time=counter*5
if [[ (( counter -ge max_counter )) ]];
then
printf "\n$(date) Server failed to start in $total_time seconds!\n"
exit 1;
fi
printf "\n$(date) Server started in $total_time seconds!\n"
exit 0;
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/application.properties
================================================
spring.datasource.url = jdbc:h2:mem:~/apolloconfigdb;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.show_sql=true
spring.h2.console.enabled = true
spring.h2.console.settings.web-allow-others=true
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/application.yml
================================================
spring:
application:
name: apollo-adminservice
server:
port: ${port:8090}
logging:
level:
org.springframework.cloud: 'DEBUG'
file: /opt/logs/${ctrip.appid}/apollo-adminservice.log
ctrip:
appid: 100003172
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/bootstrap.yml
================================================
eureka:
instance:
hostname: ${hostname:localhost}
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:8090/eureka/
healthcheck:
enabled: true
endpoints:
health:
sensitive: false
management:
security:
enabled: false
health:
status:
order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/controller/cleanup.sql
================================================
DELETE FROM Item;
DELETE FROM Namespace;
DELETE FROM AppNamespace;
DELETE FROM Cluster;
DELETE FROM App;
DELETE FROM NamespaceLock;
DELETE FROM ServerConfig;
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/controller/test-itemset.sql
================================================
INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('someAppId','someAppName','someOwnerName','someOwnerName@ctrip.com');
INSERT INTO Cluster (AppId, Name) VALUES ('someAppId', 'default');
INSERT INTO AppNamespace (AppId, Name) VALUES ('someAppId', 'application');
INSERT INTO Namespace (AppId, ClusterName, NamespaceName) VALUES ('someAppId', 'default', 'application');
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/controller/test-release.sql
================================================
INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('someAppId','someAppName','someOwnerName','someOwnerName@ctrip.com');
INSERT INTO Cluster (AppId, Name) VALUES ('someAppId', 'default');
INSERT INTO AppNamespace (AppId, Name) VALUES ('someAppId', 'application');
INSERT INTO Namespace (Id, AppId, ClusterName, NamespaceName) VALUES (100, 'someAppId', 'default', 'application');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment) VALUES (100, 'k1', 'v1', 'comment1');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment) VALUES (100, 'k2', 'v2', 'comment1');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment) VALUES (100, 'k3', 'v3', 'comment1');
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/data.sql
================================================
INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('100003171','apollo-config-service','刘一鸣','liuym@ctrip.com');
INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('100003172','apollo-admin-service','宋顺','song_s@ctrip.com');
INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('100003173','apollo-portal','张乐','zhanglea@ctrip.com');
INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('fxhermesproducer','fx-hermes-producer','梁锦华','jhliang@ctrip.com');
INSERT INTO Cluster (AppId, Name) VALUES ('100003171', 'default');
INSERT INTO Cluster (AppId, Name) VALUES ('100003171', 'cluster1');
INSERT INTO Cluster (AppId, Name) VALUES ('100003172', 'default');
INSERT INTO Cluster (AppId, Name) VALUES ('100003172', 'cluster2');
INSERT INTO Cluster (AppId, Name) VALUES ('100003173', 'default');
INSERT INTO Cluster (AppId, Name) VALUES ('100003173', 'cluster3');
INSERT INTO Cluster (AppId, Name) VALUES ('fxhermesproducer', 'default');
INSERT INTO AppNamespace (AppId, Name) VALUES ('100003171', 'application');
INSERT INTO AppNamespace (AppId, Name) VALUES ('100003171', 'fx.apollo.config');
INSERT INTO AppNamespace (AppId, Name) VALUES ('100003172', 'application');
INSERT INTO AppNamespace (AppId, Name) VALUES ('100003172', 'fx.apollo.admin');
INSERT INTO AppNamespace (AppId, Name) VALUES ('100003173', 'application');
INSERT INTO AppNamespace (AppId, Name) VALUES ('100003173', 'fx.apollo.portal');
INSERT INTO AppNamespace (AppID, Name) VALUES ('fxhermesproducer', 'fx.hermes.producer');
INSERT INTO Namespace (Id, AppId, ClusterName, NamespaceName) VALUES (1, '100003171', 'default', 'application');
INSERT INTO Namespace (Id, AppId, ClusterName, NamespaceName) VALUES (5, '100003171', 'cluster1', 'application');
INSERT INTO Namespace (Id, AppId, ClusterName, NamespaceName) VALUES (2, 'fxhermesproducer', 'default', 'fx.hermes.producer');
INSERT INTO Namespace (Id, AppId, ClusterName, NamespaceName) VALUES (3, '100003172', 'default', 'application');
INSERT INTO Namespace (Id, AppId, ClusterName, NamespaceName) VALUES (4, '100003173', 'default', 'application');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment) VALUES (1, 'k1', 'v1', 'comment1');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment) VALUES (1, 'k2', 'v2', 'comment2');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment) VALUES (2, 'k3', 'v3', 'comment3');
INSERT INTO Item (NamespaceId, `Key`, Value, Comment, LineNum) VALUES (5, 'k1', 'v4', 'comment4',1);
INSERT INTO RELEASE (ReleaseKey, Name, Comment, AppId, ClusterName, NamespaceName, Configurations) VALUES ('TEST-RELEASE-KEY', 'REV1','First Release','100003171', 'default', 'application', '{"k1":"v1"}');
================================================
FILE: open-config-center/apollo/apollo-adminservice/src/test/resources/logback-test.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>utf-8</charset>
<Pattern>[%p] %c - %m%n</Pattern>
</encoder>
</appender>
<logger name="org.springframework.test" level="OFF" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
================================================
FILE: open-config-center/apollo/apollo-biz/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.10.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apollo-biz</artifactId>
<name>Apollo Biz</name>
<packaging>jar</packaging>
<properties>
<github.path>${project.artifactId}</github.path>
</properties>
<dependencies>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-common</artifactId>
</dependency>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- end of eureka -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/ApolloBizConfig.java
================================================
package com.ctrip.framework.apollo.biz;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@EnableAutoConfiguration
@Configuration
@ComponentScan(basePackageClasses = ApolloBizConfig.class)
public class ApolloBizConfig {
}
================================================
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/auth/WebSecurityConfig.java
================================================
package com.ctrip.framework.apollo.biz.auth;
import com.ctrip.framework.apollo.common.condition.ConditionalOnMissingProfile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@ConditionalOnMissingProfile("auth")
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic();
http.csrf().disable();
http.headers().frameOptions().sameOrigin();
}
/**
* Although the authentication below is useless, we may not remove them for backward compatibility.
* Because if we remove them and the old clients(before 0.9.0) still send the authentication
* information, the server will return 401, which should cause big problems.
*
* We may remove the following once we remove spring security from Apollo.
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("").roles("USER").and()
.withUser("apollo").password("").roles("USER", "ADMIN");
}
}
================================================
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/config/BizConfig.java
================================================
package com.ctrip.framework.apollo.biz.config;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.ctrip.framework.apollo.biz.service.BizDBPropertySource;
import com.ctrip.framework.apollo.common.config.RefreshableConfig;
import com.ctrip.framework.apollo.common.config.RefreshablePropertySource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Component
public class BizConfig extends RefreshableConfig {
private static final int DEFAULT_ITEM_KEY_LENGTH = 128;
private static final int DEFAULT_ITEM_VALUE_LENGTH = 20000;
private static final int DEFAULT_APPNAMESPACE_CACHE_REBUILD_INTERVAL = 60; //60s
private static final int DEFAULT_GRAY_RELEASE_RULE_SCAN_INTERVAL = 60; //60s
private static final int DEFAULT_APPNAMESPACE_CACHE_SCAN_INTERVAL = 1; //1s
private static final int DEFAULT_RELEASE_MESSAGE_CACHE_SCAN_INTERVAL = 1; //1s
private static final int DEFAULT_RELEASE_MESSAGE_SCAN_INTERVAL_IN_MS = 1000; //1000ms
private static final int DEFAULT_RELEASE_MESSAGE_NOTIFICATION_BATCH = 100;
private static final int DEFAULT_RELEASE_MESSAGE_NOTIFICATION_BATCH_INTERVAL_IN_MILLI = 100;//100ms
private Gson gson = new Gson();
private static final Type namespaceValueLengthOverrideTypeReference =
new TypeToken<Map<Long, Integer>>() {
}.getType();
@Autowired
private BizDBPropertySource propertySource;
@Override
protected List<RefreshablePropertySource> getRefreshablePropertySources() {
return Collections.singletonList(propertySource);
}
public List<String> eurekaServiceUrls() {
String configuration = getValue("eureka.service.url", "");
if (Strings.isNullOrEmpty(configuration)) {
return Collections.emptyList();
}
return splitter.splitToList(configuration);
}
public int grayReleaseRuleScanInterval() {
int interval = getIntProperty("apollo.gray-release-rule-scan.interval", DEFAULT_GRAY_RELEASE_RULE_SCAN_INTERVAL);
return checkInt(interval, 1, Integer.MAX_VALUE, DEFAULT_GRAY_RELEASE_RULE_SCAN_INTERVAL);
}
public int itemKeyLengthLimit() {
int limit = getIntProperty("item.key.length.limit", DEFAULT_ITEM_KEY_LENGTH);
return checkInt(limit, 5, Integer.MAX_VALUE, DEFAULT_ITEM_KEY_LENGTH);
}
public int itemValueLengthLimit() {
int limit = getIntProperty("item.value.length.limit", DEFAULT_ITEM_VALUE_LENGTH);
return checkInt(limit, 5, Integer.MAX_VALUE, DEFAULT_ITEM_VALUE_LENGTH);
}
public Map<Long, Integer> namespaceValueLengthLimitOverride() {
String namespaceValueLengthOverrideString = getValue("namespace.value.length.limit.override");
Map<Long, Integer> namespaceValueLengthOverride = Maps.newHashMap();
if (!Strings.isNullOrEmpty(namespaceValueLengthOverrideString)) {
namespaceValueLengthOverride =
gson.fromJson(namespaceValueLengthOverrideString, namespaceValueLengthOverrideTypeReference);
}
return namespaceValueLengthOverride;
}
public boolean isNamespaceLockSwitchOff() {
return !getBooleanProperty("namespace.lock.switch", false);
}
/**
* ctrip config
**/
public String cloggingUrl() {
return getValue("clogging.server.url");
}
public String cloggingPort() {
return getValue("clogging.server.port");
}
public int appNamespaceCacheScanInterval() {
int interval = getIntProperty("apollo.app-namespace-cache-scan.interval", DEFAULT_APPNAMESPACE_CACHE_SCAN_INTERVAL);
return checkInt(interval, 1, Integer.MAX_VALUE, DEFAULT_APPNAMESPACE_CACHE_SCAN_INTERVAL);
}
public TimeUnit appNamespaceCacheScanIntervalTimeUnit() {
return TimeUnit.SECONDS;
}
public int appNamespaceCacheRebuildInterval() {
int interval = getIntProperty("apollo.app-namespace-cache-rebuild.interval", DEFAULT_APPNAMESPACE_CACHE_REBUILD_INTERVAL);
return checkInt(interval, 1, Integer.MAX_VALUE, DEFAULT_APPNAMESPACE_CACHE_REBUILD_INTERVAL);
}
public TimeUnit appNamespaceCacheRebuildIntervalTimeUnit() {
return TimeUnit.SECONDS;
}
public int releaseMessageCacheScanInterval() {
int interval = getIntProperty("apollo.release-message-cache-scan.interval", DEFAULT_RELEASE_MESSAGE_CACHE_SCAN_INTERVAL);
return checkInt(interval, 1, Integer.MAX_VALUE, DEFAULT_RELEASE_MESSAGE_CACHE_SCAN_INTERVAL);
}
public TimeUnit releaseMessageCacheScanIntervalTimeUnit() {
return TimeUnit.SECONDS;
}
public int releaseMessageScanIntervalInMilli() {
int interval = getIntProperty("apollo.message-scan.interval", DEFAULT_RELEASE_MESSAGE_SCAN_INTERVAL_IN_MS);
return checkInt(interval, 100, Integer.MAX_VALUE, DEFAULT_RELEASE_MESSAGE_SCAN_INTERVAL_IN_MS);
}
public int releaseMessageNotificationBatch() {
int batch = getIntProperty("apollo.release-message.notification.batch", DEFAULT_RELEASE_MESSAGE_NOTIFICATION_BATCH);
return checkInt(batch, 1, Integer.MAX_VALUE, DEFAULT_RELEASE_MESSAGE_NOTIFICATION_BATCH);
}
public int releaseMessageNotificationBatchIntervalInMilli() {
int interval = getIntProperty("apollo.release-mes
Showing preview only (280K chars total). Download the full file or copy to clipboard to get everything.
gitextract_7yrrkpra/ ├── .gitee/ │ ├── ISSUE_TEMPLATE.zh-CN.md │ └── PULL_REQUEST_TEMPLATE.zh-CN.md ├── .gitignore ├── .tgitconfig ├── LICENSE ├── README.md ├── open-api-gateway/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── docker/ │ │ └── Dockerfile │ ├── java/ │ │ └── com/ │ │ └── open/ │ │ └── capacity/ │ │ ├── GatewayApp.java │ │ ├── client/ │ │ │ └── oauth2/ │ │ │ ├── OAuth2ClientConfig.java │ │ │ ├── authorize/ │ │ │ │ ├── AuthorizeConfigManager.java │ │ │ │ ├── AuthorizeConfigProvider.java │ │ │ │ ├── OpenAuthorizeConfigManager.java │ │ │ │ └── provider/ │ │ │ │ └── AuthAuthorizeConfigProvider.java │ │ │ ├── config/ │ │ │ │ ├── DocumentationConfig.java │ │ │ │ ├── SecurityHandlerConfig.java │ │ │ │ └── SwaggerConfig.java │ │ │ ├── dao/ │ │ │ │ └── ServiceDao.java │ │ │ ├── filter/ │ │ │ │ ├── AccessFilter.java │ │ │ │ └── IPFilter.java │ │ │ ├── service/ │ │ │ │ ├── RbacService.java │ │ │ │ └── impl/ │ │ │ │ └── RbacServiceImpl.java │ │ │ └── token/ │ │ │ ├── TokenStoreConfig.java │ │ │ └── store/ │ │ │ └── RedisTemplateTokenStore.java │ │ └── controller/ │ │ ├── TestController.java │ │ └── UserController.java │ └── resources/ │ ├── application.yml │ └── bootstrap.yml ├── open-commons/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── open/ │ └── capacity/ │ └── security/ │ ├── dto/ │ │ ├── LoginUser.java │ │ ├── ResponseInfo.java │ │ ├── RoleDto.java │ │ └── UserDto.java │ └── model/ │ ├── BaseEntity.java │ ├── Permission.java │ ├── Role.java │ ├── SysLogs.java │ ├── SysUser.java │ └── TokenModel.java ├── open-config-center/ │ ├── apollo/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── apollo-adminservice/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── assembly/ │ │ │ │ └── assembly-descriptor.xml │ │ │ ├── main/ │ │ │ │ ├── config/ │ │ │ │ │ ├── apollo-adminservice.conf │ │ │ │ │ └── app.properties │ │ │ │ ├── docker/ │ │ │ │ │ └── Dockerfile │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── ctrip/ │ │ │ │ │ └── framework/ │ │ │ │ │ └── apollo/ │ │ │ │ │ └── adminservice/ │ │ │ │ │ ├── AdminServiceApplication.java │ │ │ │ │ ├── AdminServiceHealthIndicator.java │ │ │ │ │ ├── aop/ │ │ │ │ │ │ ├── NamespaceAcquireLockAspect.java │ │ │ │ │ │ ├── NamespaceUnlockAspect.java │ │ │ │ │ │ └── PreAcquireNamespaceLock.java │ │ │ │ │ └── controller/ │ │ │ │ │ ├── AppController.java │ │ │ │ │ ├── AppNamespaceController.java │ │ │ │ │ ├── ClusterController.java │ │ │ │ │ ├── CommitController.java │ │ │ │ │ ├── IndexController.java │ │ │ │ │ ├── InstanceConfigController.java │ │ │ │ │ ├── ItemController.java │ │ │ │ │ ├── ItemSetController.java │ │ │ │ │ ├── NamespaceBranchController.java │ │ │ │ │ ├── NamespaceController.java │ │ │ │ │ ├── NamespaceLockController.java │ │ │ │ │ ├── ReleaseController.java │ │ │ │ │ └── ReleaseHistoryController.java │ │ │ │ ├── resources/ │ │ │ │ │ ├── META-INF/ │ │ │ │ │ │ └── app.properties │ │ │ │ │ ├── adminservice.properties │ │ │ │ │ ├── application.yml │ │ │ │ │ ├── bootstrap.yml │ │ │ │ │ └── logback.xml │ │ │ │ └── scripts/ │ │ │ │ ├── shutdown.sh │ │ │ │ └── startup.sh │ │ │ └── test/ │ │ │ └── resources/ │ │ │ ├── application.properties │ │ │ ├── application.yml │ │ │ ├── bootstrap.yml │ │ │ ├── controller/ │ │ │ │ ├── cleanup.sql │ │ │ │ ├── test-itemset.sql │ │ │ │ └── test-release.sql │ │ │ ├── data.sql │ │ │ └── logback-test.xml │ │ ├── apollo-biz/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── ctrip/ │ │ │ │ └── framework/ │ │ │ │ └── apollo/ │ │ │ │ └── biz/ │ │ │ │ ├── ApolloBizConfig.java │ │ │ │ ├── auth/ │ │ │ │ │ └── WebSecurityConfig.java │ │ │ │ ├── config/ │ │ │ │ │ └── BizConfig.java │ │ │ │ ├── customize/ │ │ │ │ │ ├── BizLoggingCustomizer.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Audit.java │ │ │ │ │ ├── Cluster.java │ │ │ │ │ ├── Commit.java │ │ │ │ │ ├── GrayReleaseRule.java │ │ │ │ │ ├── Instance.java │ │ │ │ │ ├── InstanceConfig.java │ │ │ │ │ ├── Item.java │ │ │ │ │ ├── Namespace.java │ │ │ │ │ ├── NamespaceLock.java │ │ │ │ │ ├── Privilege.java │ │ │ │ │ ├── Release.java │ │ │ │ │ ├── ReleaseHistory.java │ │ │ │ │ ├── ReleaseMessage.java │ │ │ │ │ └── ServerConfig.java │ │ │ │ ├── eureka/ │ │ │ │ │ └── ApolloEurekaClientConfig.java │ │ │ │ ├── grayReleaseRule/ │ │ │ │ │ ├── GrayReleaseRuleCache.java │ │ │ │ │ └── GrayReleaseRulesHolder.java │ │ │ │ ├── message/ │ │ │ │ │ ├── DatabaseMessageSender.java │ │ │ │ │ ├── MessageSender.java │ │ │ │ │ ├── ReleaseMessageListener.java │ │ │ │ │ ├── ReleaseMessageScanner.java │ │ │ │ │ └── Topics.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── AppNamespaceRepository.java │ │ │ │ │ ├── AppRepository.java │ │ │ │ │ ├── AuditRepository.java │ │ │ │ │ ├── ClusterRepository.java │ │ │ │ │ ├── CommitRepository.java │ │ │ │ │ ├── GrayReleaseRuleRepository.java │ │ │ │ │ ├── InstanceConfigRepository.java │ │ │ │ │ ├── InstanceRepository.java │ │ │ │ │ ├── ItemRepository.java │ │ │ │ │ ├── NamespaceLockRepository.java │ │ │ │ │ ├── NamespaceRepository.java │ │ │ │ │ ├── PrivilegeRepository.java │ │ │ │ │ ├── ReleaseHistoryRepository.java │ │ │ │ │ ├── ReleaseMessageRepository.java │ │ │ │ │ ├── ReleaseRepository.java │ │ │ │ │ └── ServerConfigRepository.java │ │ │ │ ├── service/ │ │ │ │ │ ├── AdminService.java │ │ │ │ │ ├── AppNamespaceService.java │ │ │ │ │ ├── AppService.java │ │ │ │ │ ├── AuditService.java │ │ │ │ │ ├── BizDBPropertySource.java │ │ │ │ │ ├── ClusterService.java │ │ │ │ │ ├── CommitService.java │ │ │ │ │ ├── InstanceService.java │ │ │ │ │ ├── ItemService.java │ │ │ │ │ ├── ItemSetService.java │ │ │ │ │ ├── NamespaceBranchService.java │ │ │ │ │ ├── NamespaceLockService.java │ │ │ │ │ ├── NamespaceService.java │ │ │ │ │ ├── ReleaseHistoryService.java │ │ │ │ │ ├── ReleaseMessageService.java │ │ │ │ │ └── ReleaseService.java │ │ │ │ └── utils/ │ │ │ │ ├── ConfigChangeContentBuilder.java │ │ │ │ ├── EntityManagerUtil.java │ │ │ │ ├── ReleaseKeyGenerator.java │ │ │ │ └── ReleaseMessageKeyGenerator.java │ │ │ └── test/ │ │ │ └── resources/ │ │ │ ├── application.properties │ │ │ ├── data.sql │ │ │ ├── logback-test.xml │ │ │ └── sql/ │ │ │ ├── clean.sql │ │ │ ├── namespace-branch-test.sql │ │ │ ├── namespace-test.sql │ │ │ └── release-creation-test.sql │ │ ├── apollo-client/ │ │ │ ├── README.md │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── ctrip/ │ │ │ │ │ └── framework/ │ │ │ │ │ └── apollo/ │ │ │ │ │ ├── Config.java │ │ │ │ │ ├── ConfigChangeListener.java │ │ │ │ │ ├── ConfigFile.java │ │ │ │ │ ├── ConfigFileChangeListener.java │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ ├── build/ │ │ │ │ │ │ └── ApolloInjector.java │ │ │ │ │ ├── enums/ │ │ │ │ │ │ └── PropertyChangeType.java │ │ │ │ │ ├── exceptions/ │ │ │ │ │ │ ├── ApolloConfigException.java │ │ │ │ │ │ └── ApolloConfigStatusCodeException.java │ │ │ │ │ ├── internals/ │ │ │ │ │ │ ├── AbstractConfig.java │ │ │ │ │ │ ├── AbstractConfigFile.java │ │ │ │ │ │ ├── AbstractConfigRepository.java │ │ │ │ │ │ ├── ConfigManager.java │ │ │ │ │ │ ├── ConfigRepository.java │ │ │ │ │ │ ├── ConfigServiceLocator.java │ │ │ │ │ │ ├── DefaultConfig.java │ │ │ │ │ │ ├── DefaultConfigManager.java │ │ │ │ │ │ ├── DefaultInjector.java │ │ │ │ │ │ ├── Injector.java │ │ │ │ │ │ ├── JsonConfigFile.java │ │ │ │ │ │ ├── LocalFileConfigRepository.java │ │ │ │ │ │ ├── PlainTextConfigFile.java │ │ │ │ │ │ ├── PropertiesConfigFile.java │ │ │ │ │ │ ├── RemoteConfigLongPollService.java │ │ │ │ │ │ ├── RemoteConfigRepository.java │ │ │ │ │ │ ├── RepositoryChangeListener.java │ │ │ │ │ │ ├── SimpleConfig.java │ │ │ │ │ │ ├── XmlConfigFile.java │ │ │ │ │ │ ├── YamlConfigFile.java │ │ │ │ │ │ └── YmlConfigFile.java │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── ConfigChange.java │ │ │ │ │ │ ├── ConfigChangeEvent.java │ │ │ │ │ │ └── ConfigFileChangeEvent.java │ │ │ │ │ ├── spi/ │ │ │ │ │ │ ├── ConfigFactory.java │ │ │ │ │ │ ├── ConfigFactoryManager.java │ │ │ │ │ │ ├── ConfigRegistry.java │ │ │ │ │ │ ├── DefaultConfigFactory.java │ │ │ │ │ │ ├── DefaultConfigFactoryManager.java │ │ │ │ │ │ └── DefaultConfigRegistry.java │ │ │ │ │ ├── spring/ │ │ │ │ │ │ ├── annotation/ │ │ │ │ │ │ │ ├── ApolloAnnotationProcessor.java │ │ │ │ │ │ │ ├── ApolloConfig.java │ │ │ │ │ │ │ ├── ApolloConfigChangeListener.java │ │ │ │ │ │ │ ├── ApolloConfigRegistrar.java │ │ │ │ │ │ │ ├── EnableApolloConfig.java │ │ │ │ │ │ │ └── SpringValueProcessor.java │ │ │ │ │ │ ├── boot/ │ │ │ │ │ │ │ ├── ApolloApplicationContextInitializer.java │ │ │ │ │ │ │ └── ApolloAutoConfiguration.java │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── ConfigPropertySource.java │ │ │ │ │ │ │ ├── ConfigPropertySourceFactory.java │ │ │ │ │ │ │ ├── ConfigPropertySourcesProcessor.java │ │ │ │ │ │ │ ├── NamespaceHandler.java │ │ │ │ │ │ │ ├── PropertySourcesConstants.java │ │ │ │ │ │ │ └── PropertySourcesProcessor.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ ├── property/ │ │ │ │ │ │ │ ├── PlaceholderHelper.java │ │ │ │ │ │ │ ├── SpringValue.java │ │ │ │ │ │ │ ├── SpringValueDefinition.java │ │ │ │ │ │ │ └── SpringValueDefinitionProcessor.java │ │ │ │ │ │ └── util/ │ │ │ │ │ │ └── BeanRegistrationUtil.java │ │ │ │ │ └── util/ │ │ │ │ │ ├── ConfigUtil.java │ │ │ │ │ ├── ExceptionUtil.java │ │ │ │ │ ├── function/ │ │ │ │ │ │ └── Functions.java │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── HttpRequest.java │ │ │ │ │ │ ├── HttpResponse.java │ │ │ │ │ │ └── HttpUtil.java │ │ │ │ │ └── parser/ │ │ │ │ │ ├── ParserException.java │ │ │ │ │ └── Parsers.java │ │ │ │ └── resources/ │ │ │ │ └── META-INF/ │ │ │ │ ├── apollo-1.0.0.xsd │ │ │ │ ├── services/ │ │ │ │ │ └── com.ctrip.framework.apollo.internals.Injector │ │ │ │ ├── spring.factories │ │ │ │ ├── spring.handlers │ │ │ │ └── spring.schemas │ │ │ └── test/ │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ └── services/ │ │ │ │ └── com.ctrip.framework.apollo.internals.Injector │ │ │ ├── log4j2.xml │ │ │ └── spring/ │ │ │ ├── XmlConfigAnnotationTest1.xml │ │ │ ├── XmlConfigAnnotationTest2.xml │ │ │ ├── XmlConfigAnnotationTest3.xml │ │ │ ├── XmlConfigAnnotationTest4.xml │ │ │ ├── XmlConfigAnnotationTest5.xml │ │ │ ├── XmlConfigPlaceholderTest1.xml │ │ │ ├── XmlConfigPlaceholderTest10.xml │ │ │ ├── XmlConfigPlaceholderTest2.xml │ │ │ ├── XmlConfigPlaceholderTest3.xml │ │ │ ├── XmlConfigPlaceholderTest4.xml │ │ │ ├── XmlConfigPlaceholderTest5.xml │ │ │ ├── XmlConfigPlaceholderTest6.xml │ │ │ ├── XmlConfigPlaceholderTest7.xml │ │ │ ├── XmlConfigPlaceholderTest8.xml │ │ │ └── XmlConfigPlaceholderTest9.xml │ │ ├── apollo-common/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── ctrip/ │ │ │ │ │ └── framework/ │ │ │ │ │ └── apollo/ │ │ │ │ │ └── common/ │ │ │ │ │ ├── ApolloCommonConfig.java │ │ │ │ │ ├── aop/ │ │ │ │ │ │ └── RepositoryAspect.java │ │ │ │ │ ├── condition/ │ │ │ │ │ │ ├── ConditionalOnMissingProfile.java │ │ │ │ │ │ ├── ConditionalOnProfile.java │ │ │ │ │ │ └── OnProfileCondition.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── RefreshableConfig.java │ │ │ │ │ │ └── RefreshablePropertySource.java │ │ │ │ │ ├── constants/ │ │ │ │ │ │ ├── GsonType.java │ │ │ │ │ │ ├── NamespaceBranchStatus.java │ │ │ │ │ │ ├── ReleaseOperation.java │ │ │ │ │ │ └── ReleaseOperationContext.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── ApolloInfoController.java │ │ │ │ │ │ ├── CharacterEncodingFilterConfiguration.java │ │ │ │ │ │ ├── GlobalDefaultExceptionHandler.java │ │ │ │ │ │ ├── HttpMessageConverterConfiguration.java │ │ │ │ │ │ └── WebMvcConfig.java │ │ │ │ │ ├── customize/ │ │ │ │ │ │ ├── LoggingCustomizer.java │ │ │ │ │ │ ├── TomcatContainerCustomizer.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── datasource/ │ │ │ │ │ │ ├── TitanCondition.java │ │ │ │ │ │ ├── TitanEntityManager.java │ │ │ │ │ │ ├── TitanSettings.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── dto/ │ │ │ │ │ │ ├── AppDTO.java │ │ │ │ │ │ ├── AppNamespaceDTO.java │ │ │ │ │ │ ├── BaseDTO.java │ │ │ │ │ │ ├── ClusterDTO.java │ │ │ │ │ │ ├── CommitDTO.java │ │ │ │ │ │ ├── GrayReleaseRuleDTO.java │ │ │ │ │ │ ├── GrayReleaseRuleItemDTO.java │ │ │ │ │ │ ├── InstanceConfigDTO.java │ │ │ │ │ │ ├── InstanceDTO.java │ │ │ │ │ │ ├── ItemChangeSets.java │ │ │ │ │ │ ├── ItemDTO.java │ │ │ │ │ │ ├── NamespaceDTO.java │ │ │ │ │ │ ├── NamespaceLockDTO.java │ │ │ │ │ │ ├── PageDTO.java │ │ │ │ │ │ ├── ReleaseDTO.java │ │ │ │ │ │ └── ReleaseHistoryDTO.java │ │ │ │ │ ├── entity/ │ │ │ │ │ │ ├── App.java │ │ │ │ │ │ ├── AppNamespace.java │ │ │ │ │ │ ├── BaseEntity.java │ │ │ │ │ │ └── EntityPair.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── AbstractApolloHttpException.java │ │ │ │ │ │ ├── BadRequestException.java │ │ │ │ │ │ ├── BeanUtilsException.java │ │ │ │ │ │ ├── NotFoundException.java │ │ │ │ │ │ └── ServiceException.java │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── MultiResponseEntity.java │ │ │ │ │ │ └── RichResponseEntity.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── BeanUtils.java │ │ │ │ │ ├── ExceptionUtils.java │ │ │ │ │ ├── GrayReleaseRuleItemTransformer.java │ │ │ │ │ ├── InputValidator.java │ │ │ │ │ ├── RequestPrecondition.java │ │ │ │ │ └── UniqueKeyGenerator.java │ │ │ │ └── resources/ │ │ │ │ ├── application-ctrip.properties │ │ │ │ ├── application-github.properties │ │ │ │ ├── application.properties │ │ │ │ └── datasource.xml │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ └── common/ │ │ │ ├── AllTests.java │ │ │ ├── conditional/ │ │ │ │ └── ConditionalOnProfileTest.java │ │ │ └── utils/ │ │ │ └── InputValidatorTest.java │ │ ├── apollo-configservice/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── assembly/ │ │ │ │ └── assembly-descriptor.xml │ │ │ ├── main/ │ │ │ │ ├── config/ │ │ │ │ │ ├── apollo-configservice.conf │ │ │ │ │ └── app.properties │ │ │ │ ├── docker/ │ │ │ │ │ └── Dockerfile │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── ctrip/ │ │ │ │ │ └── framework/ │ │ │ │ │ └── apollo/ │ │ │ │ │ ├── configservice/ │ │ │ │ │ │ ├── ConfigServiceApplication.java │ │ │ │ │ │ ├── ConfigServiceAutoConfiguration.java │ │ │ │ │ │ ├── ConfigServiceHealthIndicator.java │ │ │ │ │ │ ├── ServletInitializer.java │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── ConfigController.java │ │ │ │ │ │ │ ├── ConfigFileController.java │ │ │ │ │ │ │ ├── NotificationController.java │ │ │ │ │ │ │ └── NotificationControllerV2.java │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ ├── AppNamespaceServiceWithCache.java │ │ │ │ │ │ │ ├── ReleaseMessageServiceWithCache.java │ │ │ │ │ │ │ └── config/ │ │ │ │ │ │ │ ├── AbstractConfigService.java │ │ │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ │ │ ├── ConfigServiceWithCache.java │ │ │ │ │ │ │ └── DefaultConfigService.java │ │ │ │ │ │ ├── util/ │ │ │ │ │ │ │ ├── InstanceConfigAuditUtil.java │ │ │ │ │ │ │ ├── NamespaceUtil.java │ │ │ │ │ │ │ └── WatchKeysUtil.java │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ ├── CaseInsensitiveMapWrapper.java │ │ │ │ │ │ └── DeferredResultWrapper.java │ │ │ │ │ └── metaservice/ │ │ │ │ │ ├── ApolloMetaServiceConfig.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── ServiceController.java │ │ │ │ │ └── service/ │ │ │ │ │ └── DiscoveryService.java │ │ │ │ ├── resources/ │ │ │ │ │ ├── META-INF/ │ │ │ │ │ │ └── app.properties │ │ │ │ │ ├── application.yml │ │ │ │ │ ├── bootstrap.yml │ │ │ │ │ ├── configservice.properties │ │ │ │ │ └── logback.xml │ │ │ │ └── scripts/ │ │ │ │ ├── shutdown.sh │ │ │ │ └── startup.sh │ │ │ └── test/ │ │ │ └── resources/ │ │ │ ├── application.properties │ │ │ ├── application.yml │ │ │ ├── bootstrap.yml │ │ │ ├── data.sql │ │ │ ├── integration-test/ │ │ │ │ ├── cleanup.sql │ │ │ │ ├── test-gray-release.sql │ │ │ │ ├── test-release-message.sql │ │ │ │ ├── test-release-public-dc-override.sql │ │ │ │ ├── test-release-public-default-override.sql │ │ │ │ └── test-release.sql │ │ │ └── logback-test.xml │ │ ├── apollo-core/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── ctrip/ │ │ │ │ │ └── framework/ │ │ │ │ │ ├── apollo/ │ │ │ │ │ │ ├── Apollo.java │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ ├── ConfigConsts.java │ │ │ │ │ │ │ ├── MetaDomainConsts.java │ │ │ │ │ │ │ ├── ServiceNameConsts.java │ │ │ │ │ │ │ ├── dto/ │ │ │ │ │ │ │ │ ├── ApolloConfig.java │ │ │ │ │ │ │ │ ├── ApolloConfigNotification.java │ │ │ │ │ │ │ │ ├── ApolloNotificationMessages.java │ │ │ │ │ │ │ │ └── ServiceDTO.java │ │ │ │ │ │ │ ├── enums/ │ │ │ │ │ │ │ │ ├── ConfigFileFormat.java │ │ │ │ │ │ │ │ ├── Env.java │ │ │ │ │ │ │ │ └── EnvUtils.java │ │ │ │ │ │ │ ├── schedule/ │ │ │ │ │ │ │ │ ├── ExponentialSchedulePolicy.java │ │ │ │ │ │ │ │ └── SchedulePolicy.java │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── ApolloThreadFactory.java │ │ │ │ │ │ │ ├── ByteUtil.java │ │ │ │ │ │ │ ├── ClassLoaderUtil.java │ │ │ │ │ │ │ ├── DNSUtil.java │ │ │ │ │ │ │ ├── MachineUtil.java │ │ │ │ │ │ │ ├── PropertiesUtil.java │ │ │ │ │ │ │ ├── ResourceUtils.java │ │ │ │ │ │ │ └── StringUtils.java │ │ │ │ │ │ └── tracer/ │ │ │ │ │ │ ├── Tracer.java │ │ │ │ │ │ ├── internals/ │ │ │ │ │ │ │ ├── DefaultMessageProducerManager.java │ │ │ │ │ │ │ ├── NullMessageProducer.java │ │ │ │ │ │ │ ├── NullMessageProducerManager.java │ │ │ │ │ │ │ ├── NullTransaction.java │ │ │ │ │ │ │ └── cat/ │ │ │ │ │ │ │ ├── CatMessageProducer.java │ │ │ │ │ │ │ ├── CatNames.java │ │ │ │ │ │ │ └── CatTransaction.java │ │ │ │ │ │ └── spi/ │ │ │ │ │ │ ├── MessageProducer.java │ │ │ │ │ │ ├── MessageProducerManager.java │ │ │ │ │ │ └── Transaction.java │ │ │ │ │ └── foundation/ │ │ │ │ │ ├── Foundation.java │ │ │ │ │ ├── internals/ │ │ │ │ │ │ ├── DefaultProviderManager.java │ │ │ │ │ │ ├── NetworkInterfaceManager.java │ │ │ │ │ │ ├── NullProviderManager.java │ │ │ │ │ │ ├── ServiceBootstrap.java │ │ │ │ │ │ ├── Utils.java │ │ │ │ │ │ ├── io/ │ │ │ │ │ │ │ ├── BOMInputStream.java │ │ │ │ │ │ │ ├── ByteOrderMark.java │ │ │ │ │ │ │ ├── IOUtils.java │ │ │ │ │ │ │ └── ProxyInputStream.java │ │ │ │ │ │ └── provider/ │ │ │ │ │ │ ├── DefaultApplicationProvider.java │ │ │ │ │ │ ├── DefaultNetworkProvider.java │ │ │ │ │ │ ├── DefaultServerProvider.java │ │ │ │ │ │ └── NullProvider.java │ │ │ │ │ └── spi/ │ │ │ │ │ ├── ProviderManager.java │ │ │ │ │ └── provider/ │ │ │ │ │ ├── ApplicationProvider.java │ │ │ │ │ ├── NetworkProvider.java │ │ │ │ │ ├── Provider.java │ │ │ │ │ └── ServerProvider.java │ │ │ │ └── resources/ │ │ │ │ ├── META-INF/ │ │ │ │ │ └── services/ │ │ │ │ │ ├── com.ctrip.framework.apollo.tracer.spi.MessageProducerManager │ │ │ │ │ └── com.ctrip.framework.foundation.spi.ProviderManager │ │ │ │ └── apollo-env.properties │ │ │ └── test/ │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ ├── app-with-utf8bom.properties │ │ │ │ ├── app.properties │ │ │ │ ├── services/ │ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface1 │ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface3 │ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface4 │ │ │ │ │ ├── com.ctrip.framework.apollo.foundation.internals.ServiceBootstrapTest$Interface5 │ │ │ │ │ └── com.ctrip.framework.apollo.tracer.spi.MessageProducerManager │ │ │ │ └── some-invalid-app.properties │ │ │ ├── apollo-env.properties │ │ │ ├── log4j2.xml │ │ │ └── properties/ │ │ │ ├── server-with-utf8bom.properties │ │ │ └── server.properties │ │ ├── apollo-portal/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── assembly/ │ │ │ │ └── assembly-descriptor.xml │ │ │ ├── main/ │ │ │ │ ├── config/ │ │ │ │ │ ├── apollo-portal.conf │ │ │ │ │ └── app.properties │ │ │ │ ├── docker/ │ │ │ │ │ └── Dockerfile │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── ctrip/ │ │ │ │ │ └── framework/ │ │ │ │ │ └── apollo/ │ │ │ │ │ ├── openapi/ │ │ │ │ │ │ ├── PortalOpenApiConfig.java │ │ │ │ │ │ ├── auth/ │ │ │ │ │ │ │ └── ConsumerPermissionValidator.java │ │ │ │ │ │ ├── dto/ │ │ │ │ │ │ │ ├── OpenAppNamespaceDTO.java │ │ │ │ │ │ │ ├── OpenEnvClusterDTO.java │ │ │ │ │ │ │ ├── OpenItemDTO.java │ │ │ │ │ │ │ ├── OpenNamespaceDTO.java │ │ │ │ │ │ │ ├── OpenNamespaceLockDTO.java │ │ │ │ │ │ │ └── OpenReleaseDTO.java │ │ │ │ │ │ ├── entity/ │ │ │ │ │ │ │ ├── Consumer.java │ │ │ │ │ │ │ ├── ConsumerAudit.java │ │ │ │ │ │ │ ├── ConsumerRole.java │ │ │ │ │ │ │ └── ConsumerToken.java │ │ │ │ │ │ ├── filter/ │ │ │ │ │ │ │ └── ConsumerAuthenticationFilter.java │ │ │ │ │ │ ├── repository/ │ │ │ │ │ │ │ ├── ConsumerAuditRepository.java │ │ │ │ │ │ │ ├── ConsumerRepository.java │ │ │ │ │ │ │ ├── ConsumerRoleRepository.java │ │ │ │ │ │ │ └── ConsumerTokenRepository.java │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ ├── ConsumerRolePermissionService.java │ │ │ │ │ │ │ └── ConsumerService.java │ │ │ │ │ │ ├── util/ │ │ │ │ │ │ │ ├── ConsumerAuditUtil.java │ │ │ │ │ │ │ ├── ConsumerAuthUtil.java │ │ │ │ │ │ │ └── OpenApiBeanUtils.java │ │ │ │ │ │ └── v1/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ ├── AppController.java │ │ │ │ │ │ ├── ItemController.java │ │ │ │ │ │ ├── NamespaceController.java │ │ │ │ │ │ └── ReleaseController.java │ │ │ │ │ └── portal/ │ │ │ │ │ ├── PortalApplication.java │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── API.java │ │ │ │ │ │ └── AdminServiceAPI.java │ │ │ │ │ ├── component/ │ │ │ │ │ │ ├── AdminServiceAddressLocator.java │ │ │ │ │ │ ├── ItemsComparator.java │ │ │ │ │ │ ├── PermissionValidator.java │ │ │ │ │ │ ├── PortalSettings.java │ │ │ │ │ │ ├── RestTemplateFactory.java │ │ │ │ │ │ ├── RetryableRestTemplate.java │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── PortalConfig.java │ │ │ │ │ │ ├── emailbuilder/ │ │ │ │ │ │ │ ├── ConfigPublishEmailBuilder.java │ │ │ │ │ │ │ ├── GrayPublishEmailBuilder.java │ │ │ │ │ │ │ ├── MergeEmailBuilder.java │ │ │ │ │ │ │ ├── NormalPublishEmailBuilder.java │ │ │ │ │ │ │ └── RollbackEmailBuilder.java │ │ │ │ │ │ └── txtresolver/ │ │ │ │ │ │ ├── ConfigTextResolver.java │ │ │ │ │ │ ├── FileTextResolver.java │ │ │ │ │ │ └── PropertyResolver.java │ │ │ │ │ ├── constant/ │ │ │ │ │ │ ├── PermissionType.java │ │ │ │ │ │ ├── RoleType.java │ │ │ │ │ │ └── TracerEventType.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── AppController.java │ │ │ │ │ │ ├── ClusterController.java │ │ │ │ │ │ ├── CommitController.java │ │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ │ ├── EnvController.java │ │ │ │ │ │ ├── FavoriteController.java │ │ │ │ │ │ ├── InstanceController.java │ │ │ │ │ │ ├── ItemController.java │ │ │ │ │ │ ├── NamespaceBranchController.java │ │ │ │ │ │ ├── NamespaceController.java │ │ │ │ │ │ ├── NamespaceLockController.java │ │ │ │ │ │ ├── OrganizationController.java │ │ │ │ │ │ ├── PageSettingController.java │ │ │ │ │ │ ├── PermissionController.java │ │ │ │ │ │ ├── ReleaseController.java │ │ │ │ │ │ ├── ReleaseHistoryController.java │ │ │ │ │ │ ├── ServerConfigController.java │ │ │ │ │ │ ├── SignInController.java │ │ │ │ │ │ ├── SsoHeartbeatController.java │ │ │ │ │ │ └── UserInfoController.java │ │ │ │ │ ├── entity/ │ │ │ │ │ │ ├── bo/ │ │ │ │ │ │ │ ├── Email.java │ │ │ │ │ │ │ ├── ItemBO.java │ │ │ │ │ │ │ ├── KVEntity.java │ │ │ │ │ │ │ ├── NamespaceBO.java │ │ │ │ │ │ │ ├── ReleaseBO.java │ │ │ │ │ │ │ ├── ReleaseHistoryBO.java │ │ │ │ │ │ │ └── UserInfo.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── AppModel.java │ │ │ │ │ │ │ ├── NamespaceCreationModel.java │ │ │ │ │ │ │ ├── NamespaceReleaseModel.java │ │ │ │ │ │ │ ├── NamespaceSyncModel.java │ │ │ │ │ │ │ ├── NamespaceTextModel.java │ │ │ │ │ │ │ └── Verifiable.java │ │ │ │ │ │ ├── po/ │ │ │ │ │ │ │ ├── Favorite.java │ │ │ │ │ │ │ ├── Permission.java │ │ │ │ │ │ │ ├── Role.java │ │ │ │ │ │ │ ├── RolePermission.java │ │ │ │ │ │ │ ├── ServerConfig.java │ │ │ │ │ │ │ ├── UserPO.java │ │ │ │ │ │ │ └── UserRole.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ ├── AppRolesAssignedUsers.java │ │ │ │ │ │ ├── Change.java │ │ │ │ │ │ ├── EnvClusterInfo.java │ │ │ │ │ │ ├── ItemDiffs.java │ │ │ │ │ │ ├── LockInfo.java │ │ │ │ │ │ ├── NamespaceIdentifier.java │ │ │ │ │ │ ├── NamespaceRolesAssignedUsers.java │ │ │ │ │ │ ├── Number.java │ │ │ │ │ │ ├── Organization.java │ │ │ │ │ │ ├── PageSetting.java │ │ │ │ │ │ ├── PermissionCondition.java │ │ │ │ │ │ └── ReleaseCompareResult.java │ │ │ │ │ ├── enums/ │ │ │ │ │ │ └── ChangeType.java │ │ │ │ │ ├── listener/ │ │ │ │ │ │ ├── AppCreationEvent.java │ │ │ │ │ │ ├── AppInfoChangedEvent.java │ │ │ │ │ │ ├── AppInfoChangedListener.java │ │ │ │ │ │ ├── AppNamespaceCreationEvent.java │ │ │ │ │ │ ├── ConfigPublishEvent.java │ │ │ │ │ │ ├── ConfigPublishListener.java │ │ │ │ │ │ └── CreationListener.java │ │ │ │ │ ├── repository/ │ │ │ │ │ │ ├── AppNamespaceRepository.java │ │ │ │ │ │ ├── AppRepository.java │ │ │ │ │ │ ├── FavoriteRepository.java │ │ │ │ │ │ ├── PermissionRepository.java │ │ │ │ │ │ ├── RolePermissionRepository.java │ │ │ │ │ │ ├── RoleRepository.java │ │ │ │ │ │ ├── ServerConfigRepository.java │ │ │ │ │ │ ├── UserRepository.java │ │ │ │ │ │ └── UserRoleRepository.java │ │ │ │ │ ├── service/ │ │ │ │ │ │ ├── AppNamespaceService.java │ │ │ │ │ │ ├── AppService.java │ │ │ │ │ │ ├── ClusterService.java │ │ │ │ │ │ ├── CommitService.java │ │ │ │ │ │ ├── FavoriteService.java │ │ │ │ │ │ ├── InstanceService.java │ │ │ │ │ │ ├── ItemService.java │ │ │ │ │ │ ├── NamespaceBranchService.java │ │ │ │ │ │ ├── NamespaceLockService.java │ │ │ │ │ │ ├── NamespaceService.java │ │ │ │ │ │ ├── PortalDBPropertySource.java │ │ │ │ │ │ ├── ReleaseHistoryService.java │ │ │ │ │ │ ├── ReleaseService.java │ │ │ │ │ │ ├── RoleInitializationService.java │ │ │ │ │ │ └── RolePermissionService.java │ │ │ │ │ ├── spi/ │ │ │ │ │ │ ├── EmailService.java │ │ │ │ │ │ ├── LogoutHandler.java │ │ │ │ │ │ ├── MQService.java │ │ │ │ │ │ ├── SsoHeartbeatHandler.java │ │ │ │ │ │ ├── UserInfoHolder.java │ │ │ │ │ │ ├── UserService.java │ │ │ │ │ │ ├── configuration/ │ │ │ │ │ │ │ ├── AuthConfiguration.java │ │ │ │ │ │ │ ├── AuthFilterConfiguration.java │ │ │ │ │ │ │ ├── EmailConfiguration.java │ │ │ │ │ │ │ ├── MQConfiguration.java │ │ │ │ │ │ │ └── RoleConfiguration.java │ │ │ │ │ │ ├── ctrip/ │ │ │ │ │ │ │ ├── BizLoggingCustomizer.java │ │ │ │ │ │ │ ├── CtripEmailRequestBuilder.java │ │ │ │ │ │ │ ├── CtripEmailService.java │ │ │ │ │ │ │ ├── CtripLogoutHandler.java │ │ │ │ │ │ │ ├── CtripMQService.java │ │ │ │ │ │ │ ├── CtripSsoHeartbeatHandler.java │ │ │ │ │ │ │ ├── CtripUserInfoHolder.java │ │ │ │ │ │ │ ├── CtripUserService.java │ │ │ │ │ │ │ ├── WebContextConfiguration.java │ │ │ │ │ │ │ └── filters/ │ │ │ │ │ │ │ └── UserAccessFilter.java │ │ │ │ │ │ ├── defaultimpl/ │ │ │ │ │ │ │ ├── DefaultEmailService.java │ │ │ │ │ │ │ ├── DefaultLogoutHandler.java │ │ │ │ │ │ │ ├── DefaultMQService.java │ │ │ │ │ │ │ ├── DefaultRoleInitializationService.java │ │ │ │ │ │ │ ├── DefaultRolePermissionService.java │ │ │ │ │ │ │ ├── DefaultSsoHeartbeatHandler.java │ │ │ │ │ │ │ ├── DefaultUserInfoHolder.java │ │ │ │ │ │ │ └── DefaultUserService.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── springsecurity/ │ │ │ │ │ │ ├── SpringSecurityUserInfoHolder.java │ │ │ │ │ │ └── SpringSecurityUserService.java │ │ │ │ │ └── util/ │ │ │ │ │ ├── RelativeDateFormat.java │ │ │ │ │ └── RoleUtils.java │ │ │ │ ├── resources/ │ │ │ │ │ ├── META-INF/ │ │ │ │ │ │ └── app.properties │ │ │ │ │ ├── application-ctrip.yml │ │ │ │ │ ├── application.yml │ │ │ │ │ ├── logback.xml │ │ │ │ │ ├── portal.properties │ │ │ │ │ └── static/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── setting.html │ │ │ │ │ ├── app.html │ │ │ │ │ ├── cluster.html │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── history.html │ │ │ │ │ │ └── sync.html │ │ │ │ │ ├── config.html │ │ │ │ │ ├── ctrip_sso_heartbeat.html │ │ │ │ │ ├── default_sso_heartbeat.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── demo/ │ │ │ │ │ │ └── EcvoicesystemDemoApplicationTests.java │ │ │ │ │ ├── login.html │ │ │ │ │ ├── namespace/ │ │ │ │ │ │ └── role.html │ │ │ │ │ ├── namespace.html │ │ │ │ │ ├── open/ │ │ │ │ │ │ └── manage.html │ │ │ │ │ ├── scripts/ │ │ │ │ │ │ ├── AppUtils.js │ │ │ │ │ │ ├── PageCommon.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── AppController.js │ │ │ │ │ │ │ ├── ClusterController.js │ │ │ │ │ │ │ ├── IndexController.js │ │ │ │ │ │ │ ├── LoginController.js │ │ │ │ │ │ │ ├── NamespaceController.js │ │ │ │ │ │ │ ├── ServerConfigController.js │ │ │ │ │ │ │ ├── SettingController.js │ │ │ │ │ │ │ ├── UserController.js │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ ├── ConfigBaseInfoController.js │ │ │ │ │ │ │ │ ├── ConfigNamespaceController.js │ │ │ │ │ │ │ │ ├── ReleaseHistoryController.js │ │ │ │ │ │ │ │ └── SyncConfigController.js │ │ │ │ │ │ │ ├── open/ │ │ │ │ │ │ │ │ └── OpenManageController.js │ │ │ │ │ │ │ └── role/ │ │ │ │ │ │ │ └── NamespaceRoleController.js │ │ │ │ │ │ ├── directive/ │ │ │ │ │ │ │ ├── delete-namespace-modal-directive.js │ │ │ │ │ │ │ ├── diff-directive.js │ │ │ │ │ │ │ ├── directive.js │ │ │ │ │ │ │ ├── gray-release-rules-modal-directive.js │ │ │ │ │ │ │ ├── item-modal-directive.js │ │ │ │ │ │ │ ├── merge-and-publish-modal-directive.js │ │ │ │ │ │ │ ├── namespace-panel-directive.js │ │ │ │ │ │ │ ├── publish-deny-modal-directive.js │ │ │ │ │ │ │ ├── release-modal-directive.js │ │ │ │ │ │ │ ├── rollback-modal-directive.js │ │ │ │ │ │ │ └── show-text-modal-directive.js │ │ │ │ │ │ ├── services/ │ │ │ │ │ │ │ ├── AppService.js │ │ │ │ │ │ │ ├── ClusterService.js │ │ │ │ │ │ │ ├── CommitService.js │ │ │ │ │ │ │ ├── CommonService.js │ │ │ │ │ │ │ ├── ConfigService.js │ │ │ │ │ │ │ ├── ConsumerService.js │ │ │ │ │ │ │ ├── EnvService.js │ │ │ │ │ │ │ ├── EventManager.js │ │ │ │ │ │ │ ├── FavoriteService.js │ │ │ │ │ │ │ ├── InstanceService.js │ │ │ │ │ │ │ ├── NamespaceBranchService.js │ │ │ │ │ │ │ ├── NamespaceLockService.js │ │ │ │ │ │ │ ├── NamespaceService.js │ │ │ │ │ │ │ ├── OrganizationService.js │ │ │ │ │ │ │ ├── PermissionService.js │ │ │ │ │ │ │ ├── ReleaseHistoryService.js │ │ │ │ │ │ │ ├── ReleaseService.js │ │ │ │ │ │ │ ├── ServerConfigService.js │ │ │ │ │ │ │ └── UserService.js │ │ │ │ │ │ └── valdr.js │ │ │ │ │ ├── server_config.html │ │ │ │ │ ├── styles/ │ │ │ │ │ │ └── common-style.css │ │ │ │ │ ├── user-manage.html │ │ │ │ │ ├── vendor/ │ │ │ │ │ │ └── ui-ace/ │ │ │ │ │ │ ├── ace.js │ │ │ │ │ │ ├── mode-json.js │ │ │ │ │ │ ├── mode-properties.js │ │ │ │ │ │ ├── mode-xml.js │ │ │ │ │ │ ├── mode-yaml.js │ │ │ │ │ │ ├── theme-eclipse.js │ │ │ │ │ │ ├── worker-json.js │ │ │ │ │ │ └── worker-xml.js │ │ │ │ │ └── views/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── footer.html │ │ │ │ │ │ └── nav.html │ │ │ │ │ └── component/ │ │ │ │ │ ├── confirm-dialog.html │ │ │ │ │ ├── delete-namespace-modal.html │ │ │ │ │ ├── diff.html │ │ │ │ │ ├── entrance.html │ │ │ │ │ ├── env-selector.html │ │ │ │ │ ├── gray-release-rules-modal.html │ │ │ │ │ ├── item-modal.html │ │ │ │ │ ├── merge-and-publish-modal.html │ │ │ │ │ ├── multiple-user-selector.html │ │ │ │ │ ├── namespace-panel-branch-tab.html │ │ │ │ │ ├── namespace-panel-header.html │ │ │ │ │ ├── namespace-panel-master-tab.html │ │ │ │ │ ├── namespace-panel.html │ │ │ │ │ ├── publish-deny-modal.html │ │ │ │ │ ├── release-modal.html │ │ │ │ │ ├── rollback-modal.html │ │ │ │ │ ├── show-text-modal.html │ │ │ │ │ └── user-selector.html │ │ │ │ └── scripts/ │ │ │ │ ├── shutdown.sh │ │ │ │ └── startup.sh │ │ │ └── test/ │ │ │ └── resources/ │ │ │ ├── application.properties │ │ │ ├── application.yml │ │ │ ├── logback-test.xml │ │ │ └── sql/ │ │ │ ├── appnamespaceservice/ │ │ │ │ └── init-appnamespace.sql │ │ │ ├── cleanup.sql │ │ │ ├── favorites/ │ │ │ │ └── favorites.sql │ │ │ └── permission/ │ │ │ ├── insert-test-consumerroles.sql │ │ │ ├── insert-test-permissions.sql │ │ │ ├── insert-test-rolepermissions.sql │ │ │ ├── insert-test-roles.sql │ │ │ └── insert-test-userroles.sql │ │ ├── pom.xml │ │ └── scripts/ │ │ ├── build.bat │ │ ├── build.sh │ │ ├── docker-quick-start/ │ │ │ ├── docker-compose.yml │ │ │ └── sql/ │ │ │ ├── apolloconfigdb.sql │ │ │ └── apolloportaldb.sql │ │ └── sql/ │ │ ├── apolloconfigdb.sql │ │ └── apolloportaldb.sql │ ├── apollo-gateway/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── ApiGateWayApp.java │ │ │ └── config/ │ │ │ ├── ZuulConfig.java │ │ │ └── ZuulConfigRreshConfig.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── app.properties │ │ └── bootstrap.yml │ └── pom.xml ├── open-db-core/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ ├── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── db/ │ │ │ │ └── config/ │ │ │ │ ├── DruidConfig.java │ │ │ │ └── dynamic/ │ │ │ │ ├── annotation/ │ │ │ │ │ └── DataSource.java │ │ │ │ ├── aop/ │ │ │ │ │ └── DataSourceAspect.java │ │ │ │ └── config/ │ │ │ │ ├── DynamicDataSourceConfig.java │ │ │ │ └── util/ │ │ │ │ ├── DataSourceHolder.java │ │ │ │ ├── DataSourceKey.java │ │ │ │ └── DynamicDataSource.java │ │ │ └── redis/ │ │ │ └── config/ │ │ │ ├── RedisConfig.java │ │ │ └── util/ │ │ │ ├── FastJson2JsonRedisSerializer.java │ │ │ └── RedisObjectSerializer.java │ │ └── mybatis.cfg.xml │ └── resources/ │ └── jdbc.bcv.properties ├── open-eureka-center/ │ ├── README.md │ ├── open-eureka-client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── docker/ │ │ │ └── Dockerfile │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── EurekaClientApplication.java │ │ │ ├── config/ │ │ │ │ └── SwaggerConfig.java │ │ │ ├── controller/ │ │ │ │ ├── EurekaController.java │ │ │ │ ├── EurekaManageController.java │ │ │ │ └── HelloController.java │ │ │ └── health/ │ │ │ ├── EurekaClientHealthIndicator.java │ │ │ └── EurekaHealthCheckHandler.java │ │ └── resources/ │ │ ├── application.yml │ │ └── logback.xml │ ├── open-eureka-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── docker/ │ │ │ └── Dockerfile │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── EurekaServerApp.java │ │ │ ├── controller/ │ │ │ │ └── EurekaController.java │ │ │ └── listener/ │ │ │ └── EurekaInstanceCanceledListener.java │ │ └── resources/ │ │ ├── application.yml │ │ └── templates/ │ │ ├── .keep │ │ └── eureka/ │ │ ├── .keep │ │ ├── header.ftl │ │ ├── lastn.ftl │ │ ├── navbar.ftl │ │ └── status.ftl │ └── pom.xml ├── open-layui-web/ │ ├── .gitignore │ ├── pom.xml │ └── src/ │ └── main/ │ ├── docker/ │ │ └── Dockerfile │ ├── java/ │ │ └── com/ │ │ └── open/ │ │ └── capacity/ │ │ ├── SecurityApplication.java │ │ ├── activiti/ │ │ │ ├── config/ │ │ │ │ ├── ActPropertiesConfig.java │ │ │ │ └── ActivitiConfig.java │ │ │ ├── controller/ │ │ │ │ └── ActivitiController.java │ │ │ ├── entity/ │ │ │ │ ├── ActAssignee.java │ │ │ │ ├── ActDeployment.java │ │ │ │ ├── ActModel.java │ │ │ │ ├── LeaveOpinion.java │ │ │ │ ├── ProcessDefinition.java │ │ │ │ ├── Task.java │ │ │ │ └── UserLeave.java │ │ │ ├── mapper/ │ │ │ │ ├── ActAssigneeMapper.java │ │ │ │ ├── ActAssigneeMapper.xml │ │ │ │ ├── UserLeaveMapper.java │ │ │ │ └── UserLeaveMapper.xml │ │ │ ├── rest/ │ │ │ │ └── editor/ │ │ │ │ ├── main/ │ │ │ │ │ └── StencilsetRestResource.java │ │ │ │ └── model/ │ │ │ │ ├── ModelEditorJsonRestResource.java │ │ │ │ └── ModelSaveRestResource.java │ │ │ ├── service/ │ │ │ │ ├── ActAssigneeService.java │ │ │ │ ├── UserLeaveService.java │ │ │ │ └── impl/ │ │ │ │ ├── ActAssigneeServiceImpl.java │ │ │ │ └── UserLeaveServiceImpl.java │ │ │ └── util/ │ │ │ ├── AssigneeType.java │ │ │ ├── Checkbox.java │ │ │ ├── JsonUtil.java │ │ │ └── ResultType.java │ │ └── security/ │ │ ├── advice/ │ │ │ ├── ExceptionHandlerAdvice.java │ │ │ └── LogAdvice.java │ │ ├── annotation/ │ │ │ └── LogAnnotation.java │ │ ├── config/ │ │ │ ├── AsycTaskExecutorConfig.java │ │ │ ├── LoginPageConfig.java │ │ │ ├── SecurityConfig.java │ │ │ ├── SecurityHandlerConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ └── WebMvcConfig.java │ │ ├── controller/ │ │ │ ├── ClientController.java │ │ │ ├── DictController.java │ │ │ ├── EurekaController.java │ │ │ ├── ExcelController.java │ │ │ ├── FileController.java │ │ │ ├── GenerateController.java │ │ │ ├── MailController.java │ │ │ ├── NoticeController.java │ │ │ ├── PermissionController.java │ │ │ ├── RoleController.java │ │ │ ├── ServiceController.java │ │ │ ├── SysLogsController.java │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ ├── ClientDao.java │ │ │ ├── ClientDao.xml │ │ │ ├── DictDao.java │ │ │ ├── DictDaoxml │ │ │ ├── FileDao.xml │ │ │ ├── FileInfoDao.java │ │ │ ├── MailDao.java │ │ │ ├── MailDao.xml │ │ │ ├── NoticeDao.java │ │ │ ├── NoticeDao.xml │ │ │ ├── PermissionDao.java │ │ │ ├── RoleDao.java │ │ │ ├── RoleDao.xml │ │ │ ├── ServiceDao.java │ │ │ ├── SysLogsDao.java │ │ │ ├── SysLogsDao.xml │ │ │ ├── TokenDao.java │ │ │ ├── UserDao.java │ │ │ └── UserDao.xml │ │ ├── dto/ │ │ │ ├── BeanField.java │ │ │ ├── ClientDto.java │ │ │ ├── GenerateDetail.java │ │ │ ├── GenerateInput.java │ │ │ ├── LayuiFile.java │ │ │ ├── LoginUser.java │ │ │ ├── NoticeReadVO.java │ │ │ ├── NoticeVO.java │ │ │ ├── ResponseInfo.java │ │ │ ├── RoleDto.java │ │ │ ├── Token.java │ │ │ └── UserDto.java │ │ ├── filter/ │ │ │ └── TokenFilter.java │ │ ├── model/ │ │ │ ├── BaseEntity.java │ │ │ ├── Client.java │ │ │ ├── Dict.java │ │ │ ├── FileInfo.java │ │ │ ├── Mail.java │ │ │ ├── MailTo.java │ │ │ ├── Notice.java │ │ │ ├── Permission.java │ │ │ ├── Role.java │ │ │ ├── SysLogs.java │ │ │ ├── SysUser.java │ │ │ └── TokenModel.java │ │ ├── page/ │ │ │ └── table/ │ │ │ ├── PageTableArgumentResolver.java │ │ │ ├── PageTableHandler.java │ │ │ ├── PageTableRequest.java │ │ │ └── PageTableResponse.java │ │ ├── service/ │ │ │ ├── ClientService.java │ │ │ ├── FileService.java │ │ │ ├── GenerateService.java │ │ │ ├── MailService.java │ │ │ ├── MicroServiceService.java │ │ │ ├── PermissionService.java │ │ │ ├── RoleService.java │ │ │ ├── SendMailSevice.java │ │ │ ├── SysLogService.java │ │ │ ├── TokenService.java │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ ├── ClientServiceImpl.java │ │ │ ├── FileServiceImpl.java │ │ │ ├── GenerateServiceImpl.java │ │ │ ├── MailServiceImpl.java │ │ │ ├── MicroServicesServiceImpl.java │ │ │ ├── PermissionServiceImpl.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── SendMailSeviceImpl.java │ │ │ ├── SysLogServiceImpl.java │ │ │ ├── TokenServiceImpl.java │ │ │ ├── UserDetailsServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ └── utils/ │ │ ├── ExcelUtil.java │ │ ├── FileUtil.java │ │ ├── ResponseUtil.java │ │ ├── SpringUtil.java │ │ ├── StrUtil.java │ │ ├── TemplateUtil.java │ │ └── UserUtil.java │ ├── resources/ │ │ ├── activiti.properties │ │ ├── application.yml │ │ ├── bootstrap.yml │ │ ├── bpmn/ │ │ │ ├── demo.xml │ │ │ ├── leave.bpmn │ │ │ ├── leave2.bpmn │ │ │ └── vacationRequest.bpmn │ │ ├── db/ │ │ │ └── boot_security.sql │ │ ├── generate/ │ │ │ ├── controller.ftl │ │ │ ├── dao.ftl │ │ │ ├── htmlAdd.ftl │ │ │ ├── htmlList.ftl │ │ │ ├── htmlUpdate.ftl │ │ │ ├── java.ftl │ │ │ └── mapper.ftl │ │ ├── logback-admin.xml │ │ ├── mybatis.cfg.xml │ │ └── stencilset.json │ └── view/ │ └── static/ │ ├── admin.html │ ├── assets/ │ │ ├── css/ │ │ │ ├── admin.css │ │ │ ├── amazeui.css │ │ │ ├── amazeui.flat.css │ │ │ ├── app.css │ │ │ └── login.css │ │ ├── fonts/ │ │ │ └── FontAwesome.otf │ │ └── js/ │ │ ├── amazeui.ie8polyfill.js │ │ ├── amazeui.js │ │ ├── amazeui.widgets.helper.js │ │ ├── app.js │ │ ├── area.js │ │ ├── config.js │ │ ├── iscroll.js │ │ ├── login.js │ │ └── summernote.js │ ├── base-component/ │ │ ├── amazeui/ │ │ │ ├── css/ │ │ │ │ ├── admin.css │ │ │ │ ├── amazeui.css │ │ │ │ ├── amazeui.flat.css │ │ │ │ └── app.css │ │ │ ├── fonts/ │ │ │ │ └── FontAwesome.otf │ │ │ └── js/ │ │ │ ├── amazeui.ie8polyfill.js │ │ │ ├── amazeui.js │ │ │ ├── amazeui.widgets.helper.js │ │ │ ├── app.js │ │ │ ├── area.js │ │ │ ├── config.js │ │ │ ├── iscroll.js │ │ │ └── summernote.js │ │ └── layer/ │ │ ├── layer.js │ │ └── skin/ │ │ └── layer.css │ ├── css/ │ │ ├── bootstrap-treeview.css │ │ ├── font-awesome/ │ │ │ ├── css/ │ │ │ │ └── font-awesome.css │ │ │ └── fonts/ │ │ │ └── FontAwesome.otf │ │ ├── login.css │ │ ├── simple-line-icons/ │ │ │ └── css/ │ │ │ └── simple-line-icons.css │ │ ├── style.css │ │ ├── treetable/ │ │ │ ├── jquery.treetable.css │ │ │ ├── jquery.treetable.theme.default.css │ │ │ └── screen.css │ │ ├── your_style.css │ │ └── ztree/ │ │ ├── awesomeStyle/ │ │ │ ├── awesome.css │ │ │ ├── awesome.less │ │ │ └── fa.less │ │ ├── demo.css │ │ ├── metroStyle/ │ │ │ └── metroStyle.css │ │ └── zTreeStyle/ │ │ └── zTreeStyle.css │ ├── editor-app/ │ │ ├── app.js │ │ ├── editor/ │ │ │ ├── css/ │ │ │ │ └── editor.css │ │ │ └── oryx.debug.js │ │ └── libs/ │ │ ├── angular-dragdrop.min-1.0.3.js │ │ ├── angular-mocks_1.2.13/ │ │ │ └── angular-mocks.js │ │ ├── angular-resource_1.2.13/ │ │ │ └── angular-resource.js │ │ ├── angular-route_1.2.13/ │ │ │ └── angular-route.js │ │ ├── angular-sanitize_1.2.13/ │ │ │ └── angular-sanitize.js │ │ ├── angular-translate-loader-static-files/ │ │ │ ├── .bower.json │ │ │ └── angular-translate-loader-static-files.js │ │ ├── angular-translate-storage-cookie/ │ │ │ ├── .bower.json │ │ │ └── angular-translate-storage-cookie.js │ │ ├── angular-translate_2.4.2/ │ │ │ └── angular-translate.js │ │ ├── bootstrap-daterangepicker_1.3.7/ │ │ │ ├── daterangepicker-bs3.css │ │ │ └── daterangepicker.js │ │ ├── jquery.autogrow-textarea.js │ │ ├── ng-grid-2.0.7-min.js │ │ └── ui-utils.min-0.0.4.js │ ├── img/ │ │ └── bg.jpg1 │ ├── index.html │ ├── index.html.aaa │ ├── index.html.bak1 │ ├── index.html.bak2 │ ├── js/ │ │ ├── app.js │ │ ├── bootstrap/ │ │ │ └── bootstrap-treeview.js │ │ ├── common.js │ │ ├── dict.js │ │ ├── index.js │ │ ├── jq.js │ │ ├── libs/ │ │ │ └── jquery.treetable.js │ │ ├── main.js │ │ ├── main2.js │ │ ├── my/ │ │ │ ├── job.js │ │ │ ├── permission.js │ │ │ ├── roles/ │ │ │ │ └── role.js │ │ │ ├── ztree-menu.js │ │ │ └── ztree-service.js │ │ ├── plugin/ │ │ │ └── datatables/ │ │ │ ├── Chinese.lang │ │ │ └── swf/ │ │ │ ├── copy_csv_xls.swf │ │ │ └── copy_csv_xls_pdf.swf │ │ └── util/ │ │ └── ajaxutils.js │ ├── layui/ │ │ ├── css/ │ │ │ ├── layui.css │ │ │ ├── layui.mobile.css │ │ │ └── modules/ │ │ │ ├── code.css │ │ │ ├── laydate/ │ │ │ │ └── default/ │ │ │ │ └── laydate.css │ │ │ └── layer/ │ │ │ └── default/ │ │ │ └── layer.css │ │ ├── lay/ │ │ │ └── modules/ │ │ │ ├── carousel.js │ │ │ ├── code.js │ │ │ ├── element.js │ │ │ ├── flow.js │ │ │ ├── form.js │ │ │ ├── jquery.js │ │ │ ├── laydate.js │ │ │ ├── layedit.js │ │ │ ├── layer.js │ │ │ ├── laypage.js │ │ │ ├── laytpl.js │ │ │ ├── mobile.js │ │ │ ├── rate.js │ │ │ ├── table.js │ │ │ ├── tree.js │ │ │ ├── upload.js │ │ │ └── util.js │ │ ├── layui.all.js │ │ └── layui.js │ ├── lib/ │ │ ├── bootstrap/ │ │ │ ├── css/ │ │ │ │ ├── bootstrap-grid.css │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ └── bootstrap.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ └── bootstrap.js │ │ ├── font-awesome/ │ │ │ ├── css/ │ │ │ │ └── font-awesome.css │ │ │ └── fonts/ │ │ │ └── FontAwesome.otf │ │ ├── jquery/ │ │ │ ├── core.js │ │ │ ├── jquery.js │ │ │ └── jquery.slim.js │ │ ├── layer/ │ │ │ ├── layer.js │ │ │ ├── mobile/ │ │ │ │ ├── layer.js │ │ │ │ └── need/ │ │ │ │ └── layer.css │ │ │ └── theme/ │ │ │ └── default/ │ │ │ └── layer.css │ │ ├── layui/ │ │ │ ├── css/ │ │ │ │ ├── global.css │ │ │ │ ├── layui.css │ │ │ │ ├── layui.mobile.css │ │ │ │ └── modules/ │ │ │ │ ├── code.css │ │ │ │ ├── laydate/ │ │ │ │ │ └── default/ │ │ │ │ │ └── laydate.css │ │ │ │ └── layer/ │ │ │ │ └── default/ │ │ │ │ └── layer.css │ │ │ ├── lay/ │ │ │ │ └── modules/ │ │ │ │ ├── carousel.js │ │ │ │ ├── code.js │ │ │ │ ├── element.js │ │ │ │ ├── flow.js │ │ │ │ ├── form.js │ │ │ │ ├── jquery.js │ │ │ │ ├── laydate.js │ │ │ │ ├── layedit.js │ │ │ │ ├── layer.js │ │ │ │ ├── laypage.js │ │ │ │ ├── laytpl.js │ │ │ │ ├── mobile.js │ │ │ │ ├── table.js │ │ │ │ ├── tree.js │ │ │ │ ├── upload.js │ │ │ │ └── util.js │ │ │ ├── layui.all.js │ │ │ ├── layui.js │ │ │ └── layuiextend/ │ │ │ ├── treeSelect/ │ │ │ │ ├── css/ │ │ │ │ │ └── treeSelect.css │ │ │ │ └── treeselect.js │ │ │ ├── treegrid/ │ │ │ │ ├── css/ │ │ │ │ │ └── grid.css │ │ │ │ ├── grid.js │ │ │ │ └── treegrid.js │ │ │ └── ztree/ │ │ │ ├── css/ │ │ │ │ ├── treeselect.css │ │ │ │ └── ztree/ │ │ │ │ ├── awesome/ │ │ │ │ │ ├── fa.less │ │ │ │ │ ├── ztree.css │ │ │ │ │ └── ztree.less │ │ │ │ ├── default/ │ │ │ │ │ └── ztree.css │ │ │ │ └── metro/ │ │ │ │ └── ztree.css │ │ │ └── js/ │ │ │ ├── treeselect.js │ │ │ └── ztree.js │ │ ├── popper.js/ │ │ │ ├── popper-utils.js │ │ │ └── popper.js │ │ ├── simple-line-icons/ │ │ │ └── css/ │ │ │ └── simple-line-icons.css │ │ └── skin/ │ │ └── css/ │ │ ├── admin.css │ │ ├── console.css │ │ └── login.css │ ├── login.html │ ├── login.html.bak │ ├── login.html.bak1 │ ├── pages/ │ │ ├── activiti/ │ │ │ ├── actList.html │ │ │ ├── actModelList.html │ │ │ ├── deploy/ │ │ │ │ └── act-node.html │ │ │ ├── diagram-viewer/ │ │ │ │ ├── index.html │ │ │ │ ├── js/ │ │ │ │ │ ├── ActivitiRest.js │ │ │ │ │ ├── ActivityImpl.js │ │ │ │ │ ├── Color.js │ │ │ │ │ ├── LineBreakMeasurer.js │ │ │ │ │ ├── Polyline.js │ │ │ │ │ ├── ProcessDiagramCanvas.js │ │ │ │ │ ├── ProcessDiagramGenerator.js │ │ │ │ │ ├── jquery/ │ │ │ │ │ │ ├── jquery.asyncqueue.js │ │ │ │ │ │ ├── jquery.js │ │ │ │ │ │ └── jquery.progressbar.js │ │ │ │ │ ├── jstools.js │ │ │ │ │ ├── raphael.2.1.1.js │ │ │ │ │ ├── raphael.js │ │ │ │ │ ├── raphael_uncompressed.js │ │ │ │ │ └── textlayout.js │ │ │ │ └── style.css │ │ │ ├── editor-app/ │ │ │ │ ├── app-cfg.js │ │ │ │ ├── app.js │ │ │ │ ├── configuration/ │ │ │ │ │ ├── properties/ │ │ │ │ │ │ ├── assignment-display-template.html │ │ │ │ │ │ ├── assignment-popup.html │ │ │ │ │ │ ├── assignment-write-template.html │ │ │ │ │ │ ├── boolean-property-template.html │ │ │ │ │ │ ├── condition-expression-display-template.html │ │ │ │ │ │ ├── condition-expression-popup.html │ │ │ │ │ │ ├── condition-expression-write-template.html │ │ │ │ │ │ ├── default-value-display-template.html │ │ │ │ │ │ ├── event-listeners-display-template.html │ │ │ │ │ │ ├── event-listeners-popup.html │ │ │ │ │ │ ├── event-listeners-write-template.html │ │ │ │ │ │ ├── execution-listeners-display-template.html │ │ │ │ │ │ ├── execution-listeners-popup.html │ │ │ │ │ │ ├── execution-listeners-write-template.html │ │ │ │ │ │ ├── feedback-popup.html │ │ │ │ │ │ ├── fields-display-template.html │ │ │ │ │ │ ├── fields-popup.html │ │ │ │ │ │ ├── fields-write-template.html │ │ │ │ │ │ ├── form-properties-display-template.html │ │ │ │ │ │ ├── form-properties-popup.html │ │ │ │ │ │ ├── form-properties-write-template.html │ │ │ │ │ │ ├── in-parameters-display-template.html │ │ │ │ │ │ ├── in-parameters-popup.html │ │ │ │ │ │ ├── in-parameters-write-template.html │ │ │ │ │ │ ├── message-definitions-display-template.html │ │ │ │ │ │ ├── message-definitions-popup.html │ │ │ │ │ │ ├── message-definitions-write-template.html │ │ │ │ │ │ ├── message-property-write-template.html │ │ │ │ │ │ ├── multiinstance-property-write-template.html │ │ │ │ │ │ ├── out-parameters-display-template.html │ │ │ │ │ │ ├── out-parameters-popup.html │ │ │ │ │ │ ├── out-parameters-write-template.html │ │ │ │ │ │ ├── sequenceflow-order-display-template.html │ │ │ │ │ │ ├── sequenceflow-order-popup.html │ │ │ │ │ │ ├── sequenceflow-order-write-template.html │ │ │ │ │ │ ├── signal-definitions-display-template.html │ │ │ │ │ │ ├── signal-definitions-popup.html │ │ │ │ │ │ ├── signal-definitions-write-template.html │ │ │ │ │ │ ├── signal-property-write-template.html │ │ │ │ │ │ ├── string-property-write-mode-template.html │ │ │ │ │ │ ├── subprocess-reference-display-template.html │ │ │ │ │ │ ├── subprocess-reference-popup.html │ │ │ │ │ │ ├── subprocess-reference-write-template.html │ │ │ │ │ │ ├── task-listeners-display-template.html │ │ │ │ │ │ ├── task-listeners-popup.html │ │ │ │ │ │ ├── task-listeners-write-template.html │ │ │ │ │ │ ├── text-popup.html │ │ │ │ │ │ └── text-property-write-template.html │ │ │ │ │ ├── properties-assignment-controller.js │ │ │ │ │ ├── properties-condition-expression-controller.js │ │ │ │ │ ├── properties-custom-controllers.js │ │ │ │ │ ├── properties-default-controllers.js │ │ │ │ │ ├── properties-event-listeners-controller.js │ │ │ │ │ ├── properties-execution-listeners-controller.js │ │ │ │ │ ├── properties-fields-controller.js │ │ │ │ │ ├── properties-form-properties-controller.js │ │ │ │ │ ├── properties-in-parameters-controller.js │ │ │ │ │ ├── properties-message-definitions-controller.js │ │ │ │ │ ├── properties-message-scope-controller.js │ │ │ │ │ ├── properties-multiinstance-controller.js │ │ │ │ │ ├── properties-out-parameters-controller.js │ │ │ │ │ ├── properties-sequenceflow-order-controller.js │ │ │ │ │ ├── properties-signal-definitions-controller.js │ │ │ │ │ ├── properties-signal-scope-controller.js │ │ │ │ │ ├── properties-task-listeners-controller.js │ │ │ │ │ ├── properties.js │ │ │ │ │ ├── toolbar-custom-actions.js │ │ │ │ │ ├── toolbar-default-actions.js │ │ │ │ │ ├── toolbar.js │ │ │ │ │ └── url-config.js │ │ │ │ ├── css/ │ │ │ │ │ ├── style-common.css │ │ │ │ │ ├── style-editor.css │ │ │ │ │ └── style.css │ │ │ │ ├── editor/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── editor.css │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ ├── translation_de.js │ │ │ │ │ │ ├── translation_en_us.js │ │ │ │ │ │ ├── translation_signavio_de.js │ │ │ │ │ │ └── translation_signavio_en_us.js │ │ │ │ │ ├── oryx.debug.js │ │ │ │ │ └── oryx.js │ │ │ │ ├── editor-config.js │ │ │ │ ├── editor-controller.js │ │ │ │ ├── editor-utils.js │ │ │ │ ├── editor.html │ │ │ │ ├── eventbus.js │ │ │ │ ├── header-controller.js │ │ │ │ ├── i18n/ │ │ │ │ │ ├── en.json │ │ │ │ │ └── en.json_bak │ │ │ │ ├── libs/ │ │ │ │ │ ├── angular-dragdrop.min-1.0.3.js │ │ │ │ │ ├── angular-mocks_1.2.13/ │ │ │ │ │ │ └── angular-mocks.js │ │ │ │ │ ├── angular-resource_1.2.13/ │ │ │ │ │ │ └── angular-resource.js │ │ │ │ │ ├── angular-route_1.2.13/ │ │ │ │ │ │ └── angular-route.js │ │ │ │ │ ├── angular-sanitize_1.2.13/ │ │ │ │ │ │ └── angular-sanitize.js │ │ │ │ │ ├── angular-translate-loader-static-files/ │ │ │ │ │ │ ├── .bower.json │ │ │ │ │ │ └── angular-translate-loader-static-files.js │ │ │ │ │ ├── angular-translate-storage-cookie/ │ │ │ │ │ │ ├── .bower.json │ │ │ │ │ │ └── angular-translate-storage-cookie.js │ │ │ │ │ ├── angular-translate_2.4.2/ │ │ │ │ │ │ └── angular-translate.js │ │ │ │ │ ├── bootstrap-daterangepicker_1.3.7/ │ │ │ │ │ │ ├── daterangepicker-bs3.css │ │ │ │ │ │ └── daterangepicker.js │ │ │ │ │ ├── bootstrap_3.1.1/ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ │ │ └── bootstrap.css │ │ │ │ │ │ └── js/ │ │ │ │ │ │ └── bootstrap.js │ │ │ │ │ ├── es5-shim-15.3.4.5/ │ │ │ │ │ │ ├── .bower.json │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── CHANGES │ │ │ │ │ │ ├── CONTRIBUTORS.md │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── es5-sham.js │ │ │ │ │ │ ├── es5-shim.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tests/ │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ ├── h-kill.js │ │ │ │ │ │ │ ├── h-matchers.js │ │ │ │ │ │ │ └── h.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── index.min.html │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── jasmine-html.js │ │ │ │ │ │ │ ├── jasmine.css │ │ │ │ │ │ │ ├── jasmine.js │ │ │ │ │ │ │ └── json2.js │ │ │ │ │ │ └── spec/ │ │ │ │ │ │ ├── s-array.js │ │ │ │ │ │ ├── s-date.js │ │ │ │ │ │ ├── s-function.js │ │ │ │ │ │ ├── s-number.js │ │ │ │ │ │ ├── s-object.js │ │ │ │ │ │ └── s-string.js │ │ │ │ │ ├── jquery.autogrow-textarea.js │ │ │ │ │ ├── jquery_1.11.0/ │ │ │ │ │ │ └── jquery.js │ │ │ │ │ ├── json3_3.2.6/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── json3.js │ │ │ │ │ ├── ng-grid-2.0.7-min.js │ │ │ │ │ ├── path_parser.js │ │ │ │ │ ├── prototype-1.5.1.js │ │ │ │ │ └── ui-utils.min-0.0.4.js │ │ │ │ ├── partials/ │ │ │ │ │ ├── root-stencil-item-template.html │ │ │ │ │ └── stencil-item-template.html │ │ │ │ ├── plugins.xml │ │ │ │ ├── popups/ │ │ │ │ │ ├── icon-template.html │ │ │ │ │ ├── save-model.html │ │ │ │ │ ├── select-shape.html │ │ │ │ │ └── unsaved-changes.html │ │ │ │ ├── select-shape-controller.js │ │ │ │ ├── stencil-controller.js │ │ │ │ └── toolbar-controller.js │ │ │ └── modeler.html │ │ ├── client/ │ │ │ ├── addClient.html │ │ │ └── clientList.html │ │ ├── dashboard.html │ │ ├── dict/ │ │ │ ├── addDict.html │ │ │ ├── dictList.html │ │ │ └── updateDict.html │ │ ├── euraka/ │ │ │ └── euraka.html │ │ ├── excel/ │ │ │ └── sql.html │ │ ├── file/ │ │ │ └── fileList.html │ │ ├── generate/ │ │ │ └── edit.html │ │ ├── job/ │ │ │ ├── addJob.html │ │ │ ├── jobList.html │ │ │ └── updateJob.html │ │ ├── log/ │ │ │ └── logList.html │ │ ├── mail/ │ │ │ ├── addMail.html │ │ │ ├── mailDetail.html │ │ │ └── mailList.html │ │ ├── menu/ │ │ │ ├── addMenu.html │ │ │ ├── icon.html │ │ │ ├── menuList.html │ │ │ └── updateMenu.html │ │ ├── notice/ │ │ │ ├── addNotice.html │ │ │ ├── detail.html │ │ │ ├── noticeList.html │ │ │ ├── noticePubList.html │ │ │ └── updateNotice.html │ │ ├── role/ │ │ │ ├── addRole.html │ │ │ └── roleList.html │ │ ├── service/ │ │ │ ├── addService.html │ │ │ ├── icon.html │ │ │ ├── serviceList.html │ │ │ └── updateService.html │ │ └── user/ │ │ ├── addUser.html │ │ ├── changePassword.html │ │ ├── updateHeadImg.html │ │ ├── updateMyself.html │ │ ├── updateUser.html │ │ └── userList.html │ └── public/ │ ├── css/ │ │ ├── index1.css │ │ └── main.css │ ├── fonts/ │ │ └── FontAwesome.otf │ ├── js/ │ │ ├── common.js │ │ ├── index.js │ │ ├── navtab.js │ │ └── sys/ │ │ ├── config.js │ │ ├── generator.js │ │ ├── log.js │ │ ├── menu.js │ │ ├── role.js │ │ ├── schedule.js │ │ ├── schedule_log.js │ │ └── user.js │ ├── libs/ │ │ ├── ajaxupload.js │ │ ├── app.js │ │ └── router.js │ └── plugins/ │ ├── jqgrid/ │ │ ├── grid.locale-cn.js │ │ ├── ui.jqgrid-bootstrap-ui.css │ │ ├── ui.jqgrid-bootstrap.css │ │ └── ui.jqgrid.css │ ├── layer/ │ │ ├── layer.js │ │ ├── mobile/ │ │ │ ├── layer.js │ │ │ └── need/ │ │ │ └── layer.css │ │ └── skin/ │ │ ├── default/ │ │ │ └── layer.css │ │ └── moon/ │ │ └── style.css │ ├── layui/ │ │ ├── css/ │ │ │ ├── layui.css │ │ │ └── modules/ │ │ │ ├── code.css │ │ │ ├── icheck/ │ │ │ │ ├── flat/ │ │ │ │ │ ├── _all.css │ │ │ │ │ ├── aero.css │ │ │ │ │ ├── blue.css │ │ │ │ │ ├── flat.css │ │ │ │ │ ├── green.css │ │ │ │ │ ├── grey.css │ │ │ │ │ ├── orange.css │ │ │ │ │ ├── pink.css │ │ │ │ │ ├── purple.css │ │ │ │ │ ├── red.css │ │ │ │ │ └── yellow.css │ │ │ │ ├── futurico/ │ │ │ │ │ └── futurico.css │ │ │ │ ├── icheck.css │ │ │ │ ├── line/ │ │ │ │ │ ├── _all.css │ │ │ │ │ ├── aero.css │ │ │ │ │ ├── blue.css │ │ │ │ │ ├── green.css │ │ │ │ │ ├── grey.css │ │ │ │ │ ├── line.css │ │ │ │ │ ├── orange.css │ │ │ │ │ ├── pink.css │ │ │ │ │ ├── purple.css │ │ │ │ │ ├── red.css │ │ │ │ │ └── yellow.css │ │ │ │ ├── minimal/ │ │ │ │ │ ├── _all.css │ │ │ │ │ ├── aero.css │ │ │ │ │ ├── blue.css │ │ │ │ │ ├── green.css │ │ │ │ │ ├── grey.css │ │ │ │ │ ├── minimal.css │ │ │ │ │ ├── orange.css │ │ │ │ │ ├── pink.css │ │ │ │ │ ├── purple.css │ │ │ │ │ ├── red.css │ │ │ │ │ └── yellow.css │ │ │ │ ├── polaris/ │ │ │ │ │ └── polaris.css │ │ │ │ └── square/ │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── blue.css │ │ │ │ ├── green.css │ │ │ │ ├── grey.css │ │ │ │ ├── orange.css │ │ │ │ ├── pink.css │ │ │ │ ├── purple.css │ │ │ │ ├── red.css │ │ │ │ ├── square.css │ │ │ │ └── yellow.css │ │ │ ├── laydate/ │ │ │ │ └── laydate.css │ │ │ └── layer/ │ │ │ └── default/ │ │ │ └── layer.css │ │ ├── lay/ │ │ │ ├── dest/ │ │ │ │ ├── layui.all.js │ │ │ │ └── layui.mod.js │ │ │ ├── lib/ │ │ │ │ └── jquery.js │ │ │ └── modules/ │ │ │ ├── code.js │ │ │ ├── element.js │ │ │ ├── flow.js │ │ │ ├── form.js │ │ │ ├── laydate.js │ │ │ ├── layedit.js │ │ │ ├── layer.js │ │ │ ├── laypage.js │ │ │ ├── laytpl.js │ │ │ ├── tree.js │ │ │ ├── upload.js │ │ │ └── util.js │ │ ├── layui.js │ │ └── modules/ │ │ ├── icheck.js │ │ └── pjax.js │ └── ztree/ │ └── css/ │ ├── awesomeStyle/ │ │ ├── awesome.css │ │ ├── awesome.less │ │ └── fa.less │ ├── metroStyle/ │ │ └── metroStyle.css │ └── zTreeStyle/ │ └── zTreeStyle.css ├── open-monitor-center/ │ ├── cachecloud/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── cachecloud-open-client/ │ │ │ ├── cachecloud-jedis/ │ │ │ │ ├── .gitignore │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── redis/ │ │ │ │ │ └── clients/ │ │ │ │ │ ├── jedis/ │ │ │ │ │ │ ├── BinaryClient.java │ │ │ │ │ │ ├── BinaryJedis.java │ │ │ │ │ │ ├── BinaryJedisCluster.java │ │ │ │ │ │ ├── BinaryJedisPubSub.java │ │ │ │ │ │ ├── BinaryShardedJedis.java │ │ │ │ │ │ ├── BitOP.java │ │ │ │ │ │ ├── BitPosParams.java │ │ │ │ │ │ ├── Builder.java │ │ │ │ │ │ ├── BuilderFactory.java │ │ │ │ │ │ ├── Client.java │ │ │ │ │ │ ├── Connection.java │ │ │ │ │ │ ├── DebugParams.java │ │ │ │ │ │ ├── GeoCoordinate.java │ │ │ │ │ │ ├── GeoRadiusResponse.java │ │ │ │ │ │ ├── GeoUnit.java │ │ │ │ │ │ ├── HostAndPort.java │ │ │ │ │ │ ├── Jedis.java │ │ │ │ │ │ ├── JedisCluster.java │ │ │ │ │ │ ├── JedisClusterCommand.java │ │ │ │ │ │ ├── JedisClusterConnectionHandler.java │ │ │ │ │ │ ├── JedisClusterInfoCache.java │ │ │ │ │ │ ├── JedisFactory.java │ │ │ │ │ │ ├── JedisMonitor.java │ │ │ │ │ │ ├── JedisPool.java │ │ │ │ │ │ ├── JedisPoolAbstract.java │ │ │ │ │ │ ├── JedisPoolConfig.java │ │ │ │ │ │ ├── JedisPubSub.java │ │ │ │ │ │ ├── JedisSentinelPool.java │ │ │ │ │ │ ├── JedisShardInfo.java │ │ │ │ │ │ ├── JedisSlotBasedConnectionHandler.java │ │ │ │ │ │ ├── MultiKeyPipelineBase.java │ │ │ │ │ │ ├── Pipeline.java │ │ │ │ │ │ ├── PipelineBase.java │ │ │ │ │ │ ├── PipelineCluster.java │ │ │ │ │ │ ├── PipelineClusterCommand.java │ │ │ │ │ │ ├── Protocol.java │ │ │ │ │ │ ├── Queable.java │ │ │ │ │ │ ├── RedisPipeline.java │ │ │ │ │ │ ├── Response.java │ │ │ │ │ │ ├── ScanParams.java │ │ │ │ │ │ ├── ScanResult.java │ │ │ │ │ │ ├── ShardedJedis.java │ │ │ │ │ │ ├── ShardedJedisPipeline.java │ │ │ │ │ │ ├── ShardedJedisPool.java │ │ │ │ │ │ ├── SortingParams.java │ │ │ │ │ │ ├── SubPubClusterCommand.java │ │ │ │ │ │ ├── Transaction.java │ │ │ │ │ │ ├── Tuple.java │ │ │ │ │ │ ├── ZParams.java │ │ │ │ │ │ ├── commands/ │ │ │ │ │ │ │ ├── AdvancedBinaryJedisCommands.java │ │ │ │ │ │ │ ├── AdvancedJedisCommands.java │ │ │ │ │ │ │ ├── BasicCommands.java │ │ │ │ │ │ │ ├── BasicRedisPipeline.java │ │ │ │ │ │ │ ├── BinaryJedisClusterCommands.java │ │ │ │ │ │ │ ├── BinaryJedisCommands.java │ │ │ │ │ │ │ ├── BinaryRedisPipeline.java │ │ │ │ │ │ │ ├── BinaryScriptingCommands.java │ │ │ │ │ │ │ ├── BinaryScriptingCommandsPipeline.java │ │ │ │ │ │ │ ├── ClusterCommands.java │ │ │ │ │ │ │ ├── ClusterPipeline.java │ │ │ │ │ │ │ ├── Commands.java │ │ │ │ │ │ │ ├── JedisClusterBinaryScriptingCommands.java │ │ │ │ │ │ │ ├── JedisClusterCommands.java │ │ │ │ │ │ │ ├── JedisClusterScriptingCommands.java │ │ │ │ │ │ │ ├── JedisCommands.java │ │ │ │ │ │ │ ├── MultiKeyBinaryCommands.java │ │ │ │ │ │ │ ├── MultiKeyBinaryJedisClusterCommands.java │ │ │ │ │ │ │ ├── MultiKeyBinaryRedisPipeline.java │ │ │ │ │ │ │ ├── MultiKeyCommands.java │ │ │ │ │ │ │ ├── MultiKeyCommandsPipeline.java │ │ │ │ │ │ │ ├── MultiKeyJedisClusterCommands.java │ │ │ │ │ │ │ ├── ProtocolCommand.java │ │ │ │ │ │ │ ├── RedisPipeline.java │ │ │ │ │ │ │ ├── ScriptingCommands.java │ │ │ │ │ │ │ ├── ScriptingCommandsPipeline.java │ │ │ │ │ │ │ └── SentinelCommands.java │ │ │ │ │ │ ├── exceptions/ │ │ │ │ │ │ │ ├── InvalidURIException.java │ │ │ │ │ │ │ ├── JedisAskDataException.java │ │ │ │ │ │ │ ├── JedisClusterCrossSlotException.java │ │ │ │ │ │ │ ├── JedisClusterException.java │ │ │ │ │ │ │ ├── JedisClusterMaxRedirectionsException.java │ │ │ │ │ │ │ ├── JedisConnectionException.java │ │ │ │ │ │ │ ├── JedisDataException.java │ │ │ │ │ │ │ ├── JedisException.java │ │ │ │ │ │ │ ├── JedisMovedDataException.java │ │ │ │ │ │ │ └── JedisRedirectionException.java │ │ │ │ │ │ ├── params/ │ │ │ │ │ │ │ ├── Params.java │ │ │ │ │ │ │ ├── geo/ │ │ │ │ │ │ │ │ └── GeoRadiusParam.java │ │ │ │ │ │ │ ├── set/ │ │ │ │ │ │ │ │ └── SetParams.java │ │ │ │ │ │ │ └── sortedset/ │ │ │ │ │ │ │ ├── ZAddParams.java │ │ │ │ │ │ │ └── ZIncrByParams.java │ │ │ │ │ │ ├── serializable/ │ │ │ │ │ │ │ ├── ProtostuffSerializer.java │ │ │ │ │ │ │ └── VO.java │ │ │ │ │ │ └── valueobject/ │ │ │ │ │ │ ├── RangeScoreVO.java │ │ │ │ │ │ ├── ReshardProcess.java │ │ │ │ │ │ └── SortedSetVO.java │ │ │ │ │ └── util/ │ │ │ │ │ ├── ClusterNodeInformation.java │ │ │ │ │ ├── ClusterNodeInformationParser.java │ │ │ │ │ ├── Hashing.java │ │ │ │ │ ├── IOUtils.java │ │ │ │ │ ├── JedisByteHashMap.java │ │ │ │ │ ├── JedisClusterCRC16.java │ │ │ │ │ ├── JedisURIHelper.java │ │ │ │ │ ├── KeyMergeUtil.java │ │ │ │ │ ├── MurmurHash.java │ │ │ │ │ ├── Pool.java │ │ │ │ │ ├── RedisInputStream.java │ │ │ │ │ ├── RedisOutputStream.java │ │ │ │ │ ├── SafeEncoder.java │ │ │ │ │ ├── ShardInfo.java │ │ │ │ │ ├── Sharded.java │ │ │ │ │ └── Slowlog.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── redis/ │ │ │ │ └── clients/ │ │ │ │ └── jedis/ │ │ │ │ ├── PipelineClusterTest.java │ │ │ │ ├── TupleTest.java │ │ │ │ └── tests/ │ │ │ │ ├── BuilderFactoryTest.java │ │ │ │ ├── ConnectionCloseTest.java │ │ │ │ ├── ConnectionTest.java │ │ │ │ ├── FragmentedByteArrayInputStream.java │ │ │ │ ├── HostAndPortUtil.java │ │ │ │ ├── JedisClusterNodeInformationParserTest.java │ │ │ │ ├── JedisClusterTest.java │ │ │ │ ├── JedisPoolTest.java │ │ │ │ ├── JedisSentinelPoolTest.java │ │ │ │ ├── JedisSentinelTest.java │ │ │ │ ├── JedisTest.java │ │ │ │ ├── JedisTestBase.java │ │ │ │ ├── KeyMergeUtilTest.java │ │ │ │ ├── PipeliningTest.java │ │ │ │ ├── ProtocolTest.java │ │ │ │ ├── ShardedJedisPipelineTest.java │ │ │ │ ├── ShardedJedisPoolTest.java │ │ │ │ ├── ShardedJedisTest.java │ │ │ │ ├── benchmark/ │ │ │ │ │ ├── CRC16Benchmark.java │ │ │ │ │ ├── GetSetBenchmark.java │ │ │ │ │ ├── HashingBenchmark.java │ │ │ │ │ ├── PipelinedGetSetBenchmark.java │ │ │ │ │ ├── PoolBenchmark.java │ │ │ │ │ ├── ProtocolBenchmark.java │ │ │ │ │ ├── SafeEncoderBenchmark.java │ │ │ │ │ └── ShardedBenchmark.java │ │ │ │ ├── collections/ │ │ │ │ │ └── SetFromListTest.java │ │ │ │ ├── commands/ │ │ │ │ │ ├── AllKindOfValuesCommandsTest.java │ │ │ │ │ ├── BinaryValuesCommandsTest.java │ │ │ │ │ ├── BitCommandsTest.java │ │ │ │ │ ├── ClusterBinaryJedisCommandsTest.java │ │ │ │ │ ├── ClusterCommandsTest.java │ │ │ │ │ ├── ClusterScriptingCommandsTest.java │ │ │ │ │ ├── ConnectionHandlingCommandsTest.java │ │ │ │ │ ├── ControlCommandsTest.java │ │ │ │ │ ├── GeoCommandsTest.java │ │ │ │ │ ├── HashesCommandsTest.java │ │ │ │ │ ├── HyperLogLogCommandsTest.java │ │ │ │ │ ├── JedisCommandTestBase.java │ │ │ │ │ ├── ListCommandsTest.java │ │ │ │ │ ├── ObjectCommandsTest.java │ │ │ │ │ ├── PublishSubscribeCommandsTest.java │ │ │ │ │ ├── ScriptingCommandsTest.java │ │ │ │ │ ├── SetCommandsTest.java │ │ │ │ │ ├── SlowlogCommandsTest.java │ │ │ │ │ ├── SortedSetCommandsTest.java │ │ │ │ │ ├── SortingCommandsTest.java │ │ │ │ │ ├── StringValuesCommandsTest.java │ │ │ │ │ ├── TransactionCommandsTest.java │ │ │ │ │ └── VariadicCommandsTest.java │ │ │ │ └── utils/ │ │ │ │ ├── ClientKillerUtil.java │ │ │ │ ├── FailoverAbortedException.java │ │ │ │ ├── JedisClusterCRC16Test.java │ │ │ │ ├── JedisClusterTestUtil.java │ │ │ │ ├── JedisSentinelTestUtil.java │ │ │ │ └── JedisURIHelperTest.java │ │ │ ├── cachecloud-open-client-basic/ │ │ │ │ ├── .gitignore │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── sohu/ │ │ │ │ │ │ └── tv/ │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ └── client/ │ │ │ │ │ │ │ └── common/ │ │ │ │ │ │ │ └── jmx/ │ │ │ │ │ │ │ ├── CachecloudDataWatcher.java │ │ │ │ │ │ │ └── CachecloudDataWatcherMBean.java │ │ │ │ │ │ ├── cachecloud/ │ │ │ │ │ │ │ └── client/ │ │ │ │ │ │ │ └── basic/ │ │ │ │ │ │ │ ├── component/ │ │ │ │ │ │ │ │ ├── EmailComponent.java │ │ │ │ │ │ │ │ ├── EmailComponentImpl.java │ │ │ │ │ │ │ │ ├── MobileAlertComponent.java │ │ │ │ │ │ │ │ └── MobileAlertComponentImpl.java │ │ │ │ │ │ │ ├── exception/ │ │ │ │ │ │ │ │ └── CacheCloudClientHttpUtilsException.java │ │ │ │ │ │ │ ├── heartbeat/ │ │ │ │ │ │ │ │ ├── ClientStatusEnum.java │ │ │ │ │ │ │ │ └── HeartbeatInfo.java │ │ │ │ │ │ │ └── util/ │ │ │ │ │ │ │ ├── ConstUtils.java │ │ │ │ │ │ │ ├── DateUtils.java │ │ │ │ │ │ │ ├── HttpUtils.java │ │ │ │ │ │ │ ├── JsonUtil.java │ │ │ │ │ │ │ ├── NamedThreadFactory.java │ │ │ │ │ │ │ ├── NetUtils.java │ │ │ │ │ │ │ └── StringUtil.java │ │ │ │ │ │ └── jedis/ │ │ │ │ │ │ └── stat/ │ │ │ │ │ │ ├── constant/ │ │ │ │ │ │ │ └── ClientReportConstant.java │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ └── UsefulDataCollector.java │ │ │ │ │ │ ├── enums/ │ │ │ │ │ │ │ ├── ClientCollectDataTypeEnum.java │ │ │ │ │ │ │ ├── ClientExceptionType.java │ │ │ │ │ │ │ ├── CostTimeDistriEnum.java │ │ │ │ │ │ │ └── ValueSizeDistriEnum.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── ClientReportBean.java │ │ │ │ │ │ │ ├── CostTimeDetailStatKey.java │ │ │ │ │ │ │ ├── CostTimeDetailStatModel.java │ │ │ │ │ │ │ ├── CostTimeModel.java │ │ │ │ │ │ │ ├── ExceptionModel.java │ │ │ │ │ │ │ ├── UsefulDataModel.java │ │ │ │ │ │ │ └── ValueLengthModel.java │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── AtomicLongMap.java │ │ │ │ │ │ ├── NamedThreadFactory.java │ │ │ │ │ │ └── NumberUtil.java │ │ │ │ │ └── resources/ │ │ │ │ │ └── cacheCloudClient.properties │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── sohu/ │ │ │ │ └── tv/ │ │ │ │ └── base/ │ │ │ │ └── test/ │ │ │ │ └── BaseTest.java │ │ │ ├── cachecloud-open-client-redis/ │ │ │ │ ├── .gitignore │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── sohu/ │ │ │ │ │ └── tv/ │ │ │ │ │ ├── builder/ │ │ │ │ │ │ ├── ClientBuilder.java │ │ │ │ │ │ ├── RedisClusterBuilder.java │ │ │ │ │ │ ├── RedisSentinelBuilder.java │ │ │ │ │ │ └── RedisStandaloneBuilder.java │ │ │ │ │ └── cachecloud/ │ │ │ │ │ └── client/ │ │ │ │ │ └── jedis/ │ │ │ │ │ └── stat/ │ │ │ │ │ ├── ClientDataCollectReportExecutor.java │ │ │ │ │ └── ClientReportDataCenter.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── sohu/ │ │ │ │ └── tv/ │ │ │ │ └── test/ │ │ │ │ ├── base/ │ │ │ │ │ └── BaseTest.java │ │ │ │ └── client/ │ │ │ │ ├── RedisClusterTest.java │ │ │ │ ├── RedisSentinelTest.java │ │ │ │ └── RedisStandaloneTest.java │ │ │ ├── cachecloud-open-jedis-stat/ │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── sohu/ │ │ │ │ │ └── tv/ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ └── client/ │ │ │ │ │ │ └── common/ │ │ │ │ │ │ └── jmx/ │ │ │ │ │ │ ├── CachecloudDataWatcher.java │ │ │ │ │ │ └── CachecloudDataWatcherMBean.java │ │ │ │ │ └── jedis/ │ │ │ │ │ └── stat/ │ │ │ │ │ ├── constant/ │ │ │ │ │ │ └── ClientReportConstant.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── UsefulDataCollector.java │ │ │ │ │ ├── enums/ │ │ │ │ │ │ ├── ClientCollectDataTypeEnum.java │ │ │ │ │ │ ├── ClientExceptionType.java │ │ │ │ │ │ ├── CostTimeDistriEnum.java │ │ │ │ │ │ └── ValueSizeDistriEnum.java │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── ClientReportBean.java │ │ │ │ │ │ ├── CostTimeDetailStatKey.java │ │ │ │ │ │ ├── CostTimeDetailStatModel.java │ │ │ │ │ │ ├── CostTimeModel.java │ │ │ │ │ │ ├── ExceptionModel.java │ │ │ │ │ │ ├── UsefulDataModel.java │ │ │ │ │ │ └── ValueLengthModel.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── AtomicLongMap.java │ │ │ │ │ ├── DateUtils.java │ │ │ │ │ ├── NamedThreadFactory.java │ │ │ │ │ └── NumberUtil.java │ │ │ │ └── test/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── sohu/ │ │ │ │ │ └── tv/ │ │ │ │ │ └── jedis/ │ │ │ │ │ └── stat/ │ │ │ │ │ └── data/ │ │ │ │ │ └── test/ │ │ │ │ │ └── UsefulDataCollectorTest.java │ │ │ │ └── resources/ │ │ │ │ └── logback-test.xml │ │ │ └── pom.xml │ │ ├── cachecloud-open-common/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── sohu/ │ │ │ └── cache/ │ │ │ ├── util/ │ │ │ │ ├── ConstUtils.java │ │ │ │ └── DemoCodeUtil.java │ │ │ └── web/ │ │ │ ├── component/ │ │ │ │ ├── EmailComponent.java │ │ │ │ ├── EmailComponentImpl.java │ │ │ │ ├── MobileAlertComponent.java │ │ │ │ └── MobileAlertComponentImpl.java │ │ │ └── util/ │ │ │ ├── HttpRequestUtil.java │ │ │ └── LoginUtil.java │ │ ├── cachecloud-open-web/ │ │ │ ├── .gitignore │ │ │ ├── nmon/ │ │ │ │ └── linux/ │ │ │ │ ├── x86/ │ │ │ │ │ ├── centos6 │ │ │ │ │ ├── centos7 │ │ │ │ │ ├── debian5 │ │ │ │ │ ├── debian50 │ │ │ │ │ ├── debian6 │ │ │ │ │ ├── debian60 │ │ │ │ │ ├── debian7 │ │ │ │ │ ├── debian8 │ │ │ │ │ ├── fedora14 │ │ │ │ │ ├── fedora15 │ │ │ │ │ ├── fedora16 │ │ │ │ │ ├── fedora17 │ │ │ │ │ ├── fedora18 │ │ │ │ │ ├── fedora19 │ │ │ │ │ ├── fedora20 │ │ │ │ │ ├── fedora21 │ │ │ │ │ ├── fedora22 │ │ │ │ │ ├── fedoracore4 │ │ │ │ │ ├── knoppix4 │ │ │ │ │ ├── knoppix5 │ │ │ │ │ ├── knoppix6 │ │ │ │ │ ├── knoppix7 │ │ │ │ │ ├── linux │ │ │ │ │ ├── linux_old │ │ │ │ │ ├── mint12 │ │ │ │ │ ├── mint14 │ │ │ │ │ ├── mint15 │ │ │ │ │ ├── mint16 │ │ │ │ │ ├── mint17 │ │ │ │ │ ├── mint7 │ │ │ │ │ ├── mint8 │ │ │ │ │ ├── opensuse11 │ │ │ │ │ ├── opensuse12 │ │ │ │ │ ├── opensuse13 │ │ │ │ │ ├── rhel5 │ │ │ │ │ ├── rhel52 │ │ │ │ │ ├── rhel54 │ │ │ │ │ ├── rhel6 │ │ │ │ │ ├── rhel65 │ │ │ │ │ ├── rhel7 │ │ │ │ │ ├── rhel71 │ │ │ │ │ ├── rhel72 │ │ │ │ │ ├── sles11 │ │ │ │ │ ├── sles12 │ │ │ │ │ ├── sles13 │ │ │ │ │ ├── ubuntu10 │ │ │ │ │ ├── ubuntu1004 │ │ │ │ │ ├── ubuntu1104 │ │ │ │ │ ├── ubuntu1110 │ │ │ │ │ ├── ubuntu13 │ │ │ │ │ ├── ubuntu14 │ │ │ │ │ ├── ubuntu1404 │ │ │ │ │ ├── ubuntu15 │ │ │ │ │ ├── ubuntu1504 │ │ │ │ │ ├── ubuntu1510 │ │ │ │ │ ├── ubuntu6 │ │ │ │ │ ├── ubuntu7 │ │ │ │ │ ├── ubuntu8 │ │ │ │ │ ├── ubuntu810 │ │ │ │ │ ├── ubuntu9 │ │ │ │ │ └── ubuntu910 │ │ │ │ └── x86_64/ │ │ │ │ ├── centos6 │ │ │ │ ├── centos7 │ │ │ │ ├── debian5 │ │ │ │ ├── debian50 │ │ │ │ ├── debian6 │ │ │ │ ├── debian60 │ │ │ │ ├── debian7 │ │ │ │ ├── debian8 │ │ │ │ ├── fedora14 │ │ │ │ ├── fedora15 │ │ │ │ ├── fedora16 │ │ │ │ ├── fedora17 │ │ │ │ ├── fedora18 │ │ │ │ ├── fedora19 │ │ │ │ ├── fedora20 │ │ │ │ ├── fedora21 │ │ │ │ ├── fedora22 │ │ │ │ ├── linux │ │ │ │ ├── linux_old │ │ │ │ ├── mint12 │ │ │ │ ├── mint14 │ │ │ │ ├── mint15 │ │ │ │ ├── mint16 │ │ │ │ ├── mint17 │ │ │ │ ├── opensuse11 │ │ │ │ ├── opensuse12 │ │ │ │ ├── opensuse13 │ │ │ │ ├── rhel4 │ │ │ │ ├── rhel45 │ │ │ │ ├── rhel5 │ │ │ │ ├── rhel54 │ │ │ │ ├── rhel6 │ │ │ │ ├── rhel7 │ │ │ │ ├── sles11 │ │ │ │ ├── sles12 │ │ │ │ ├── sles13 │ │ │ │ ├── ubuntu1004 │ │ │ │ ├── ubuntu1010 │ │ │ │ ├── ubuntu1104 │ │ │ │ ├── ubuntu1110 │ │ │ │ ├── ubuntu13 │ │ │ │ ├── ubuntu14 │ │ │ │ ├── ubuntu1404 │ │ │ │ ├── ubuntu1410 │ │ │ │ ├── ubuntu15 │ │ │ │ ├── ubuntu6 │ │ │ │ ├── ubuntu7 │ │ │ │ ├── ubuntu810 │ │ │ │ └── ubuntu910 │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── sohu/ │ │ │ │ │ └── cache/ │ │ │ │ │ ├── alert/ │ │ │ │ │ │ ├── AppAlertService.java │ │ │ │ │ │ ├── InstanceAlertService.java │ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ │ └── AlertConfigBaseData.java │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── AppAlertServiceImpl.java │ │ │ │ │ │ │ ├── BaseAlertService.java │ │ │ │ │ │ │ └── InstanceAlertServiceImpl.java │ │ │ │ │ │ └── strategy/ │ │ │ │ │ │ ├── AlertConfigStrategy.java │ │ │ │ │ │ ├── AofCurrentSizeAlertStrategy.java │ │ │ │ │ │ ├── ClientBiggestInputBufAlertStrategy.java │ │ │ │ │ │ ├── ClientLongestOutputListAlertStrategy.java │ │ │ │ │ │ ├── ClusterSlotsOkAlertStrategy.java │ │ │ │ │ │ ├── ClusterStateAlertStrategy.java │ │ │ │ │ │ ├── InstantaneousOpsPerSecAlertStrategy.java │ │ │ │ │ │ ├── LatestForkUsecAlertStrategy.java │ │ │ │ │ │ ├── MasterSlaveOffsetAlertStrategy.java │ │ │ │ │ │ ├── MemFragmentationRatioAlertStrategy.java │ │ │ │ │ │ ├── MinuteAofDelayedFsyncAlertStrategy.java │ │ │ │ │ │ ├── MinuteRejectedConnectionsAlertStrategy.java │ │ │ │ │ │ ├── MinuteSyncFullAlertStrategy.java │ │ │ │ │ │ ├── MinuteSyncPartialErrAlertStrategy.java │ │ │ │ │ │ ├── MinuteSyncPartialOkAlertStrategy.java │ │ │ │ │ │ ├── MinuteTotalNetInputMBytesAlertStrategy.java │ │ │ │ │ │ ├── MinuteTotalNetOutputMBytesAlertStrategy.java │ │ │ │ │ │ └── RdbLastBgsaveStatusAlertStrategy.java │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── AliasesResourceSqlSessionFactoryBean.java │ │ │ │ │ │ ├── ApplicationStarter.java │ │ │ │ │ │ └── JvmConfiger.java │ │ │ │ │ ├── async/ │ │ │ │ │ │ ├── AsyncService.java │ │ │ │ │ │ ├── AsyncThreadPoolFactory.java │ │ │ │ │ │ ├── KeyCallable.java │ │ │ │ │ │ ├── KeyFuture.java │ │ │ │ │ │ ├── NamedThreadFactory.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── AsyncServiceImpl.java │ │ │ │ │ ├── client/ │ │ │ │ │ │ ├── heartbeat/ │ │ │ │ │ │ │ ├── RedisClientController.java │ │ │ │ │ │ │ └── RedisClientReportDataController.java │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── AppInstanceClientRelationService.java │ │ │ │ │ │ ├── ClientReportCostDistriService.java │ │ │ │ │ │ ├── ClientReportDataService.java │ │ │ │ │ │ ├── ClientReportDataSizeService.java │ │ │ │ │ │ ├── ClientReportExceptionService.java │ │ │ │ │ │ ├── ClientReportInstanceService.java │ │ │ │ │ │ ├── ClientReportValueDistriService.java │ │ │ │ │ │ ├── ClientVersionService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── AppInstanceClientRelationServiceImpl.java │ │ │ │ │ │ ├── ClientReportCostDistriServiceImpl.java │ │ │ │ │ │ ├── ClientReportDataServiceImpl.java │ │ │ │ │ │ ├── ClientReportDataSizeServiceImpl.java │ │ │ │ │ │ ├── ClientReportExceptionServiceImpl.java │ │ │ │ │ │ ├── ClientReportInstanceServiceImpl.java │ │ │ │ │ │ ├── ClientReportValueDistriServiceImplV2.java │ │ │ │ │ │ └── ClientVersionServiceImpl.java │ │ │ │ │ ├── constant/ │ │ │ │ │ │ ├── AppAuditLogTypeEnum.java │ │ │ │ │ │ ├── AppAuditType.java │ │ │ │ │ │ ├── AppCheckEnum.java │ │ │ │ │ │ ├── AppDataMigrateEnum.java │ │ │ │ │ │ ├── AppDataMigrateResult.java │ │ │ │ │ │ ├── AppDataMigrateStatusEnum.java │ │ │ │ │ │ ├── AppDescEnum.java │ │ │ │ │ │ ├── AppStatusEnum.java │ │ │ │ │ │ ├── AppTopology.java │ │ │ │ │ │ ├── AppUserTypeEnum.java │ │ │ │ │ │ ├── BaseConstant.java │ │ │ │ │ │ ├── ClientStatusEnum.java │ │ │ │ │ │ ├── ClusterOperateResult.java │ │ │ │ │ │ ├── CommandResult.java │ │ │ │ │ │ ├── DataFormatCheckResult.java │ │ │ │ │ │ ├── EmptyObjectConstant.java │ │ │ │ │ │ ├── ErrorMessageEnum.java │ │ │ │ │ │ ├── HorizontalResult.java │ │ │ │ │ │ ├── ImportAppResult.java │ │ │ │ │ │ ├── InstanceStatusEnum.java │ │ │ │ │ │ ├── MachineConstant.java │ │ │ │ │ │ ├── MachineInfoEnum.java │ │ │ │ │ │ ├── PipelineEnum.java │ │ │ │ │ │ ├── RedisConfigTemplateChangeEnum.java │ │ │ │ │ │ ├── RedisConstant.java │ │ │ │ │ │ ├── RedisExcludeCommand.java │ │ │ │ │ │ ├── RedisMigrateToolConstant.java │ │ │ │ │ │ ├── ReshardStatusEnum.java │ │ │ │ │ │ ├── SymbolConstant.java │ │ │ │ │ │ ├── TimeDimensionalityEnum.java │ │ │ │ │ │ └── UserLoginTypeEnum.java │ │ │ │ │ ├── dao/ │ │ │ │ │ │ ├── AppAuditDao.java │ │ │ │ │ │ ├── AppAuditLogDao.java │ │ │ │ │ │ ├── AppClientCostTimeStatDao.java │ │ │ │ │ │ ├── AppClientCostTimeTotalStatDao.java │ │ │ │ │ │ ├── AppClientExceptionStatDao.java │ │ │ │ │ │ ├── AppClientReportDataSizeDao.java │ │ │ │ │ │ ├── AppClientValueStatDao.java │ │ │ │ │ │ ├── AppClientVersionDao.java │ │ │ │ │ │ ├── AppDailyDao.java │ │ │ │ │ │ ├── AppDao.java │ │ │ │ │ │ ├── AppDataMigrateStatusDao.java │ │ │ │ │ │ ├── AppInstanceClientRelationDao.java │ │ │ │ │ │ ├── AppStatsDao.java │ │ │ │ │ │ ├── AppToUserDao.java │ │ │ │ │ │ ├── AppUserDao.java │ │ │ │ │ │ ├── ConfigDao.java │ │ │ │ │ │ ├── InstanceAlertConfigDao.java │ │ │ │ │ │ ├── InstanceConfigDao.java │ │ │ │ │ │ ├── InstanceDao.java │ │ │ │ │ │ ├── InstanceFaultDao.java │ │ │ │ │ │ ├── InstanceReshardProcessDao.java │ │ │ │ │ │ ├── InstanceSlowLogDao.java │ │ │ │ │ │ ├── InstanceStatsDao.java │ │ │ │ │ │ ├── MachineDao.java │ │ │ │ │ │ ├── MachineStatsDao.java │ │ │ │ │ │ ├── MemFaultDao.java │ │ │ │ │ │ ├── QuartzDao.java │ │ │ │ │ │ └── ServerStatusDao.java │ │ │ │ │ ├── entity/ │ │ │ │ │ │ ├── AppAudit.java │ │ │ │ │ │ ├── AppAuditLog.java │ │ │ │ │ │ ├── AppClientCostTimeStat.java │ │ │ │ │ │ ├── AppClientCostTimeTotalStat.java │ │ │ │ │ │ ├── AppClientDataSizeStat.java │ │ │ │ │ │ ├── AppClientExceptionStat.java │ │ │ │ │ │ ├── AppClientValueDistriSimple.java │ │ │ │ │ │ ├── AppClientValueDistriStat.java │ │ │ │ │ │ ├── AppClientValueDistriStatTotal.java │ │ │ │ │ │ ├── AppClientVersion.java │ │ │ │ │ │ ├── AppCommandGroup.java │ │ │ │ │ │ ├── AppCommandStats.java │ │ │ │ │ │ ├── AppDailyData.java │ │ │ │ │ │ ├── AppDataMigrateSearch.java │ │ │ │ │ │ ├── AppDataMigrateStatus.java │ │ │ │ │ │ ├── AppDesc.java │ │ │ │ │ │ ├── AppInstanceClientRelation.java │ │ │ │ │ │ ├── AppSearch.java │ │ │ │ │ │ ├── AppStats.java │ │ │ │ │ │ ├── AppToUser.java │ │ │ │ │ │ ├── AppUser.java │ │ │ │ │ │ ├── ClientInstanceException.java │ │ │ │ │ │ ├── InstanceAlertConfig.java │ │ │ │ │ │ ├── InstanceAlertValueResult.java │ │ │ │ │ │ ├── InstanceCommandStats.java │ │ │ │ │ │ ├── InstanceConfig.java │ │ │ │ │ │ ├── InstanceFault.java │ │ │ │ │ │ ├── InstanceInfo.java │ │ │ │ │ │ ├── InstanceReshardProcess.java │ │ │ │ │ │ ├── InstanceSlotModel.java │ │ │ │ │ │ ├── InstanceSlowLog.java │ │ │ │ │ │ ├── InstanceStats.java │ │ │ │ │ │ ├── LoginResult.java │ │ │ │ │ │ ├── MachineInfo.java │ │ │ │ │ │ ├── MachineMemInfo.java │ │ │ │ │ │ ├── MachineStats.java │ │ │ │ │ │ ├── ServerInfo.java │ │ │ │ │ │ ├── ServerStatus.java │ │ │ │ │ │ ├── StandardStats.java │ │ │ │ │ │ ├── SystemConfig.java │ │ │ │ │ │ ├── TimeBetween.java │ │ │ │ │ │ ├── TimeDimensionality.java │ │ │ │ │ │ └── TriggerInfo.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── IllegalParamException.java │ │ │ │ │ │ └── SSHException.java │ │ │ │ │ ├── init/ │ │ │ │ │ │ ├── AsyncLoad.java │ │ │ │ │ │ ├── MachineInitLoad.java │ │ │ │ │ │ └── RedisInitLoad.java │ │ │ │ │ ├── inspect/ │ │ │ │ │ │ ├── InspectHandler.java │ │ │ │ │ │ ├── InspectParamEnum.java │ │ │ │ │ │ ├── Inspector.java │ │ │ │ │ │ ├── InspectorJob.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── AbstractInspectHandler.java │ │ │ │ │ │ ├── AppClientConnInspector.java │ │ │ │ │ │ ├── AppInspectHandler.java │ │ │ │ │ │ ├── AppMemInspector.java │ │ │ │ │ │ ├── HostInspectHandler.java │ │ │ │ │ │ ├── InstanceRunInspector.java │ │ │ │ │ │ └── RedisIsolationPersistenceInspector.java │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ ├── AppAndInstanceAuthorityInterceptor.java │ │ │ │ │ │ ├── FrontUserLoginInterceptor.java │ │ │ │ │ │ ├── LoginInterceptorUtil.java │ │ │ │ │ │ └── ManageUserLoginInterceptor.java │ │ │ │ │ ├── jmx/ │ │ │ │ │ │ ├── ErrorLoggerWatcher.java │ │ │ │ │ │ ├── ErrorLoggerWatcherMBean.java │ │ │ │ │ │ ├── ThreadPoolStatisticsImpl.java │ │ │ │ │ │ └── ThreadPoolStatisticsMBean.java │ │ │ │ │ ├── log/ │ │ │ │ │ │ └── statistic/ │ │ │ │ │ │ └── ErrorStatisticsAppender.java │ │ │ │ │ ├── machine/ │ │ │ │ │ │ ├── MachineCenter.java │ │ │ │ │ │ ├── MachineDeployCenter.java │ │ │ │ │ │ ├── MachineProperty.java │ │ │ │ │ │ ├── PortGenerator.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── MachineCenterImpl.java │ │ │ │ │ │ └── MachineDeployCenterImpl.java │ │ │ │ │ ├── protocol/ │ │ │ │ │ │ ├── MachineProtocol.java │ │ │ │ │ │ └── RedisProtocol.java │ │ │ │ │ ├── redis/ │ │ │ │ │ │ ├── RedisCenter.java │ │ │ │ │ │ ├── RedisClusterNode.java │ │ │ │ │ │ ├── RedisClusterReshard.java │ │ │ │ │ │ ├── RedisConfigTemplateService.java │ │ │ │ │ │ ├── RedisDeployCenter.java │ │ │ │ │ │ ├── enums/ │ │ │ │ │ │ │ ├── InstanceAlertCheckCycleEnum.java │ │ │ │ │ │ │ ├── InstanceAlertCompareTypeEnum.java │ │ │ │ │ │ │ ├── InstanceAlertStatusEnum.java │ │ │ │ │ │ │ ├── InstanceAlertTypeEnum.java │ │ │ │ │ │ │ ├── RedisAlertConfigEnum.java │ │ │ │ │ │ │ ├── RedisClusterConfigEnum.java │ │ │ │ │ │ │ ├── RedisClusterInfoEnum.java │ │ │ │ │ │ │ ├── RedisConfigEnum.java │ │ │ │ │ │ │ ├── RedisInfoEnum.java │ │ │ │ │ │ │ ├── RedisReadOnlyCommandEnum.java │ │ │ │ │ │ │ └── RedisSentinelConfigEnum.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── RedisCenterImpl.java │ │ │ │ │ │ ├── RedisConfigTemplateServiceImpl.java │ │ │ │ │ │ └── RedisDeployCenterImpl.java │ │ │ │ │ ├── schedule/ │ │ │ │ │ │ ├── SchedulerCenter.java │ │ │ │ │ │ ├── TriggerCenter.java │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── SchedulerCenterImpl.java │ │ │ │ │ │ │ └── TriggerCenterImpl.java │ │ │ │ │ │ └── jobs/ │ │ │ │ │ │ ├── AppDailyJob.java │ │ │ │ │ │ ├── CacheBaseJob.java │ │ │ │ │ │ ├── CleanUpStatisticsJob.java │ │ │ │ │ │ ├── ErrorStatisticsJob.java │ │ │ │ │ │ ├── InstanceAlertValueJob.java │ │ │ │ │ │ ├── MachineJob.java │ │ │ │ │ │ ├── MachineMonitorJob.java │ │ │ │ │ │ ├── RedisJob.java │ │ │ │ │ │ ├── RedisSlowLogJob.java │ │ │ │ │ │ ├── ServerJob.java │ │ │ │ │ │ └── SystemConfigRefreshJob.java │ │ │ │ │ ├── server/ │ │ │ │ │ │ ├── ServerStatusCollector.java │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ ├── CPU.java │ │ │ │ │ │ │ ├── Connection.java │ │ │ │ │ │ │ ├── Disk.java │ │ │ │ │ │ │ ├── LineParser.java │ │ │ │ │ │ │ ├── Load.java │ │ │ │ │ │ │ ├── Memory.java │ │ │ │ │ │ │ ├── Net.java │ │ │ │ │ │ │ ├── OS.java │ │ │ │ │ │ │ ├── OSInfo.java │ │ │ │ │ │ │ └── Server.java │ │ │ │ │ │ └── nmon/ │ │ │ │ │ │ └── NMONService.java │ │ │ │ │ ├── ssh/ │ │ │ │ │ │ ├── SSHTemplate.java │ │ │ │ │ │ └── SSHUtil.java │ │ │ │ │ ├── stats/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── AppDailyDataCenter.java │ │ │ │ │ │ │ ├── AppDataMigrateCenter.java │ │ │ │ │ │ │ ├── AppDeployCenter.java │ │ │ │ │ │ │ ├── AppStatsCenter.java │ │ │ │ │ │ │ ├── ImportAppCenter.java │ │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ │ ├── AppDailyDataCenterImpl.java │ │ │ │ │ │ │ ├── AppDataMigrateCenterImpl.java │ │ │ │ │ │ │ ├── AppDeployCenterImpl.java │ │ │ │ │ │ │ ├── AppStatsCenterImpl.java │ │ │ │ │ │ │ └── ImportAppCenterImpl.java │ │ │ │ │ │ └── instance/ │ │ │ │ │ │ ├── InstanceAlertConfigService.java │ │ │ │ │ │ ├── InstanceDeployCenter.java │ │ │ │ │ │ ├── InstanceStatsCenter.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── InstanceAlertConfigServiceImpl.java │ │ │ │ │ │ ├── InstanceDeployCenterImpl.java │ │ │ │ │ │ └── InstanceStatsCenterImpl.java │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── AppKeyUtil.java │ │ │ │ │ │ ├── IdempotentConfirmer.java │ │ │ │ │ │ ├── IntegerUtil.java │ │ │ │ │ │ ├── JsonUtil.java │ │ │ │ │ │ ├── NMONFileFactory.java │ │ │ │ │ │ ├── OSFactory.java │ │ │ │ │ │ ├── ObjectConvert.java │ │ │ │ │ │ ├── ScheduleUtil.java │ │ │ │ │ │ ├── StringUtil.java │ │ │ │ │ │ └── TypeUtil.java │ │ │ │ │ └── web/ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ ├── key/ │ │ │ │ │ │ │ └── ChartKeysUtil.java │ │ │ │ │ │ └── model/ │ │ │ │ │ │ ├── AreaChartEntity.java │ │ │ │ │ │ ├── ChartEntity.java │ │ │ │ │ │ ├── HighchartPoint.java │ │ │ │ │ │ ├── SimpleChartData.java │ │ │ │ │ │ └── SplineChartEntity.java │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── AppClientDataShowController.java │ │ │ │ │ │ ├── AppController.java │ │ │ │ │ │ ├── AppDataMigrateController.java │ │ │ │ │ │ ├── AppManageController.java │ │ │ │ │ │ ├── BaseController.java │ │ │ │ │ │ ├── ClientManageController.java │ │ │ │ │ │ ├── ConfigManageController.java │ │ │ │ │ │ ├── FaultController.java │ │ │ │ │ │ ├── ImportAppController.java │ │ │ │ │ │ ├── IndexController.java │ │ │ │ │ │ ├── InstanceAlertValueController.java │ │ │ │ │ │ ├── InstanceController.java │ │ │ │ │ │ ├── InstanceManageController.java │ │ │ │ │ │ ├── JobController.java │ │ │ │ │ │ ├── LoginController.java │ │ │ │ │ │ ├── MachineManageController.java │ │ │ │ │ │ ├── NoticeManageController.java │ │ │ │ │ │ ├── QuartzManageController.java │ │ │ │ │ │ ├── RedisConfigTemplateController.java │ │ │ │ │ │ ├── ServerController.java │ │ │ │ │ │ ├── TotalManageController.java │ │ │ │ │ │ ├── TriggerController.java │ │ │ │ │ │ ├── UserController.java │ │ │ │ │ │ └── UserManageController.java │ │ │ │ │ ├── enums/ │ │ │ │ │ │ ├── AdminEnum.java │ │ │ │ │ │ ├── AppOrderByEnum.java │ │ │ │ │ │ ├── LoginEnum.java │ │ │ │ │ │ ├── RedisOperateEnum.java │ │ │ │ │ │ └── SuccessEnum.java │ │ │ │ │ ├── factory/ │ │ │ │ │ │ └── UserLoginStatusFactory.java │ │ │ │ │ ├── service/ │ │ │ │ │ │ ├── AppService.java │ │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ │ ├── MemFaultService.java │ │ │ │ │ │ ├── ServerDataService.java │ │ │ │ │ │ ├── UserLoginStatusService.java │ │ │ │ │ │ ├── UserService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── AppServiceImpl.java │ │ │ │ │ │ ├── ConfigServiceImpl.java │ │ │ │ │ │ ├── MemFaultServiceImpl.java │ │ │ │ │ │ ├── ServerDataServiceImpl.java │ │ │ │ │ │ ├── UserLoginStatusCookieServiceImpl.java │ │ │ │ │ │ ├── UserLoginStatusSessionServiceImpl.java │ │ │ │ │ │ └── UserServiceImpl.java │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── AppEmailUtil.java │ │ │ │ │ │ ├── DateUtil.java │ │ │ │ │ │ ├── IpUtil.java │ │ │ │ │ │ ├── Page.java │ │ │ │ │ │ ├── SimpleFileUtil.java │ │ │ │ │ │ └── VelocityUtils.java │ │ │ │ │ └── vo/ │ │ │ │ │ ├── AppDetailVO.java │ │ │ │ │ └── RedisSlowLog.java │ │ │ │ ├── resources/ │ │ │ │ │ ├── application.properties │ │ │ │ │ ├── cachecloud-web.conf │ │ │ │ │ ├── logback.xml │ │ │ │ │ ├── mapper/ │ │ │ │ │ │ ├── AppAuditDao.xml │ │ │ │ │ │ ├── AppAuditLogDao.xml │ │ │ │ │ │ ├── AppClientCostTimeStatDao.xml │ │ │ │ │ │ ├── AppClientCostTimeTotalStatDao.xml │ │ │ │ │ │ ├── AppClientExceptionStatDao.xml │ │ │ │ │ │ ├── AppClientReportDataSizeDao.xml │ │ │ │ │ │ ├── AppClientValueStatDao.xml │ │ │ │ │ │ ├── AppClientVersionDao.xml │ │ │ │ │ │ ├── AppDailyDao.xml │ │ │ │ │ │ ├── AppDao.xml │ │ │ │ │ │ ├── AppDataMigrateStatusDao.xml │ │ │ │ │ │ ├── AppInstanceClientRelationDao.xml │ │ │ │ │ │ ├── AppStatsDao.xml │ │ │ │ │ │ ├── AppToUserDao.xml │ │ │ │ │ │ ├── AppUserDao.xml │ │ │ │ │ │ ├── ConfigDao.xml │ │ │ │ │ │ ├── InstanceAlertConfigDao.xml │ │ │ │ │ │ ├── InstanceConfigDao.xml │ │ │ │ │ │ ├── InstanceDao.xml │ │ │ │ │ │ ├── InstanceFaultDao.xml │ │ │ │ │ │ ├── InstanceReshardProcessDao.xml │ │ │ │ │ │ ├── InstanceSlowLogDao.xml │ │ │ │ │ │ ├── InstanceStatsDao.xml │ │ │ │ │ │ ├── MachineDao.xml │ │ │ │ │ │ ├── MachineStatsDao.xml │ │ │ │ │ │ ├── QuartzDao.xml │ │ │ │ │ │ └── ServerStatusDao.xml │ │ │ │ │ ├── mybatis-config.xml │ │ │ │ │ ├── spring/ │ │ │ │ │ │ ├── spring-alert.xml │ │ │ │ │ │ ├── spring-client-report.xml │ │ │ │ │ │ ├── spring-config.xml │ │ │ │ │ │ ├── spring-data.xml │ │ │ │ │ │ ├── spring-inspector.xml │ │ │ │ │ │ ├── spring-jmx.xml │ │ │ │ │ │ ├── spring-load.xml │ │ │ │ │ │ ├── spring-local.xml │ │ │ │ │ │ ├── spring-manage.xml │ │ │ │ │ │ ├── spring-mvc.xml │ │ │ │ │ │ ├── spring-mybatis.xml │ │ │ │ │ │ ├── spring-online.xml │ │ │ │ │ │ ├── spring-quartz.xml │ │ │ │ │ │ ├── spring-service.xml │ │ │ │ │ │ └── spring.xml │ │ │ │ │ └── templates/ │ │ │ │ │ ├── appAudit.vm │ │ │ │ │ ├── appDaily.vm │ │ │ │ │ └── instanceAlert.vm │ │ │ │ ├── swap/ │ │ │ │ │ ├── local.properties │ │ │ │ │ └── online.properties │ │ │ │ └── webapp/ │ │ │ │ ├── WEB-INF/ │ │ │ │ │ ├── include/ │ │ │ │ │ │ ├── contact.jsp │ │ │ │ │ │ ├── foot.jsp │ │ │ │ │ │ ├── head.jsp │ │ │ │ │ │ ├── headAdmin.jsp │ │ │ │ │ │ └── headMenu.jsp │ │ │ │ │ ├── jsp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── appCommand.jsp │ │ │ │ │ │ │ ├── appCommandAnalysis.jsp │ │ │ │ │ │ │ ├── appDaily.jsp │ │ │ │ │ │ │ ├── appDemo.jsp │ │ │ │ │ │ │ ├── appDetail.jsp │ │ │ │ │ │ │ ├── appInit.jsp │ │ │ │ │ │ │ ├── appInstanceNetStat.jsp │ │ │ │ │ │ │ ├── appList.jsp │ │ │ │ │ │ │ ├── appMachineInstancesTopology.jsp │ │ │ │ │ │ │ ├── appScaleApply.jsp │ │ │ │ │ │ │ ├── appStat.jsp │ │ │ │ │ │ │ ├── appTopology.jsp │ │ │ │ │ │ │ ├── initBecomeContributor.jsp │ │ │ │ │ │ │ ├── manageUser.jsp │ │ │ │ │ │ │ ├── slowLog.jsp │ │ │ │ │ │ │ └── userAppsIndex.jsp │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ ├── appClientIndex.jsp │ │ │ │ │ │ │ ├── clientCostDistribute.jsp │ │ │ │ │ │ │ ├── clientException.jsp │ │ │ │ │ │ │ └── clientValueDistribute.jsp │ │ │ │ │ │ ├── import/ │ │ │ │ │ │ │ └── init.jsp │ │ │ │ │ │ ├── instance/ │ │ │ │ │ │ │ ├── instanceAdvancedAnalysis.jsp │ │ │ │ │ │ │ ├── instanceClientList.jsp │ │ │ │ │ │ │ ├── instanceCommand.jsp │ │ │ │ │ │ │ ├── instanceConfigSelect.jsp │ │ │ │ │ │ │ ├── instanceFault.jsp │ │ │ │ │ │ │ ├── instanceIndex.jsp │ │ │ │ │ │ │ ├── instanceSlowSelect.jsp │ │ │ │ │ │ │ └── instanceStat.jsp │ │ │ │ │ │ ├── manage/ │ │ │ │ │ │ │ ├── appAudit/ │ │ │ │ │ │ │ │ ├── addAudit.jsp │ │ │ │ │ │ │ │ ├── appAuditList.jsp │ │ │ │ │ │ │ │ ├── appConfigChangeDetail.jsp │ │ │ │ │ │ │ │ ├── appDeploy.jsp │ │ │ │ │ │ │ │ ├── appDeployDetail.jsp │ │ │ │ │ │ │ │ ├── appIntanceReferList.jsp │ │ │ │ │ │ │ │ ├── appScaleApplyDetail.jsp │ │ │ │ │ │ │ │ ├── handleHorizontalScale.jsp │ │ │ │ │ │ │ │ ├── handleHorizontalScaleDetail.jsp │ │ │ │ │ │ │ │ ├── horizontalScaleApplyDetail.jsp │ │ │ │ │ │ │ │ ├── horizontalScaleProcessList.jsp │ │ │ │ │ │ │ │ ├── initAppConfigChange.jsp │ │ │ │ │ │ │ │ ├── initAppDeploy.jsp │ │ │ │ │ │ │ │ ├── initAppScaleApply.jsp │ │ │ │ │ │ │ │ ├── initHorizontalScaleApply.jsp │ │ │ │ │ │ │ │ ├── initInstanceConfigChange.jsp │ │ │ │ │ │ │ │ ├── instanceConfig.jsp │ │ │ │ │ │ │ │ ├── instanceConfigChangeDetail.jsp │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ ├── machineForHorizontalScaleList.jsp │ │ │ │ │ │ │ │ └── machineReferList.jsp │ │ │ │ │ │ │ ├── appOps/ │ │ │ │ │ │ │ │ ├── appInfoAndAudit.jsp │ │ │ │ │ │ │ │ ├── appInstance.jsp │ │ │ │ │ │ │ │ ├── appMachine.jsp │ │ │ │ │ │ │ │ └── appOpsIndex.jsp │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── exception/ │ │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ │ └── statList.jsp │ │ │ │ │ │ │ │ └── version/ │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ └── statList.jsp │ │ │ │ │ │ │ ├── commons/ │ │ │ │ │ │ │ │ ├── appConstants.jsp │ │ │ │ │ │ │ │ └── taglibs.jsp │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ ├── init.jsp │ │ │ │ │ │ │ │ └── initConfigDetail.jsp │ │ │ │ │ │ │ ├── fault/ │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ └── memFaultList.jsp │ │ │ │ │ │ │ ├── include/ │ │ │ │ │ │ │ │ ├── cache_cloud_main_css.jsp │ │ │ │ │ │ │ │ ├── cache_cloud_main_js.jsp │ │ │ │ │ │ │ │ ├── foot.jsp │ │ │ │ │ │ │ │ ├── head.jsp │ │ │ │ │ │ │ │ └── left.jsp │ │ │ │ │ │ │ ├── instance/ │ │ │ │ │ │ │ │ └── log.jsp │ │ │ │ │ │ │ ├── instanceAlert/ │ │ │ │ │ │ │ │ ├── init.jsp │ │ │ │ │ │ │ │ └── initConfigDetail.jsp │ │ │ │ │ │ │ ├── login.jsp │ │ │ │ │ │ │ ├── machine/ │ │ │ │ │ │ │ │ ├── addMachine.jsp │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ ├── machineInstances.jsp │ │ │ │ │ │ │ │ ├── machineInstancesDetail.jsp │ │ │ │ │ │ │ │ └── machineList.jsp │ │ │ │ │ │ │ ├── notice/ │ │ │ │ │ │ │ │ ├── initNotice.jsp │ │ │ │ │ │ │ │ └── initNoticeDetail.jsp │ │ │ │ │ │ │ ├── quartz/ │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ └── quartzList.jsp │ │ │ │ │ │ │ ├── redisConfig/ │ │ │ │ │ │ │ │ ├── init.jsp │ │ │ │ │ │ │ │ ├── initConfigDetail.jsp │ │ │ │ │ │ │ │ └── preview.jsp │ │ │ │ │ │ │ ├── total/ │ │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ │ └── totalList.jsp │ │ │ │ │ │ │ └── user/ │ │ │ │ │ │ │ ├── addUser.jsp │ │ │ │ │ │ │ ├── initUser.jsp │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ └── userList.jsp │ │ │ │ │ │ ├── migrate/ │ │ │ │ │ │ │ ├── checkData.jsp │ │ │ │ │ │ │ ├── config.jsp │ │ │ │ │ │ │ ├── init.jsp │ │ │ │ │ │ │ ├── list.jsp │ │ │ │ │ │ │ ├── log.jsp │ │ │ │ │ │ │ └── process.jsp │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ ├── cpu.jsp │ │ │ │ │ │ │ ├── disk.jsp │ │ │ │ │ │ │ ├── index.jsp │ │ │ │ │ │ │ ├── net.jsp │ │ │ │ │ │ │ └── overview.jsp │ │ │ │ │ │ └── user/ │ │ │ │ │ │ └── userRegister.jsp │ │ │ │ │ ├── resources/ │ │ │ │ │ │ ├── My97DatePicker/ │ │ │ │ │ │ │ ├── My97DatePicker.htm │ │ │ │ │ │ │ ├── WdatePicker.js │ │ │ │ │ │ │ ├── calendar.js │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ ├── lang/ │ │ │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ │ │ │ └── zh-tw.js │ │ │ │ │ │ │ ├── skin/ │ │ │ │ │ │ │ │ ├── WdatePicker.css │ │ │ │ │ │ │ │ ├── default/ │ │ │ │ │ │ │ │ │ └── datepicker.css │ │ │ │ │ │ │ │ └── whyGreen/ │ │ │ │ │ │ │ │ └── datepicker.css │ │ │ │ │ │ │ └── test_02.html │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── flash/ │ │ │ │ │ │ │ └── ZeroClipboard.swf │ │ │ │ │ │ ├── bootstrap/ │ │ │ │ │ │ │ ├── bootstrap3/ │ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ │ │ │ │ └── bootstrap.css │ │ │ │ │ │ │ │ └── js/ │ │ │ │ │ │ │ │ └── bootstrap.js │ │ │ │ │ │ │ ├── jquery/ │ │ │ │ │ │ │ │ └── jquery-1.11.0.js │ │ │ │ │ │ │ ├── paginator/ │ │ │ │ │ │ │ │ ├── bootstrap-paginator.js │ │ │ │ │ │ │ │ └── custom-pagenitor.js │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ ├── respond.matchmedia.addListener.src.js │ │ │ │ │ │ │ └── respond.src.js │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ ├── login.css │ │ │ │ │ │ │ └── mem-cloud.css │ │ │ │ │ │ ├── error/ │ │ │ │ │ │ │ └── noPower.jsp │ │ │ │ │ │ ├── highchart3/ │ │ │ │ │ │ │ └── js/ │ │ │ │ │ │ │ ├── adapters/ │ │ │ │ │ │ │ │ ├── mootools-adapter.js │ │ │ │ │ │ │ │ ├── mootools-adapter.src.js │ │ │ │ │ │ │ │ ├── prototype-adapter.js │ │ │ │ │ │ │ │ └── prototype-adapter.src.js │ │ │ │ │ │ │ ├── highcharts-more.js │ │ │ │ │ │ │ ├── highcharts-more.src.js │ │ │ │ │ │ │ ├── highcharts.js │ │ │ │ │ │ │ ├── highcharts.src.js │ │ │ │ │ │ │ ├── modules/ │ │ │ │ │ │ │ │ ├── annotations.js │ │ │ │ │ │ │ │ ├── annotations.src.js │ │ │ │ │ │ │ │ ├── canvas-tools.js │ │ │ │ │ │ │ │ ├── canvas-tools.src.js │ │ │ │ │ │ │ │ ├── data.js │ │ │ │ │ │ │ │ ├── data.src.js │ │ │ │ │ │ │ │ ├── exporting.js │ │ │ │ │ │ │ │ ├── exporting.src.js │ │ │ │ │ │ │ │ ├── funnel.js │ │ │ │ │ │ │ │ ├── funnel.src.js │ │ │ │ │ │ │ │ ├── heatmap.js │ │ │ │ │ │ │ │ ├── heatmap.src.js │ │ │ │ │ │ │ │ ├── map.js │ │ │ │ │ │ │ │ └── map.src.js │ │ │ │ │ │ │ └── themes/ │ │ │ │ │ │ │ ├── dark-blue.js │ │ │ │ │ │ │ ├── dark-green.js │ │ │ │ │ │ │ ├── gray.js │ │ │ │ │ │ │ ├── grid.js │ │ │ │ │ │ │ └── skies.js │ │ │ │ │ │ ├── js/ │ │ │ │ │ │ │ ├── appClient.js │ │ │ │ │ │ │ ├── appDetail.js │ │ │ │ │ │ │ ├── appInit.js │ │ │ │ │ │ │ ├── appStat.js │ │ │ │ │ │ │ ├── chart.js │ │ │ │ │ │ │ ├── instanceExecute.js │ │ │ │ │ │ │ ├── jquery-console.js │ │ │ │ │ │ │ ├── mem-cloud.js │ │ │ │ │ │ │ ├── myPopover.js │ │ │ │ │ │ │ ├── myhighchart.js │ │ │ │ │ │ │ ├── prettify.css │ │ │ │ │ │ │ ├── prettify.js │ │ │ │ │ │ │ └── run_prettify.js │ │ │ │ │ │ ├── manage/ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ ├── animate.css │ │ │ │ │ │ │ │ ├── custom.css │ │ │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ │ │ ├── about-us.css │ │ │ │ │ │ │ │ │ ├── blog.css │ │ │ │ │ │ │ │ │ ├── coming-soon.css │ │ │ │ │ │ │ │ │ ├── email.css │ │ │ │ │ │ │ │ │ ├── error.css │ │ │ │ │ │ │ │ │ ├── image-crop.css │ │ │ │ │ │ │ │ │ ├── inbox.css │ │ │ │ │ │ │ │ │ ├── invoice.css │ │ │ │ │ │ │ │ │ ├── lock.css │ │ │ │ │ │ │ │ │ ├── login-soft.css │ │ │ │ │ │ │ │ │ ├── login.css │ │ │ │ │ │ │ │ │ ├── news.css │ │ │ │ │ │ │ │ │ ├── portfolio.css │ │ │ │ │ │ │ │ │ ├── pricing-tables.css │ │ │ │ │ │ │ │ │ ├── profile.css │ │ │ │ │ │ │ │ │ ├── promo.css │ │ │ │ │ │ │ │ │ ├── search.css │ │ │ │ │ │ │ │ │ ├── tasks.css │ │ │ │ │ │ │ │ │ └── timeline.css │ │ │ │ │ │ │ │ ├── plugins.css │ │ │ │ │ │ │ │ ├── print.css │ │ │ │ │ │ │ │ ├── style-metronic.css │ │ │ │ │ │ │ │ ├── style-non-responsive.css │ │ │ │ │ │ │ │ ├── style-responsive.css │ │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ │ └── themes/ │ │ │ │ │ │ │ │ ├── blue.css │ │ │ │ │ │ │ │ ├── brown.css │ │ │ │ │ │ │ │ ├── default.css │ │ │ │ │ │ │ │ ├── grey.css │ │ │ │ │ │ │ │ ├── light.css │ │ │ │ │ │ │ │ └── purple.css │ │ │ │ │ │ │ ├── fonts/ │ │ │ │ │ │ │ │ └── font.css │ │ │ │ │ │ │ ├── manage/ │ │ │ │ │ │ │ │ ├── auditManage.js │ │ │ │ │ │ │ │ ├── machineManage.js │ │ │ │ │ │ │ │ └── userManage.js │ │ │ │ │ │ │ ├── oldMemResource/ │ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ │ ├── invalid.css │ │ │ │ │ │ │ │ │ ├── reset.css │ │ │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ │ │ └── scripts/ │ │ │ │ │ │ │ │ ├── facebox.js │ │ │ │ │ │ │ │ ├── jquery.wysiwyg.js │ │ │ │ │ │ │ │ ├── session-create.js │ │ │ │ │ │ │ │ └── simpla.jquery.configuration.js │ │ │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ │ │ ├── bootstrap/ │ │ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ │ │ └── bootstrap.css │ │ │ │ │ │ │ │ │ └── js/ │ │ │ │ │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ │ │ │ │ └── bootstrap2-typeahead.js │ │ │ │ │ │ │ │ ├── data-tables/ │ │ │ │ │ │ │ │ │ ├── DT_bootstrap.css │ │ │ │ │ │ │ │ │ ├── DT_bootstrap.js │ │ │ │ │ │ │ │ │ └── jquery.dataTables.js │ │ │ │ │ │ │ │ └── font-awesome/ │ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ │ └── font-awesome.css │ │ │ │ │ │ │ │ ├── fonts/ │ │ │ │ │ │ │ │ │ └── FontAwesome.otf │ │ │ │ │ │ │ │ ├── less/ │ │ │ │ │ │ │ │ │ ├── bordered-pulled.less │ │ │ │ │ │ │ │ │ ├── core.less │ │ │ │ │ │ │ │ │ ├── fixed-width.less │ │ │ │ │ │ │ │ │ ├── font-awesome.less │ │ │ │ │ │ │ │ │ ├── icons.less │ │ │ │ │ │ │ │ │ ├── larger.less │ │ │ │ │ │ │ │ │ ├── list.less │ │ │ │ │ │ │ │ │ ├── mixins.less │ │ │ │ │ │ │ │ │ ├── path.less │ │ │ │ │ │ │ │ │ ├── rotated-flipped.less │ │ │ │ │ │ │ │ │ ├── spinning.less │ │ │ │ │ │ │ │ │ ├── stacked.less │ │ │ │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ │ │ └── scss/ │ │ │ │ │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ │ │ │ │ ├── _core.scss │ │ │ │ │ │ │ │ ├── _fixed-width.scss │ │ │ │ │ │ │ │ ├── _icons.scss │ │ │ │ │ │ │ │ ├── _larger.scss │ │ │ │ │ │ │ │ ├── _list.scss │ │ │ │ │ │ │ │ ├── _mixins.scss │ │ │ │ │ │ │ │ ├── _path.scss │ │ │ │ │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ │ │ │ │ ├── _spinning.scss │ │ │ │ │ │ │ │ ├── _stacked.scss │ │ │ │ │ │ │ │ ├── _variables.scss │ │ │ │ │ │ │ │ └── font-awesome.scss │ │ │ │ │ │ │ └── scripts/ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ ├── calendar.js │ │ │ │ │ │ │ ├── charts.js │ │ │ │ │ │ │ ├── coming-soon.js │ │ │ │ │ │ │ ├── contact-us.js │ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ │ ├── form-components.js │ │ │ │ │ │ │ ├── form-dropzone.js │ │ │ │ │ │ │ ├── form-editable.js │ │ │ │ │ │ │ ├── form-fileupload.js │ │ │ │ │ │ │ ├── form-image-crop.js │ │ │ │ │ │ │ ├── form-samples.js │ │ │ │ │ │ │ ├── form-validation.js │ │ │ │ │ │ │ ├── form-wizard.js │ │ │ │ │ │ │ ├── idle-timeout.js │ │ │ │ │ │ │ ├── inbox.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── lock.js │ │ │ │ │ │ │ ├── login-soft.js │ │ │ │ │ │ │ ├── login.js │ │ │ │ │ │ │ ├── maps-google.js │ │ │ │ │ │ │ ├── maps-vector.js │ │ │ │ │ │ │ ├── portfolio.js │ │ │ │ │ │ │ ├── portlet-draggable.js │ │ │ │ │ │ │ ├── search.js │ │ │ │ │ │ │ ├── table-advanced.js │ │ │ │ │ │ │ ├── table-ajax.js │ │ │ │ │ │ │ ├── table-editable.js │ │ │ │ │ │ │ ├── table-managed.js │ │ │ │ │ │ │ ├── tasks.js │ │ │ │ │ │ │ ├── ui-bootbox.js │ │ │ │ │ │ │ ├── ui-datepaginator.js │ │ │ │ │ │ │ ├── ui-extended-modals.js │ │ │ │ │ │ │ ├── ui-general.js │ │ │ │ │ │ │ ├── ui-ion-sliders.js │ │ │ │ │ │ │ ├── ui-jqueryui-sliders.js │ │ │ │ │ │ │ ├── ui-knob.js │ │ │ │ │ │ │ ├── ui-nestable.js │ │ │ │ │ │ │ ├── ui-nouisliders.js │ │ │ │ │ │ │ ├── ui-toastr.js │ │ │ │ │ │ │ └── ui-tree.js │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ └── jscalendar/ │ │ │ │ │ │ ├── calendar-setup.js │ │ │ │ │ │ ├── calendar-setup_stripped.js │ │ │ │ │ │ ├── calendar.js │ │ │ │ │ │ ├── calendar_stripped.js │ │ │ │ │ │ ├── lang/ │ │ │ │ │ │ │ ├── calendar-af.js │ │ │ │ │ │ │ ├── calendar-al.js │ │ │ │ │ │ │ ├── calendar-bg.js │ │ │ │ │ │ │ ├── calendar-big5-utf8.js │ │ │ │ │ │ │ ├── calendar-big5.js │ │ │ │ │ │ │ ├── calendar-br.js │ │ │ │ │ │ │ ├── calendar-ca.js │ │ │ │ │ │ │ ├── calendar-cs-utf8.js │ │ │ │ │ │ │ ├── calendar-cs-win.js │ │ │ │ │ │ │ ├── calendar-da.js │ │ │ │ │ │ │ ├── calendar-de.js │ │ │ │ │ │ │ ├── calendar-du.js │ │ │ │ │ │ │ ├── calendar-el.js │ │ │ │ │ │ │ ├── calendar-en.js │ │ │ │ │ │ │ ├── calendar-es.js │ │ │ │ │ │ │ ├── calendar-fi.js │ │ │ │ │ │ │ ├── calendar-fr.js │ │ │ │ │ │ │ ├── calendar-he-utf8.js │ │ │ │ │ │ │ ├── calendar-hr-utf8.js │ │ │ │ │ │ │ ├── calendar-hr.js │ │ │ │ │ │ │ ├── calendar-hu.js │ │ │ │ │ │ │ ├── calendar-it.js │ │ │ │ │ │ │ ├── calendar-jp.js │ │ │ │ │ │ │ ├── calendar-ko-utf8.js │ │ │ │ │ │ │ ├── calendar-ko.js │ │ │ │ │ │ │ ├── calendar-lt-utf8.js │ │ │ │ │ │ │ ├── calendar-lt.js │ │ │ │ │ │ │ ├── calendar-lv.js │ │ │ │ │ │ │ ├── calendar-nl.js │ │ │ │ │ │ │ ├── calendar-no.js │ │ │ │ │ │ │ ├── calendar-pl-utf8.js │ │ │ │ │ │ │ ├── calendar-pl.js │ │ │ │ │ │ │ ├── calendar-pt.js │ │ │ │ │ │ │ ├── calendar-ro.js │ │ │ │ │ │ │ ├── calendar-ru.js │ │ │ │ │ │ │ ├── calendar-ru_win_.js │ │ │ │ │ │ │ ├── calendar-si.js │ │ │ │ │ │ │ ├── calendar-sk.js │ │ │ │ │ │ │ ├── calendar-sp.js │ │ │ │ │ │ │ ├── calendar-sv.js │ │ │ │ │ │ │ ├── calendar-tr.js │ │ │ │ │ │ │ ├── calendar-zh.js │ │ │ │ │ │ │ └── cn_utf8.js │ │ │ │ │ │ └── skins/ │ │ │ │ │ │ └── aqua/ │ │ │ │ │ │ └── theme.css │ │ │ │ │ └── web.xml │ │ │ │ ├── daily.jsp │ │ │ │ ├── error.jsp │ │ │ │ ├── index.jsp │ │ │ │ └── test.jsp │ │ │ └── test/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── sohu/ │ │ │ │ ├── cache/ │ │ │ │ │ ├── dao/ │ │ │ │ │ │ ├── InstanceDaoTest.java │ │ │ │ │ │ ├── InstanceFaultDaoTest.java │ │ │ │ │ │ ├── InstanceReshardProcessDaoTest.java │ │ │ │ │ │ └── MachineDaoTest.java │ │ │ │ │ └── stats/ │ │ │ │ │ └── app/ │ │ │ │ │ ├── AppDataMigrateCenterTest.java │ │ │ │ │ └── ImportAppCenterTest.java │ │ │ │ └── test/ │ │ │ │ ├── BaseTest.java │ │ │ │ ├── SimpleBaseTest.java │ │ │ │ ├── alert/ │ │ │ │ │ └── AppServiceAlertImplTest.java │ │ │ │ ├── app/ │ │ │ │ │ └── AppStatsCenterImplTest.java │ │ │ │ ├── cache/ │ │ │ │ │ └── inspect/ │ │ │ │ │ └── AppClientConnInspectorTest.java │ │ │ │ ├── dao/ │ │ │ │ │ ├── AppAuditDaoTest.java │ │ │ │ │ ├── AppAuditLogDaoTest.java │ │ │ │ │ ├── AppClientReportDataSizeDaoTest.java │ │ │ │ │ ├── AppClientVersionDaoTest.java │ │ │ │ │ ├── AppDaoTest.java │ │ │ │ │ ├── AppDataMigrateStatusDaoTest.java │ │ │ │ │ ├── AppStatsDaoTest.java │ │ │ │ │ ├── AppToUserDaoTest.java │ │ │ │ │ ├── AppUserDaoTest.java │ │ │ │ │ ├── InstanceConfigDaoTest.java │ │ │ │ │ └── QuartzDaoTest.java │ │ │ │ ├── init/ │ │ │ │ │ └── MachineInitTest.java │ │ │ │ ├── inspect/ │ │ │ │ │ └── InspectHandlerTest.java │ │ │ │ ├── instance/ │ │ │ │ │ └── InstanceStatsCenterTest.java │ │ │ │ ├── machine/ │ │ │ │ │ └── PortGeneratorTest.java │ │ │ │ ├── misc/ │ │ │ │ │ └── MiscTest.java │ │ │ │ ├── protocol/ │ │ │ │ │ └── RedisProtocolTest.java │ │ │ │ ├── redis/ │ │ │ │ │ ├── Node.java │ │ │ │ │ ├── RedisConfigTemplateTest.java │ │ │ │ │ └── RedisImportantDataDeal.java │ │ │ │ ├── schedule/ │ │ │ │ │ ├── ScheduleUtilTestTest.java │ │ │ │ │ └── SchedulerCenterTest.java │ │ │ │ ├── stats/ │ │ │ │ │ └── app/ │ │ │ │ │ └── AppCenterTest.java │ │ │ │ └── util/ │ │ │ │ ├── ObjectConvertTest.java │ │ │ │ ├── SSHUtilTest.java │ │ │ │ └── ScheduleUtilTest.java │ │ │ └── resources/ │ │ │ ├── logback-test.xml │ │ │ └── spring-test.xml │ │ ├── pom.xml │ │ └── script/ │ │ ├── cachecloud-init.sh │ │ ├── cachecloud.sql │ │ ├── deploy.sh │ │ ├── start.sh │ │ └── stop.sh │ ├── open-admin-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── Controller.java │ │ │ └── OpenAdminApp.java │ │ └── resources/ │ │ └── application.yml │ ├── open-zipkin-center/ │ │ ├── SPRING CLOUD微服务日志挖掘的应用研究.doc │ │ ├── open-zipkin-kafka-client/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── open/ │ │ │ │ └── capacity/ │ │ │ │ └── ZipKinClientApp.java │ │ │ └── resources/ │ │ │ └── application.yml │ │ ├── open-zipkin-kafka-server/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── open/ │ │ │ │ └── capacity/ │ │ │ │ └── OpenZipkinServer.java │ │ │ └── resources/ │ │ │ └── application.yml │ │ ├── open-zipkin-memery-client/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── open/ │ │ │ │ └── capacity/ │ │ │ │ ├── TestController.java │ │ │ │ └── ZipKinClientApp.java │ │ │ └── resources/ │ │ │ └── application.yml │ │ ├── open-zipkin-memery-server/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── open/ │ │ │ │ └── capacity/ │ │ │ │ └── OpenZipkinSerApp.java │ │ │ └── resources/ │ │ │ └── application.yml │ │ └── pom.xml │ └── pom.xml ├── open-oauth-center/ │ ├── README.md │ ├── db/ │ │ └── init.sql │ ├── open-oauth-client/ │ │ ├── .gitignore │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── UnieapAuthServerApp.java │ │ │ ├── client/ │ │ │ │ └── oauth2/ │ │ │ │ ├── OAuth2ClientConfig.java │ │ │ │ ├── authorize/ │ │ │ │ │ ├── AuthorizeConfigManager.java │ │ │ │ │ ├── AuthorizeConfigProvider.java │ │ │ │ │ ├── OpenAuthorizeConfigManager.java │ │ │ │ │ └── provider/ │ │ │ │ │ └── AuthAuthorizeConfigProvider.java │ │ │ │ ├── config/ │ │ │ │ │ └── SecurityHandlerConfig.java │ │ │ │ ├── service/ │ │ │ │ │ ├── RbacService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── RbacServiceImpl.java │ │ │ │ └── token/ │ │ │ │ ├── TokenStoreConfig.java │ │ │ │ └── store/ │ │ │ │ └── RedisTemplateTokenStore.java │ │ │ └── controller/ │ │ │ ├── TestController.java │ │ │ └── UserController.java │ │ └── resources/ │ │ └── application.yml │ ├── open-oauth-client-two/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── UnieapAuthServerApp.java │ │ │ ├── client/ │ │ │ │ └── oauth2/ │ │ │ │ ├── OAuth2ClientConfig.java │ │ │ │ ├── config/ │ │ │ │ │ └── SecurityHandlerConfig.java │ │ │ │ ├── controller/ │ │ │ │ │ └── UserController.java │ │ │ │ └── token/ │ │ │ │ ├── TokenStoreConfig.java │ │ │ │ └── store/ │ │ │ │ └── RedisTemplateTokenStore.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ └── resources/ │ │ └── application.yml │ ├── open-oauth-server/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── docker/ │ │ │ └── Dockerfile │ │ ├── java/ │ │ │ └── com/ │ │ │ └── open/ │ │ │ └── capacity/ │ │ │ ├── OpenAuthServerApp.java │ │ │ ├── config/ │ │ │ │ ├── FeignConfig.java │ │ │ │ └── TokenStorePostProcessor.java │ │ │ ├── controller/ │ │ │ │ ├── PermissionController.java │ │ │ │ ├── TestController.java │ │ │ │ ├── UserController.java │ │ │ │ └── UserTokenController.java │ │ │ ├── fegin/ │ │ │ │ ├── PermissionClient.java │ │ │ │ ├── RoleClient.java │ │ │ │ └── UserClient.java │ │ │ ├── filter/ │ │ │ │ └── InspectHeaderFilter.java │ │ │ ├── httpclient/ │ │ │ │ └── HttpAuthInvoker.java │ │ │ ├── server/ │ │ │ │ └── oauth2/ │ │ │ │ ├── OAuth2ServerConfig.java │ │ │ │ ├── client/ │ │ │ │ │ └── RedisClientDetailsService.java │ │ │ │ ├── code/ │ │ │ │ │ └── RedisAuthorizationCodeServices.java │ │ │ │ ├── config/ │ │ │ │ │ ├── OauthLogoutHandler.java │ │ │ │ │ ├── PasswordConfig.java │ │ │ │ │ ├── SecurityConfig.java │ │ │ │ │ ├── SecurityHandlerConfig.java │ │ │ │ │ └── SwaggerConfig.java │ │ │ │ ├── dao/ │ │ │ │ │ └── UserDao.java │ │ │ │ ├── service/ │ │ │ │ │ └── UnieapUserDetailsService.java │ │ │ │ └── token/ │ │ │ │ ├── TokenStoreConfig.java │ │ │ │ └── store/ │ │ │ │ └── RedisTemplateTokenStore.java │ │ │ └── utils/ │ │ │ └── SpringUtil.java │ │ ├── resources/ │ │ │ └── application.yml │ │ └── view/ │ │ └── static/ │ │ ├── css/ │ │ │ ├── import_main.css │ │ │ ├── page_all.css │ │
Showing preview only (1,500K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17200 symbols across 1586 files)
FILE: open-api-gateway/src/main/java/com/open/capacity/GatewayApp.java
class GatewayApp (line 20) | @Configuration
method restTemplate (line 26) | @Bean
method corsFilter (line 32) | @Bean
method main (line 53) | public static void main(String[] args) {
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/OAuth2ClientConfig.java
class OAuth2ClientConfig (line 32) | @Component
method configure (line 62) | public void configure(WebSecurity web) throws Exception {
method configure (line 66) | @Override
method configure (line 83) | @Override
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/AuthorizeConfigManager.java
type AuthorizeConfigManager (line 11) | public interface AuthorizeConfigManager {
method config (line 16) | void config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.Express...
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/AuthorizeConfigProvider.java
type AuthorizeConfigProvider (line 11) | public interface AuthorizeConfigProvider {
method config (line 13) | boolean config(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.Expr...
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/OpenAuthorizeConfigManager.java
class OpenAuthorizeConfigManager (line 15) | @Component
method config (line 24) | @Override
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/provider/AuthAuthorizeConfigProvider.java
class AuthAuthorizeConfigProvider (line 15) | @Component
method config (line 19) | @Override
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/DocumentationConfig.java
class DocumentationConfig (line 11) | @Primary
method get (line 14) | @Override
method swaggerResource (line 24) | private SwaggerResource swaggerResource(String name, String location, ...
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/SecurityHandlerConfig.java
class SecurityHandlerConfig (line 33) | @Component
method loginFailureHandler (line 46) | @Bean
method authenticationEntryPoint (line 84) | @Bean
method oAuth2WebSecurityExpressionHandler (line 109) | @Bean
method oAuth2AccessDeniedHandler (line 116) | @Bean
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/SwaggerConfig.java
class SwaggerConfig (line 13) | @Component
method api (line 17) | @Bean
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/dao/ServiceDao.java
type ServiceDao (line 9) | @Mapper
method listByClientId (line 13) | @Select("select p.* from sys_services p inner join sys_client_permissi...
method getClient (line 16) | @Select("select * from oauth_client_details t where t.client_id = #{cl...
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/filter/AccessFilter.java
class AccessFilter (line 16) | @Component
method filterType (line 20) | @Override
method filterOrder (line 25) | @Override
method shouldFilter (line 30) | @Override
method run (line 35) | @Override
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/filter/IPFilter.java
class IPFilter (line 28) | public class IPFilter extends OncePerRequestFilter implements Initializi...
method getAuthenticationFailureHandler (line 34) | public AuthenticationFailureHandler getAuthenticationFailureHandler() {
method setAuthenticationFailureHandler (line 38) | public void setAuthenticationFailureHandler(AuthenticationFailureHandl...
method afterPropertiesSet (line 47) | @Override
method doFilterInternal (line 53) | @Override
method extractToken (line 93) | protected String extractToken(HttpServletRequest request) {
method extractHeaderToken (line 117) | protected String extractHeaderToken(HttpServletRequest request) {
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/service/RbacService.java
type RbacService (line 12) | public interface RbacService {
method hasPermission (line 14) | boolean hasPermission(HttpServletRequest request, Authentication authe...
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/service/impl/RbacServiceImpl.java
class RbacServiceImpl (line 25) | @Service("rbacService")
method hasPermission (line 38) | @Override
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/token/TokenStoreConfig.java
class TokenStoreConfig (line 23) | @Configuration
method jdbcTokenStore (line 33) | @Bean
method redisTokenStore (line 43) | @Bean
class JWTTokenConfig (line 57) | @Configuration
method jwtTokenStore (line 60) | @Bean
method jwtAccessTokenConverter (line 65) | @Bean
FILE: open-api-gateway/src/main/java/com/open/capacity/client/oauth2/token/store/RedisTemplateTokenStore.java
class RedisTemplateTokenStore (line 27) | public class RedisTemplateTokenStore implements TokenStore {
method getRedisTemplate (line 42) | public RedisTemplate<String,Object> getRedisTemplate() {
method setRedisTemplate (line 46) | public void setRedisTemplate(RedisTemplate<String,Object> redisTemplat...
method setAuthenticationKeyGenerator (line 56) | public void setAuthenticationKeyGenerator(AuthenticationKeyGenerator a...
method getAccessToken (line 61) | public OAuth2AccessToken getAccessToken(OAuth2Authentication authentic...
method readAuthentication (line 72) | public OAuth2Authentication readAuthentication(OAuth2AccessToken token) {
method readAuthentication (line 75) | public OAuth2Authentication readAuthentication(String token) {
method readAuthenticationForRefreshToken (line 78) | public OAuth2Authentication readAuthenticationForRefreshToken(OAuth2Re...
method readAuthenticationForRefreshToken (line 81) | public OAuth2Authentication readAuthenticationForRefreshToken(String t...
method storeAccessToken (line 84) | public void storeAccessToken(OAuth2AccessToken token, OAuth2Authentica...
method getApprovalKey (line 158) | private String getApprovalKey(OAuth2Authentication authentication) {
method getApprovalKey (line 164) | private String getApprovalKey(String clientId, String userName) {
method removeAccessToken (line 170) | public void removeAccessToken(OAuth2AccessToken accessToken) {
method readAccessToken (line 174) | public OAuth2AccessToken readAccessToken(String tokenValue) {
method removeAccessToken (line 178) | public void removeAccessToken(String tokenValue) {
method storeRefreshToken (line 203) | public void storeRefreshToken(OAuth2RefreshToken refreshToken, OAuth2A...
method readRefreshToken (line 208) | public OAuth2RefreshToken readRefreshToken(String tokenValue) {
method removeRefreshToken (line 212) | public void removeRefreshToken(OAuth2RefreshToken refreshToken) {
method removeRefreshToken (line 216) | public void removeRefreshToken(String tokenValue) {
method removeAccessTokenUsingRefreshToken (line 222) | public void removeAccessTokenUsingRefreshToken(OAuth2RefreshToken refr...
method removeAccessTokenUsingRefreshToken (line 226) | private void removeAccessTokenUsingRefreshToken(String refreshToken) {
method findTokensByClientIdAndUserName (line 235) | public Collection<OAuth2AccessToken> findTokensByClientIdAndUserName(S...
method findTokensByClientId (line 251) | public Collection<OAuth2AccessToken> findTokensByClientId(String clien...
FILE: open-api-gateway/src/main/java/com/open/capacity/controller/TestController.java
class TestController (line 15) | @RestController
method hello (line 24) | @GetMapping("/test111")
FILE: open-api-gateway/src/main/java/com/open/capacity/controller/UserController.java
class UserController (line 25) | @RestController
method hello (line 34) | @GetMapping("/hello")
method user (line 40) | @RequestMapping(value = { "/users" }, produces = "application/json") /...
method user (line 49) | @RequestMapping(value = { "/user" }, produces = "application/json") //...
method hello2 (line 55) | @GetMapping("/del/{accessToken}/{refreshToken}")
FILE: open-commons/src/main/java/com/open/capacity/security/dto/LoginUser.java
class LoginUser (line 16) | public class LoginUser extends SysUser implements UserDetails {
method getPermissions (line 35) | public List<Permission> getPermissions() {
method setPermissions (line 39) | public void setPermissions(List<Permission> permissions) {
method getToken (line 43) | public String getToken() {
method setToken (line 47) | public void setToken(String token) {
method getAuthorities (line 51) | @Override
method setAuthorities (line 72) | public void setAuthorities(Collection<? extends GrantedAuthority> auth...
method isAccountNonExpired (line 77) | @JsonIgnore
method isAccountNonLocked (line 84) | @JsonIgnore
method isCredentialsNonExpired (line 91) | @JsonIgnore
method isEnabled (line 98) | @JsonIgnore
method getLoginTime (line 104) | public Long getLoginTime() {
method setLoginTime (line 108) | public void setLoginTime(Long loginTime) {
method getExpireTime (line 112) | public Long getExpireTime() {
method setExpireTime (line 116) | public void setExpireTime(Long expireTime) {
method getJwtToken (line 120) | @JsonIgnore
method setJwtToken (line 125) | public void setJwtToken(String jwtToken) {
FILE: open-commons/src/main/java/com/open/capacity/security/dto/ResponseInfo.java
class ResponseInfo (line 5) | public class ResponseInfo implements Serializable {
method ResponseInfo (line 12) | public ResponseInfo(String code, String message) {
method getCode (line 18) | public String getCode() {
method setCode (line 22) | public void setCode(String code) {
method getMessage (line 26) | public String getMessage() {
method setMessage (line 30) | public void setMessage(String message) {
FILE: open-commons/src/main/java/com/open/capacity/security/dto/RoleDto.java
class RoleDto (line 7) | public class RoleDto extends Role {
method getPermissionIds (line 13) | public List<Long> getPermissionIds() {
method setPermissionIds (line 17) | public void setPermissionIds(List<Long> permissionIds) {
FILE: open-commons/src/main/java/com/open/capacity/security/dto/UserDto.java
class UserDto (line 7) | public class UserDto extends SysUser {
method getRoleIds (line 13) | public List<Long> getRoleIds() {
method setRoleIds (line 17) | public void setRoleIds(List<Long> roleIds) {
FILE: open-commons/src/main/java/com/open/capacity/security/model/BaseEntity.java
class BaseEntity (line 6) | public abstract class BaseEntity<ID extends Serializable> implements Ser...
method getId (line 14) | public ID getId() {
method setId (line 18) | public void setId(ID id) {
method getCreateTime (line 22) | public Date getCreateTime() {
method setCreateTime (line 26) | public void setCreateTime(Date createTime) {
method getUpdateTime (line 30) | public Date getUpdateTime() {
method setUpdateTime (line 34) | public void setUpdateTime(Date updateTime) {
FILE: open-commons/src/main/java/com/open/capacity/security/model/Permission.java
class Permission (line 5) | public class Permission extends BaseEntity<Long> {
method getParentId (line 18) | public Long getParentId() {
method setParentId (line 22) | public void setParentId(Long parentId) {
method getName (line 26) | public String getName() {
method setName (line 30) | public void setName(String name) {
method getCss (line 34) | public String getCss() {
method setCss (line 38) | public void setCss(String css) {
method getHref (line 42) | public String getHref() {
method setHref (line 46) | public void setHref(String href) {
method getType (line 50) | public Integer getType() {
method setType (line 54) | public void setType(Integer type) {
method getPermission (line 58) | public String getPermission() {
method setPermission (line 62) | public void setPermission(String permission) {
method getSort (line 66) | public Integer getSort() {
method setSort (line 70) | public void setSort(Integer sort) {
method getChild (line 74) | public List<Permission> getChild() {
method setChild (line 78) | public void setChild(List<Permission> child) {
FILE: open-commons/src/main/java/com/open/capacity/security/model/Role.java
class Role (line 3) | public class Role extends BaseEntity<Long> {
method getName (line 11) | public String getName() {
method setName (line 15) | public void setName(String name) {
method getDescription (line 19) | public String getDescription() {
method setDescription (line 23) | public void setDescription(String description) {
FILE: open-commons/src/main/java/com/open/capacity/security/model/SysLogs.java
class SysLogs (line 3) | public class SysLogs extends BaseEntity<Long> {
method getUser (line 11) | public SysUser getUser() {
method setUser (line 15) | public void setUser(SysUser user) {
method getModule (line 19) | public String getModule() {
method setModule (line 23) | public void setModule(String module) {
method getFlag (line 27) | public Boolean getFlag() {
method setFlag (line 31) | public void setFlag(Boolean flag) {
method getRemark (line 35) | public String getRemark() {
method setRemark (line 39) | public void setRemark(String remark) {
FILE: open-commons/src/main/java/com/open/capacity/security/model/SysUser.java
class SysUser (line 7) | public class SysUser extends BaseEntity<Long> {
method getUsername (line 24) | public String getUsername() {
method setUsername (line 28) | public void setUsername(String username) {
method getPassword (line 32) | public String getPassword() {
method setPassword (line 36) | public void setPassword(String password) {
method getNickname (line 40) | public String getNickname() {
method setNickname (line 44) | public void setNickname(String nickname) {
method getHeadImgUrl (line 48) | public String getHeadImgUrl() {
method setHeadImgUrl (line 52) | public void setHeadImgUrl(String headImgUrl) {
method getPhone (line 56) | public String getPhone() {
method setPhone (line 60) | public void setPhone(String phone) {
method getTelephone (line 64) | public String getTelephone() {
method setTelephone (line 68) | public void setTelephone(String telephone) {
method getEmail (line 72) | public String getEmail() {
method setEmail (line 76) | public void setEmail(String email) {
method getBirthday (line 80) | public Date getBirthday() {
method setBirthday (line 84) | public void setBirthday(Date birthday) {
method getSex (line 88) | public Integer getSex() {
method setSex (line 92) | public void setSex(Integer sex) {
method getStatus (line 96) | public Integer getStatus() {
method setStatus (line 100) | public void setStatus(Integer status) {
method getIntro (line 104) | public String getIntro() {
method setIntro (line 108) | public void setIntro(String intro) {
type Status (line 112) | public interface Status {
FILE: open-commons/src/main/java/com/open/capacity/security/model/TokenModel.java
class TokenModel (line 5) | public class TokenModel extends BaseEntity<String> {
method getExpireTime (line 18) | public Date getExpireTime() {
method setExpireTime (line 22) | public void setExpireTime(Date expireTime) {
method getVal (line 26) | public String getVal() {
method setVal (line 30) | public void setVal(String val) {
FILE: open-config-center/apollo-gateway/src/main/java/com/open/capacity/ApiGateWayApp.java
class ApiGateWayApp (line 20) | @RestController
method main (line 26) | public static void main(String[] args) {
FILE: open-config-center/apollo-gateway/src/main/java/com/open/capacity/config/ZuulConfig.java
class ZuulConfig (line 17) | @Configuration
method zuulProperties (line 21) | @Bean(name="zuul.CONFIGURATION_PROPERTIES")
FILE: open-config-center/apollo-gateway/src/main/java/com/open/capacity/config/ZuulConfigRreshConfig.java
class ZuulConfigRreshConfig (line 16) | @Component
method onChange (line 26) | @ApolloConfigChangeListener
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/AdminServiceApplication.java
class AdminServiceApplication (line 17) | @EnableAspectJAutoProxy
method main (line 27) | public static void main(String[] args) {
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/AdminServiceHealthIndicator.java
class AdminServiceHealthIndicator (line 11) | @Component
method health (line 17) | @Override
method check (line 26) | private int check() {
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java
class NamespaceAcquireLockAspect (line 29) | @Aspect
method requireLockAdvice (line 46) | @Before("@annotation(PreAcquireNamespaceLock) && args(appId, clusterNa...
method requireLockAdvice (line 53) | @Before("@annotation(PreAcquireNamespaceLock) && args(appId, clusterNa...
method requireLockAdvice (line 60) | @Before("@annotation(PreAcquireNamespaceLock) && args(appId, clusterNa...
method requireLockAdvice (line 67) | @Before("@annotation(PreAcquireNamespaceLock) && args(itemId, operator...
method acquireLock (line 76) | void acquireLock(String appId, String clusterName, String namespaceName,
method acquireLock (line 87) | void acquireLock(long namespaceId, String currentUser) {
method acquireLock (line 98) | private void acquireLock(Namespace namespace, String currentUser) {
method tryLock (line 124) | private void tryLock(long namespaceId, String user) {
method checkLock (line 132) | private void checkLock(Namespace namespace, NamespaceLock namespaceLock,
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java
class NamespaceUnlockAspect (line 39) | @Aspect
method requireLockAdvice (line 58) | @After("@annotation(PreAcquireNamespaceLock) && args(appId, clusterNam...
method requireLockAdvice (line 65) | @After("@annotation(PreAcquireNamespaceLock) && args(appId, clusterNam...
method requireLockAdvice (line 72) | @After("@annotation(PreAcquireNamespaceLock) && args(appId, clusterNam...
method requireLockAdvice (line 79) | @After("@annotation(PreAcquireNamespaceLock) && args(itemId, operator,...
method tryUnlock (line 88) | private void tryUnlock(Namespace namespace) {
method isModified (line 99) | boolean isModified(Namespace namespace) {
method hasNormalItems (line 116) | private boolean hasNormalItems(List<Item> items) {
method generateConfigurationFromItems (line 126) | private Map<String, String> generateConfigurationFromItems(Namespace n...
method generateMapFromItems (line 145) | private Map<String, String> generateMapFromItems(List<Item> items, Map...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java
class AppController (line 25) | @RestController
method create (line 34) | @RequestMapping(path = "/apps", method = RequestMethod.POST)
method delete (line 51) | @RequestMapping(value = "/apps/{appId:.+}", method = RequestMethod.DEL...
method update (line 60) | @RequestMapping(value = "/apps/{appId:.+}", method = RequestMethod.PUT)
method find (line 69) | @RequestMapping(value = "/apps", method = RequestMethod.GET)
method get (line 81) | @RequestMapping(value = "/apps/{appId:.+}", method = RequestMethod.GET)
method isAppIdUnique (line 90) | @RequestMapping(value = "/apps/{appId}/unique", method = RequestMethod...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java
class AppNamespaceController (line 24) | @RestController
method create (line 32) | @RequestMapping(value = "/apps/{appId}/appnamespaces", method = Reques...
method findPublicAppNamespaceAllNamespaces (line 52) | @RequestMapping(value = "/appnamespaces/{publicNamespaceName}/namespac...
method countPublicAppNamespaceAssociatedNamespaces (line 60) | @RequestMapping(value = "/appnamespaces/{publicNamespaceName}/associat...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java
class ClusterController (line 21) | @RestController
method create (line 27) | @RequestMapping(path = "/apps/{appId}/clusters", method = RequestMetho...
method delete (line 51) | @RequestMapping(path = "/apps/{appId}/clusters/{clusterName:.+}", meth...
method find (line 61) | @RequestMapping(value = "/apps/{appId}/clusters", method = RequestMeth...
method get (line 67) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName:.+}", met...
method isAppIdUnique (line 77) | @RequestMapping(value = "/apps/{appId}/cluster/{clusterName}/unique", ...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/CommitController.java
class CommitController (line 18) | @RestController
method find (line 24) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/IndexController.java
class IndexController (line 7) | @RestController
method index (line 11) | @RequestMapping(path = "", method = RequestMethod.GET)
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java
class InstanceConfigController (line 42) | @RestController
method getByRelease (line 52) | @RequestMapping(value = "/by-release", method = RequestMethod.GET)
method getByReleasesNotIn (line 99) | @RequestMapping(value = "/by-namespace-and-releases-not-in", method = ...
method getInstancesByNamespace (line 162) | @RequestMapping(value = "/by-namespace", method = RequestMethod.GET)
method getInstancesCountByNamespace (line 181) | @RequestMapping(value = "/by-namespace/count", method = RequestMethod....
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java
class ItemController (line 26) | @RestController
method create (line 36) | @PreAcquireNamespaceLock
method update (line 65) | @PreAcquireNamespaceLock
method delete (line 107) | @PreAcquireNamespaceLock
method findItems (line 128) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method get (line 135) | @RequestMapping(value = "/items/{itemId}", method = RequestMethod.GET)
method get (line 144) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemSetController.java
class ItemSetController (line 16) | @RestController
method create (line 22) | @PreAcquireNamespaceLock
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java
class NamespaceBranchController (line 26) | @RestController
method createBranch (line 37) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method findBranchGrayRules (line 50) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method updateBranchGrayRules (line 74) | @Transactional
method deleteBranch (line 92) | @Transactional
method loadNamespaceBranch (line 108) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method checkBranch (line 122) | private void checkBranch(String appId, String clusterName, String name...
method checkNamespace (line 136) | private void checkNamespace(String appId, String clusterName, String n...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java
class NamespaceController (line 22) | @RestController
method create (line 28) | @RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespace...
method delete (line 46) | @RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespace...
method find (line 57) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method get (line 64) | @RequestMapping(value = "/namespaces/{namespaceId}", method = RequestM...
method get (line 72) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method findPublicNamespaceForAssociatedNamespace (line 82) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method namespacePublishInfo (line 99) | @RequestMapping(value = "/apps/{appId}/namespaces/publish_info", metho...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java
class NamespaceLockController (line 18) | @RestController
method getNamespaceLockOwner (line 29) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java
class ReleaseController (line 34) | @RestController
method get (line 51) | @RequestMapping(value = "/releases/{releaseId}", method = RequestMetho...
method findReleaseByIds (line 60) | @RequestMapping(value = "/releases", method = RequestMethod.GET)
method findAllReleases (line 70) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method findActiveReleases (line 80) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method getLatest (line 89) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method publish (line 97) | @Transactional
method updateAndPublish (line 132) | @Transactional
method rollback (line 164) | @Transactional
FILE: open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseHistoryController.java
class ReleaseHistoryController (line 29) | @RestController
method findReleaseHistoriesByNamespace (line 39) | @RequestMapping(value = "/apps/{appId}/clusters/{clusterName}/namespac...
method findReleaseHistoryByReleaseIdAndOperation (line 52) | @RequestMapping(value = "/releases/histories/by_release_id_and_operati...
method findReleaseHistoryByPreviousReleaseIdAndOperation (line 63) | @RequestMapping(value = "/releases/histories/by_previous_release_id_an...
method transform2PageDTO (line 75) | private PageDTO<ReleaseHistoryDTO> transform2PageDTO(Page<ReleaseHisto...
method transformReleaseHistory2DTO (line 89) | private ReleaseHistoryDTO transformReleaseHistory2DTO(ReleaseHistory r...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/ApolloBizConfig.java
class ApolloBizConfig (line 7) | @EnableAutoConfiguration
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/auth/WebSecurityConfig.java
class WebSecurityConfig (line 13) | @ConditionalOnMissingProfile("auth")
method configure (line 19) | @Override
method configureGlobal (line 33) | @Autowired
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/config/BizConfig.java
class BizConfig (line 21) | @Component
method getRefreshablePropertySources (line 42) | @Override
method eurekaServiceUrls (line 47) | public List<String> eurekaServiceUrls() {
method grayReleaseRuleScanInterval (line 56) | public int grayReleaseRuleScanInterval() {
method itemKeyLengthLimit (line 61) | public int itemKeyLengthLimit() {
method itemValueLengthLimit (line 66) | public int itemValueLengthLimit() {
method namespaceValueLengthLimitOverride (line 71) | public Map<Long, Integer> namespaceValueLengthLimitOverride() {
method isNamespaceLockSwitchOff (line 82) | public boolean isNamespaceLockSwitchOff() {
method cloggingUrl (line 89) | public String cloggingUrl() {
method cloggingPort (line 93) | public String cloggingPort() {
method appNamespaceCacheScanInterval (line 97) | public int appNamespaceCacheScanInterval() {
method appNamespaceCacheScanIntervalTimeUnit (line 102) | public TimeUnit appNamespaceCacheScanIntervalTimeUnit() {
method appNamespaceCacheRebuildInterval (line 106) | public int appNamespaceCacheRebuildInterval() {
method appNamespaceCacheRebuildIntervalTimeUnit (line 111) | public TimeUnit appNamespaceCacheRebuildIntervalTimeUnit() {
method releaseMessageCacheScanInterval (line 115) | public int releaseMessageCacheScanInterval() {
method releaseMessageCacheScanIntervalTimeUnit (line 120) | public TimeUnit releaseMessageCacheScanIntervalTimeUnit() {
method releaseMessageScanIntervalInMilli (line 124) | public int releaseMessageScanIntervalInMilli() {
method releaseMessageNotificationBatch (line 129) | public int releaseMessageNotificationBatch() {
method releaseMessageNotificationBatchIntervalInMilli (line 134) | public int releaseMessageNotificationBatchIntervalInMilli() {
method isConfigServiceCacheEnabled (line 139) | public boolean isConfigServiceCacheEnabled() {
method checkInt (line 143) | int checkInt(int value, int min, int max, int defaultValue) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/customize/BizLoggingCustomizer.java
class BizLoggingCustomizer (line 10) | @Component
method cloggingUrl (line 19) | @Override
method cloggingPort (line 24) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Audit.java
class Audit (line 12) | @Entity
type OP (line 18) | public enum OP {
method getComment (line 34) | public String getComment() {
method getEntityId (line 38) | public Long getEntityId() {
method getEntityName (line 42) | public String getEntityName() {
method getOpName (line 46) | public String getOpName() {
method setComment (line 50) | public void setComment(String comment) {
method setEntityId (line 54) | public void setEntityId(Long entityId) {
method setEntityName (line 58) | public void setEntityName(String entityName) {
method setOpName (line 62) | public void setOpName(String opName) {
method toString (line 66) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Cluster.java
class Cluster (line 15) | @Entity
method getAppId (line 30) | public String getAppId() {
method getName (line 34) | public String getName() {
method setAppId (line 38) | public void setAppId(String appId) {
method setName (line 42) | public void setName(String name) {
method getParentClusterId (line 46) | public long getParentClusterId() {
method setParentClusterId (line 50) | public void setParentClusterId(long parentClusterId) {
method toString (line 54) | public String toString() {
method compareTo (line 59) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Commit.java
class Commit (line 13) | @Entity
method getChangeSets (line 35) | public String getChangeSets() {
method setChangeSets (line 39) | public void setChangeSets(String changeSets) {
method getAppId (line 43) | public String getAppId() {
method setAppId (line 47) | public void setAppId(String appId) {
method getClusterName (line 51) | public String getClusterName() {
method setClusterName (line 55) | public void setClusterName(String clusterName) {
method getNamespaceName (line 59) | public String getNamespaceName() {
method setNamespaceName (line 63) | public void setNamespaceName(String namespaceName) {
method getComment (line 67) | public String getComment() {
method setComment (line 71) | public void setComment(String comment) {
method toString (line 75) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/GrayReleaseRule.java
class GrayReleaseRule (line 12) | @Entity
method getAppId (line 39) | public String getAppId() {
method setAppId (line 43) | public void setAppId(String appId) {
method getClusterName (line 47) | public String getClusterName() {
method setClusterName (line 51) | public void setClusterName(String clusterName) {
method getNamespaceName (line 55) | public String getNamespaceName() {
method setNamespaceName (line 59) | public void setNamespaceName(String namespaceName) {
method getBranchName (line 63) | public String getBranchName() {
method setBranchName (line 67) | public void setBranchName(String branchName) {
method getRules (line 71) | public String getRules() {
method setRules (line 75) | public void setRules(String rules) {
method getReleaseId (line 79) | public Long getReleaseId() {
method setReleaseId (line 83) | public void setReleaseId(Long releaseId) {
method getBranchStatus (line 87) | public int getBranchStatus() {
method setBranchStatus (line 91) | public void setBranchStatus(int branchStatus) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Instance.java
class Instance (line 17) | @Entity
method prePersist (line 43) | @PrePersist
method getId (line 53) | public long getId() {
method setId (line 57) | public void setId(long id) {
method getAppId (line 61) | public String getAppId() {
method setAppId (line 65) | public void setAppId(String appId) {
method getClusterName (line 69) | public String getClusterName() {
method setClusterName (line 73) | public void setClusterName(String clusterName) {
method getDataCenter (line 77) | public String getDataCenter() {
method setDataCenter (line 81) | public void setDataCenter(String dataCenter) {
method getIp (line 85) | public String getIp() {
method setIp (line 89) | public void setIp(String ip) {
method getDataChangeCreatedTime (line 93) | public Date getDataChangeCreatedTime() {
method setDataChangeCreatedTime (line 97) | public void setDataChangeCreatedTime(Date dataChangeCreatedTime) {
method getDataChangeLastModifiedTime (line 101) | public Date getDataChangeLastModifiedTime() {
method setDataChangeLastModifiedTime (line 105) | public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedT...
method toString (line 109) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/InstanceConfig.java
class InstanceConfig (line 18) | @Entity
method prePersist (line 50) | @PrePersist
method preUpdate (line 60) | @PreUpdate
method getId (line 65) | public long getId() {
method setId (line 69) | public void setId(long id) {
method getInstanceId (line 73) | public long getInstanceId() {
method setInstanceId (line 77) | public void setInstanceId(long instanceId) {
method getConfigAppId (line 81) | public String getConfigAppId() {
method setConfigAppId (line 85) | public void setConfigAppId(String configAppId) {
method getConfigNamespaceName (line 89) | public String getConfigNamespaceName() {
method setConfigNamespaceName (line 93) | public void setConfigNamespaceName(String configNamespaceName) {
method getReleaseKey (line 97) | public String getReleaseKey() {
method setReleaseKey (line 101) | public void setReleaseKey(String releaseKey) {
method getDataChangeCreatedTime (line 105) | public Date getDataChangeCreatedTime() {
method setDataChangeCreatedTime (line 109) | public void setDataChangeCreatedTime(Date dataChangeCreatedTime) {
method getDataChangeLastModifiedTime (line 113) | public Date getDataChangeLastModifiedTime() {
method setDataChangeLastModifiedTime (line 117) | public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedT...
method getConfigClusterName (line 121) | public String getConfigClusterName() {
method setConfigClusterName (line 125) | public void setConfigClusterName(String configClusterName) {
method getReleaseDeliveryTime (line 129) | public Date getReleaseDeliveryTime() {
method setReleaseDeliveryTime (line 133) | public void setReleaseDeliveryTime(Date releaseDeliveryTime) {
method toString (line 137) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Item.java
class Item (line 13) | @Entity
method getComment (line 35) | public String getComment() {
method getKey (line 39) | public String getKey() {
method getNamespaceId (line 43) | public long getNamespaceId() {
method getValue (line 47) | public String getValue() {
method setComment (line 51) | public void setComment(String comment) {
method setKey (line 55) | public void setKey(String key) {
method setNamespaceId (line 59) | public void setNamespaceId(long namespaceId) {
method setValue (line 63) | public void setValue(String value) {
method getLineNum (line 67) | public Integer getLineNum() {
method setLineNum (line 71) | public void setLineNum(Integer lineNum) {
method toString (line 75) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Namespace.java
class Namespace (line 12) | @Entity
method Namespace (line 27) | public Namespace(){
method Namespace (line 31) | public Namespace(String appId, String clusterName, String namespaceNam...
method getAppId (line 37) | public String getAppId() {
method getClusterName (line 41) | public String getClusterName() {
method getNamespaceName (line 45) | public String getNamespaceName() {
method setAppId (line 49) | public void setAppId(String appId) {
method setClusterName (line 53) | public void setClusterName(String clusterName) {
method setNamespaceName (line 57) | public void setNamespaceName(String namespaceName) {
method toString (line 61) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/NamespaceLock.java
class NamespaceLock (line 11) | @Entity
method getNamespaceId (line 19) | public long getNamespaceId() {
method setNamespaceId (line 23) | public void setNamespaceId(long namespaceId) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Privilege.java
class Privilege (line 12) | @Entity
method getName (line 27) | public String getName() {
method getNamespaceId (line 31) | public long getNamespaceId() {
method getPrivilType (line 35) | public String getPrivilType() {
method setName (line 39) | public void setName(String name) {
method setNamespaceId (line 43) | public void setNamespaceId(long namespaceId) {
method setPrivilType (line 47) | public void setPrivilType(String privilType) {
method toString (line 51) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Release.java
class Release (line 16) | @Entity
method getReleaseKey (line 46) | public String getReleaseKey() {
method getAppId (line 50) | public String getAppId() {
method getClusterName (line 54) | public String getClusterName() {
method getComment (line 58) | public String getComment() {
method getConfigurations (line 62) | public String getConfigurations() {
method getNamespaceName (line 66) | public String getNamespaceName() {
method getName (line 70) | public String getName() {
method setReleaseKey (line 74) | public void setReleaseKey(String releaseKey) {
method setAppId (line 78) | public void setAppId(String appId) {
method setClusterName (line 82) | public void setClusterName(String clusterName) {
method setComment (line 86) | public void setComment(String comment) {
method setConfigurations (line 90) | public void setConfigurations(String configurations) {
method setNamespaceName (line 94) | public void setNamespaceName(String namespaceName) {
method setName (line 98) | public void setName(String name) {
method isAbandoned (line 102) | public boolean isAbandoned() {
method setAbandoned (line 106) | public void setAbandoned(boolean abandoned) {
method toString (line 110) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/ReleaseHistory.java
class ReleaseHistory (line 15) | @Entity
method getAppId (line 44) | public String getAppId() {
method setAppId (line 48) | public void setAppId(String appId) {
method getClusterName (line 52) | public String getClusterName() {
method setClusterName (line 56) | public void setClusterName(String clusterName) {
method getNamespaceName (line 60) | public String getNamespaceName() {
method setNamespaceName (line 64) | public void setNamespaceName(String namespaceName) {
method getBranchName (line 68) | public String getBranchName() {
method setBranchName (line 72) | public void setBranchName(String branchName) {
method getReleaseId (line 76) | public long getReleaseId() {
method setReleaseId (line 80) | public void setReleaseId(long releaseId) {
method getPreviousReleaseId (line 84) | public long getPreviousReleaseId() {
method setPreviousReleaseId (line 88) | public void setPreviousReleaseId(long previousReleaseId) {
method getOperation (line 92) | public int getOperation() {
method setOperation (line 96) | public void setOperation(int operation) {
method getOperationContext (line 100) | public String getOperationContext() {
method setOperationContext (line 104) | public void setOperationContext(String operationContext) {
method toString (line 108) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/ReleaseMessage.java
class ReleaseMessage (line 17) | @Entity
method prePersist (line 31) | @PrePersist
method ReleaseMessage (line 38) | public ReleaseMessage() {
method ReleaseMessage (line 41) | public ReleaseMessage(String message) {
method getId (line 45) | public long getId() {
method setId (line 49) | public void setId(long id) {
method getMessage (line 53) | public String getMessage() {
method setMessage (line 57) | public void setMessage(String message) {
method toString (line 61) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/ServerConfig.java
class ServerConfig (line 15) | @Entity
method getKey (line 32) | public String getKey() {
method setKey (line 36) | public void setKey(String key) {
method getValue (line 40) | public String getValue() {
method setValue (line 44) | public void setValue(String value) {
method getComment (line 48) | public String getComment() {
method setComment (line 52) | public void setComment(String comment) {
method getCluster (line 56) | public String getCluster() {
method setCluster (line 60) | public void setCluster(String cluster) {
method toString (line 64) | public String toString() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/eureka/ApolloEurekaClientConfig.java
class ApolloEurekaClientConfig (line 14) | @Component
method getEurekaServerServiceUrls (line 24) | public List<String> getEurekaServerServiceUrls(String myZone) {
method equals (line 29) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRuleCache.java
class GrayReleaseRuleCache (line 10) | public class GrayReleaseRuleCache {
method GrayReleaseRuleCache (line 19) | public GrayReleaseRuleCache(long ruleId, String branchName, String nam...
method getRuleId (line 30) | public long getRuleId() {
method getRuleItems (line 34) | public Set<GrayReleaseRuleItemDTO> getRuleItems() {
method getBranchName (line 38) | public String getBranchName() {
method getBranchStatus (line 42) | public int getBranchStatus() {
method getReleaseId (line 46) | public long getReleaseId() {
method getLoadVersion (line 50) | public long getLoadVersion() {
method setLoadVersion (line 54) | public void setLoadVersion(long loadVersion) {
method getNamespaceName (line 58) | public String getNamespaceName() {
method matches (line 62) | public boolean matches(String clientAppId, String clientIp) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolder.java
class GrayReleaseRulesHolder (line 42) | public class GrayReleaseRulesHolder implements ReleaseMessageListener, I...
method GrayReleaseRulesHolder (line 62) | public GrayReleaseRulesHolder() {
method afterPropertiesSet (line 70) | @Override
method handleMessage (line 80) | @Override
method periodicScanRules (line 103) | private void periodicScanRules() {
method findReleaseIdFromGrayReleaseRule (line 118) | public Long findReleaseIdFromGrayReleaseRule(String clientAppId, Strin...
method hasGrayReleaseRule (line 143) | public boolean hasGrayReleaseRule(String clientAppId, String clientIp,...
method scanGrayReleaseRules (line 150) | private void scanGrayReleaseRules() {
method mergeGrayReleaseRules (line 168) | private void mergeGrayReleaseRules(List<GrayReleaseRule> grayReleaseRu...
method addCache (line 212) | private void addCache(String key, GrayReleaseRuleCache ruleCache) {
method removeCache (line 224) | private void removeCache(String key, GrayReleaseRuleCache ruleCache) {
method transformRuleToRuleCache (line 234) | private GrayReleaseRuleCache transformRuleToRuleCache(GrayReleaseRule ...
method populateDataBaseInterval (line 251) | private void populateDataBaseInterval() {
method getDatabaseScanIntervalSecond (line 255) | private int getDatabaseScanIntervalSecond() {
method getDatabaseScanTimeUnit (line 259) | private TimeUnit getDatabaseScanTimeUnit() {
method assembleGrayReleaseRuleKey (line 263) | private String assembleGrayReleaseRuleKey(String configAppId, String c...
method assembleReversedGrayReleaseRuleKey (line 268) | private String assembleReversedGrayReleaseRuleKey(String clientAppId, ...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/DatabaseMessageSender.java
class DatabaseMessageSender (line 30) | @Component
method DatabaseMessageSender (line 41) | public DatabaseMessageSender() {
method sendMessage (line 46) | @Override
method initialize (line 70) | @PostConstruct
method cleanMessage (line 88) | private void cleanMessage(Long id) {
method stopClean (line 107) | void stopClean() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/MessageSender.java
type MessageSender (line 6) | public interface MessageSender {
method sendMessage (line 7) | void sendMessage(String message, String channel);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageListener.java
type ReleaseMessageListener (line 8) | public interface ReleaseMessageListener {
method handleMessage (line 9) | void handleMessage(ReleaseMessage message, String channel);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScanner.java
class ReleaseMessageScanner (line 25) | public class ReleaseMessageScanner implements InitializingBean {
method ReleaseMessageScanner (line 36) | public ReleaseMessageScanner() {
method afterPropertiesSet (line 42) | @Override
method addMessageListener (line 65) | public void addMessageListener(ReleaseMessageListener listener) {
method scanMessages (line 74) | private void scanMessages() {
method scanAndSendMessages (line 86) | private boolean scanAndSendMessages() {
method loadLargestMessageId (line 103) | private long loadLargestMessageId() {
method fireMessageScanned (line 112) | private void fireMessageScanned(List<ReleaseMessage> messages) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/Topics.java
class Topics (line 6) | public class Topics {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/AppNamespaceRepository.java
type AppNamespaceRepository (line 11) | public interface AppNamespaceRepository extends PagingAndSortingReposito...
method findByAppIdAndName (line 13) | AppNamespace findByAppIdAndName(String appId, String namespaceName);
method findByAppIdAndNameIn (line 15) | List<AppNamespace> findByAppIdAndNameIn(String appId, Set<String> name...
method findByNameAndIsPublicTrue (line 17) | AppNamespace findByNameAndIsPublicTrue(String namespaceName);
method findByNameInAndIsPublicTrue (line 19) | List<AppNamespace> findByNameInAndIsPublicTrue(Set<String> namespaceNa...
method findByAppIdAndIsPublic (line 21) | List<AppNamespace> findByAppIdAndIsPublic(String appId, boolean isPubl...
method findByAppId (line 23) | List<AppNamespace> findByAppId(String appId);
method findFirst500ByIdGreaterThanOrderByIdAsc (line 25) | List<AppNamespace> findFirst500ByIdGreaterThanOrderByIdAsc(long id);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/AppRepository.java
type AppRepository (line 11) | public interface AppRepository extends PagingAndSortingRepository<App, L...
method findByName (line 13) | @Query("SELECT a from App a WHERE a.name LIKE %:name%")
method findByAppId (line 16) | App findByAppId(String appId);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/AuditRepository.java
type AuditRepository (line 11) | public interface AuditRepository extends PagingAndSortingRepository<Audi...
method findByOwner (line 13) | @Query("SELECT a from Audit a WHERE a.dataChangeCreatedBy = :owner")
method findAudits (line 16) | @Query("SELECT a from Audit a WHERE a.dataChangeCreatedBy = :owner AND...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ClusterRepository.java
type ClusterRepository (line 10) | public interface ClusterRepository extends PagingAndSortingRepository<Cl...
method findByAppIdAndParentClusterId (line 12) | List<Cluster> findByAppIdAndParentClusterId(String appId, Long parentC...
method findByAppId (line 14) | List<Cluster> findByAppId(String appId);
method findByAppIdAndName (line 16) | Cluster findByAppIdAndName(String appId, String name);
method findByParentClusterId (line 18) | List<Cluster> findByParentClusterId(Long parentClusterId);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/CommitRepository.java
type CommitRepository (line 12) | public interface CommitRepository extends PagingAndSortingRepository<Com...
method findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc (line 14) | List<Commit> findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(St...
method batchDelete (line 17) | @Modifying
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/GrayReleaseRuleRepository.java
type GrayReleaseRuleRepository (line 10) | public interface GrayReleaseRuleRepository extends PagingAndSortingRepos...
method findTopByAppIdAndClusterNameAndNamespaceNameAndBranchNameOrderByIdDesc (line 12) | GrayReleaseRule findTopByAppIdAndClusterNameAndNamespaceNameAndBranchN...
method findByAppIdAndClusterNameAndNamespaceName (line 15) | List<GrayReleaseRule> findByAppIdAndClusterNameAndNamespaceName(String...
method findFirst500ByIdGreaterThanOrderByIdAsc (line 18) | List<GrayReleaseRule> findFirst500ByIdGreaterThanOrderByIdAsc(Long id);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/InstanceConfigRepository.java
type InstanceConfigRepository (line 16) | public interface InstanceConfigRepository extends PagingAndSortingReposi...
method findByInstanceIdAndConfigAppIdAndConfigNamespaceName (line 18) | InstanceConfig findByInstanceIdAndConfigAppIdAndConfigNamespaceName(lo...
method findByReleaseKeyAndDataChangeLastModifiedTimeAfter (line 21) | Page<InstanceConfig> findByReleaseKeyAndDataChangeLastModifiedTimeAfte...
method findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfter (line 24) | Page<InstanceConfig> findByConfigAppIdAndConfigClusterNameAndConfigNam...
method findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfterAndReleaseKeyNotIn (line 27) | List<InstanceConfig> findByConfigAppIdAndConfigClusterNameAndConfigNam...
method batchDelete (line 30) | @Modifying
method findInstanceIdsByNamespaceAndInstanceAppId (line 34) | @Query(
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/InstanceRepository.java
type InstanceRepository (line 7) | public interface InstanceRepository extends PagingAndSortingRepository<I...
method findByAppIdAndClusterNameAndDataCenterAndIp (line 8) | Instance findByAppIdAndClusterNameAndDataCenterAndIp(String appId, Str...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ItemRepository.java
type ItemRepository (line 12) | public interface ItemRepository extends PagingAndSortingRepository<Item,...
method findByNamespaceIdAndKey (line 14) | Item findByNamespaceIdAndKey(Long namespaceId, String key);
method findByNamespaceIdOrderByLineNumAsc (line 16) | List<Item> findByNamespaceIdOrderByLineNumAsc(Long namespaceId);
method findByNamespaceId (line 18) | List<Item> findByNamespaceId(Long namespaceId);
method findByNamespaceIdAndDataChangeLastModifiedTimeGreaterThan (line 20) | List<Item> findByNamespaceIdAndDataChangeLastModifiedTimeGreaterThan(L...
method findFirst1ByNamespaceIdOrderByLineNumDesc (line 22) | Item findFirst1ByNamespaceIdOrderByLineNumDesc(Long namespaceId);
method deleteByNamespaceId (line 24) | @Modifying
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/NamespaceLockRepository.java
type NamespaceLockRepository (line 7) | public interface NamespaceLockRepository extends PagingAndSortingReposit...
method findByNamespaceId (line 9) | NamespaceLock findByNamespaceId(Long namespaceId);
method deleteByNamespaceId (line 11) | Long deleteByNamespaceId(Long namespaceId);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/NamespaceRepository.java
type NamespaceRepository (line 13) | public interface NamespaceRepository extends PagingAndSortingRepository<...
method findByAppIdAndClusterNameOrderByIdAsc (line 15) | List<Namespace> findByAppIdAndClusterNameOrderByIdAsc(String appId, St...
method findByAppIdAndClusterNameAndNamespaceName (line 17) | Namespace findByAppIdAndClusterNameAndNamespaceName(String appId, Stri...
method batchDelete (line 19) | @Modifying
method findByAppIdAndNamespaceName (line 23) | List<Namespace> findByAppIdAndNamespaceName(String appId, String names...
method findByNamespaceName (line 25) | List<Namespace> findByNamespaceName(String namespaceName, Pageable page);
method countByNamespaceNameAndAppIdNot (line 27) | int countByNamespaceNameAndAppIdNot(String namespaceName, String appId);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/PrivilegeRepository.java
type PrivilegeRepository (line 9) | public interface PrivilegeRepository extends PagingAndSortingRepository<...
method findByNamespaceId (line 11) | List<Privilege> findByNamespaceId(long namespaceId);
method findByNamespaceIdAndPrivilType (line 13) | List<Privilege> findByNamespaceIdAndPrivilType(long namespaceId, Strin...
method findByNamespaceIdAndNameAndPrivilType (line 15) | Privilege findByNamespaceIdAndNameAndPrivilType(long namespaceId, Stri...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ReleaseHistoryRepository.java
type ReleaseHistoryRepository (line 16) | public interface ReleaseHistoryRepository extends PagingAndSortingReposi...
method findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc (line 17) | Page<ReleaseHistory> findByAppIdAndClusterNameAndNamespaceNameOrderByI...
method findByReleaseIdAndOperationOrderByIdDesc (line 20) | Page<ReleaseHistory> findByReleaseIdAndOperationOrderByIdDesc(long rel...
method findByPreviousReleaseIdAndOperationOrderByIdDesc (line 22) | Page<ReleaseHistory> findByPreviousReleaseIdAndOperationOrderByIdDesc(...
method batchDelete (line 24) | @Modifying
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ReleaseMessageRepository.java
type ReleaseMessageRepository (line 15) | public interface ReleaseMessageRepository extends PagingAndSortingReposi...
method findFirst500ByIdGreaterThanOrderByIdAsc (line 16) | List<ReleaseMessage> findFirst500ByIdGreaterThanOrderByIdAsc(Long id);
method findTopByOrderByIdDesc (line 18) | ReleaseMessage findTopByOrderByIdDesc();
method findTopByMessageInOrderByIdDesc (line 20) | ReleaseMessage findTopByMessageInOrderByIdDesc(Collection<String> mess...
method findFirst100ByMessageAndIdLessThanOrderByIdAsc (line 22) | List<ReleaseMessage> findFirst100ByMessageAndIdLessThanOrderByIdAsc(St...
method findLatestReleaseMessagesGroupByMessages (line 24) | @Query("select message, max(id) as id from ReleaseMessage where messag...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ReleaseRepository.java
type ReleaseRepository (line 17) | public interface ReleaseRepository extends PagingAndSortingRepository<Re...
method findFirstByAppIdAndClusterNameAndNamespaceNameAndIsAbandonedFalseOrderByIdDesc (line 19) | Release findFirstByAppIdAndClusterNameAndNamespaceNameAndIsAbandonedFa...
method findByIdAndIsAbandonedFalse (line 22) | Release findByIdAndIsAbandonedFalse(long id);
method findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc (line 24) | List<Release> findByAppIdAndClusterNameAndNamespaceNameOrderByIdDesc(S...
method findByAppIdAndClusterNameAndNamespaceNameAndIsAbandonedFalseOrderByIdDesc (line 26) | List<Release> findByAppIdAndClusterNameAndNamespaceNameAndIsAbandonedF...
method findByReleaseKeyIn (line 28) | List<Release> findByReleaseKeyIn(Set<String> releaseKey);
method findByIdIn (line 30) | List<Release> findByIdIn(Set<Long> releaseIds);
method batchDelete (line 32) | @Modifying
method findByAppIdAndClusterNameAndNamespaceNameOrderByIdAsc (line 37) | List<Release> findByAppIdAndClusterNameAndNamespaceNameOrderByIdAsc(St...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ServerConfigRepository.java
type ServerConfigRepository (line 10) | public interface ServerConfigRepository extends PagingAndSortingReposito...
method findTopByKeyAndCluster (line 11) | ServerConfig findTopByKeyAndCluster(String key, String cluster);
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AdminService.java
class AdminService (line 10) | @Service
method createNewApp (line 22) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppNamespaceService.java
class AppNamespaceService (line 26) | @Service
method isAppNamespaceNameUnique (line 38) | public boolean isAppNamespaceNameUnique(String appId, String namespace...
method findPublicNamespaceByName (line 44) | public AppNamespace findPublicNamespaceByName(String namespaceName) {
method findByAppId (line 49) | public List<AppNamespace> findByAppId(String appId) {
method findPublicNamespacesByNames (line 53) | public List<AppNamespace> findPublicNamespacesByNames(Set<String> name...
method findPrivateAppNamespace (line 61) | public List<AppNamespace> findPrivateAppNamespace(String appId) {
method findOne (line 65) | public AppNamespace findOne(String appId, String namespaceName) {
method findByAppIdAndNamespaces (line 71) | public List<AppNamespace> findByAppIdAndNamespaces(String appId, Set<S...
method createDefaultAppNamespace (line 79) | @Transactional
method createAppNamespace (line 97) | @Transactional
method update (line 115) | public AppNamespace update(AppNamespace appNamespace) {
method instanceOfAppNamespaceInAllCluster (line 126) | private void instanceOfAppNamespaceInAllCluster(String appId, String n...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppService.java
class AppService (line 18) | @Service
method isAppIdUnique (line 27) | public boolean isAppIdUnique(String appId) {
method delete (line 32) | @Transactional
method findAll (line 46) | public List<App> findAll(Pageable pageable) {
method findByName (line 51) | public List<App> findByName(String name) {
method findOne (line 55) | public App findOne(String appId) {
method save (line 59) | @Transactional
method update (line 73) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AuditService.java
class AuditService (line 12) | @Service
method findByOwner (line 18) | List<Audit> findByOwner(String owner) {
method find (line 22) | List<Audit> find(String owner, String entity, String op) {
method audit (line 26) | @Transactional
method audit (line 36) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySource.java
class BizDBPropertySource (line 23) | @Component
method BizDBPropertySource (line 31) | public BizDBPropertySource(String name, Map<String, Object> source) {
method BizDBPropertySource (line 35) | public BizDBPropertySource() {
method getCurrentDataCenter (line 39) | String getCurrentDataCenter() {
method refresh (line 43) | @Override
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ClusterService.java
class ClusterService (line 21) | @Service
method isClusterNameUnique (line 32) | public boolean isClusterNameUnique(String appId, String clusterName) {
method findOne (line 38) | public Cluster findOne(String appId, String name) {
method findOne (line 42) | public Cluster findOne(long clusterId) {
method findParentClusters (line 46) | public List<Cluster> findParentClusters(String appId) {
method saveWithInstanceOfAppNamespaces (line 61) | @Transactional
method saveWithoutInstanceOfAppNamespaces (line 72) | @Transactional
method delete (line 86) | @Transactional
method update (line 103) | @Transactional
method createDefaultCluster (line 116) | @Transactional
method findChildClusters (line 131) | public List<Cluster> findChildClusters(String appId, String parentClus...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java
class CommitService (line 13) | @Service
method save (line 19) | @Transactional
method find (line 25) | public List<Commit> find(String appId, String clusterName, String name...
method batchDelete (line 29) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/InstanceService.java
class InstanceService (line 30) | @Service
method findInstance (line 38) | public Instance findInstance(String appId, String clusterName, String ...
method findInstancesByIds (line 43) | public List<Instance> findInstancesByIds(Set<Long> instanceIds) {
method createInstance (line 51) | @Transactional
method findInstanceConfig (line 58) | public InstanceConfig findInstanceConfig(long instanceId, String confi...
method findActiveInstanceConfigsByReleaseKey (line 65) | public Page<InstanceConfig> findActiveInstanceConfigsByReleaseKey(Stri...
method findInstancesByNamespace (line 73) | public Page<Instance> findInstancesByNamespace(String appId, String cl...
method findInstancesByNamespaceAndInstanceAppId (line 89) | public Page<Instance> findInstancesByNamespaceAndInstanceAppId(String ...
method findInstanceConfigsByNamespaceWithReleaseKeysNotIn (line 125) | public List<InstanceConfig> findInstanceConfigsByNamespaceWithReleaseK...
method getValidInstanceConfigDate (line 146) | private Date getValidInstanceConfigDate() {
method createInstanceConfig (line 153) | @Transactional
method updateInstanceConfig (line 160) | @Transactional
method batchDeleteInstanceConfig (line 175) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java
class ItemService (line 23) | @Service
method delete (line 39) | @Transactional
method batchDelete (line 54) | @Transactional
method findOne (line 60) | public Item findOne(String appId, String clusterName, String namespace...
method findLastOne (line 70) | public Item findLastOne(String appId, String clusterName, String names...
method findLastOne (line 79) | public Item findLastOne(long namespaceId) {
method findOne (line 83) | public Item findOne(long itemId) {
method findItemsWithoutOrdered (line 88) | public List<Item> findItemsWithoutOrdered(Long namespaceId) {
method findItemsWithoutOrdered (line 96) | public List<Item> findItemsWithoutOrdered(String appId, String cluster...
method findItemsWithOrdered (line 105) | public List<Item> findItemsWithOrdered(Long namespaceId) {
method findItemsWithOrdered (line 113) | public List<Item> findItemsWithOrdered(String appId, String clusterNam...
method findItemsModifiedAfterDate (line 122) | public List<Item> findItemsModifiedAfterDate(long namespaceId, Date da...
method save (line 126) | @Transactional
method update (line 147) | @Transactional
method checkItemValueLength (line 160) | private boolean checkItemValueLength(long namespaceId, String value) {
method checkItemKeyLength (line 168) | private boolean checkItemKeyLength(String key) {
method getItemValueLengthLimit (line 175) | private int getItemValueLengthLimit(long namespaceId) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java
class ItemSetService (line 19) | @Service
method updateSet (line 31) | @Transactional
method updateSet (line 36) | @Transactional
method createCommit (line 93) | private void createCommit(String appId, String clusterName, String nam...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceBranchService.java
class NamespaceBranchService (line 24) | @Service
method createBranch (line 40) | @Transactional
method findBranch (line 63) | public Namespace findBranch(String appId, String parentClusterName, St...
method findBranchGrayRules (line 67) | public GrayReleaseRule findBranchGrayRules(String appId, String cluste...
method updateBranchGrayRules (line 73) | @Transactional
method doUpdateBranchGrayRules (line 79) | private void doUpdateBranchGrayRules(String appId, String clusterName,...
method updateRulesReleaseId (line 110) | @Transactional
method deleteBranch (line 139) | @Transactional
method createChildCluster (line 176) | private Cluster createChildCluster(String appId, Cluster parentCluster,
method createNamespaceBranch (line 190) | private Namespace createNamespaceBranch(String appId, String clusterNa...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceLockService.java
class NamespaceLockService (line 10) | @Service
method findLock (line 16) | public NamespaceLock findLock(Long namespaceId){
method tryLock (line 21) | @Transactional
method unlock (line 26) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java
class NamespaceService (line 38) | @Service
method findOne (line 69) | public Namespace findOne(Long namespaceId) {
method findOne (line 73) | public Namespace findOne(String appId, String clusterName, String name...
method findPublicNamespaceForAssociatedNamespace (line 78) | public Namespace findPublicNamespaceForAssociatedNamespace(String clus...
method findPublicAppNamespaceAllNamespaces (line 129) | public List<Namespace> findPublicAppNamespaceAllNamespaces(String name...
method filterChildNamespace (line 142) | private List<Namespace> filterChildNamespace(List<Namespace> namespace...
method countPublicAppNamespaceAssociatedNamespaces (line 158) | public int countPublicAppNamespaceAssociatedNamespaces(String publicNa...
method findNamespaces (line 169) | public List<Namespace> findNamespaces(String appId, String clusterName) {
method findByAppIdAndNamespaceName (line 177) | public List<Namespace> findByAppIdAndNamespaceName(String appId, Strin...
method findChildNamespace (line 181) | public Namespace findChildNamespace(String appId, String parentCluster...
method findChildNamespace (line 203) | public Namespace findChildNamespace(Namespace parentNamespace) {
method findParentNamespace (line 212) | public Namespace findParentNamespace(String appId, String clusterName,...
method findParentNamespace (line 216) | public Namespace findParentNamespace(Namespace namespace) {
method isChildNamespace (line 229) | public boolean isChildNamespace(String appId, String clusterName, Stri...
method isChildNamespace (line 233) | public boolean isChildNamespace(Namespace namespace) {
method isNamespaceUnique (line 237) | public boolean isNamespaceUnique(String appId, String cluster, String ...
method deleteByAppIdAndClusterName (line 245) | @Transactional
method deleteNamespace (line 257) | @Transactional
method save (line 299) | @Transactional
method update (line 313) | @Transactional
method instanceOfAppNamespaces (line 326) | @Transactional
method namespacePublishInfo (line 344) | public Map<String, Boolean> namespacePublishInfo(String appId) {
method isNamespaceNotPublished (line 371) | private boolean isNamespaceNotPublished(Namespace namespace) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseHistoryService.java
class ReleaseHistoryService (line 21) | @Service
method findReleaseHistoriesByNamespace (line 31) | public Page<ReleaseHistory> findReleaseHistoriesByNamespace(String app...
method findByReleaseIdAndOperation (line 38) | public Page<ReleaseHistory> findByReleaseIdAndOperation(long releaseId...
method findByPreviousReleaseIdAndOperation (line 42) | public Page<ReleaseHistory> findByPreviousReleaseIdAndOperation(long p...
method createReleaseHistory (line 46) | @Transactional
method batchDelete (line 75) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseMessageService.java
class ReleaseMessageService (line 20) | @Service
method findLatestReleaseMessageForMessages (line 25) | public ReleaseMessage findLatestReleaseMessageForMessages(Collection<S...
method findLatestReleaseMessagesGroupByMessages (line 32) | public List<ReleaseMessage> findLatestReleaseMessagesGroupByMessages(C...
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java
class ReleaseService (line 43) | @Service
method findOne (line 66) | public Release findOne(long releaseId) {
method findActiveOne (line 71) | public Release findActiveOne(long releaseId) {
method findByReleaseIds (line 75) | public List<Release> findByReleaseIds(Set<Long> releaseIds) {
method findByReleaseKeys (line 83) | public List<Release> findByReleaseKeys(Set<String> releaseKeys) {
method findLatestActiveRelease (line 87) | public Release findLatestActiveRelease(Namespace namespace) {
method findLatestActiveRelease (line 93) | public Release findLatestActiveRelease(String appId, String clusterNam...
method findAllReleases (line 99) | public List<Release> findAllReleases(String appId, String clusterName,...
method findActiveReleases (line 110) | public List<Release> findActiveReleases(String appId, String clusterNa...
method mergeBranchChangeSetsAndRelease (line 122) | @Transactional
method publish (line 148) | @Transactional
method checkLock (line 188) | private void checkLock(Namespace namespace, boolean isEmergencyPublish...
method mergeFromMasterAndPublishBranch (line 197) | private void mergeFromMasterAndPublishBranch(Namespace parentNamespace...
method publishBranchNamespace (line 221) | private Release publishBranchNamespace(Namespace parentNamespace, Name...
method masterRelease (line 239) | private Release masterRelease(Namespace namespace, String releaseName,...
method branchRelease (line 255) | private Release branchRelease(Namespace parentNamespace, Namespace chi...
method mergeConfiguration (line 291) | private Map<String, String> mergeConfiguration(Map<String, String> bas...
method getNamespaceItems (line 308) | private Map<String, String> getNamespaceItems(Namespace namespace) {
method getNamespaceReleaseConfiguration (line 321) | private Map<String, String> getNamespaceReleaseConfiguration(Namespace...
method createRelease (line 330) | private Release createRelease(Namespace namespace, String name, String...
method rollback (line 352) | @Transactional
method rollbackChildNamespace (line 391) | private void rollbackChildNamespace(String appId, String clusterName, ...
method calculateChildNamespaceToPublishConfiguration (line 421) | private Map<String, String> calculateChildNamespaceToPublishConfigurat...
method calculateBranchModifiedItemsAccordingToRelease (line 440) | private Map<String, String> calculateBranchModifiedItemsAccordingToRel...
method batchDelete (line 465) | @Transactional
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/ConfigChangeContentBuilder.java
class ConfigChangeContentBuilder (line 15) | public class ConfigChangeContentBuilder {
method createItem (line 24) | public ConfigChangeContentBuilder createItem(Item item) {
method updateItem (line 31) | public ConfigChangeContentBuilder updateItem(Item oldItem, Item newIte...
method deleteItem (line 39) | public ConfigChangeContentBuilder deleteItem(Item item) {
method hasContent (line 46) | public boolean hasContent(){
method build (line 50) | public String build() {
class ItemPair (line 68) | static class ItemPair {
method ItemPair (line 73) | public ItemPair(Item oldItem, Item newItem) {
method cloneItem (line 79) | Item cloneItem(Item source) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/EntityManagerUtil.java
class EntityManagerUtil (line 14) | @Component
method closeEntityManager (line 22) | public void closeEntityManager() {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/ReleaseKeyGenerator.java
class ReleaseKeyGenerator (line 10) | public class ReleaseKeyGenerator extends UniqueKeyGenerator {
method generateReleaseKey (line 19) | public static String generateReleaseKey(Namespace namespace) {
FILE: open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/ReleaseMessageKeyGenerator.java
class ReleaseMessageKeyGenerator (line 8) | public class ReleaseMessageKeyGenerator {
method generate (line 12) | public static String generate(String appId, String cluster, String nam...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/Config.java
type Config (line 10) | public interface Config {
method getProperty (line 18) | public String getProperty(String key, String defaultValue);
method getIntProperty (line 28) | public Integer getIntProperty(String key, Integer defaultValue);
method getLongProperty (line 38) | public Long getLongProperty(String key, Long defaultValue);
method getShortProperty (line 48) | public Short getShortProperty(String key, Short defaultValue);
method getFloatProperty (line 58) | public Float getFloatProperty(String key, Float defaultValue);
method getDoubleProperty (line 68) | public Double getDoubleProperty(String key, Double defaultValue);
method getByteProperty (line 78) | public Byte getByteProperty(String key, Byte defaultValue);
method getBooleanProperty (line 88) | public Boolean getBooleanProperty(String key, Boolean defaultValue);
method getArrayProperty (line 97) | public String[] getArrayProperty(String key, String delimiter, String[...
method getDateProperty (line 108) | public Date getDateProperty(String key, Date defaultValue);
method getDateProperty (line 120) | public Date getDateProperty(String key, String format, Date defaultVal...
method getDateProperty (line 132) | public Date getDateProperty(String key, String format, Locale locale, ...
method getEnumProperty (line 143) | public <T extends Enum<T>> T getEnumProperty(String key, Class<T> enum...
method getDurationProperty (line 162) | public long getDurationProperty(String key, long defaultValue);
method addChangeListener (line 169) | public void addChangeListener(ConfigChangeListener listener);
method getPropertyNames (line 176) | public Set<String> getPropertyNames();
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigChangeListener.java
type ConfigChangeListener (line 8) | public interface ConfigChangeListener {
method onChange (line 13) | public void onChange(ConfigChangeEvent changeEvent);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigFile.java
type ConfigFile (line 8) | public interface ConfigFile {
method getContent (line 13) | String getContent();
method hasContent (line 19) | boolean hasContent();
method getNamespace (line 25) | String getNamespace();
method getConfigFileFormat (line 31) | ConfigFileFormat getConfigFileFormat();
method addChangeListener (line 38) | void addChangeListener(ConfigFileChangeListener listener);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigFileChangeListener.java
type ConfigFileChangeListener (line 8) | public interface ConfigFileChangeListener {
method onChange (line 13) | void onChange(ConfigFileChangeEvent changeEvent);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigService.java
class ConfigService (line 15) | public class ConfigService {
method getManager (line 21) | private ConfigManager getManager() {
method getRegistry (line 33) | private ConfigRegistry getRegistry() {
method getAppConfig (line 50) | public static Config getAppConfig() {
method getConfig (line 60) | public static Config getConfig(String namespace) {
method getConfigFile (line 64) | public static ConfigFile getConfigFile(String namespace, ConfigFileFor...
method setConfig (line 68) | static void setConfig(Config config) {
method setConfig (line 78) | static void setConfig(String namespace, final Config config) {
method setConfigFactory (line 93) | static void setConfigFactory(ConfigFactory factory) {
method setConfigFactory (line 103) | static void setConfigFactory(String namespace, ConfigFactory factory) {
method reset (line 108) | static void reset() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/build/ApolloInjector.java
class ApolloInjector (line 11) | public class ApolloInjector {
method getInjector (line 15) | private static Injector getInjector() {
method getInstance (line 33) | public static <T> T getInstance(Class<T> clazz) {
method getInstance (line 42) | public static <T> T getInstance(Class<T> clazz, String name) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/enums/PropertyChangeType.java
type PropertyChangeType (line 7) | public enum PropertyChangeType {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/exceptions/ApolloConfigException.java
class ApolloConfigException (line 6) | public class ApolloConfigException extends RuntimeException {
method ApolloConfigException (line 7) | public ApolloConfigException(String message) {
method ApolloConfigException (line 11) | public ApolloConfigException(String message, Throwable cause) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/exceptions/ApolloConfigStatusCodeException.java
class ApolloConfigStatusCodeException (line 6) | public class ApolloConfigStatusCodeException extends RuntimeException{
method ApolloConfigStatusCodeException (line 9) | public ApolloConfigStatusCodeException(int statusCode, String message) {
method getStatusCode (line 14) | public int getStatusCode() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfig.java
class AbstractConfig (line 40) | public abstract class AbstractConfig implements Config {
method AbstractConfig (line 65) | public AbstractConfig() {
method addChangeListener (line 72) | @Override
method getIntProperty (line 79) | @Override
method getLongProperty (line 99) | @Override
method getShortProperty (line 119) | @Override
method getFloatProperty (line 139) | @Override
method getDoubleProperty (line 159) | @Override
method getByteProperty (line 179) | @Override
method getBooleanProperty (line 199) | @Override
method getArrayProperty (line 219) | @Override
method getEnumProperty (line 250) | @Override
method getDateProperty (line 267) | @Override
method getDateProperty (line 288) | @Override
method getDateProperty (line 305) | @Override
method getDurationProperty (line 322) | @Override
method getValueFromCache (line 343) | private <T> T getValueFromCache(String key, Function<String, T> parser...
method getValueAndStoreToCache (line 353) | private <T> T getValueAndStoreToCache(String key, Function<String, T> ...
method newCache (line 373) | private <T> Cache<String, T> newCache() {
method clearConfigCache (line 385) | protected void clearConfigCache() {
method fireConfigChange (line 396) | protected void fireConfigChange(final ConfigChangeEvent changeEvent) {
method calcPropertyChanges (line 418) | List<ConfigChange> calcPropertyChanges(String namespace, Properties pr...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfigFile.java
class AbstractConfigFile (line 26) | public abstract class AbstractConfigFile implements ConfigFile, Reposito...
method AbstractConfigFile (line 39) | public AbstractConfigFile(String namespace, ConfigRepository configRep...
method initialize (line 46) | private void initialize() {
method getNamespace (line 60) | @Override
method update (line 65) | protected abstract void update(Properties newProperties);
method onRepositoryChange (line 67) | @Override
method addChangeListener (line 94) | @Override
method fireConfigChange (line 101) | private void fireConfigChange(final ConfigFileChangeEvent changeEvent) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfigRepository.java
class AbstractConfigRepository (line 16) | public abstract class AbstractConfigRepository implements ConfigReposito...
method trySync (line 20) | protected boolean trySync() {
method sync (line 33) | protected abstract void sync();
method addChangeListener (line 35) | @Override
method removeChangeListener (line 42) | @Override
method fireRepositoryChange (line 47) | protected void fireRepositoryChange(String namespace, Properties newPr...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigManager.java
type ConfigManager (line 10) | public interface ConfigManager {
method getConfig (line 16) | public Config getConfig(String namespace);
method getConfigFile (line 24) | public ConfigFile getConfigFile(String namespace, ConfigFileFormat con...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigRepository.java
type ConfigRepository (line 8) | public interface ConfigRepository {
method getConfig (line 13) | public Properties getConfig();
method setUpstreamRepository (line 19) | public void setUpstreamRepository(ConfigRepository upstreamConfigRepos...
method addChangeListener (line 25) | public void addChangeListener(RepositoryChangeListener listener);
method removeChangeListener (line 31) | public void removeChangeListener(RepositoryChangeListener listener);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigServiceLocator.java
class ConfigServiceLocator (line 32) | public class ConfigServiceLocator {
method ConfigServiceLocator (line 45) | public ConfigServiceLocator() {
method getConfigServices (line 63) | public List<ServiceDTO> getConfigServices() {
method tryUpdateConfigServices (line 71) | private boolean tryUpdateConfigServices() {
method schedulePeriodicRefresh (line 81) | private void schedulePeriodicRefresh() {
method updateConfigServices (line 94) | private synchronized void updateConfigServices() {
method assembleMetaServiceUrl (line 134) | private String assembleMetaServiceUrl() {
method logConfigServices (line 148) | private void logConfigServices(List<ServiceDTO> serviceDtos) {
method logConfigService (line 154) | private void logConfigService(String serviceUrl) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfig.java
class DefaultConfig (line 29) | public class DefaultConfig extends AbstractConfig implements RepositoryC...
method DefaultConfig (line 43) | public DefaultConfig(String namespace, ConfigRepository configReposito...
method initialize (line 52) | private void initialize() {
method getProperty (line 66) | @Override
method getPropertyNames (line 97) | @Override
method onRepositoryChange (line 107) | @Override
method updateAndCalcConfigChanges (line 127) | private Map<String, ConfigChange> updateAndCalcConfigChanges(Propertie...
method loadFromResource (line 180) | private Properties loadFromResource(String namespace) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfigManager.java
class DefaultConfigManager (line 16) | public class DefaultConfigManager implements ConfigManager {
method DefaultConfigManager (line 22) | public DefaultConfigManager() {
method getConfig (line 26) | @Override
method getConfigFile (line 46) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultInjector.java
class DefaultInjector (line 24) | public class DefaultInjector implements Injector {
method DefaultInjector (line 27) | public DefaultInjector() {
method getInstance (line 37) | @Override
method getInstance (line 48) | @Override
class ApolloModule (line 54) | private static class ApolloModule extends AbstractModule {
method configure (line 55) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/Injector.java
type Injector (line 6) | public interface Injector {
method getInstance (line 11) | <T> T getInstance(Class<T> clazz);
method getInstance (line 16) | <T> T getInstance(Class<T> clazz, String name);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/JsonConfigFile.java
class JsonConfigFile (line 8) | public class JsonConfigFile extends PlainTextConfigFile {
method JsonConfigFile (line 9) | public JsonConfigFile(String namespace,
method getConfigFileFormat (line 14) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java
class LocalFileConfigRepository (line 31) | public class LocalFileConfigRepository extends AbstractConfigRepository
method LocalFileConfigRepository (line 46) | public LocalFileConfigRepository(String namespace) {
method LocalFileConfigRepository (line 50) | public LocalFileConfigRepository(String namespace, ConfigRepository up...
method setLocalCacheDir (line 58) | void setLocalCacheDir(File baseDir, boolean syncImmediately) {
method findLocalCacheDir (line 66) | private File findLocalCacheDir() {
method getConfig (line 83) | @Override
method setUpstreamRepository (line 93) | @Override
method onRepositoryChange (line 107) | @Override
method sync (line 118) | @Override
method trySyncFromUpstream (line 148) | private boolean trySyncFromUpstream() {
method updateFileProperties (line 165) | private synchronized void updateFileProperties(Properties newPropertie...
method loadFromLocalCacheFile (line 173) | private Properties loadFromLocalCacheFile(File baseDir, String namespa...
method persistLocalCacheFile (line 209) | void persistLocalCacheFile(File baseDir, String namespace) {
method checkLocalConfigCacheDir (line 243) | private void checkLocalConfigCacheDir(File baseDir) {
method assembleLocalCacheFile (line 267) | File assembleLocalCacheFile(File baseDir, String namespace) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/PlainTextConfigFile.java
class PlainTextConfigFile (line 9) | public abstract class PlainTextConfigFile extends AbstractConfigFile {
method PlainTextConfigFile (line 11) | public PlainTextConfigFile(String namespace, ConfigRepository configRe...
method getContent (line 15) | @Override
method hasContent (line 23) | @Override
method update (line 31) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/PropertiesConfigFile.java
class PropertiesConfigFile (line 18) | public class PropertiesConfigFile extends AbstractConfigFile {
method PropertiesConfigFile (line 22) | public PropertiesConfigFile(String namespace,
method update (line 28) | @Override
method getContent (line 34) | @Override
method doGetContent (line 42) | String doGetContent() {
method hasContent (line 59) | @Override
method getConfigFileFormat (line 64) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigLongPollService.java
class RemoteConfigLongPollService (line 51) | public class RemoteConfigLongPollService {
method RemoteConfigLongPollService (line 74) | public RemoteConfigLongPollService() {
method submit (line 93) | public boolean submit(String namespace, RemoteConfigRepository remoteC...
method startLongPolling (line 102) | private void startLongPolling() {
method stopLongPollingRefresh (line 135) | void stopLongPollingRefresh() {
method doLongPollingRefresh (line 139) | private void doLongPollingRefresh(String appId, String cluster, String...
method notify (line 207) | private void notify(ServiceDTO lastServiceDto, List<ApolloConfigNotifi...
method updateNotifications (line 231) | private void updateNotifications(List<ApolloConfigNotification> deltaN...
method updateRemoteNotifications (line 249) | private void updateRemoteNotifications(List<ApolloConfigNotification> ...
method assembleNamespaces (line 270) | private String assembleNamespaces() {
method assembleLongPollRefreshUrl (line 274) | String assembleLongPollRefreshUrl(String uri, String appId, String clu...
method assembleNotifications (line 298) | String assembleNotifications(Map<String, Long> notificationsMap) {
method getConfigServices (line 307) | private List<ServiceDTO> getConfigServices() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigRepository.java
class RemoteConfigRepository (line 46) | public class RemoteConfigRepository extends AbstractConfigRepository {
method RemoteConfigRepository (line 76) | public RemoteConfigRepository(String namespace) {
method getConfig (line 95) | @Override
method setUpstreamRepository (line 103) | @Override
method schedulePeriodicRefresh (line 108) | private void schedulePeriodicRefresh() {
method sync (line 124) | @Override
method transformApolloConfigToProperties (line 153) | private Properties transformApolloConfigToProperties(ApolloConfig apol...
method loadApolloConfig (line 159) | private ApolloConfig loadApolloConfig() {
method assembleQueryConfigUrl (line 259) | String assembleQueryConfigUrl(String uri, String appId, String cluster...
method scheduleLongPollingRefresh (line 296) | private void scheduleLongPollingRefresh() {
method onLongPollNotified (line 300) | public void onLongPollNotified(ServiceDTO longPollNotifiedServiceDto, ...
method getConfigServices (line 312) | private List<ServiceDTO> getConfigServices() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RepositoryChangeListener.java
type RepositoryChangeListener (line 8) | public interface RepositoryChangeListener {
method onRepositoryChange (line 14) | public void onRepositoryChange(String namespace, Properties newPropert...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/SimpleConfig.java
class SimpleConfig (line 22) | public class SimpleConfig extends AbstractConfig implements RepositoryCh...
method SimpleConfig (line 34) | public SimpleConfig(String namespace, ConfigRepository configRepositor...
method initialize (line 40) | private void initialize() {
method getProperty (line 54) | @Override
method getPropertyNames (line 63) | @Override
method onRepositoryChange (line 72) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/XmlConfigFile.java
class XmlConfigFile (line 8) | public class XmlConfigFile extends PlainTextConfigFile {
method XmlConfigFile (line 9) | public XmlConfigFile(String namespace,
method getConfigFileFormat (line 14) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/YamlConfigFile.java
class YamlConfigFile (line 8) | public class YamlConfigFile extends PlainTextConfigFile {
method YamlConfigFile (line 9) | public YamlConfigFile(String namespace, ConfigRepository configReposit...
method getConfigFileFormat (line 13) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/YmlConfigFile.java
class YmlConfigFile (line 8) | public class YmlConfigFile extends PlainTextConfigFile {
method YmlConfigFile (line 9) | public YmlConfigFile(String namespace, ConfigRepository configReposito...
method getConfigFileFormat (line 13) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/model/ConfigChange.java
class ConfigChange (line 10) | public class ConfigChange {
method ConfigChange (line 25) | public ConfigChange(String namespace, String propertyName, String oldV...
method getPropertyName (line 34) | public String getPropertyName() {
method getOldValue (line 38) | public String getOldValue() {
method getNewValue (line 42) | public String getNewValue() {
method getChangeType (line 46) | public PropertyChangeType getChangeType() {
method setOldValue (line 50) | public void setOldValue(String oldValue) {
method setNewValue (line 54) | public void setNewValue(String newValue) {
method setChangeType (line 58) | public void setChangeType(PropertyChangeType changeType) {
method getNamespace (line 62) | public String getNamespace() {
method toString (line 66) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/model/ConfigChangeEvent.java
class ConfigChangeEvent (line 10) | public class ConfigChangeEvent {
method ConfigChangeEvent (line 19) | public ConfigChangeEvent(String namespace,
method changedKeys (line 29) | public Set<String> changedKeys() {
method getChange (line 38) | public ConfigChange getChange(String key) {
method isChanged (line 47) | public boolean isChanged(String key) {
method getNamespace (line 55) | public String getNamespace() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/model/ConfigFileChangeEvent.java
class ConfigFileChangeEvent (line 8) | public class ConfigFileChangeEvent {
method ConfigFileChangeEvent (line 22) | public ConfigFileChangeEvent(String namespace, String oldValue, String...
method getNamespace (line 30) | public String getNamespace() {
method getOldValue (line 34) | public String getOldValue() {
method getNewValue (line 38) | public String getNewValue() {
method getChangeType (line 42) | public PropertyChangeType getChangeType() {
method toString (line 46) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/ConfigFactory.java
type ConfigFactory (line 10) | public interface ConfigFactory {
method create (line 17) | public Config create(String namespace);
method createConfigFile (line 24) | public ConfigFile createConfigFile(String namespace, ConfigFileFormat ...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/ConfigFactoryManager.java
type ConfigFactoryManager (line 6) | public interface ConfigFactoryManager {
method getFactory (line 13) | public ConfigFactory getFactory(String namespace);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/ConfigRegistry.java
type ConfigRegistry (line 8) | public interface ConfigRegistry {
method register (line 15) | public void register(String namespace, ConfigFactory factory);
method getFactory (line 23) | public ConfigFactory getFactory(String namespace);
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
class DefaultConfigFactory (line 24) | public class DefaultConfigFactory implements ConfigFactory {
method DefaultConfigFactory (line 28) | public DefaultConfigFactory() {
method create (line 32) | @Override
method createConfigFile (line 39) | @Override
method createLocalConfigRepository (line 58) | LocalFileConfigRepository createLocalConfigRepository(String namespace) {
method createRemoteConfigRepository (line 68) | RemoteConfigRepository createRemoteConfigRepository(String namespace) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactoryManager.java
class DefaultConfigFactoryManager (line 11) | public class DefaultConfigFactoryManager implements ConfigFactoryManager {
method DefaultConfigFactoryManager (line 16) | public DefaultConfigFactoryManager() {
method getFactory (line 20) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigRegistry.java
class DefaultConfigRegistry (line 13) | public class DefaultConfigRegistry implements ConfigRegistry {
method register (line 17) | @Override
method getFactory (line 26) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloAnnotationProcessor.java
class ApolloAnnotationProcessor (line 24) | public class ApolloAnnotationProcessor implements BeanPostProcessor, Pri...
method postProcessBeforeInitialization (line 25) | @Override
method postProcessAfterInitialization (line 33) | @Override
method processFields (line 38) | private void processFields(Object bean, Field[] declaredFields) {
method processMethods (line 56) | private void processMethods(final Object bean, Method[] declaredMethod...
method getOrder (line 84) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloConfigRegistrar.java
class ApolloConfigRegistrar (line 17) | public class ApolloConfigRegistrar implements ImportBeanDefinitionRegist...
method registerBeanDefinitions (line 18) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java
class SpringValueProcessor (line 55) | public class SpringValueProcessor implements BeanPostProcessor, Priority...
method SpringValueProcessor (line 72) | public SpringValueProcessor() {
method setBeanFactory (line 79) | @Override
method setEnvironment (line 85) | @Override
method postProcessBeanFactory (line 90) | @Override
method postProcessBeforeInitialization (line 98) | @Override
method postProcessAfterInitialization (line 110) | @Override
method processFields (line 115) | private void processFields(Object bean, String beanName, List<Field> d...
method processMethods (line 136) | private void processMethods(final Object bean, String beanName, List<M...
method processBeanPropertyValues (line 167) | private void processBeanPropertyValues(Object bean, String beanName) {
method findAllField (line 196) | private List<Field> findAllField(Class clazz) {
method findAllMethod (line 207) | private List<Method> findAllMethod(Class clazz) {
method registerConfigChangeListener (line 218) | private void registerConfigChangeListener() {
method updateSpringValue (line 254) | private void updateSpringValue(SpringValue springValue) {
method resolvePropertyValue (line 270) | private Object resolvePropertyValue(SpringValue springValue) {
method evaluateBeanDefinitionString (line 294) | private Object evaluateBeanDefinitionString(String value, BeanDefiniti...
method testTypeConverterHasConvertIfNecessaryWithFieldParameter (line 302) | private boolean testTypeConverterHasConvertIfNecessaryWithFieldParamet...
method getOrder (line 312) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java
class ApolloApplicationContextInitializer (line 35) | public class ApolloApplicationContextInitializer implements
method initialize (line 43) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/boot/ApolloAutoConfiguration.java
class ApolloAutoConfiguration (line 11) | @Configuration
method configPropertySourcesProcessor (line 16) | @Bean
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/ConfigPropertySource.java
class ConfigPropertySource (line 15) | public class ConfigPropertySource extends EnumerablePropertySource<Confi...
method ConfigPropertySource (line 18) | ConfigPropertySource(String name, Config source) {
method getPropertyNames (line 22) | @Override
method getProperty (line 31) | @Override
method addChangeListener (line 36) | public void addChangeListener(ConfigChangeListener listener) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/ConfigPropertySourceFactory.java
class ConfigPropertySourceFactory (line 8) | public class ConfigPropertySourceFactory {
method getConfigPropertySource (line 12) | public ConfigPropertySource getConfigPropertySource(String name, Confi...
method getAllConfigPropertySources (line 20) | public List<ConfigPropertySource> getAllConfigPropertySources() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/ConfigPropertySourcesProcessor.java
class ConfigPropertySourcesProcessor (line 18) | public class ConfigPropertySourcesProcessor extends PropertySourcesProce...
method postProcessBeanDefinitionRegistry (line 21) | @Override
method processSpringValueDefinition (line 37) | private void processSpringValueDefinition(BeanDefinitionRegistry regis...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/NamespaceHandler.java
class NamespaceHandler (line 16) | public class NamespaceHandler extends NamespaceHandlerSupport {
method init (line 19) | @Override
class BeanParser (line 24) | static class BeanParser extends AbstractSingleBeanDefinitionParser {
method getBeanClass (line 25) | @Override
method shouldGenerateId (line 30) | @Override
method doParse (line 35) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/PropertySourcesConstants.java
type PropertySourcesConstants (line 3) | public interface PropertySourcesConstants {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/PropertySourcesProcessor.java
class PropertySourcesProcessor (line 34) | public class PropertySourcesProcessor implements BeanFactoryPostProcesso...
method addNamespaces (line 41) | public static boolean addNamespaces(Collection<String> namespaces, int...
method postProcessBeanFactory (line 45) | @Override
method initializePropertySources (line 50) | protected void initializePropertySources() {
method setEnvironment (line 80) | @Override
method reset (line 87) | private static void reset() {
method getOrder (line 91) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/property/PlaceholderHelper.java
class PlaceholderHelper (line 20) | public class PlaceholderHelper {
method extractPlaceholderKeys (line 29) | public Set<String> extractPlaceholderKeys(String propertyString) {
method isNormalizedPlaceholder (line 85) | private boolean isNormalizedPlaceholder(String propertyString) {
method isExpressionWithPlaceholder (line 89) | private boolean isExpressionWithPlaceholder(String propertyString) {
method normalizeToPlaceholder (line 94) | private String normalizeToPlaceholder(String strVal) {
method findPlaceholderEndIndex (line 107) | private int findPlaceholderEndIndex(CharSequence buf, int startIndex) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/property/SpringValue.java
class SpringValue (line 14) | public class SpringValue {
method SpringValue (line 24) | public SpringValue(String key, String placeholder, Object bean, String...
method SpringValue (line 33) | public SpringValue(String key, String placeholder, Object bean, String...
method update (line 43) | public void update(Object newVal) throws IllegalAccessException, Invoc...
method injectField (line 51) | private void injectField(Object newVal) throws IllegalAccessException {
method injectMethod (line 58) | private void injectMethod(Object newVal)
method getBeanName (line 63) | public String getBeanName() {
method getTargetType (line 67) | public Class<?> getTargetType() {
method getPlaceholder (line 71) | public String getPlaceholder() {
method getMethodParameter (line 75) | public MethodParameter getMethodParameter() {
method isField (line 79) | public boolean isField() {
method getField (line 83) | public Field getField() {
method toString (line 87) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/property/SpringValueDefinition.java
class SpringValueDefinition (line 3) | public class SpringValueDefinition {
method SpringValueDefinition (line 9) | public SpringValueDefinition(String key, String placeholder, String pr...
method getKey (line 15) | public String getKey() {
method getPlaceholder (line 19) | public String getPlaceholder() {
method getPropertyName (line 23) | public String getPropertyName() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/property/SpringValueDefinitionProcessor.java
class SpringValueDefinitionProcessor (line 31) | public class SpringValueDefinitionProcessor implements BeanDefinitionReg...
method SpringValueDefinitionProcessor (line 39) | public SpringValueDefinitionProcessor() {
method postProcessBeanDefinitionRegistry (line 44) | @Override
method postProcessBeanFactory (line 51) | @Override
method getBeanName2SpringValueDefinitions (line 56) | public static Multimap<String, SpringValueDefinition> getBeanName2Spri...
method processPropertyValues (line 60) | private void processPropertyValues(BeanDefinitionRegistry beanRegistry) {
method reset (line 92) | private static void reset() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/util/BeanRegistrationUtil.java
class BeanRegistrationUtil (line 12) | public class BeanRegistrationUtil {
method registerBeanDefinitionIfNotExists (line 13) | public static boolean registerBeanDefinitionIfNotExists(BeanDefinition...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java
class ConfigUtil (line 19) | public class ConfigUtil {
method ConfigUtil (line 38) | public ConfigUtil() {
method getAppId (line 54) | public String getAppId() {
method getDataCenter (line 69) | public String getDataCenter() {
method initCluster (line 73) | private void initCluster() {
method getCluster (line 93) | public String getCluster() {
method getApolloEnv (line 103) | public Env getApolloEnv() {
method getLocalIp (line 115) | public String getLocalIp() {
method getMetaServerDomainName (line 119) | public String getMetaServerDomainName() {
method initConnectTimeout (line 123) | private void initConnectTimeout() {
method getConnectTimeout (line 134) | public int getConnectTimeout() {
method initReadTimeout (line 138) | private void initReadTimeout() {
method getReadTimeout (line 149) | public int getReadTimeout() {
method initRefreshInterval (line 153) | private void initRefreshInterval() {
method getRefreshInterval (line 164) | public int getRefreshInterval() {
method getRefreshIntervalTimeUnit (line 168) | public TimeUnit getRefreshIntervalTimeUnit() {
method initQPS (line 172) | private void initQPS() {
method getLoadConfigQPS (line 192) | public int getLoadConfigQPS() {
method getLongPollQPS (line 196) | public int getLongPollQPS() {
method getOnErrorRetryInterval (line 200) | public long getOnErrorRetryInterval() {
method getOnErrorRetryIntervalTimeUnit (line 204) | public TimeUnit getOnErrorRetryIntervalTimeUnit() {
method getDefaultLocalCacheDir (line 208) | public String getDefaultLocalCacheDir() {
method isInLocalMode (line 213) | public boolean isInLocalMode() {
method isOSWindows (line 223) | public boolean isOSWindows() {
method initMaxConfigCacheSize (line 231) | private void initMaxConfigCacheSize() {
method getMaxConfigCacheSize (line 242) | public long getMaxConfigCacheSize() {
method getConfigCacheExpireTime (line 246) | public long getConfigCacheExpireTime() {
method getConfigCacheExpireTimeUnit (line 250) | public TimeUnit getConfigCacheExpireTimeUnit() {
method initLongPollingInitialDelayInMills (line 254) | private void initLongPollingInitialDelayInMills() {
method getLongPollingInitialDelayInMills (line 265) | public long getLongPollingInitialDelayInMills() {
method initAutoUpdateInjectedSpringProperties (line 269) | private void initAutoUpdateInjectedSpringProperties() {
method isAutoUpdateInjectedSpringPropertiesEnabled (line 281) | public boolean isAutoUpdateInjectedSpringPropertiesEnabled() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/ExceptionUtil.java
class ExceptionUtil (line 11) | public class ExceptionUtil {
method getDetailMessage (line 17) | public static String getDetailMessage(Throwable ex) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/function/Functions.java
type Functions (line 13) | public interface Functions {
method apply (line 15) | @Override
method apply (line 21) | @Override
method apply (line 27) | @Override
method apply (line 33) | @Override
method apply (line 39) | @Override
method apply (line 45) | @Override
method apply (line 51) | @Override
method apply (line 57) | @Override
method apply (line 67) | @Override
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/http/HttpRequest.java
class HttpRequest (line 6) | public class HttpRequest {
method HttpRequest (line 15) | public HttpRequest(String url) {
method getUrl (line 21) | public String getUrl() {
method getConnectTimeout (line 25) | public int getConnectTimeout() {
method setConnectTimeout (line 29) | public void setConnectTimeout(int connectTimeout) {
method getReadTimeout (line 33) | public int getReadTimeout() {
method setReadTimeout (line 37) | public void setReadTimeout(int readTimeout) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/http/HttpResponse.java
class HttpResponse (line 6) | public class HttpResponse<T> {
method HttpResponse (line 10) | public HttpResponse(int statusCode, T body) {
method getStatusCode (line 15) | public int getStatusCode() {
method getBody (line 19) | public T getBody() {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/http/HttpUtil.java
class HttpUtil (line 21) | public class HttpUtil {
method HttpUtil (line 28) | public HttpUtil() {
method doGet (line 41) | public <T> HttpResponse<T> doGet(HttpRequest httpRequest, final Class<...
method doGet (line 60) | public <T> HttpResponse<T> doGet(HttpRequest httpRequest, final Type r...
method doGetWithSerializeFunction (line 71) | private <T> HttpResponse<T> doGetWithSerializeFunction(HttpRequest htt...
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/parser/ParserException.java
class ParserException (line 3) | public class ParserException extends Exception {
method ParserException (line 4) | public ParserException(String message) {
method ParserException (line 8) | public ParserException(String message, Throwable cause) {
FILE: open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/util/parser/Parsers.java
class Parsers (line 10) | public class Parsers {
method forDate (line 11) | public static DateParser forDate() {
method forDuration (line 15) | public static DurationParser forDuration() {
type DateParser (line 19) | public enum DateParser {
method parse (line 34) | public Date parse(String text) throws ParserException {
method parse (line 57) | public Date parse(String text, String format) throws ParserException {
method parse (line 70) | public Date parse(String text, String format, Locale locale) throws ...
method getDateFormat (line 80) | private SimpleDateFormat getDateFormat(String format, Locale locale) {
type DurationParser (line 85) | public enum DurationParser {
method parseToMillis (line 100) | public long parseToMillis(String text) throws ParserException {
method parseNumber (line 122) | private static int parseNumber(String parsed, int multiplier) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/ApolloCommonConfig.java
class ApolloCommonConfig (line 7) | @EnableAutoConfiguration
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/aop/RepositoryAspect.java
class RepositoryAspect (line 12) | @Aspect
method anyRepositoryMethod (line 16) | @Pointcut("execution(public * org.springframework.data.repository.Repo...
method invokeWithCatTransaction (line 20) | @Around("anyRepositoryMethod()")
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/condition/OnProfileCondition.java
class OnProfileCondition (line 17) | public class OnProfileCondition implements Condition {
method matches (line 18) | @Override
method retrieveAnnotatedProfiles (line 30) | private Set<String> retrieveAnnotatedProfiles(AnnotatedTypeMetadata me...
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/config/RefreshableConfig.java
class RefreshableConfig (line 23) | public abstract class RefreshableConfig {
method getRefreshablePropertySources (line 42) | protected abstract List<RefreshablePropertySource> getRefreshablePrope...
method setup (line 44) | @PostConstruct
method getIntProperty (line 74) | public int getIntProperty(String key, int defaultValue) {
method getBooleanProperty (line 84) | public boolean getBooleanProperty(String key, boolean defaultValue) {
method getArrayProperty (line 94) | public String[] getArrayProperty(String key, String[] defaultValue) {
method getValue (line 104) | public String getValue(String key, String defaultValue) {
method getValue (line 113) | public String getValue(String key) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/config/RefreshablePropertySource.java
class RefreshablePropertySource (line 7) | public abstract class RefreshablePropertySource extends MapPropertySource {
method RefreshablePropertySource (line 10) | public RefreshablePropertySource(String name, Map<String, Object> sour...
method getProperty (line 14) | @Override
method refresh (line 22) | protected abstract void refresh();
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/constants/GsonType.java
type GsonType (line 11) | public interface GsonType {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/constants/NamespaceBranchStatus.java
type NamespaceBranchStatus (line 3) | public interface NamespaceBranchStatus {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/constants/ReleaseOperation.java
type ReleaseOperation (line 6) | public interface ReleaseOperation {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/constants/ReleaseOperationContext.java
type ReleaseOperationContext (line 6) | public interface ReleaseOperationContext {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/controller/ApolloInfoController.java
class ApolloInfoController (line 9) | @RestController
method getApp (line 13) | @RequestMapping("app")
method getNet (line 18) | @RequestMapping("net")
method getServer (line 23) | @RequestMapping("server")
method getVersion (line 28) | @RequestMapping("version")
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/controller/CharacterEncodingFilterConfiguration.java
class CharacterEncodingFilterConfiguration (line 10) | @Configuration
method encodingFilter (line 13) | @Bean
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/controller/GlobalDefaultExceptionHandler.java
class GlobalDefaultExceptionHandler (line 35) | @ControllerAdvice
method exception (line 44) | @ExceptionHandler(Throwable.class)
method badRequest (line 49) | @ExceptionHandler({HttpRequestMethodNotSupportedException.class, HttpM...
method restTemplateException (line 55) | @ExceptionHandler(HttpStatusCodeException.class)
method accessDeny (line 61) | @ExceptionHandler(AccessDeniedException.class)
method badRequest (line 68) | @ExceptionHandler({AbstractApolloHttpException.class})
method handleError (line 74) | private ResponseEntity<Map<String, Object>> handleError(HttpServletReq...
method handleError (line 80) | private ResponseEntity<Map<String, Object>> handleError(HttpServletReq...
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/controller/HttpMessageConverterConfiguration.java
class HttpMessageConverterConfiguration (line 20) | @Configuration
method messageConverters (line 22) | @Bean
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/controller/WebMvcConfig.java
class WebMvcConfig (line 16) | @Configuration
method addArgumentResolvers (line 19) | @Override
method configureContentNegotiation (line 28) | @Override
method customize (line 34) | @Override
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/customize/LoggingCustomizer.java
class LoggingCustomizer (line 21) | public abstract class LoggingCustomizer implements InitializingBean {
method afterPropertiesSet (line 28) | @Override
method tryConfigCLogging (line 43) | private void tryConfigCLogging() throws Exception {
method cloggingUrl (line 75) | protected abstract String cloggingUrl();
method cloggingPort (line 81) | protected abstract String cloggingPort();
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/customize/TomcatContainerCustomizer.java
class TomcatContainerCustomizer (line 19) | @Component
method customize (line 26) | @Override
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/datasource/TitanCondition.java
class TitanCondition (line 9) | public class TitanCondition implements Condition {
method matches (line 11) | @Override
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/datasource/TitanEntityManager.java
class TitanEntityManager (line 14) | @Component
method datasource (line 21) | @SuppressWarnings({"rawtypes", "unchecked"})
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/datasource/TitanSettings.java
class TitanSettings (line 10) | @Component
method getTitanUrl (line 31) | public String getTitanUrl() {
method getTitanDbname (line 50) | public String getTitanDbname() {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/AppDTO.java
class AppDTO (line 3) | public class AppDTO extends BaseDTO{
method getId (line 19) | public long getId() {
method setId (line 23) | public void setId(long id) {
method getAppId (line 27) | public String getAppId() {
method getName (line 31) | public String getName() {
method getOrgId (line 35) | public String getOrgId() {
method getOrgName (line 39) | public String getOrgName() {
method getOwnerEmail (line 43) | public String getOwnerEmail() {
method getOwnerName (line 47) | public String getOwnerName() {
method setAppId (line 51) | public void setAppId(String appId) {
method setName (line 55) | public void setName(String name) {
method setOrgId (line 59) | public void setOrgId(String orgId) {
method setOrgName (line 63) | public void setOrgName(String orgName) {
method setOwnerEmail (line 67) | public void setOwnerEmail(String ownerEmail) {
method setOwnerName (line 71) | public void setOwnerName(String ownerName) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/AppNamespaceDTO.java
class AppNamespaceDTO (line 4) | public class AppNamespaceDTO extends BaseDTO{
method getId (line 17) | public long getId() {
method setId (line 21) | public void setId(long id) {
method getName (line 25) | public String getName() {
method setName (line 29) | public void setName(String name) {
method getAppId (line 33) | public String getAppId() {
method setAppId (line 37) | public void setAppId(String appId) {
method getFormat (line 41) | public String getFormat() {
method setFormat (line 45) | public void setFormat(String format) {
method isPublic (line 49) | public boolean isPublic() {
method setPublic (line 53) | public void setPublic(boolean aPublic) {
method getComment (line 57) | public String getComment() {
method setComment (line 61) | public void setComment(String comment) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/BaseDTO.java
class BaseDTO (line 6) | public class BaseDTO {
method getDataChangeCreatedBy (line 16) | public String getDataChangeCreatedBy() {
method setDataChangeCreatedBy (line 20) | public void setDataChangeCreatedBy(String dataChangeCreatedBy) {
method getDataChangeLastModifiedBy (line 24) | public String getDataChangeLastModifiedBy() {
method setDataChangeLastModifiedBy (line 28) | public void setDataChangeLastModifiedBy(String dataChangeLastModifiedB...
method getDataChangeCreatedTime (line 32) | public Date getDataChangeCreatedTime() {
method setDataChangeCreatedTime (line 36) | public void setDataChangeCreatedTime(Date dataChangeCreatedTime) {
method getDataChangeLastModifiedTime (line 40) | public Date getDataChangeLastModifiedTime() {
method setDataChangeLastModifiedTime (line 44) | public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedT...
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/ClusterDTO.java
class ClusterDTO (line 3) | public class ClusterDTO extends BaseDTO{
method getId (line 13) | public long getId() {
method setId (line 17) | public void setId(long id) {
method getName (line 21) | public String getName() {
method setName (line 25) | public void setName(String name) {
method getAppId (line 29) | public String getAppId() {
method setAppId (line 33) | public void setAppId(String appId) {
method getParentClusterId (line 37) | public long getParentClusterId() {
method setParentClusterId (line 41) | public void setParentClusterId(long parentClusterId) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/CommitDTO.java
class CommitDTO (line 3) | public class CommitDTO extends BaseDTO{
method getChangeSets (line 15) | public String getChangeSets() {
method setChangeSets (line 19) | public void setChangeSets(String changeSets) {
method getAppId (line 23) | public String getAppId() {
method setAppId (line 27) | public void setAppId(String appId) {
method getClusterName (line 31) | public String getClusterName() {
method setClusterName (line 35) | public void setClusterName(String clusterName) {
method getNamespaceName (line 39) | public String getNamespaceName() {
method setNamespaceName (line 43) | public void setNamespaceName(String namespaceName) {
method getComment (line 47) | public String getComment() {
method setComment (line 51) | public void setComment(String comment) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/GrayReleaseRuleDTO.java
class GrayReleaseRuleDTO (line 8) | public class GrayReleaseRuleDTO extends BaseDTO {
method GrayReleaseRuleDTO (line 22) | public GrayReleaseRuleDTO(String appId, String clusterName, String nam...
method getAppId (line 30) | public String getAppId() {
method getClusterName (line 34) | public String getClusterName() {
method getNamespaceName (line 38) | public String getNamespaceName() {
method getBranchName (line 42) | public String getBranchName() {
method getRuleItems (line 46) | public Set<GrayReleaseRuleItemDTO> getRuleItems() {
method setRuleItems (line 50) | public void setRuleItems(Set<GrayReleaseRuleItemDTO> ruleItems) {
method addRuleItem (line 54) | public void addRuleItem(GrayReleaseRuleItemDTO ruleItem) {
method getReleaseId (line 58) | public Long getReleaseId() {
method setReleaseId (line 62) | public void setReleaseId(Long releaseId) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/GrayReleaseRuleItemDTO.java
class GrayReleaseRuleItemDTO (line 12) | public class GrayReleaseRuleItemDTO {
method GrayReleaseRuleItemDTO (line 18) | public GrayReleaseRuleItemDTO(String clientAppId) {
method GrayReleaseRuleItemDTO (line 22) | public GrayReleaseRuleItemDTO(String clientAppId, Set<String> clientIp...
method getClientAppId (line 27) | public String getClientAppId() {
method getClientIpList (line 31) | public Set<String> getClientIpList() {
method matches (line 35) | public boolean matches(String clientAppId, String clientIp) {
method appIdMatches (line 39) | private boolean appIdMatches(String clientAppId) {
method ipMatches (line 43) | private boolean ipMatches(String clientIp) {
method toString (line 47) | @Override
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/InstanceConfigDTO.java
class InstanceConfigDTO (line 8) | public class InstanceConfigDTO {
method getRelease (line 13) | public ReleaseDTO getRelease() {
method setRelease (line 17) | public void setRelease(ReleaseDTO release) {
method getDataChangeLastModifiedTime (line 21) | public Date getDataChangeLastModifiedTime() {
method setDataChangeLastModifiedTime (line 25) | public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedT...
method getReleaseDeliveryTime (line 29) | public Date getReleaseDeliveryTime() {
method setReleaseDeliveryTime (line 33) | public void setReleaseDeliveryTime(Date releaseDeliveryTime) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/InstanceDTO.java
class InstanceDTO (line 9) | public class InstanceDTO {
method getId (line 24) | public long getId() {
method setId (line 28) | public void setId(long id) {
method getAppId (line 32) | public String getAppId() {
method setAppId (line 36) | public void setAppId(String appId) {
method getClusterName (line 40) | public String getClusterName() {
method setClusterName (line 44) | public void setClusterName(String clusterName) {
method getDataCenter (line 48) | public String getDataCenter() {
method setDataCenter (line 52) | public void setDataCenter(String dataCenter) {
method getIp (line 56) | public String getIp() {
method setIp (line 60) | public void setIp(String ip) {
method getConfigs (line 64) | public List<InstanceConfigDTO> getConfigs() {
method setConfigs (line 68) | public void setConfigs(List<InstanceConfigDTO> configs) {
method getDataChangeCreatedTime (line 72) | public Date getDataChangeCreatedTime() {
method setDataChangeCreatedTime (line 76) | public void setDataChangeCreatedTime(Date dataChangeCreatedTime) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/ItemChangeSets.java
class ItemChangeSets (line 9) | public class ItemChangeSets extends BaseDTO{
method addCreateItem (line 15) | public void addCreateItem(ItemDTO item) {
method addUpdateItem (line 19) | public void addUpdateItem(ItemDTO item) {
method addDeleteItem (line 23) | public void addDeleteItem(ItemDTO item) {
method isEmpty (line 27) | public boolean isEmpty(){
method getCreateItems (line 31) | public List<ItemDTO> getCreateItems() {
method getUpdateItems (line 35) | public List<ItemDTO> getUpdateItems() {
method getDeleteItems (line 39) | public List<ItemDTO> getDeleteItems() {
method setCreateItems (line 43) | public void setCreateItems(List<ItemDTO> createItems) {
method setUpdateItems (line 47) | public void setUpdateItems(List<ItemDTO> updateItems) {
method setDeleteItems (line 51) | public void setDeleteItems(List<ItemDTO> deleteItems) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/ItemDTO.java
class ItemDTO (line 4) | public class ItemDTO extends BaseDTO{
method ItemDTO (line 18) | public ItemDTO() {
method ItemDTO (line 22) | public ItemDTO(String key, String value, String comment, int lineNum) {
method getId (line 29) | public long getId() {
method setId (line 33) | public void setId(long id) {
method getComment (line 37) | public String getComment() {
method getKey (line 41) | public String getKey() {
method getNamespaceId (line 45) | public long getNamespaceId() {
method getValue (line 49) | public String getValue() {
method setComment (line 53) | public void setComment(String comment) {
method setKey (line 57) | public void setKey(String key) {
method setNamespaceId (line 61) | public void setNamespaceId(long namespaceId) {
method setValue (line 65) | public void setValue(String value) {
method getLineNum (line 69) | public int getLineNum() {
method setLineNum (line 73) | public void setLineNum(int lineNum) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/NamespaceDTO.java
class NamespaceDTO (line 3) | public class NamespaceDTO extends BaseDTO{
method getId (line 12) | public long getId() {
method setId (line 16) | public void setId(long id) {
method getAppId (line 20) | public String getAppId() {
method getClusterName (line 24) | public String getClusterName() {
method getNamespaceName (line 28) | public String getNamespaceName() {
method setAppId (line 32) | public void setAppId(String appId) {
method setClusterName (line 36) | public void setClusterName(String clusterName) {
method setNamespaceName (line 40) | public void setNamespaceName(String namespaceName) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/NamespaceLockDTO.java
class NamespaceLockDTO (line 3) | public class NamespaceLockDTO extends BaseDTO{
method getNamespaceId (line 7) | public long getNamespaceId() {
method setNamespaceId (line 11) | public void setNamespaceId(long namespaceId) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/PageDTO.java
class PageDTO (line 11) | public class PageDTO<T> {
method PageDTO (line 17) | public PageDTO(List<T> content, Pageable pageable, long total) {
method getTotal (line 25) | public long getTotal() {
method getContent (line 29) | public List<T> getContent() {
method getPage (line 33) | public int getPage() {
method getSize (line 37) | public int getSize() {
method hasContent (line 41) | public boolean hasContent(){
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/ReleaseDTO.java
class ReleaseDTO (line 3) | public class ReleaseDTO extends BaseDTO{
method getId (line 22) | public long getId() {
method setId (line 26) | public void setId(long id) {
method getReleaseKey (line 30) | public String getReleaseKey() {
method setReleaseKey (line 34) | public void setReleaseKey(String releaseKey) {
method getAppId (line 38) | public String getAppId() {
method getClusterName (line 42) | public String getClusterName() {
method getComment (line 46) | public String getComment() {
method getConfigurations (line 50) | public String getConfigurations() {
method getName (line 54) | public String getName() {
method getNamespaceName (line 58) | public String getNamespaceName() {
method setAppId (line 62) | public void setAppId(String appId) {
method setClusterName (line 66) | public void setClusterName(String clusterName) {
method setComment (line 70) | public void setComment(String comment) {
method setConfigurations (line 74) | public void setConfigurations(String configurations) {
method setName (line 78) | public void setName(String name) {
method setNamespaceName (line 82) | public void setNamespaceName(String namespaceName) {
method isAbandoned (line 86) | public boolean isAbandoned() {
method setAbandoned (line 90) | public void setAbandoned(boolean abandoned) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/ReleaseHistoryDTO.java
class ReleaseHistoryDTO (line 6) | public class ReleaseHistoryDTO extends BaseDTO{
method ReleaseHistoryDTO (line 26) | public ReleaseHistoryDTO(){}
method getId (line 28) | public long getId() {
method setId (line 32) | public void setId(long id) {
method getAppId (line 36) | public String getAppId() {
method setAppId (line 40) | public void setAppId(String appId) {
method getClusterName (line 44) | public String getClusterName() {
method setClusterName (line 48) | public void setClusterName(String clusterName) {
method getNamespaceName (line 52) | public String getNamespaceName() {
method setNamespaceName (line 56) | public void setNamespaceName(String namespaceName) {
method getBranchName (line 60) | public String getBranchName() {
method setBranchName (line 64) | public void setBranchName(String branchName) {
method getReleaseId (line 68) | public long getReleaseId() {
method setReleaseId (line 72) | public void setReleaseId(long releaseId) {
method getPreviousReleaseId (line 76) | public long getPreviousReleaseId() {
method setPreviousReleaseId (line 80) | public void setPreviousReleaseId(long previousReleaseId) {
method getOperation (line 84) | public int getOperation() {
method setOperation (line 88) | public void setOperation(int operation) {
method getOperationContext (line 92) | public Map<String, Object> getOperationContext() {
method setOperationContext (line 96) | public void setOperationContext(Map<String, Object> operationContext) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/entity/App.java
class App (line 10) | @Entity
method getAppId (line 34) | public String getAppId() {
method getName (line 38) | public String getName() {
method getOrgId (line 42) | public String getOrgId() {
method getOrgName (line 46) | public String getOrgName() {
method getOwnerEmail (line 50) | public String getOwnerEmail() {
method getOwnerName (line 54) | public String getOwnerName() {
method setAppId (line 58) | public void setAppId(String appId) {
method setName (line 62) | public void setName(String name) {
method setOrgId (line 66) | public void setOrgId(String orgId) {
method setOrgName (line 70) | public void setOrgName(String orgName) {
method setOwnerEmail (line 74) | public void setOwnerEmail(String ownerEmail) {
method setOwnerName (line 78) | public void setOwnerName(String ownerName) {
method toString (line 82) | public String toString() {
class Builder (line 90) | public static class Builder {
method Builder (line 92) | public Builder() {
method name (line 97) | public Builder name(String name) {
method appId (line 102) | public Builder appId(String appId) {
method orgId (line 107) | public Builder orgId(String orgId) {
method orgName (line 112) | public Builder orgName(String orgName) {
method ownerName (line 117) | public Builder ownerName(String ownerName) {
method ownerEmail (line 122) | public Builder ownerEmail(String ownerEmail) {
method build (line 127) | public App build() {
method builder (line 133) | public static Builder builder() {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/entity/AppNamespace.java
class AppNamespace (line 13) | @Entity
method getAppId (line 34) | public String getAppId() {
method getComment (line 38) | public String getComment() {
method getName (line 42) | public String getName() {
method setAppId (line 46) | public void setAppId(String appId) {
method setComment (line 50) | public void setComment(String comment) {
method setName (line 54) | public void setName(String name) {
method isPublic (line 58) | public boolean isPublic() {
method setPublic (line 62) | public void setPublic(boolean aPublic) {
method formatAsEnum (line 66) | public ConfigFileFormat formatAsEnum() {
method getFormat (line 70) | public String getFormat() {
method setFormat (line 74) | public void setFormat(String format) {
method toString (line 78) | public String toString() {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/entity/BaseEntity.java
class BaseEntity (line 18) | @MappedSuperclass
method getDataChangeCreatedBy (line 42) | public String getDataChangeCreatedBy() {
method getDataChangeCreatedTime (line 46) | public Date getDataChangeCreatedTime() {
method getDataChangeLastModifiedBy (line 50) | public String getDataChangeLastModifiedBy() {
method getDataChangeLastModifiedTime (line 54) | public Date getDataChangeLastModifiedTime() {
method getId (line 58) | public long getId() {
method isDeleted (line 62) | public boolean isDeleted() {
method setDataChangeCreatedBy (line 66) | public void setDataChangeCreatedBy(String dataChangeCreatedBy) {
method setDataChangeCreatedTime (line 70) | public void setDataChangeCreatedTime(Date dataChangeCreatedTime) {
method setDataChangeLastModifiedBy (line 74) | public void setDataChangeLastModifiedBy(String dataChangeLastModifiedB...
method setDataChangeLastModifiedTime (line 78) | public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedT...
method setDeleted (line 82) | public void setDeleted(boolean deleted) {
method setId (line 86) | public void setId(long id) {
method prePersist (line 90) | @PrePersist
method preUpdate (line 96) | @PreUpdate
method preRemove (line 101) | @PreRemove
method toStringHelper (line 106) | protected ToStringHelper toStringHelper() {
method toString (line 114) | public String toString(){
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/entity/EntityPair.java
class EntityPair (line 3) | public class EntityPair<E> {
method EntityPair (line 8) | public EntityPair(E firstEntity, E secondEntity){
method getFirstEntity (line 13) | public E getFirstEntity() {
method setFirstEntity (line 17) | public void setFirstEntity(E firstEntity) {
method getSecondEntity (line 21) | public E getSecondEntity() {
method setSecondEntity (line 25) | public void setSecondEntity(E secondEntity) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AbstractApolloHttpException.java
class AbstractApolloHttpException (line 5) | public abstract class AbstractApolloHttpException extends RuntimeException{
method AbstractApolloHttpException (line 11) | public AbstractApolloHttpException(String msg){
method AbstractApolloHttpException (line 15) | public AbstractApolloHttpException(String msg, Exception e){
method setHttpStatus (line 19) | protected void setHttpStatus(HttpStatus httpStatus){
method getHttpStatus (line 23) | public HttpStatus getHttpStatus() {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/BadRequestException.java
class BadRequestException (line 6) | public class BadRequestException extends AbstractApolloHttpException {
method BadRequestException (line 9) | public BadRequestException(String str) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/BeanUtilsException.java
class BeanUtilsException (line 3) | public class BeanUtilsException extends RuntimeException{
method BeanUtilsException (line 5) | public BeanUtilsException(Throwable e){
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NotFoundException.java
class NotFoundException (line 5) | public class NotFoundException extends AbstractApolloHttpException {
method NotFoundException (line 8) | public NotFoundException(String str) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ServiceException.java
class ServiceException (line 5) | public class ServiceException extends AbstractApolloHttpException {
method ServiceException (line 7) | public ServiceException(String str) {
method ServiceException (line 12) | public ServiceException(String str, Exception e) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/http/MultiResponseEntity.java
class MultiResponseEntity (line 11) | public class MultiResponseEntity<T> {
method MultiResponseEntity (line 17) | private MultiResponseEntity(HttpStatus httpCode) {
method instance (line 21) | public static <T> MultiResponseEntity<T> instance(HttpStatus statusCod...
method ok (line 25) | public static <T> MultiResponseEntity<T> ok() {
method addResponseEntity (line 29) | public void addResponseEntity(RichResponseEntity<T> responseEntity) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/http/RichResponseEntity.java
class RichResponseEntity (line 5) | public class RichResponseEntity<T>{
method ok (line 11) | public static <T> RichResponseEntity<T> ok(T body){
method error (line 19) | public static <T> RichResponseEntity<T> error(HttpStatus httpCode, Obj...
method getCode (line 26) | public int getCode() {
method getMessage (line 30) | public Object getMessage() {
method getBody (line 34) | public T getBody() {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/utils/BeanUtils.java
class BeanUtils (line 20) | public class BeanUtils {
method batchTransform (line 28) | public static <T> List<T> batchTransform(final Class<T> clazz, List<? ...
method transfrom (line 48) | public static <T> T transfrom(Class<T> clazz, Object src) {
method getNullPropertyNames (line 62) | private static String[] getNullPropertyNames(Object source) {
method mapByKey (line 85) | @SuppressWarnings("unchecked")
method aggByKeyToList (line 113) | @SuppressWarnings("unchecked")
method toPropertySet (line 145) | @SuppressWarnings("unchecked")
method deepFindField (line 166) | private static Field deepFindField(Class<? extends Object> clazz, Stri...
method getProperty (line 184) | public static Object getProperty(Object obj, String fieldName) {
method setProperty (line 200) | public static void setProperty(Object obj, String fieldName, Object va...
method copyProperties (line 217) | public static void copyProperties(Object source, Object target, String...
method copyEntityProperties (line 227) | public static void copyEntityProperties(Object source, Object target) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/utils/ExceptionUtils.java
class ExceptionUtils (line 12) | public final class ExceptionUtils {
method toString (line 18) | public static String toString(HttpStatusCodeException e) {
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/utils/GrayReleaseRuleItemTransformer.java
class GrayReleaseRuleItemTransformer (line 14) | public class GrayReleaseRuleItemTransformer {
method batchTransformFromJSON (line 19) | public static Set<GrayReleaseRuleItemDTO> batchTransformFromJSON(Strin...
method batchTransformToJSON (line 23) | public static String batchTransformToJSON(Set<GrayReleaseRuleItemDTO> ...
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/utils/InputValidator.java
class InputValidator (line 11) | public class InputValidator {
method isValidClusterNamespace (line 22) | public static boolean isValidClusterNamespace(String input) {
method isValidAppNamespace (line 27) | public static boolean isValidAppNamespace(String name){
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/utils/RequestPrecondition.java
class RequestPrecondition (line 8) | public class RequestPrecondition {
method checkArgumentsNotEmpty (line 17) | public static void checkArgumentsNotEmpty(String... args) {
method checkModel (line 21) | public static void checkModel(boolean valid){
method checkArguments (line 25) | public static void checkArguments(boolean expression, Object errorMess...
method checkNumberPositive (line 31) | public static void checkNumberPositive(int... args){
method checkNumberPositive (line 39) | public static void checkNumberPositive(long... args){
method checkNumberNotNegative (line 47) | public static void checkNumberNotNegative(int... args){
FILE: open-config-center/apollo/apollo-common/src/main/java/com/ctrip/framework/apollo/common/utils/UniqueKeyGenerator.java
class UniqueKeyGenerator (line 15) | public class UniqueKeyGenerator {
method generate (line 23) | public static String generate(Object... args){
method toByteArray (line 36) | protected static byte[] toByteArray(int keyHashCode, int machineIdenti...
FILE: open-config-center/apollo/apollo-common/src/test/java/com/ctrip/framework/apollo/common/AllTests.java
class AllTests (line 10) | @RunWith(Suite.class)
FILE: open-config-center/apollo/apollo-common/src/test/java/com/ctrip/framework/apollo/common/conditional/ConditionalOnProfileTest.java
class ConditionalOnProfileTest (line 21) | @RunWith(SpringJUnit4ClassRunner.class)
method test (line 35) | @Test
class TestConfiguration (line 44) | @Configuration
class SomeConfiguration (line 47) | @Configuration
class AnotherConfiguration (line 55) | @Configuration
class YetAnotherConfiguration (line 64) | @Configuration
class CombinedConfiguration (line 72) | @Configuration
class AnotherCombinedConfiguration (line 81) | @Configuration
FILE: open-config-center/apollo/apollo-common/src/test/java/com/ctrip/framework/apollo/common/utils/InputValidatorTest.java
class InputValidatorTest (line 11) | public class InputValidatorTest {
method testIsValidClusterNamespaceWithCorrectInput (line 13) | @Test
method testIsValidClusterNamespaceWithInCorrectInput (line 19) | @Test
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceApplication.java
class ConfigServiceApplication (line 26) | @EnableEurekaClient
method main (line 38) | public static void main(String[] args) throws Exception {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceAutoConfiguration.java
class ConfigServiceAutoConfiguration (line 21) | @Configuration
method grayReleaseRulesHolder (line 27) | @Bean
method configService (line 32) | @Bean
class MessageScannerConfiguration (line 40) | @Configuration
method releaseMessageScanner (line 55) | @Bean
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceHealthIndicator.java
class ConfigServiceHealthIndicator (line 11) | @Component
method health (line 17) | @Override
method check (line 26) | private int check() {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ServletInitializer.java
class ServletInitializer (line 11) | public class ServletInitializer extends SpringBootServletInitializer {
method configure (line 13) | @Override
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/ConfigController.java
class ConfigController (line 40) | @RestController
method queryConfig (line 59) | @RequestMapping(value = "/{appId}/{clusterName}/{namespace:.+}", metho...
method namespaceBelongsToAppId (line 134) | private boolean namespaceBelongsToAppId(String appId, String namespace...
method findPublicConfig (line 155) | private Release findPublicConfig(String clientAppId, String clientIp, ...
method mergeReleaseConfigurations (line 174) | Map<String, String> mergeReleaseConfigurations(List<Release> releases) {
method assembleKey (line 182) | private String assembleKey(String appId, String cluster, String namesp...
method auditReleases (line 190) | private void auditReleases(String appId, String cluster, String dataCe...
method tryToGetClientIp (line 203) | private String tryToGetClientIp(HttpServletRequest request) {
method transformMessages (line 211) | ApolloNotificationMessages transformMessages(String messagesAsString) {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/ConfigFileController.java
class ConfigFileController (line 53) | @RestController
method ConfigFileController (line 84) | public ConfigFileController() {
method queryConfigAsProperties (line 119) | @RequestMapping(value = "/{appId}/{clusterName}/{namespace:.+}", metho...
method queryConfigAsJson (line 140) | @RequestMapping(value = "/json/{appId}/{clusterName}/{namespace:.+}", ...
method queryConfig (line 160) | String queryConfig(ConfigFileOutputFormat outputFormat, String appId, ...
method loadConfig (line 225) | private String loadConfig(ConfigFileOutputFormat outputFormat, String ...
method assembleCacheKey (line 252) | String assembleCacheKey(ConfigFileOutputFormat outputFormat, String ap...
method handleMessage (line 263) | @Override
type ConfigFileOutputFormat (line 285) | enum ConfigFileOutputFormat {
method ConfigFileOutputFormat (line 290) | ConfigFileOutputFormat(String value) {
method getValue (line 294) | public String getValue() {
method tryToGetClientIp (line 299) | private String tryToGetClientIp(HttpServletRequest request) {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationController.java
class NotificationController (line 38) | @Deprecated
method pollNotification (line 74) | @RequestMapping(method = RequestMethod.GET)
method handleMessage (line 129) | @Override
method logWatchedKeys (line 163) | private void logWatchedKeys(Set<String> watchedKeys, String eventName) {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java
class NotificationControllerV2 (line 54) | @RestController
method NotificationControllerV2 (line 86) | public NotificationControllerV2() {
method pollNotification (line 91) | @RequestMapping(method = RequestMethod.GET)
method filterNotifications (line 177) | private Map<String, ApolloConfigNotification> filterNotifications(Stri...
method getApolloConfigNotifications (line 203) | private List<ApolloConfigNotification> getApolloConfigNotifications(Se...
method handleMessage (line 236) | @Override
method logWatchedKeys (line 305) | private void logWatchedKeys(Set<String> watchedKeys, String eventName) {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/AppNamespaceServiceWithCache.java
class AppNamespaceServiceWithCache (line 38) | @Service
method AppNamespaceServiceWithCache (line 65) | public AppNamespaceServiceWithCache() {
method initialize (line 69) | private void initialize() {
method findByAppIdAndNamespace (line 78) | public AppNamespace findByAppIdAndNamespace(String appId, String names...
method findByAppIdAndNamespaces (line 83) | public List<AppNamespace> findByAppIdAndNamespaces(String appId, Set<S...
method findPublicNamespaceByName (line 98) | public AppNamespace findPublicNamespaceByName(String namespaceName) {
method findPublicNamespacesByNames (line 103) | public List<AppNamespace> findPublicNamespacesByNames(Set<String> name...
method afterPropertiesSet (line 118) | @Override
method scanNewAppNamespaces (line 139) | private void scanNewAppNamespaces() {
method loadNewAppNamespaces (line 154) | private void loadNewAppNamespaces() {
method mergeAppNamespaces (line 171) | private void mergeAppNamespaces(List<AppNamespace> appNamespaces) {
method updateAndDeleteCache (line 182) | private void updateAndDeleteCache() {
method handleUpdatedAppNamespaces (line 204) | private Set<Long> handleUpdatedAppNamespaces(Iterable<AppNamespace> ap...
method handleDeletedAppNamespaces (line 239) | private void handleDeletedAppNamespaces(Set<Long> deletedIds) {
method assembleAppNamespaceKey (line 256) | private String assembleAppNamespaceKey(AppNamespace appNamespace) {
method populateDataBaseInterval (line 260) | private void populateDataBaseInterval() {
method reset (line 268) | private void reset() throws Exception {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/ReleaseMessageServiceWithCache.java
class ReleaseMessageServiceWithCache (line 35) | @Service
method ReleaseMessageServiceWithCache (line 55) | public ReleaseMessageServiceWithCache() {
method initialize (line 59) | private void initialize() {
method findLatestReleaseMessageForMessages (line 66) | public ReleaseMessage findLatestReleaseMessageForMessages(Set<String> ...
method findLatestReleaseMessagesGroupByMessages (line 84) | public List<ReleaseMessage> findLatestReleaseMessagesGroupByMessages(S...
method handleMessage (line 100) | @Override
method afterPropertiesSet (line 121) | @Override
method mergeReleaseMessage (line 150) | private synchronized void mergeReleaseMessage(ReleaseMessage releaseMe...
method loadReleaseMessages (line 158) | private void loadReleaseMessages(long startId) {
method populateDataBaseInterval (line 175) | private void populateDataBaseInterval() {
method reset (line 181) | private void reset() throws Exception {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/AbstractConfigService.java
class AbstractConfigService (line 17) | public abstract class AbstractConfigService implements ConfigService {
method loadConfig (line 21) | @Override
method findRelease (line 59) | private Release findRelease(String clientAppId, String clientIp, Strin...
method findActiveOne (line 80) | protected abstract Release findActiveOne(long id, ApolloNotificationMe...
method findLatestActiveRelease (line 85) | protected abstract Release findLatestActiveRelease(String configAppId,...
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/ConfigService.java
type ConfigService (line 10) | public interface ConfigService extends ReleaseMessageListener {
method loadConfig (line 24) | Release loadConfig(String clientAppId, String clientIp, String configA...
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCache.java
class ConfigServiceWithCache (line 37) | public class ConfigServiceWithCache extends AbstractConfigService {
method ConfigServiceWithCache (line 60) | public ConfigServiceWithCache() {
method initialize (line 64) | @PostConstruct
method findActiveOne (line 125) | @Override
method findLatestActiveRelease (line 131) | @Override
method invalidate (line 151) | private void invalidate(String key) {
method handleMessage (line 156) | @Override
class ConfigCacheEntry (line 173) | private static class ConfigCacheEntry {
method ConfigCacheEntry (line 177) | public ConfigCacheEntry(long notificationId, Release release) {
method getNotificationId (line 182) | public long getNotificationId() {
method getRelease (line 186) | public Release getRelease() {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigService.java
class DefaultConfigService (line 15) | public class DefaultConfigService extends AbstractConfigService {
method findActiveOne (line 20) | @Override
method findLatestActiveRelease (line 25) | @Override
method handleMessage (line 32) | @Override
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/util/InstanceConfigAuditUtil.java
class InstanceConfigAuditUtil (line 34) | @Service
method InstanceConfigAuditUtil (line 51) | public InstanceConfigAuditUtil() {
method audit (line 61) | public boolean audit(String appId, String clusterName, String dataCent...
method doAudit (line 67) | void doAudit(InstanceConfigAuditModel auditModel) {
method offerTimeAndLastModifiedTimeCloseEnough (line 125) | private boolean offerTimeAndLastModifiedTimeCloseEnough(Date offerTime...
method prepareInstanceId (line 130) | private long prepareInstanceId(InstanceConfigAuditModel auditModel) {
method afterPropertiesSet (line 152) | @Override
method assembleInstanceKey (line 170) | private String assembleInstanceKey(String appId, String cluster, Strin...
method assembleInstanceConfigKey (line 178) | private String assembleInstanceConfigKey(long instanceId, String confi...
class InstanceConfigAuditModel (line 182) | public static class InstanceConfigAuditModel {
method InstanceConfigAuditModel (line 193) | public InstanceConfigAuditModel(String appId, String clusterName, St...
method getAppId (line 207) | public String getAppId() {
method getClusterName (line 211) | public String getClusterName() {
method getDataCenter (line 215) | public String getDataCenter() {
method getIp (line 219) | public String getIp() {
method getConfigAppId (line 223) | public String getConfigAppId() {
method getConfigNamespace (line 227) | public String getConfigNamespace() {
method getReleaseKey (line 231) | public String getReleaseKey() {
method getConfigClusterName (line 235) | public String getConfigClusterName() {
method getOfferTime (line 239) | public Date getOfferTime() {
method equals (line 243) | @Override
method hashCode (line 258) | @Override
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/util/NamespaceUtil.java
class NamespaceUtil (line 12) | @Component
method filterNamespaceName (line 18) | public String filterNamespaceName(String namespaceName) {
method normalizeNamespace (line 27) | public String normalizeNamespace(String appId, String namespaceName) {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/util/WatchKeysUtil.java
class WatchKeysUtil (line 25) | @Component
method assembleAllWatchKeys (line 34) | public Set<String> assembleAllWatchKeys(String appId, String clusterNa...
method assembleAllWatchKeys (line 46) | public Multimap<String, String> assembleAllWatchKeys(String appId, Str...
method findPublicConfigWatchKeys (line 67) | private Multimap<String, String> findPublicConfigWatchKeys(String appl...
method assembleKey (line 89) | private String assembleKey(String appId, String cluster, String namesp...
method assembleWatchKeys (line 93) | private Set<String> assembleWatchKeys(String appId, String clusterName...
method assembleWatchKeys (line 116) | private Multimap<String, String> assembleWatchKeys(String appId, Strin...
method namespacesBelongToAppId (line 129) | private Set<String> namespacesBelongToAppId(String appId, Set<String> ...
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/wrapper/CaseInsensitiveMapWrapper.java
class CaseInsensitiveMapWrapper (line 8) | public class CaseInsensitiveMapWrapper<T> {
method CaseInsensitiveMapWrapper (line 11) | public CaseInsensitiveMapWrapper(Map<String, T> delegate) {
method get (line 15) | public T get(String key) {
method put (line 19) | public T put(String key, T value) {
method remove (line 23) | public T remove(String key) {
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/wrapper/DeferredResultWrapper.java
class DeferredResultWrapper (line 19) | public class DeferredResultWrapper {
method DeferredResultWrapper (line 28) | public DeferredResultWrapper() {
method recordNamespaceNameNormalizedResult (line 32) | public void recordNamespaceNameNormalizedResult(String originalNamespa...
method onTimeout (line 40) | public void onTimeout(Runnable timeoutCallback) {
method onCompletion (line 44) | public void onCompletion(Runnable completionCallback) {
method setResult (line 49) | public void setResult(ApolloConfigNotification notification) {
method setResult (line 56) | public void setResult(List<ApolloConfigNotification> notifications) {
method getResult (line 66) | public DeferredResult<ResponseEntity<List<ApolloConfigNotification>>> ...
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/metaservice/ApolloMetaServiceConfig.java
class ApolloMetaServiceConfig (line 7) | @EnableAutoConfiguration
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/metaservice/controller/ServiceController.java
class ServiceController (line 16) | @RestController
method getMetaService (line 24) | @RequestMapping("/meta")
method getConfigService (line 42) | @RequestMapping("/config")
method getAdminService (line 62) | @RequestMapping("/admin")
FILE: open-config-center/apollo/apollo-configservice/src/main/java/com/ctrip/framework/apollo/metaservice/service/DiscoveryService.java
class DiscoveryService (line 15) | @Service
method getConfigServiceInstances (line 21) | public List<InstanceInfo> getConfigServiceInstances() {
method getMetaServiceInstances (line 29) | public List<InstanceInfo> getMetaServiceInstances() {
method getAdminServiceInstances (line 37) | public List<InstanceInfo> getAdminServiceInstances() {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/Apollo.java
class Apollo (line 6) | public class Apollo {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/ConfigConsts.java
type ConfigConsts (line 3) | public interface ConfigConsts {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/MetaDomainConsts.java
class MetaDomainConsts (line 16) | public class MetaDomainConsts {
method getDomain (line 40) | public static String getDomain(Env env) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/ServiceNameConsts.java
type ServiceNameConsts (line 3) | public interface ServiceNameConsts {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/dto/ApolloConfig.java
class ApolloConfig (line 8) | public class ApolloConfig {
method ApolloConfig (line 20) | public ApolloConfig() {
method ApolloConfig (line 23) | public ApolloConfig(String appId,
method getAppId (line 33) | public String getAppId() {
method getCluster (line 37) | public String getCluster() {
method getNamespaceName (line 41) | public String getNamespaceName() {
method getReleaseKey (line 45) | public String getReleaseKey() {
method getConfigurations (line 49) | public Map<String, String> getConfigurations() {
method setAppId (line 53) | public void setAppId(String appId) {
method setCluster (line 57) | public void setCluster(String cluster) {
method setNamespaceName (line 61) | public void setNamespaceName(String namespaceName) {
method setReleaseKey (line 65) | public void setReleaseKey(String releaseKey) {
method setConfigurations (line 69) | public void setConfigurations(Map<String, String> configurations) {
method toString (line 73) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/dto/ApolloConfigNotification.java
class ApolloConfigNotification (line 6) | public class ApolloConfigNotification {
method ApolloConfigNotification (line 12) | public ApolloConfigNotification() {
method ApolloConfigNotification (line 15) | public ApolloConfigNotification(String namespaceName, long notificatio...
method getNamespaceName (line 20) | public String getNamespaceName() {
method getNotificationId (line 24) | public long getNotificationId() {
method setNamespaceName (line 28) | public void setNamespaceName(String namespaceName) {
method getMessages (line 32) | public ApolloNotificationMessages getMessages() {
method setMessages (line 36) | public void setMessages(ApolloNotificationMessages messages) {
method addMessage (line 40) | public void addMessage(String key, long notificationId) {
method toString (line 51) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/dto/ApolloNotificationMessages.java
class ApolloNotificationMessages (line 11) | public class ApolloNotificationMessages {
method ApolloNotificationMessages (line 14) | public ApolloNotificationMessages() {
method ApolloNotificationMessages (line 18) | private ApolloNotificationMessages(Map<String, Long> details) {
method put (line 22) | public void put(String key, long notificationId) {
method get (line 26) | public Long get(String key) {
method has (line 30) | public boolean has(String key) {
method isEmpty (line 34) | public boolean isEmpty() {
method getDetails (line 38) | public Map<String, Long> getDetails() {
method setDetails (line 42) | public void setDetails(Map<String, Long> details) {
method mergeFrom (line 46) | public void mergeFrom(ApolloNotificationMessages source) {
method clone (line 61) | public ApolloNotificationMessages clone() {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/dto/ServiceDTO.java
class ServiceDTO (line 3) | public class ServiceDTO {
method getAppName (line 11) | public String getAppName() {
method getHomepageUrl (line 15) | public String getHomepageUrl() {
method getInstanceId (line 19) | public String getInstanceId() {
method setAppName (line 23) | public void setAppName(String appName) {
method setHomepageUrl (line 27) | public void setHomepageUrl(String homepageUrl) {
method setInstanceId (line 31) | public void setInstanceId(String instanceId) {
method toString (line 35) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/enums/ConfigFileFormat.java
type ConfigFileFormat (line 8) | public enum ConfigFileFormat {
method ConfigFileFormat (line 13) | ConfigFileFormat(String value) {
method getValue (line 17) | public String getValue() {
method fromString (line 21) | public static ConfigFileFormat fromString(String value) {
method isValidFormat (line 40) | public static boolean isValidFormat(String value) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/enums/Env.java
type Env (line 8) | public enum Env{
method fromString (line 11) | public static Env fromString(String env) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/enums/EnvUtils.java
class EnvUtils (line 5) | public final class EnvUtils {
method transformEnv (line 7) | public static Env transformEnv(String envName) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/schedule/ExponentialSchedulePolicy.java
class ExponentialSchedulePolicy (line 6) | public class ExponentialSchedulePolicy implements SchedulePolicy {
method ExponentialSchedulePolicy (line 11) | public ExponentialSchedulePolicy(long delayTimeLowerBound, long delayT...
method fail (line 16) | @Override
method success (line 31) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/schedule/SchedulePolicy.java
type SchedulePolicy (line 7) | public interface SchedulePolicy {
method fail (line 8) | long fail();
method success (line 10) | void success();
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/ApolloThreadFactory.java
class ApolloThreadFactory (line 13) | public class ApolloThreadFactory implements ThreadFactory {
method getThreadGroup (line 24) | public static ThreadGroup getThreadGroup() {
method create (line 28) | public static ThreadFactory create(String namePrefix, boolean daemon) {
method waitAllShutdown (line 32) | public static boolean waitAllShutdown(int timeoutInMillis) {
type ClassifyStandard (line 64) | private static interface ClassifyStandard<T> {
method satisfy (line 65) | boolean satisfy(T thread);
method classify (line 68) | private static <T> void classify(Set<T> src, Set<T> des, ClassifyStand...
method ApolloThreadFactory (line 79) | private ApolloThreadFactory(String namePrefix, boolean daemon) {
method newThread (line 84) | public Thread newThread(Runnable runnable) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/ByteUtil.java
class ByteUtil (line 6) | public class ByteUtil {
method int3 (line 11) | public static byte int3(final int x) {
method int2 (line 15) | public static byte int2(final int x) {
method int1 (line 19) | public static byte int1(final int x) {
method int0 (line 23) | public static byte int0(final int x) {
method toHexString (line 27) | public static String toHexString(byte[] bytes) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/ClassLoaderUtil.java
class ClassLoaderUtil (line 14) | public class ClassLoaderUtil {
method getLoader (line 44) | public static ClassLoader getLoader() {
method getClassPath (line 49) | public static String getClassPath() {
method isClassPresent (line 53) | public static boolean isClassPresent(String className) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/DNSUtil.java
class DNSUtil (line 8) | public class DNSUtil {
method resolve (line 10) | public static List<String> resolve(String domainName) throws UnknownHo...
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/MachineUtil.java
class MachineUtil (line 15) | public class MachineUtil {
method getMachineIdentifier (line 19) | public static int getMachineIdentifier() {
method createMachineIdentifier (line 28) | private static int createMachineIdentifier() {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/PropertiesUtil.java
class PropertiesUtil (line 10) | public class PropertiesUtil {
method toString (line 17) | public static String toString(Properties properties) throws IOException {
method filterPropertiesComment (line 30) | static boolean filterPropertiesComment(StringBuffer stringBuffer) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/ResourceUtils.java
class ResourceUtils (line 15) | public class ResourceUtils {
method readConfigFile (line 20) | @SuppressWarnings("unchecked")
method loadConfigFileFromDefaultSearchLocations (line 60) | private static InputStream loadConfigFileFromDefaultSearchLocations(St...
method getResourceAsStream (line 95) | private static InputStream getResourceAsStream(URL url) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/utils/StringUtils.java
class StringUtils (line 6) | public class StringUtils {
method isEmpty (line 30) | public static boolean isEmpty(String str) {
method isContainEmpty (line 35) | public static boolean isContainEmpty(String... args){
method isBlank (line 64) | public static boolean isBlank(String str) {
method trimToNull (line 99) | public static String trimToNull(String str) {
method trimToEmpty (line 126) | public static String trimToEmpty(String str) {
method trim (line 156) | public static String trim(String str) {
method equals (line 183) | public static boolean equals(String str1, String str2) {
method equalsIgnoreCase (line 210) | public static boolean equalsIgnoreCase(String str1, String str2) {
method startsWith (line 238) | public static boolean startsWith(String str, String prefix) {
method startsWith (line 253) | private static boolean startsWith(String str, String prefix, boolean i...
method startsWithIgnoreCase (line 287) | public static boolean startsWithIgnoreCase(String str, String prefix) {
method isNumeric (line 314) | public static boolean isNumeric(String str) {
type StringFormatter (line 327) | public static interface StringFormatter<T> {
method format (line 328) | String format(T obj);
method join (line 331) | public static <T> String join(Collection<T> collection, String separat...
method join (line 340) | public static <T> String join(Collection<T> collection, String separator,
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/Tracer.java
class Tracer (line 15) | public abstract class Tracer {
method getProducer (line 26) | private static MessageProducer getProducer() {
method logError (line 43) | public static void logError(String message, Throwable cause) {
method logError (line 51) | public static void logError(Throwable cause) {
method logEvent (line 59) | public static void logEvent(String type, String name) {
method logEvent (line 67) | public static void logEvent(String type, String name, String status, S...
method newTransaction (line 76) | public static Transaction newTransaction(String type, String name) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/DefaultMessageProducerManager.java
class DefaultMessageProducerManager (line 12) | public class DefaultMessageProducerManager implements MessageProducerMan...
method DefaultMessageProducerManager (line 15) | public DefaultMessageProducerManager() {
method getProducer (line 23) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/NullMessageProducer.java
class NullMessageProducer (line 9) | public class NullMessageProducer implements MessageProducer {
method logError (line 12) | @Override
method logError (line 16) | @Override
method logEvent (line 20) | @Override
method logEvent (line 24) | @Override
method newTransaction (line 28) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/NullMessageProducerManager.java
class NullMessageProducerManager (line 9) | public class NullMessageProducerManager implements MessageProducerManager {
method getProducer (line 12) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/NullTransaction.java
class NullTransaction (line 8) | public class NullTransaction implements Transaction {
method setStatus (line 9) | @Override
method setStatus (line 13) | @Override
method addData (line 17) | @Override
method complete (line 21) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/cat/CatMessageProducer.java
class CatMessageProducer (line 11) | public class CatMessageProducer implements MessageProducer {
method logError (line 39) | @Override
method logError (line 48) | @Override
method logEvent (line 57) | @Override
method logEvent (line 66) | @Override
method newTransaction (line 76) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/cat/CatNames.java
type CatNames (line 6) | public interface CatNames {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/internals/cat/CatTransaction.java
class CatTransaction (line 10) | public class CatTransaction implements Transaction {
method init (line 33) | static void init() {
method CatTransaction (line 37) | public CatTransaction(Object catTransaction) {
method setStatus (line 41) | @Override
method setStatus (line 50) | @Override
method addData (line 59) | @Override
method complete (line 68) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/spi/MessageProducer.java
type MessageProducer (line 6) | public interface MessageProducer {
method logError (line 12) | public void logError(Throwable cause);
method logError (line 19) | public void logError(String message, Throwable cause);
method logEvent (line 27) | public void logEvent(String type, String name);
method logEvent (line 37) | public void logEvent(String type, String name, String status, String n...
method newTransaction (line 45) | public Transaction newTransaction(String type, String name);
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/spi/MessageProducerManager.java
type MessageProducerManager (line 6) | public interface MessageProducerManager {
method getProducer (line 10) | MessageProducer getProducer();
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/tracer/spi/Transaction.java
type Transaction (line 6) | public interface Transaction {
method setStatus (line 14) | public void setStatus(String status);
method setStatus (line 21) | public void setStatus(Throwable e);
method addData (line 26) | public void addData(String key, Object value);
method complete (line 31) | public void complete();
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/Foundation.java
class Foundation (line 12) | public abstract class Foundation {
method getManager (line 23) | private static ProviderManager getManager() {
method getProperty (line 42) | public static String getProperty(String name, String defaultValue) {
method net (line 51) | public static NetworkProvider net() {
method server (line 60) | public static ServerProvider server() {
method app (line 69) | public static ApplicationProvider app() {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/DefaultProviderManager.java
class DefaultProviderManager (line 14) | public class DefaultProviderManager implements ProviderManager {
method DefaultProviderManager (line 19) | public DefaultProviderManager() {
method register (line 37) | public synchronized void register(Provider provider) {
method provider (line 41) | @Override
method getProperty (line 55) | @Override
method toString (line 68) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/NetworkInterfaceManager.java
type NetworkInterfaceManager (line 14) | public enum NetworkInterfaceManager {
method NetworkInterfaceManager (line 21) | private NetworkInterfaceManager() {
method findValidateIp (line 25) | public InetAddress findValidateIp(List<InetAddress> addresses) {
method getLocalHostAddress (line 59) | public String getLocalHostAddress() {
method getLocalHostName (line 63) | public String getLocalHostName() {
method getProperty (line 74) | private String getProperty(String name) {
method load (line 86) | private void load() {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/NullProviderManager.java
class NullProviderManager (line 6) | public class NullProviderManager implements ProviderManager {
method getProperty (line 9) | @Override
method provider (line 14) | @Override
method toString (line 19) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/ServiceBootstrap.java
class ServiceBootstrap (line 6) | public class ServiceBootstrap {
method loadFirst (line 7) | public static <S> S loadFirst(Class<S> clazz) {
method loadAll (line 17) | private static <S> Iterator<S> loadAll(Class<S> clazz) {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/Utils.java
class Utils (line 5) | public class Utils {
method isBlank (line 6) | public static boolean isBlank(String str) {
method isOSWindows (line 10) | public static boolean isOSWindows() {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/io/BOMInputStream.java
class BOMInputStream (line 82) | public class BOMInputStream extends ProxyInputStream {
method BOMInputStream (line 100) | public BOMInputStream(final InputStream delegate) {
method BOMInputStream (line 110) | public BOMInputStream(final InputStream delegate, final boolean includ...
method BOMInputStream (line 120) | public BOMInputStream(final InputStream delegate, final ByteOrderMark....
method compare (line 129) | public int compare(final ByteOrderMark bom1, final ByteOrderMark bom2) {
method BOMInputStream (line 149) | public BOMInputStream(final InputStream delegate, final boolean includ...
method hasBOM (line 167) | public boolean hasBOM() throws IOException {
method hasBOM (line 179) | public boolean hasBOM(final ByteOrderMark bom) throws IOException {
method getBOM (line 192) | public ByteOrderMark getBOM() throws IOException {
method getBOMCharsetName (line 228) | public String getBOMCharsetName() throws IOException {
method readFirstBytes (line 241) | private int readFirstBytes() throws IOException {
method find (line 251) | private ByteOrderMark find() {
method matches (line 266) | private boolean matches(final ByteOrderMark bom) {
method read (line 289) | @Override
method read (line 304) | @Override
method read (line 327) | @Override
method mark (line 337) | @Override
method reset (line 349) | @Override
method skip (line 366) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/io/ByteOrderMark.java
class ByteOrderMark (line 27) | public class ByteOrderMark implements Serializable {
method ByteOrderMark (line 73) | public ByteOrderMark(final String charsetName, final int... bytes) {
method getCharsetName (line 90) | public String getCharsetName() {
method length (line 99) | public int length() {
method get (line 109) | public int get(final int pos) {
method getBytes (line 118) | public byte[] getBytes() {
method equals (line 132) | @Override
method hashCode (line 155) | @Override
method toString (line 169) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/io/IOUtils.java
class IOUtils (line 3) | public class IOUtils {
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/io/ProxyInputStream.java
class ProxyInputStream (line 33) | public abstract class ProxyInputStream extends FilterInputStream {
method ProxyInputStream (line 40) | public ProxyInputStream(final InputStream proxy) {
method read (line 51) | @Override
method read (line 71) | @Override
method read (line 93) | @Override
method skip (line 113) | @Override
method available (line 129) | @Override
method close (line 144) | @Override
method mark (line 158) | @Override
method reset (line 168) | @Override
method markSupported (line 182) | @Override
method beforeRead (line 201) | protected void beforeRead(final int n) throws IOException {
method afterRead (line 219) | protected void afterRead(final int n) throws IOException {
method handleIOException (line 233) | protected void handleIOException(final IOException e) throws IOExcepti...
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultApplicationProvider.java
class DefaultApplicationProvider (line 16) | public class DefaultApplicationProvider implements ApplicationProvider {
method initialize (line 23) | @Override
method initialize (line 40) | @Override
method getAppId (line 57) | @Override
method isAppIdSet (line 62) | @Override
method getProperty (line 67) | @Override
method getType (line 78) | @Override
method initAppId (line 83) | private void initAppId() {
method toString (line 104) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultNetworkProvider.java
class DefaultNetworkProvider (line 7) | public class DefaultNetworkProvider implements NetworkProvider {
method getProperty (line 8) | @Override
method initialize (line 21) | @Override
method getHostAddress (line 26) | @Override
method getHostName (line 31) | @Override
method getType (line 36) | @Override
method toString (line 41) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultServerProvider.java
class DefaultServerProvider (line 17) | public class DefaultServerProvider implements ServerProvider {
method initialize (line 27) | @Override
method initialize (line 47) | @Override
method getDataCenter (line 65) | @Override
method isDataCenterSet (line 70) | @Override
method getEnvType (line 75) | @Override
method isEnvTypeSet (line 80) | @Override
method getProperty (line 85) | @Override
method getType (line 99) | @Override
method initEnvType (line 104) | private void initEnvType() {
method initDataCenter (line 134) | private void initDataCenter() {
method toString (line 164) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/NullProvider.java
class NullProvider (line 10) | public class NullProvider implements ApplicationProvider, NetworkProvide...
method getType (line 11) | @Override
method getProperty (line 16) | @Override
method initialize (line 21) | @Override
method getAppId (line 26) | @Override
method isAppIdSet (line 31) | @Override
method getEnvType (line 36) | @Override
method isEnvTypeSet (line 41) | @Override
method getDataCenter (line 46) | @Override
method isDataCenterSet (line 51) | @Override
method initialize (line 56) | @Override
method getHostAddress (line 61) | @Override
method getHostName (line 66) | @Override
method toString (line 71) | @Override
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/ProviderManager.java
type ProviderManager (line 5) | public interface ProviderManager {
method getProperty (line 6) | public String getProperty(String name, String defaultValue);
method provider (line 8) | public <T extends Provider> T provider(Class<T> clazz);
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/provider/ApplicationProvider.java
type ApplicationProvider (line 8) | public interface ApplicationProvider extends Provider {
method getAppId (line 12) | public String getAppId();
method isAppIdSet (line 17) | public boolean isAppIdSet();
method initialize (line 22) | public void initialize(InputStream in);
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/provider/NetworkProvider.java
type NetworkProvider (line 6) | public interface NetworkProvider extends Provider {
method getHostAddress (line 10) | public String getHostAddress();
method getHostName (line 15) | public String getHostName();
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/provider/Provider.java
type Provider (line 3) | public interface Provider {
method getType (line 7) | public Class<? extends Provider> getType();
method getProperty (line 16) | public String getProperty(String name, String defaultValue);
method initialize (line 21) | public void initialize();
FILE: open-config-center/apollo/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/provider/ServerProvider.java
type ServerProvider (line 9) | public interface ServerProvider extends Provider {
method getEnvType (line 13) | public String getEnvType();
method isEnvTypeSet (line 18) | public boolean isEnvTypeSet();
method getDataCenter (line 23) | public String getDataCenter();
method isDataCenterSet (line 28) | public boolean isDataCenterSet();
method initialize (line 35) | public void initialize(InputStream in) throws IOException;
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/PortalOpenApiConfig.java
class PortalOpenApiConfig (line 7) | @EnableAutoConfiguration
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/auth/ConsumerPermissionValidator.java
class ConsumerPermissionValidator (line 13) | @Component
method hasModifyNamespacePermission (line 22) | public boolean hasModifyNamespacePermission(HttpServletRequest request...
method hasReleaseNamespacePermission (line 34) | public boolean hasReleaseNamespacePermission(HttpServletRequest reques...
method hasCreateNamespacePermission (line 45) | public boolean hasCreateNamespacePermission(HttpServletRequest request...
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenAppNamespaceDTO.java
class OpenAppNamespaceDTO (line 6) | public class OpenAppNamespaceDTO extends BaseDTO {
method getName (line 18) | public String getName() {
method setName (line 22) | public void setName(String name) {
method getAppId (line 26) | public String getAppId() {
method setAppId (line 30) | public void setAppId(String appId) {
method getFormat (line 34) | public String getFormat() {
method setFormat (line 38) | public void setFormat(String format) {
method isPublic (line 42) | public boolean isPublic() {
method setPublic (line 46) | public void setPublic(boolean aPublic) {
method getComment (line 50) | public String getComment() {
method setComment (line 54) | public void setComment(String comment) {
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenEnvClusterDTO.java
class OpenEnvClusterDTO (line 5) | public class OpenEnvClusterDTO {
method getEnv (line 10) | public String getEnv() {
method setEnv (line 14) | public void setEnv(String env) {
method getClusters (line 18) | public Set<String> getClusters() {
method setClusters (line 22) | public void setClusters(Set<String> clusters) {
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenItemDTO.java
class OpenItemDTO (line 5) | public class OpenItemDTO extends BaseDTO {
method getKey (line 13) | public String getKey() {
method setKey (line 17) | public void setKey(String key) {
method getValue (line 21) | public String getValue() {
method setValue (line 25) | public void setValue(String value) {
method getComment (line 29) | public String getComment() {
method setComment (line 33) | public void setComment(String comment) {
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenNamespaceDTO.java
class OpenNamespaceDTO (line 7) | public class OpenNamespaceDTO extends BaseDTO {
method getAppId (line 23) | public String getAppId() {
method setAppId (line 27) | public void setAppId(String appId) {
method getClusterName (line 31) | public String getClusterName() {
method setClusterName (line 35) | public void setClusterName(String clusterName) {
method getNamespaceName (line 39) | public String getNamespaceName() {
method setNamespaceName (line 43) | public void setNamespaceName(String namespaceName) {
method getComment (line 47) | public String getComment() {
method setComment (line 51) | public void setComment(String comment) {
method getFormat (line 55) | public String getFormat() {
method setFormat (line 59) | public void setFormat(String format) {
method isPublic (line 63) | public boolean isPublic() {
method setPublic (line 67) | public void setPublic(boolean aPublic) {
method getItems (line 71) | public List<OpenItemDTO> getItems() {
method setItems (line 75) | public void setItems(List<OpenItemDTO> items) {
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenNamespaceLockDTO.java
class OpenNamespaceLockDTO (line 3) | public class OpenNamespaceLockDTO {
method getNamespaceName (line 9) | public String getNamespaceName() {
method setNamespaceName (line 13) | public void setNamespaceName(String namespaceName) {
method isLocked (line 17) | public boolean isLocked() {
method setLocked (line 21) | public void setLocked(boolean locked) {
method getLockedBy (line 25) | public String getLockedBy() {
method setLockedBy (line 29) | public void setLockedBy(String lockedBy) {
FILE: open-config-center/apollo/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenReleaseDTO.java
class OpenReleaseDTO (line 7) | public class OpenReleaseDTO extends BaseDTO {
method getName (line 21) | public String getName() {
method setName (line 25) | public void setName(String name) {
method getAppId (line 29) | public String getA
Copy disabled (too large)
Download .json
Condensed preview — 2815 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (26,239K chars).
[
{
"path": ".gitee/ISSUE_TEMPLATE.zh-CN.md",
"chars": 45,
"preview": "### 该问题是怎么引起的?\n\n\n\n\n### 重现步骤\n\n\n\n\n### 报错信息\n\n\n\n\n"
},
{
"path": ".gitee/PULL_REQUEST_TEMPLATE.zh-CN.md",
"chars": 67,
"preview": "### 该Pull Request关联的Issue\n\n\n### 修改描述\n\n\n\n### 测试用例\n\n\n\n### 修复效果的截屏\n\n\n\n"
},
{
"path": ".gitignore",
"chars": 336,
"preview": "# maven ignore\ntarget/\n*.jar\n*.war\n*.zip\n*.tar\n*.tar.gz\n*.class\n*.project\n\n# eclipse ignore\n.settings/\n.classpath\ntarget"
},
{
"path": ".tgitconfig",
"chars": 0,
"preview": ""
},
{
"path": "LICENSE",
"chars": 10249,
"preview": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AN"
},
{
"path": "README.md",
"chars": 4488,
"preview": "# <H1 align=\"center\">open-capacity-platform 微服务能力开发平台</H1 > \r\n\r\n<p align=\"center\">\r\n <img src=\"https://img.shields.io/ci"
},
{
"path": "open-api-gateway/pom.xml",
"chars": 4074,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLoca"
},
{
"path": "open-api-gateway/src/main/docker/Dockerfile",
"chars": 219,
"preview": "FROM frolvlad/alpine-oraclejdk8\nVOLUME /tmp\nADD open-api-gateway.jar app.jar\nRUN sh -c 'touch /app.jar'\nENV JAVA_OPTS=\"\""
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/GatewayApp.java",
"chars": 2101,
"preview": "package com.open.capacity;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfi"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/OAuth2ClientConfig.java",
"chars": 3615,
"preview": "\npackage com.open.capacity.client.oauth2;\n\nimport javax.annotation.Resource;\n\nimport org.springframework.beans.factory.a"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/AuthorizeConfigManager.java",
"chars": 527,
"preview": "package com.open.capacity.client.oauth2.authorize;\n\nimport org.springframework.security.config.annotation.web.builders.H"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/AuthorizeConfigProvider.java",
"chars": 490,
"preview": "package com.open.capacity.client.oauth2.authorize;\n\nimport org.springframework.security.config.annotation.web.builders.H"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/OpenAuthorizeConfigManager.java",
"chars": 1325,
"preview": "package com.open.capacity.client.oauth2.authorize;\n\nimport java.util.List;\n\nimport org.springframework.beans.factory.ann"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/authorize/provider/AuthAuthorizeConfigProvider.java",
"chars": 1278,
"preview": "package com.open.capacity.client.oauth2.authorize.provider;\n\nimport com.open.capacity.client.oauth2.authorize.AuthorizeC"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/DocumentationConfig.java",
"chars": 1114,
"preview": "package com.open.capacity.client.oauth2.config;\n\nimport org.springframework.context.annotation.Primary;\nimport org.sprin"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/SecurityHandlerConfig.java",
"chars": 4441,
"preview": "package com.open.capacity.client.oauth2.config;\n\nimport java.io.IOException;\nimport java.util.HashMap;\nimport java.util."
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/config/SwaggerConfig.java",
"chars": 915,
"preview": "package com.open.capacity.client.oauth2.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springfr"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/dao/ServiceDao.java",
"chars": 549,
"preview": "package com.open.capacity.client.oauth2.dao;\n\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.anno"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/filter/AccessFilter.java",
"chars": 1668,
"preview": "package com.open.capacity.client.oauth2.filter;\n\nimport com.netflix.zuul.ZuulFilter;\nimport com.netflix.zuul.context.Req"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/filter/IPFilter.java",
"chars": 4814,
"preview": "package com.open.capacity.client.oauth2.filter;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.spr"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/service/RbacService.java",
"chars": 373,
"preview": "package com.open.capacity.client.oauth2.service;\n\nimport org.springframework.security.core.Authentication;\n\nimport javax"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/service/impl/RbacServiceImpl.java",
"chars": 2313,
"preview": "package com.open.capacity.client.oauth2.service.impl;\n\nimport com.open.capacity.client.oauth2.dao.ServiceDao;\nimport com"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/token/TokenStoreConfig.java",
"chars": 2346,
"preview": "package com.open.capacity.client.oauth2.token;\n\nimport javax.annotation.Resource;\nimport javax.sql.DataSource;\n\nimport o"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/client/oauth2/token/store/RedisTemplateTokenStore.java",
"chars": 10748,
"preview": "package com.open.capacity.client.oauth2.token.store;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport ja"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/controller/TestController.java",
"chars": 687,
"preview": "package com.open.capacity.controller;\n\nimport javax.annotation.Resource;\n\nimport org.slf4j.Logger;\nimport org.slf4j.Logg"
},
{
"path": "open-api-gateway/src/main/java/com/open/capacity/controller/UserController.java",
"chars": 2217,
"preview": "package com.open.capacity.controller;\n\nimport java.security.Principal;\nimport java.util.HashMap;\nimport java.util.Map;\n\n"
},
{
"path": "open-api-gateway/src/main/resources/application.yml",
"chars": 3807,
"preview": "server:\n port: 9200\nspring:\n application:\n name: open-auth-gateway\n datasource:\n type: com.alibaba.druid.pool"
},
{
"path": "open-api-gateway/src/main/resources/bootstrap.yml",
"chars": 272,
"preview": "management:\n security:\n enabled: false\n#spring:\n# cloud:\n# config:\n# discovery:\n# enabled: true\n# "
},
{
"path": "open-commons/pom.xml",
"chars": 925,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/dto/LoginUser.java",
"chars": 2986,
"preview": "package com.open.capacity.security.dto;\n\nimport com.fasterxml.jackson.annotation.JsonIgnore;\nimport com.open.capacity.se"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/dto/ResponseInfo.java",
"chars": 668,
"preview": "package com.open.capacity.security.dto;\n\nimport java.io.Serializable;\n\npublic class ResponseInfo implements Serializable"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/dto/RoleDto.java",
"chars": 453,
"preview": "package com.open.capacity.security.dto;\n\nimport com.open.capacity.security.model.Role;\n\nimport java.util.List;\n\npublic c"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/dto/UserDto.java",
"chars": 418,
"preview": "package com.open.capacity.security.dto;\n\nimport com.open.capacity.security.model.SysUser;\n\nimport java.util.List;\n\npubli"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/model/BaseEntity.java",
"chars": 792,
"preview": "package com.open.capacity.security.model;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\npublic abstract class Ba"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/model/Permission.java",
"chars": 1533,
"preview": "package com.open.capacity.security.model;\n\nimport java.util.List;\n\npublic class Permission extends BaseEntity<Long> {\n\n "
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/model/Role.java",
"chars": 524,
"preview": "package com.open.capacity.security.model;\n\npublic class Role extends BaseEntity<Long> {\n\n private static final long s"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/model/SysLogs.java",
"chars": 821,
"preview": "package com.open.capacity.security.model;\n\npublic class SysLogs extends BaseEntity<Long> {\n\n private static final lon"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/model/SysUser.java",
"chars": 1990,
"preview": "package com.open.capacity.security.model;\n\nimport java.util.Date;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\n"
},
{
"path": "open-commons/src/main/java/com/open/capacity/security/model/TokenModel.java",
"chars": 602,
"preview": "package com.open.capacity.security.model;\n\nimport java.util.Date;\n\npublic class TokenModel extends BaseEntity<String> {\n"
},
{
"path": "open-config-center/apollo/.gitattributes",
"chars": 9,
"preview": "text=auto"
},
{
"path": "open-config-center/apollo/.gitignore",
"chars": 310,
"preview": "*.class\n.DS_Store\napplication.pid\n\n# Mobile Tools for Java (J2ME)\n.mtj.tmp/\n\n# Package Files #\n*.jar\n*.war\n*.ear\n\n# virt"
},
{
"path": "open-config-center/apollo/.travis.yml",
"chars": 1587,
"preview": "language: java\njdk:\n - oraclejdk8\nnotification:\n email:\n recipients:\n - song_s@ctrip.com,zhanglea@ctrip.com\n "
},
{
"path": "open-config-center/apollo/LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "open-config-center/apollo/apollo-adminservice/pom.xml",
"chars": 2743,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/assembly/assembly-descriptor.xml",
"chars": 1359,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/config/apollo-adminservice.conf",
"chars": 57,
"preview": "MODE=service\nPID_FOLDER=.\nLOG_FOLDER=/opt/logs/100003172/"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/config/app.properties",
"chars": 30,
"preview": "appId=100003172\njdkVersion=1.8"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/docker/Dockerfile",
"chars": 1137,
"preview": "# Dockerfile for apollo-adminservice\n# Build with:\n# docker build -t apollo-adminservice .\n# Run with:\n# docker run -p 8"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/AdminServiceApplication.java",
"chars": 1576,
"preview": "package com.ctrip.framework.apollo.adminservice;\n\nimport com.ctrip.framework.apollo.biz.ApolloBizConfig;\nimport com.ctri"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/AdminServiceHealthIndicator.java",
"chars": 860,
"preview": "package com.ctrip.framework.apollo.adminservice;\n\nimport com.ctrip.framework.apollo.biz.service.AppService;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java",
"chars": 5116,
"preview": "package com.ctrip.framework.apollo.adminservice.aop;\n\n\nimport com.ctrip.framework.apollo.biz.config.BizConfig;\nimport co"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java",
"chars": 5414,
"preview": "package com.ctrip.framework.apollo.adminservice.aop;\n\n\nimport com.google.common.collect.MapDifference;\nimport com.google"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/PreAcquireNamespaceLock.java",
"chars": 366,
"preview": "package com.ctrip.framework.apollo.adminservice.aop;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotati"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java",
"chars": 3586,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.service.AdminService;"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java",
"chars": 2764,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.entity.Namespace;\nimp"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java",
"chars": 3710,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.entity.Cluster;\nimpor"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/CommitController.java",
"chars": 1248,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.entity.Commit;\nimport"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/IndexController.java",
"chars": 449,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport org.springframework.web.bind.annotation.RequestMappi"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java",
"chars": 8477,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.google.common.base.Splitter;\nimport com.google.c"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java",
"chars": 6832,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.adminservice.aop.PreAcqui"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemSetController.java",
"chars": 1343,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.adminservice.aop.PreAcqui"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java",
"chars": 6924,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.entity.GrayReleaseRul"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java",
"chars": 5196,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.entity.Namespace;\nimp"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java",
"chars": 1873,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.ctrip.framework.apollo.biz.config.BizConfig;\nimp"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java",
"chars": 9008,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\n\nimport com.google.common.base.Splitter;\n\nimport com.ctrip."
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseHistoryController.java",
"chars": 3952,
"preview": "package com.ctrip.framework.apollo.adminservice.controller;\n\nimport com.google.gson.Gson;\nimport com.google.gson.reflect"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/resources/META-INF/app.properties",
"chars": 32,
"preview": "app.id=100003172\njdkVersion=1.8\n"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/resources/adminservice.properties",
"chars": 602,
"preview": "#Used for apollo-assembly\nspring.application.name= apollo-adminservice\nctrip.appid= 100003172\nserver.port= 8090\n#logging"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/resources/application.yml",
"chars": 189,
"preview": "spring:\n application:\n name: apollo-adminservice\n profiles:\n active: ${apollo_profile}\n\nctrip:\n appid: 10000317"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/resources/bootstrap.yml",
"chars": 426,
"preview": "eureka:\n instance:\n hostname: ${spring.cloud.client.ipAddress}\n preferIpAddress: true\n client:\n serviceUrl:\n "
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/resources/logback.xml",
"chars": 539,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n\t<include resource=\"org/springframework/boot/logging/logback/defa"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/scripts/shutdown.sh",
"chars": 339,
"preview": "#!/bin/bash\nSERVICE_NAME=apollo-adminservice\n\nif [[ -z \"$JAVA_HOME\" && -d /usr/java/latest/ ]]; then\n export JAVA_HOM"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/main/scripts/startup.sh",
"chars": 3906,
"preview": "#!/bin/bash\nSERVICE_NAME=apollo-adminservice\n## Adjust log dir if necessary\nLOG_DIR=/opt/logs/100003172\n## Adjust server"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/application.properties",
"chars": 308,
"preview": "spring.datasource.url = jdbc:h2:mem:~/apolloconfigdb;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1\nspring.jpa.hibe"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/application.yml",
"chars": 231,
"preview": "spring:\n application:\n name: apollo-adminservice\n \nserver:\n port: ${port:8090}\n \nlogging:\n level:\n org.spri"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/bootstrap.yml",
"chars": 350,
"preview": "eureka:\n instance:\n hostname: ${hostname:localhost}\n client:\n serviceUrl:\n defaultZone: http://${eureka.ins"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/controller/cleanup.sql",
"chars": 159,
"preview": "DELETE FROM Item;\nDELETE FROM Namespace;\nDELETE FROM AppNamespace;\nDELETE FROM Cluster;\nDELETE FROM App;\nDELETE FROM Nam"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/controller/test-itemset.sql",
"chars": 383,
"preview": "INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('someAppId','someAppName','someOwnerName','someOwnerName@ct"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/controller/test-release.sql",
"chars": 668,
"preview": "INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('someAppId','someAppName','someOwnerName','someOwnerName@ct"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/data.sql",
"chars": 2692,
"preview": "INSERT INTO App (AppId, Name, OwnerName, OwnerEmail) VALUES ('100003171','apollo-config-service','刘一鸣','liuym@ctrip.com'"
},
{
"path": "open-config-center/apollo/apollo-adminservice/src/test/resources/logback-test.xml",
"chars": 378,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration scan=\"true\">\n\t<appender name=\"CONSOLE\" class=\"ch.qos.logback.core."
},
{
"path": "open-config-center/apollo/apollo-biz/pom.xml",
"chars": 1057,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/ApolloBizConfig.java",
"chars": 368,
"preview": "package com.ctrip.framework.apollo.biz;\n\nimport org.springframework.boot.autoconfigure.EnableAutoConfiguration;\nimport o"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/auth/WebSecurityConfig.java",
"chars": 1732,
"preview": "package com.ctrip.framework.apollo.biz.auth;\n\nimport com.ctrip.framework.apollo.common.condition.ConditionalOnMissingPro"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/config/BizConfig.java",
"chars": 5819,
"preview": "package com.ctrip.framework.apollo.biz.config;\n\nimport com.google.common.base.Strings;\nimport com.google.common.collect."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/customize/BizLoggingCustomizer.java",
"chars": 663,
"preview": "package com.ctrip.framework.apollo.biz.customize;\n\nimport com.ctrip.framework.apollo.biz.config.BizConfig;\nimport com.ct"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/customize/package-info.java",
"chars": 80,
"preview": "/**\n * 携程内部的日志系统,第三方公司可删除\n */\npackage com.ctrip.framework.apollo.biz.customize;\n"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Audit.java",
"chars": 1501,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Cluster.java",
"chars": 1532,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Commit.java",
"chars": 1835,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/GrayReleaseRule.java",
"chars": 2022,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Instance.java",
"chars": 2736,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.google.common.base.MoreObjects;\n\nimport java.util.Date;\n\nimpo"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/InstanceConfig.java",
"chars": 3673,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.google.common.base.MoreObjects;\n\nimport java.util.Date;\n\nimpo"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Item.java",
"chars": 1648,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Namespace.java",
"chars": 1535,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/NamespaceLock.java",
"chars": 583,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Privilege.java",
"chars": 1261,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/Release.java",
"chars": 2646,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/ReleaseHistory.java",
"chars": 2693,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/ReleaseMessage.java",
"chars": 1422,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.google.common.base.MoreObjects;\n\nimport java.util.Date;\n\nimpo"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/entity/ServerConfig.java",
"chars": 1437,
"preview": "package com.ctrip.framework.apollo.biz.entity;\n\nimport com.ctrip.framework.apollo.common.entity.BaseEntity;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/eureka/ApolloEurekaClientConfig.java",
"chars": 935,
"preview": "package com.ctrip.framework.apollo.biz.eureka;\n\n\nimport com.ctrip.framework.apollo.biz.config.BizConfig;\n\nimport org.spr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRuleCache.java",
"chars": 1644,
"preview": "package com.ctrip.framework.apollo.biz.grayReleaseRule;\n\nimport com.ctrip.framework.apollo.common.dto.GrayReleaseRuleIte"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolder.java",
"chars": 11081,
"preview": "package com.ctrip.framework.apollo.biz.grayReleaseRule;\n\nimport com.google.common.base.Joiner;\nimport com.google.common."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/DatabaseMessageSender.java",
"chars": 3828,
"preview": "package com.ctrip.framework.apollo.biz.message;\n\nimport com.google.common.collect.Queues;\n\nimport com.ctrip.framework.ap"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/MessageSender.java",
"chars": 184,
"preview": "package com.ctrip.framework.apollo.biz.message;\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic interface Messag"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageListener.java",
"chars": 265,
"preview": "package com.ctrip.framework.apollo.biz.message;\n\nimport com.ctrip.framework.apollo.biz.entity.ReleaseMessage;\n\n/**\n * @a"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScanner.java",
"chars": 4142,
"preview": "package com.ctrip.framework.apollo.biz.message;\n\nimport java.util.List;\nimport java.util.concurrent.Executors;\nimport ja"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/Topics.java",
"chars": 191,
"preview": "package com.ctrip.framework.apollo.biz.message;\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic class Topics {\n "
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/AppNamespaceRepository.java",
"chars": 834,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.common.entity.AppNamespace;\n\nimpor"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/AppRepository.java",
"chars": 539,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.common.entity.App;\n\nimport org.spr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/AuditRepository.java",
"chars": 760,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Audit;\n\nimport org.spri"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ClusterRepository.java",
"chars": 541,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\n\nimport com.ctrip.framework.apollo.biz.entity.Cluster;\n\nimport org.s"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/CommitRepository.java",
"chars": 904,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Commit;\n\nimport org.spr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/GrayReleaseRuleRepository.java",
"chars": 835,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.GrayReleaseRule;\n\nimpor"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/InstanceConfigRepository.java",
"chars": 2632,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.InstanceConfig;\n\nimport"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/InstanceRepository.java",
"chars": 391,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Instance;\n\nimport org.s"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ItemRepository.java",
"chars": 942,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Item;\n\nimport org.sprin"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/NamespaceLockRepository.java",
"chars": 388,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.NamespaceLock;\n\nimport "
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/NamespaceRepository.java",
"chars": 1140,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Namespace;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/PrivilegeRepository.java",
"chars": 544,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Privilege;\n\nimport org."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ReleaseHistoryRepository.java",
"chars": 1220,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.ReleaseHistory;\n\nimport"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ReleaseMessageRepository.java",
"chars": 1008,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.ReleaseMessage;\n\nimport"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ReleaseRepository.java",
"chars": 1795,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.Release;\n\nimport org.sp"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/ServerConfigRepository.java",
"chars": 398,
"preview": "package com.ctrip.framework.apollo.biz.repository;\n\nimport com.ctrip.framework.apollo.biz.entity.ServerConfig;\n\nimport o"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AdminService.java",
"chars": 1037,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.ctrip.framework.apollo.common.entity.App;\nimport com.ctrip.f"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppNamespaceService.java",
"chars": 5557,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.base.Preconditions;\nimport com.google.common.b"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppService.java",
"chars": 2807,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.ctrip.framework.apollo.biz.entity.Audit;\nimport com.ctrip.fr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AuditService.java",
"chars": 1071,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.ctrip.framework.apollo.biz.entity.Audit;\nimport com.ctrip.fr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySource.java",
"chars": 2791,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.base.Strings;\nimport com.google.common.collect"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ClusterService.java",
"chars": 4671,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.base.Strings;\n\nimport com.ctrip.framework.apol"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/CommitService.java",
"chars": 1089,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.ctrip.framework.apollo.biz.entity.Commit;\nimport com.ctrip.f"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/InstanceService.java",
"chars": 7047,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.base.Preconditions;\nimport com.google.common.c"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java",
"chars": 6139,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\n\nimport com.ctrip.framework.apollo.biz.config.BizConfig;\nimport com.ctr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java",
"chars": 4067,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.ctrip.framework.apollo.biz.entity.Audit;\nimport com.ctrip.fr"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceBranchService.java",
"chars": 8597,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.collect.Maps;\n\nimport com.ctrip.framework.apol"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceLockService.java",
"chars": 849,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.ctrip.framework.apollo.biz.entity.NamespaceLock;\nimport com."
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java",
"chars": 14601,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.collect.Maps;\nimport com.google.gson.Gson;\n\nim"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseHistoryService.java",
"chars": 3330,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.gson.Gson;\n\nimport com.ctrip.framework.apollo.biz.ent"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseMessageService.java",
"chars": 1672,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.collect.Lists;\n\nimport com.ctrip.framework.apo"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java",
"chars": 21936,
"preview": "package com.ctrip.framework.apollo.biz.service;\n\nimport com.google.common.collect.Lists;\nimport com.google.common.collec"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/ConfigChangeContentBuilder.java",
"chars": 2133,
"preview": "package com.ctrip.framework.apollo.biz.utils;\n\nimport com.google.gson.Gson;\nimport com.google.gson.GsonBuilder;\n\nimport "
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/EntityManagerUtil.java",
"chars": 1219,
"preview": "package com.ctrip.framework.apollo.biz.utils;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.sprin"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/ReleaseKeyGenerator.java",
"chars": 661,
"preview": "package com.ctrip.framework.apollo.biz.utils;\n\n\nimport com.ctrip.framework.apollo.biz.entity.Namespace;\nimport com.ctrip"
},
{
"path": "open-config-center/apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/utils/ReleaseMessageKeyGenerator.java",
"chars": 430,
"preview": "package com.ctrip.framework.apollo.biz.utils;\n\n\nimport com.google.common.base.Joiner;\n\nimport com.ctrip.framework.apollo"
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/application.properties",
"chars": 290,
"preview": "spring.datasource.url = jdbc:h2:mem:~/apolloconfigdb;mode=mysql;DB_CLOSE_ON_EXIT=FALSE\nspring.jpa.hibernate.naming_strat"
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/data.sql",
"chars": 675,
"preview": "INSERT INTO AppNamespace (AppId, Name, IsPublic) VALUES ('100003171', 'application', false);\nINSERT INTO AppNamespace (A"
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/logback-test.xml",
"chars": 378,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration scan=\"true\">\n\t<appender name=\"CONSOLE\" class=\"ch.qos.logback.core."
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/sql/clean.sql",
"chars": 260,
"preview": "DELETE FROM App;\nDELETE FROM AppNamespace;\nDELETE FROM Cluster;\nDELETE FROM namespace;\nDELETE FROM grayreleaserule;\nDELE"
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/sql/namespace-branch-test.sql",
"chars": 1025,
"preview": "INSERT INTO `app` ( `AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`, `IsDeleted`, `DataChange_CreatedBy`,"
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/sql/namespace-test.sql",
"chars": 2351,
"preview": "INSERT INTO `app` ( `AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`, `IsDeleted`, `DataChange_CreatedBy`,"
},
{
"path": "open-config-center/apollo/apollo-biz/src/test/resources/sql/release-creation-test.sql",
"chars": 12726,
"preview": "INSERT INTO `app` ( `AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`, `IsDeleted`, `DataChange_CreatedBy`,"
},
{
"path": "open-config-center/apollo/apollo-client/README.md",
"chars": 4477,
"preview": "## I. Prerequisite\n\n### I.I Requirements\n\n* Java: 1.7+\n\n### I.II Mandatory Setup\nApollo client requires `AppId` and `Env"
},
{
"path": "open-config-center/apollo/apollo-client/pom.xml",
"chars": 2072,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/Config.java",
"chars": 6834,
"preview": "package com.ctrip.framework.apollo;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.Set;\n\n/**\n * @auth"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigChangeListener.java",
"chars": 368,
"preview": "package com.ctrip.framework.apollo;\n\nimport com.ctrip.framework.apollo.model.ConfigChangeEvent;\n\n/**\n * @author Jason So"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigFile.java",
"chars": 908,
"preview": "package com.ctrip.framework.apollo;\n\nimport com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\n\n/**\n * @author Jaso"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigFileChangeListener.java",
"chars": 373,
"preview": "package com.ctrip.framework.apollo;\n\nimport com.ctrip.framework.apollo.model.ConfigFileChangeEvent;\n\n/**\n * @author Jaso"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/ConfigService.java",
"chars": 3133,
"preview": "package com.ctrip.framework.apollo;\n\nimport com.ctrip.framework.apollo.build.ApolloInjector;\nimport com.ctrip.framework."
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/build/ApolloInjector.java",
"chars": 1590,
"preview": "package com.ctrip.framework.apollo.build;\n\nimport com.ctrip.framework.apollo.exceptions.ApolloConfigException;\nimport co"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/enums/PropertyChangeType.java",
"chars": 154,
"preview": "package com.ctrip.framework.apollo.enums;\n\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic enum PropertyChangeTy"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/exceptions/ApolloConfigException.java",
"chars": 331,
"preview": "package com.ctrip.framework.apollo.exceptions;\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic class ApolloConfi"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/exceptions/ApolloConfigStatusCodeException.java",
"chars": 451,
"preview": "package com.ctrip.framework.apollo.exceptions;\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic class ApolloConfi"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfig.java",
"chars": 14348,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Locale;\nim"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfigFile.java",
"chars": 4139,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.Propert"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfigRepository.java",
"chars": 1710,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.List;\nimport java.util.Properties;\n\nimport org.slf4j.Log"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigManager.java",
"chars": 792,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.Config;\nimport com.ctrip.framework.apol"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigRepository.java",
"chars": 787,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Properties;\n\n/**\n * @author Jason Song(song_s@ctrip.com)"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigServiceLocator.java",
"chars": 5466,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.lang.reflect.Type;\nimport java.util.List;\nimport java.util.Ma"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfig.java",
"chars": 6955,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util."
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfigManager.java",
"chars": 1995,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Map;\n\nimport com.ctrip.framework.apollo.Config;\nimport c"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultInjector.java",
"chars": 2627,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.exceptions.ApolloConfigException;\nimpor"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/Injector.java",
"chars": 381,
"preview": "package com.ctrip.framework.apollo.internals;\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic interface Injector"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/JsonConfigFile.java",
"chars": 467,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\n\n/**\n * @a"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java",
"chars": 8677,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileO"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/PlainTextConfigFile.java",
"chars": 888,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.core.ConfigConsts;\nimport java.util.Pro"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/PropertiesConfigFile.java",
"chars": 1994,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Properties;\nimport java.util.concurrent.atomic.AtomicRef"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigLongPollService.java",
"chars": 13350,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.google.common.base.Joiner;\nimport com.google.common.base.Strin"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigRepository.java",
"chars": 12597,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RepositoryChangeListener.java",
"chars": 422,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Properties;\n\n/**\n * @author Jason Song(song_s@ctrip.com)"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/SimpleConfig.java",
"chars": 3154,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/XmlConfigFile.java",
"chars": 463,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\n\n/**\n * @a"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/YamlConfigFile.java",
"chars": 443,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\n\n/**\n * @a"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/YmlConfigFile.java",
"chars": 440,
"preview": "package com.ctrip.framework.apollo.internals;\n\nimport com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\n\n/**\n * @a"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/model/ConfigChange.java",
"chars": 2011,
"preview": "package com.ctrip.framework.apollo.model;\n\n\nimport com.ctrip.framework.apollo.enums.PropertyChangeType;\n\n/**\n * Holds th"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/model/ConfigChangeEvent.java",
"chars": 1341,
"preview": "package com.ctrip.framework.apollo.model;\n\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * A change event when a nam"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/model/ConfigFileChangeEvent.java",
"chars": 1472,
"preview": "package com.ctrip.framework.apollo.model;\n\nimport com.ctrip.framework.apollo.enums.PropertyChangeType;\n\n/**\n * @author J"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/ConfigFactory.java",
"chars": 716,
"preview": "package com.ctrip.framework.apollo.spi;\n\nimport com.ctrip.framework.apollo.Config;\nimport com.ctrip.framework.apollo.Con"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/ConfigFactoryManager.java",
"chars": 335,
"preview": "package com.ctrip.framework.apollo.spi;\n\n/**\n * @author Jason Song(song_s@ctrip.com)\n */\npublic interface ConfigFactoryM"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/ConfigRegistry.java",
"chars": 632,
"preview": "package com.ctrip.framework.apollo.spi;\n\n/**\n * The manually config registry, use with caution!\n *\n * @author Jason Song"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactory.java",
"chars": 2671,
"preview": "package com.ctrip.framework.apollo.spi;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.ctrip.fram"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactoryManager.java",
"chars": 1244,
"preview": "package com.ctrip.framework.apollo.spi;\n\nimport java.util.Map;\n\nimport com.ctrip.framework.apollo.build.ApolloInjector;\n"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigRegistry.java",
"chars": 863,
"preview": "package com.ctrip.framework.apollo.spi;\n\nimport java.util.Map;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloAnnotationProcessor.java",
"chars": 3251,
"preview": "package com.ctrip.framework.apollo.spring.annotation;\n\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\n"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloConfig.java",
"chars": 853,
"preview": "package com.ctrip.framework.apollo.spring.annotation;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotati"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloConfigChangeListener.java",
"chars": 1007,
"preview": "package com.ctrip.framework.apollo.spring.annotation;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotati"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloConfigRegistrar.java",
"chars": 2065,
"preview": "package com.ctrip.framework.apollo.spring.annotation;\n\nimport com.ctrip.framework.apollo.spring.property.SpringValueDefi"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/EnableApolloConfig.java",
"chars": 1346,
"preview": "package com.ctrip.framework.apollo.spring.annotation;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotati"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java",
"chars": 12279,
"preview": "package com.ctrip.framework.apollo.spring.annotation;\n\nimport java.beans.PropertyDescriptor;\nimport java.lang.reflect.Fi"
},
{
"path": "open-config-center/apollo/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java",
"chars": 3124,
"preview": "package com.ctrip.framework.apollo.spring.boot;\n\nimport com.ctrip.framework.apollo.Config;\nimport com.ctrip.framework.ap"
}
]
// ... and 2615 more files (download for full content)
About this extraction
This page contains the full source code of the 2014shijina2014/open-capacity-platform GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2815 files (22.9 MB), approximately 6.2M tokens, and a symbol index with 17200 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.