You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/12/29 02:56:39 UTC
[dubbo] branch 3.0 updated: 3.0 service discovery metadata refactor (#9506)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new b2a4f61 3.0 service discovery metadata refactor (#9506)
b2a4f61 is described below
commit b2a4f612ece11d6bac508600b22095ccd0e87c88
Author: ken.lj <ke...@gmail.com>
AuthorDate: Wed Dec 29 10:56:05 2021 +0800
3.0 service discovery metadata refactor (#9506)
---
.../apache/dubbo/rpc/cluster/filter/LogFilter.java | 4 +-
.../dubbo/rpc/cluster/merger/ResultMergerTest.java | 1 +
.../router/mesh/rule/VirtualServiceRuleTest.java | 3 +-
.../support/BroadCastClusterInvokerTest.java | 1 +
.../rpc/cluster/support/ClusterUtilsTest.java | 1 +
.../support/ConnectivityValidationTest.java | 2 -
.../cluster/support/ForkingClusterInvokerTest.java | 1 -
.../DefaultProviderURLMergeProcessorTest.java | 13 +-
.../apache/dubbo/common/cache/FileCacheStore.java | 238 +++++
.../common/config/CompositeConfiguration.java | 2 +-
.../dubbo/common/config/ConfigurationUtils.java | 2 +-
.../file/FileSystemDynamicConfiguration.java | 7 +-
.../wrapper/CompositeDynamicConfiguration.java | 2 +-
.../dubbo/common/constants/CommonConstants.java | 4 -
.../dubbo/common/constants/RegistryConstants.java | 6 +-
.../dubbo/common/deploy/AbstractDeployer.java | 2 +-
.../common/deploy/ApplicationDeployListener.java | 2 +
.../dubbo/common/deploy/ApplicationDeployer.java | 7 +-
.../org/apache/dubbo/common/utils/JsonUtils.java | 12 +-
.../common/utils/{LRUCache.java => LRU2Cache.java} | 8 +-
.../org/apache/dubbo/common/utils/LRUCache.java | 54 +-
.../org/apache/dubbo/common/utils/TypeUtils.java | 2 +-
.../definition/MethodDefinitionBuilder.java | 0
.../definition/ServiceDefinitionBuilder.java | 16 +-
.../metadata/definition/TypeDefinitionBuilder.java | 9 +-
.../definition/builder/ArrayTypeBuilder.java | 0
.../definition/builder/CollectionTypeBuilder.java | 0
.../definition/builder/DefaultTypeBuilder.java | 0
.../definition/builder/EnumTypeBuilder.java | 0
.../definition/builder/MapTypeBuilder.java | 0
.../metadata/definition/builder/TypeBuilder.java | 3 +-
.../definition/model/FullServiceDefinition.java | 0
.../definition/model/MethodDefinition.java | 0
.../definition/model/ServiceDefinition.java | 4 +-
.../metadata/definition/model/TypeDefinition.java | 0
.../dubbo/metadata/definition/util/ClassUtils.java | 0
.../definition/util/JaketConfigurationUtils.java | 0
.../org/apache/dubbo/rpc/model/FrameworkModel.java | 4 +
.../org/apache/dubbo/rpc/model/ModuleModel.java | 1 +
.../dubbo/rpc/model/ModuleServiceRepository.java | 9 +
.../org/apache/dubbo/rpc/model/ScopeModel.java | 5 +
.../apache/dubbo/rpc/model/ServiceDescriptor.java | 20 +
...e.dubbo.metadata.definition.builder.TypeBuilder | 0
.../common/CommonScopeModelInitializerTest.java | 1 +
.../org/apache/dubbo/common/URLBuilderTest.java | 1 +
.../common/beans/InstantiationStrategyTest.java | 1 +
.../dubbo/common/beans/ScopeBeanFactoryTest.java | 1 +
.../dubbo/common/cache/FileCacheStoreTest.java | 62 ++
.../concurrent/CompletableFutureTaskTest.java | 17 +-
.../dubbo/common/config/EnvironmentTest.java | 2 +-
.../common/config/PropertiesConfigurationTest.java | 1 +
.../FileSystemDynamicConfigurationFactoryTest.java | 2 +-
.../file/FileSystemDynamicConfigurationTest.java | 3 +-
.../common/extension/ExtensionDirectorTest.java | 1 +
.../common/extension/ExtensionLoaderTest.java | 1 +
.../activate/impl/OldActivateExt1Impl2.java | 3 +-
.../activate/impl/OldActivateExt1Impl3.java | 3 +-
.../inject/AdaptiveExtensionInjectorTest.java | 1 +
.../extension/support/ActivateComparatorTest.java | 1 +
.../common/lang/ShutdownHookCallbacksTest.java | 1 +
.../dubbo/common/logger/LoggerFactoryTest.java | 1 +
.../org/apache/dubbo/common/status/StatusTest.java | 2 +-
.../reporter/FrameworkStatusReportServiceTest.java | 3 +-
.../status/support/LoadStatusCheckerTest.java | 3 +-
.../status/support/MemoryStatusCheckerTest.java | 3 +-
.../common/status/support/StatusUtilsTest.java | 3 +-
.../threadpool/manager/ExecutorRepositoryTest.java | 1 +
.../utils/ClassLoaderResourceLoaderTest.java | 1 +
.../apache/dubbo/common/utils/ConfigUtilsTest.java | 1 +
.../org/apache/dubbo/common/utils/HolderTest.java | 2 +-
.../{LRUCacheTest.java => LRU2CacheTest.java} | 8 +-
.../apache/dubbo/common/utils/LogHelperTest.java | 1 +
.../org/apache/dubbo/common/utils/LogUtilTest.java | 2 +-
.../dubbo/common/utils/NamedThreadFactoryTest.java | 2 +-
.../dubbo/config/AbstractInterfaceConfigTest.java | 3 +-
.../context/ConfigConfigurationAdapterTest.java | 1 +
.../dubbo/config/context/ConfigManagerTest.java | 1 +
.../dubbo/descriptor/MethodDescriptorTest.java | 3 +-
.../dubbo/metadata/definition/MetadataTest.java | 7 +
.../dubbo/metadata/definition/MetadataUtils.java | 0
.../definition/ServiceDefinitionBuilderTest.java | 0
.../metadata/definition/Test3TypeBuilder.java | 0
.../dubbo/metadata/definition/TestTypeBuilder.java | 0
.../definition/TypeDefinitionBuilderTest.java | 0
.../definition/common/ClassExtendsMap.java | 0
.../metadata/definition/common/ColorEnum.java | 0
.../metadata/definition/common/OuterClass.java | 0
.../common/ResultWithRawCollections.java | 0
.../metadata/definition/common/TestService.java | 0
.../metadata/definition/service/ComplexObject.java | 4 +-
.../metadata/definition/service/DemoService.java | 0
.../service/annotation/MockMethodAnnotation.java | 0
.../service/annotation/MockMethodAnnotation2.java | 0
.../service/annotation/MockTypeAnnotation.java | 0
.../dubbo/rpc/model/ApplicationModelTest.java | 1 +
.../apache/dubbo/rpc/model/FrameworkModelTest.java | 1 +
.../rpc/model/FrameworkServiceRepositoryTest.java | 1 +
.../apache/dubbo/rpc/model/ModuleModelTest.java | 1 +
.../rpc/model/ModuleServiceRepositoryTest.java | 1 +
.../ScopeModelAwareExtensionProcessorTest.java | 1 +
.../org/apache/dubbo/rpc/model/ScopeModelTest.java | 1 +
.../apache/dubbo/rpc/model/ScopeModelUtilTest.java | 1 +
.../dubbo/rpc/model/ServiceRepositoryTest.java | 1 +
...e.dubbo.metadata.definition.builder.TypeBuilder | 0
.../src/test/resources/test-cache.dubbo.cache | 2 +
.../alibaba/dubbo/container/page/PageServlet.java | 1 -
.../container/page/pages/HomePageHandler.java | 2 +-
.../dubbo/container/page/pages/LogPageHandler.java | 2 -
.../container/page/pages/StatusPageHandler.java | 2 +-
.../java/org/apache/dubbo/config/ConfigTest.java | 1 -
.../apache/dubbo/generic/GenericServiceTest.java | 5 +-
.../org/apache/dubbo/config/ReferenceConfig.java | 13 +-
.../org/apache/dubbo/config/ServiceConfig.java | 91 +-
.../config/deploy/DefaultApplicationDeployer.java | 219 ++---
.../dubbo/config/deploy/DefaultModuleDeployer.java | 10 +-
.../ConfigurableMetadataServiceExporter.java | 123 +--
.../config/metadata/ExporterDeployListener.java | 96 ++
.../config/metadata/MetadataServiceDelegation.java | 228 +++++
...MetadataServiceURLParamsMetadataCustomizer.java | 31 +-
...e.dubbo.common.deploy.ApplicationDeployListener | 1 +
...g.apache.dubbo.metadata.MetadataServiceExporter | 2 -
...dubbo.registry.client.ServiceInstanceCustomizer | 2 +-
.../dubbo/config/AbstractMethodConfigTest.java | 1 +
.../apache/dubbo/config/ApplicationConfigTest.java | 1 +
.../config/ConfigScopeModelInitializerTest.java | 1 +
.../apache/dubbo/config/ConsumerConfigTest.java | 1 +
.../apache/dubbo/config/ProtocolConfigTest.java | 1 +
.../apache/dubbo/config/RegistryConfigTest.java | 2 +-
.../org/apache/dubbo/config/ServiceConfigTest.java | 3 +-
.../dubbo/config/bootstrap/DubboBootstrapTest.java | 43 +-
.../dubbo/config/bootstrap/MultiInstanceTest.java | 1 +
.../builders/AbstractInterfaceBuilderTest.java | 2 +-
...egistryCenterExportMetadataIntegrationTest.java | 5 +-
...egistryCenterExportProviderIntegrationTest.java | 1 +
...MultipleRegistryCenterInjvmIntegrationTest.java | 1 +
...terServiceDiscoveryRegistryIntegrationTest.java | 13 +-
...ceDiscoveryRegistryRegistryServiceListener.java | 3 -
.../ServiceDiscoveryRegistryInfoWrapper.java | 13 +-
...RegistryCenterDubboProtocolIntegrationTest.java | 23 +-
...egistryCenterExportMetadataIntegrationTest.java | 5 +-
...egistryCenterExportProviderIntegrationTest.java | 1 +
.../SingleRegistryCenterInjvmIntegrationTest.java | 1 +
.../metadata/MetadataServiceExporterTest.java | 252 -----
...dataServiceURLParamsMetadataCustomizerTest.java | 77 +-
.../ServiceInstanceHostPortCustomizerTest.java | 87 --
.../dubbo/config/mock/MockServiceDiscovery.java | 17 +-
.../config/utils/ConfigValidationUtilsTest.java | 2 +-
.../dubbo/config/utils/ReferenceCacheTest.java | 1 +
.../metadata/MetadataServiceExporterTest.java | 256 +++++
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../apache/dubbo/config/spring/ReferenceBean.java | 1 +
.../ReferenceAnnotationBeanPostProcessor.java | 5 +-
.../annotation/ServiceAnnotationPostProcessor.java | 3 +-
...onfigDefaultPropertyValueBeanPostProcessor.java | 2 +-
.../context/DubboBootstrapApplicationListener.java | 5 +-
...bboBootstrapStartStopListenerSpringAdapter.java | 1 +
.../context/DubboConfigApplicationListener.java | 5 +-
.../spring/context/DubboConfigBeanInitializer.java | 5 +-
.../context/DubboDeployApplicationListener.java | 1 +
.../DubboInfraBeanRegisterPostProcessor.java | 1 +
.../spring/context/DubboSpringInitContext.java | 1 +
.../spring/context/DubboSpringInitCustomizer.java | 1 +
.../spring/context/DubboSpringInitializer.java | 1 +
.../annotation/DubboComponentScanRegistrar.java | 1 +
.../DubboConfigConfigurationRegistrar.java | 1 +
.../context/event/DubboApplicationStateEvent.java | 1 +
.../context/event/DubboBootstrapStatedEvent.java | 1 +
.../context/event/DubboBootstrapStopedEvent.java | 1 +
.../spring/context/event/DubboConfigInitEvent.java | 1 +
.../spring/extension/SpringExtensionInjector.java | 1 +
.../spring/reference/ReferenceBeanManager.java | 5 +-
.../spring/reference/ReferenceBeanSupport.java | 3 +-
.../config/spring/reference/ReferenceCreator.java | 7 +-
.../schema/AnnotationBeanDefinitionParser.java | 2 +-
.../spring/schema/DubboNamespaceHandler.java | 1 +
.../spring/status/DataSourceStatusChecker.java | 1 +
.../config/spring/status/SpringStatusChecker.java | 1 +
.../config/spring/util/DubboAnnotationUtils.java | 1 +
.../dubbo/config/spring/util/DubboBeanUtils.java | 5 +-
.../org/apache/dubbo/config/spring/ConfigTest.java | 3 +-
.../dubbo/config/spring/DubboStateListener.java | 1 +
.../dubbo/config/spring/JavaConfigBeanTest.java | 1 +
.../dubbo/config/spring/ServiceBeanTest.java | 2 +-
.../annotation/MethodConfigCallbackTest.java | 1 +
.../factory/annotation/ParameterConvertTest.java | 1 +
.../factory/annotation/ReferenceCreatorTest.java | 3 +-
.../ServiceAnnotationPostProcessorTest.java | 1 +
.../annotation/ServiceBeanNameBuilderTest.java | 1 +
.../MultipleServicesWithMethodConfigsTest.java | 1 +
.../XmlReferenceBeanConditionalTest.java | 1 +
...nfigAnnotationReferenceBeanConditionalTest.java | 1 +
.../JavaConfigRawReferenceBeanConditionalTest.java | 1 +
.../JavaConfigReferenceBeanConditionalTest4.java | 1 +
.../configprops/SpringBootConfigPropsTest.java | 1 +
.../SpringBootMultipleConfigPropsTest.java | 1 +
.../importxml/SpringBootImportDubboXmlTest.java | 1 +
.../importxml2/SpringBootImportAndScanTest.java | 3 +-
.../spring/boot/importxml2/dubbo-provider.xml | 4 +-
.../context/KeepRunningOnSpringClosedTest.java | 1 +
.../DubboComponentScanRegistrarTest.java | 1 +
.../annotation/DubboConfigConfigurationTest.java | 2 +-
.../spring/context/annotation/EnableDubboTest.java | 1 +
.../customize/DubboSpringInitCustomizerTest.java | 1 +
.../properties/DefaultDubboConfigBinderTest.java | 1 +
.../extension/SpringExtensionInjectorTest.java | 1 +
.../config/spring/impl/MethodCallbackImpl.java | 1 +
.../spring/issues/issue6000/Issue6000Test.java | 3 +-
.../spring/issues/issue6000/adubbo/HelloDubbo.java | 1 +
.../issues/issue6000/dubbo/MyReferenceConfig.java | 1 +
.../spring/issues/issue6252/Issue6252Test.java | 1 +
.../spring/issues/issue7003/Issue7003Test.java | 1 +
.../issue9172/MultipleConsumerAndProviderTest.java | 1 +
.../issues/issue9207/ConfigCenterBeanTest.java | 1 +
.../consumer/DemoBeanFactoryPostProcessor.java | 1 +
.../propertyconfigurer/consumer/dubbo-consumer.xml | 4 +-
.../consumer2/dubbo-consumer.xml | 4 +-
.../consumer3/dubbo-consumer.xml | 4 +-
.../reference/DubboConfigBeanInitializerTest.java | 1 +
.../reference/localcall/local-call-consumer.xml | 4 +-
.../reference/localcallmix/local-call-consumer.xml | 4 +-
.../spring/registry/MockServiceDiscovery.java | 17 +-
.../registry/nacos/nacos/NacosServiceNameTest.java | 2 +-
.../spring/schema/DubboNamespaceHandlerTest.java | 1 +
.../config/spring/schema/GenericServiceTest.java | 1 +
.../schema/GenericServiceWithoutInterfaceTest.java | 1 +
.../spring/status/DataSourceStatusCheckerTest.java | 1 +
.../spring/status/SpringStatusCheckerTest.java | 1 +
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../support/nacos/NacosDynamicConfiguration.java | 21 +-
.../zookeeper/ZookeeperDynamicConfiguration.java | 1 +
.../dubbo/container/spring/SpringContainer.java | 1 +
.../apache/dubbo/demo/consumer/Application.java | 2 +-
.../apache/dubbo/demo/provider/Application.java | 2 +-
.../dubbo-demo-native-consumer/pom.xml | 4 -
.../dubbo/demo/graalvm/consumer/Application.java | 3 +-
.../dubbo-demo-native-provider/pom.xml | 4 -
.../demo/graalvm/provider/DemoServiceImpl.java | 3 +-
.../src/main/resources/spring/dubbo-consumer.xml | 2 +-
.../src/main/resources/spring/dubbo-provider.xml | 2 +-
dubbo-dependencies-bom/pom.xml | 2 +-
.../dubbo-dependencies-zookeeper/pom.xml | 2 +-
dubbo-distribution/dubbo-all/pom.xml | 42 -
dubbo-distribution/dubbo-bom/pom.xml | 15 -
dubbo-distribution/dubbo-core-spi/pom.xml | 18 -
.../apache/dubbo/cache/support/lru/LruCache.java | 4 +-
.../cache/support/lru/LruCacheFactoryTest.java | 3 +-
.../threadlocal/ThreadLocalCacheFactoryTest.java | 3 +-
dubbo-metadata/dubbo-metadata-api/pom.xml | 2 +-
.../dubbo/metadata/AbstractServiceNameMapping.java | 112 ++-
.../org/apache/dubbo/metadata/MappingListener.java | 2 +
.../apache/dubbo/metadata/MetadataConstants.java | 2 +-
.../org/apache/dubbo/metadata/MetadataInfo.java | 260 +++--
.../org/apache/dubbo/metadata/MetadataService.java | 103 +-
.../dubbo/metadata/MetadataServiceExporter.java | 101 --
.../apache/dubbo/metadata/MetadataServiceType.java | 72 --
.../apache/dubbo/metadata/ServiceNameMapping.java | 52 +-
.../dubbo/metadata/WritableMetadataService.java | 100 --
.../dubbo/metadata/report/MetadataReport.java | 7 +
.../metadata/report/MetadataReportInstance.java | 70 +-
.../report/support/AbstractMetadataReport.java | 8 +-
.../metadata/report/support/NopMetadataReport.java | 78 ++
.../AbstractAbstractWritableMetadataService.java | 98 --
.../metadata/AbstractServiceNameMappingTest.java | 136 +--
.../apache/dubbo/metadata/MetadataInfoTest.java | 48 +-
.../dubbo/metadata/MetadataServiceTypeTest.java | 48 -
.../report/MetadataReportInstanceTest.java | 17 +-
.../report/identifier/MetadataIdentifierTest.java | 1 -
.../support/AbstractMetadataReportFactoryTest.java | 6 +
.../report/support/AbstractMetadataReportTest.java | 14 +-
.../metadata/test/JTestMetadataReport4Test.java | 6 +
.../definition/protobuf/ProtobufTypeBuilder.java | 11 +-
.../protobuf/ProtobufTypeBuilderTest.java | 4 +
.../builder/EnumTypeDefinitionBuilder.java | 1 -
.../builder/GeneralTypeDefinitionBuilder.java | 1 -
.../builder/PrimitiveTypeDefinitionBuilder.java | 1 -
.../builder/ServiceDefinitionBuilder.java | 1 -
.../builder/SimpleTypeDefinitionBuilder.java | 1 -
.../PrimitiveTypeDefinitionBuilderTest.java | 1 -
.../store/nacos/NacosConfigServiceWrapper.java | 4 +
.../metadata/store/nacos/NacosMetadataReport.java | 74 +-
.../store/zookeeper/ZookeeperMetadataReport.java | 36 +-
.../zookeeper/ZookeeperMetadataReportTest.java | 29 +-
.../java/org/apache/dubbo/monitor/Constants.java | 3 -
.../org/apache/dubbo/maven/plugin/ClassFinder.java | 1 -
.../java/org/apache/dubbo/maven/plugin/Test.java | 4 -
.../META-INF/native-image/reflect-config.json | 3 -
.../META-INF/native-image/resource-config.json | 3 -
.../selector/ServiceInstanceSelector$Adaptive.java | 30 -
.../java/org/apache/dubbo/utils/CodeGenerator.java | 3 +-
.../dubbo/auth/AccessKeyAuthenticatorTest.java | 1 +
.../dubbo/auth/filter/ConsumerSignFilterTest.java | 1 +
.../dubbo/qos/command/impl/ChangeTelnet.java | 5 +-
.../apache/dubbo/qos/command/impl/CountTelnet.java | 5 +-
.../dubbo/qos/command/impl/InvokeTelnet.java | 7 +-
.../dubbo/qos/command/impl/PublishMetadata.java | 32 +-
.../dubbo/qos/command/impl/SelectTelnet.java | 5 +-
.../java/org/apache/dubbo/qos/server/Server.java | 11 +-
.../qos/server/handler/HttpProcessHandler.java | 17 +-
.../qos/server/handler/QosProcessHandler.java | 5 +-
.../qos/server/handler/TelnetProcessHandler.java | 7 +-
.../qos/command/CommandContextFactoryTest.java | 2 +-
.../dubbo/qos/command/CommandContextTest.java | 4 +-
.../qos/command/DefaultCommandExecutorTest.java | 1 +
.../command/decoder/HttpCommandDecoderTest.java | 5 +-
.../command/decoder/TelnetCommandDecoderTest.java | 3 +-
.../dubbo/qos/command/impl/ChangeTelnetTest.java | 5 +-
.../dubbo/qos/command/impl/CountTelnetTest.java | 1 +
.../apache/dubbo/qos/command/impl/HelpTest.java | 1 +
.../dubbo/qos/command/impl/InvokeTelnetTest.java | 5 +-
.../apache/dubbo/qos/command/impl/LiveTest.java | 1 +
.../org/apache/dubbo/qos/command/impl/LsTest.java | 1 +
.../apache/dubbo/qos/command/impl/OfflineTest.java | 1 +
.../apache/dubbo/qos/command/impl/OnlineTest.java | 3 +-
.../dubbo/qos/command/impl/PortTelnetTest.java | 1 +
.../qos/command/impl/PublishMetadataTest.java | 13 +-
.../dubbo/qos/command/impl/PwdTelnetTest.java | 5 +-
.../apache/dubbo/qos/command/impl/QuitTest.java | 3 +-
.../apache/dubbo/qos/command/impl/ReadyTest.java | 1 +
.../dubbo/qos/command/impl/SelectTelnetTest.java | 5 +-
.../dubbo/qos/command/impl/ShutdownTelnetTest.java | 3 +-
.../apache/dubbo/qos/command/impl/StartupTest.java | 1 +
.../dubbo/qos/legacy/ChangeTelnetHandlerTest.java | 1 +
.../dubbo/qos/legacy/TraceTelnetHandlerTest.java | 1 +
.../legacy/service/generic/GenericServiceTest.java | 1 +
.../dubbo/qos/protocol/QosProtocolWrapperTest.java | 1 +
.../qos/server/handler/HttpProcessHandlerTest.java | 3 +-
.../server/handler/LocalHostPermitHandlerTest.java | 2 +-
.../qos/server/handler/QosProcessHandlerTest.java | 3 +-
.../server/handler/TelnetProcessHandlerTest.java | 3 +-
.../java/org/apache/dubbo/qos/textui/TKvTest.java | 2 +-
.../org/apache/dubbo/qos/textui/TLadderTest.java | 3 +-
.../org/apache/dubbo/qos/textui/TTableTest.java | 2 +-
.../org/apache/dubbo/qos/textui/TTreeTest.java | 2 +-
.../registry/RegistryScopeModelInitializer.java | 2 -
.../registry/client/AbstractServiceDiscovery.java | 268 ++++-
.../client/AbstractServiceDiscoveryFactory.java | 10 +-
.../client/DefaultServiceDiscoveryFactory.java | 22 +-
.../registry/client/DefaultServiceInstance.java | 6 +-
.../client/FileSystemServiceDiscovery.java | 397 ++++----
.../registry/client/NopServiceDiscovery.java} | 25 +-
.../client/SelfHostMetaServiceDiscovery.java | 308 ------
.../dubbo/registry/client/ServiceDiscovery.java | 218 +----
.../registry/client/ServiceDiscoveryFactory.java | 5 +-
.../registry/client/ServiceDiscoveryRegistry.java | 97 +-
.../client/ServiceDiscoveryRegistryFactory.java | 2 +-
.../registry/client/ServiceDiscoveryService.java | 9 +-
.../dubbo/registry/client/ServiceInstance.java | 5 +
.../registry/client/ServiceInstanceCustomizer.java | 3 +-
.../listener/ServiceInstancesChangedListener.java | 145 +--
.../metadata/MetadataServiceNameMapping.java | 81 +-
.../registry/client/metadata/MetadataUtils.java | 104 +-
.../metadata/ProtocolPortsMetadataCustomizer.java | 33 +-
.../ServiceInstanceHostPortCustomizer.java | 27 +-
.../ServiceInstanceMetadataCustomizer.java | 60 +-
.../metadata/ServiceInstanceMetadataUtils.java | 114 +--
.../SpringCloudMetadataServiceURLBuilder.java | 3 +-
.../StandardMetadataServiceURLBuilder.java | 20 +-
.../store/InMemoryWritableMetadataService.java | 467 ---------
.../client/metadata/store/MetaCacheManager.java | 162 +++
.../metadata/store/RemoteMetadataServiceImpl.java | 170 ----
.../client/migration/model/MigrationRule.java | 10 +-
.../selector/RandomServiceInstanceSelector.java | 47 -
.../client/selector/ServiceInstanceSelector.java | 43 -
.../dubbo/registry/support/AbstractRegistry.java | 9 +-
.../registry/support/AbstractRegistryFactory.java | 4 +-
...g.apache.dubbo.metadata.WritableMetadataService | 1 -
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
...e.dubbo.registry.client.ServiceDiscoveryFactory | 2 +-
...dubbo.registry.client.ServiceInstanceCustomizer | 2 +-
...egistry.client.selector.ServiceInstanceSelector | 1 -
.../registry/ListenerRegistryWrapperTest.java | 3 +-
.../dubbo/registry/SimpleRegistryFactory.java | 1 +
.../AbstractServiceDiscoveryFactoryTest.java | 4 +
.../client/FileSystemServiceDiscoveryTest.java | 87 +-
.../registry/client/InMemoryServiceDiscovery.java | 110 ---
.../registry/client/InstanceAddressURLTest.java | 4 +-
.../client/ServiceDiscoveryRegistryTest.java | 34 +-
.../registry/client/ServiceDiscoveryTest.java | 484 +++++----
.../ServiceInstancesChangedListenerTest.java | 1032 ++++++++++----------
.../metadata/MetadataServiceNameMappingTest.java | 17 +-
.../client/metadata/MetadataUtilsTest.java | 1 +
.../ProtocolPortsMetadataCustomizerTest.java | 60 +-
.../ServiceInstanceHostPortCustomizerTest.java | 82 ++
.../ServiceInstanceMetadataCustomizerTest.java | 126 ---
.../metadata/ServiceInstanceMetadataUtilsTest.java | 402 ++++----
.../StandardMetadataServiceURLBuilderTest.java | 3 +-
.../store/InMemoryMetadataServiceTest.java | 399 ++++----
.../metadata/store/MetaCacheManagerTest.java | 119 +++
.../store/RemoteMetadataServiceImplTest.java | 134 ---
.../client/migration/MigrationInvokerTest.java | 1 +
.../client/migration/model/MigrationRuleTest.java | 8 +-
.../client/support/MockServiceDiscovery.java | 15 +-
.../support/MockServiceDiscoveryFactory.java | 2 +-
.../registry/integration/DynamicDirectoryTest.java | 3 +-
.../support/AbstractRegistryFactoryTest.java | 1 +
.../registry/support/FailbackRegistryTest.java | 1 +
.../support/ServiceOrientedRegistryTest.java | 199 ----
...g.apache.dubbo.registry.client.ServiceDiscovery | 2 -
.../src/test/resources/test-metadata.dubbo.cache | 1 +
dubbo-registry/dubbo-registry-dns/pom.xml | 90 --
.../org/apache/dubbo/registry/dns/DNSRegistry.java | 58 --
.../dubbo/registry/dns/DNSRegistryFactory.java | 34 -
.../dubbo/registry/dns/DNSServiceDiscovery.java | 153 ---
.../registry/dns/DNSServiceDiscoveryFactory.java | 28 -
.../dubbo/registry/dns/util/DNSClientConst.java | 47 -
.../dubbo/registry/dns/util/DNSResolver.java | 120 ---
.../dubbo/registry/dns/util/ResolveResult.java | 66 --
.../org.apache.dubbo.registry.RegistryFactory | 1 -
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
...e.dubbo.registry.client.ServiceDiscoveryFactory | 1 -
.../registry/dns/DNSServiceDiscoveryTest.java | 198 ----
.../dubbo/registry/dns/util/DNSResolverTest.java | 30 -
.../src/test/resources/dubbo.properties | 2 -
dubbo-registry/dubbo-registry-kubernetes/pom.xml | 73 --
.../kubernetes/KubernetesMeshEnvListener.java | 197 ----
.../KubernetesMeshEnvListenerFactory.java | 42 -
.../registry/kubernetes/KubernetesRegistry.java | 58 --
.../kubernetes/KubernetesRegistryFactory.java | 34 -
.../kubernetes/KubernetesServiceDiscovery.java | 399 --------
.../KubernetesServiceDiscoveryFactory.java | 28 -
.../dubbo/registry/kubernetes/MeshConstant.java | 43 -
.../kubernetes/util/KubernetesClientConst.java | 76 --
.../kubernetes/util/KubernetesConfigUtils.java | 113 ---
.../org.apache.dubbo.registry.RegistryFactory | 1 -
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
...e.dubbo.registry.client.ServiceDiscoveryFactory | 1 -
...luster.router.mesh.route.MeshEnvListenerFactory | 1 -
.../kubernetes/KubernetesServiceDiscoveryTest.java | 198 ----
.../org.mockito.plugins.MockMaker | 1 -
.../registry/multicast/MulticastRegistry.java | 5 +
.../multicast/MulticastRegistryFactory.java | 2 +-
.../multicast/MulticastServiceDiscovery.java | 16 +-
.../MulticastServiceDiscoveryFactory.java | 8 +-
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../multicast/MulticastRegistryFactoryTest.java | 1 +
.../multiple/MultipleServiceDiscovery.java | 77 +-
.../multiple/MultipleServiceDiscoveryFactory.java | 2 +-
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../registry/nacos/NacosServiceDiscovery.java | 19 +-
.../nacos/NacosServiceDiscoveryFactory.java | 5 +-
.../nacos/util/NacosInstanceManageUtil.java | 3 +-
.../nacos/util/NacosNamingServiceUtils.java | 13 +-
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../nacos/NacosServiceDiscoveryFactoryTest.java | 5 +
.../registry/nacos/NacosServiceDiscoveryTest.java | 21 +-
.../nacos/util/NacosNamingServiceUtilsTest.java | 3 +
dubbo-registry/dubbo-registry-xds/pom.xml | 115 ---
.../dubbo/registry/xds/XdsCertificateSigner.java | 52 -
.../org/apache/dubbo/registry/xds/XdsRegistry.java | 58 --
.../dubbo/registry/xds/XdsRegistryFactory.java | 34 -
.../dubbo/registry/xds/XdsServiceDiscovery.java | 89 --
.../registry/xds/XdsServiceDiscoveryFactory.java | 38 -
.../xds/istio/IstioCitadelCertificateSigner.java | 249 -----
.../dubbo/registry/xds/istio/IstioConstant.java | 53 -
.../apache/dubbo/registry/xds/istio/IstioEnv.java | 121 ---
.../dubbo/registry/xds/util/NodeBuilder.java | 29 -
.../dubbo/registry/xds/util/PilotExchanger.java | 163 ----
.../apache/dubbo/registry/xds/util/XdsChannel.java | 80 --
.../xds/util/protocol/AbstractProtocol.java | 242 -----
.../registry/xds/util/protocol/DeltaResource.java | 32 -
.../registry/xds/util/protocol/XdsProtocol.java | 48 -
.../xds/util/protocol/delta/DeltaEndpoint.java | 51 -
.../xds/util/protocol/delta/DeltaListener.java | 49 -
.../xds/util/protocol/delta/DeltaRoute.java | 47 -
.../xds/util/protocol/impl/EdsProtocol.java | 93 --
.../xds/util/protocol/impl/LdsProtocol.java | 106 --
.../xds/util/protocol/impl/RdsProtocol.java | 94 --
.../xds/util/protocol/message/Endpoint.java | 88 --
.../xds/util/protocol/message/EndpointResult.java | 62 --
.../xds/util/protocol/message/ListenerResult.java | 70 --
.../xds/util/protocol/message/RouteResult.java | 73 --
.../dubbo-registry-xds/src/main/proto/ca.proto | 57 --
.../org.apache.dubbo.registry.RegistryFactory | 1 -
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
...e.dubbo.registry.client.ServiceDiscoveryFactory | 1 -
....apache.dubbo.registry.xds.XdsCertificateSigner | 1 -
.../zookeeper/ZookeeperRegistryFactory.java | 2 -
.../zookeeper/ZookeeperServiceDiscovery.java | 92 +-
.../ZookeeperServiceDiscoveryChangeWatcher.java | 3 +-
.../ZookeeperServiceDiscoveryFactory.java | 2 +-
.../zookeeper/util/CuratorFrameworkUtils.java | 3 +-
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../registry/zookeeper/ZookeeperRegistryTest.java | 3 +-
.../ZookeeperServiceDiscoveryFactoryTest.java | 38 -
.../zookeeper/ZookeeperServiceDiscoveryTest.java | 135 +--
.../zookeeper/util/CuratorFrameworkUtilsTest.java | 11 +-
dubbo-registry/pom.xml | 3 -
.../org/apache/dubbo/remoting/api/Connection.java | 17 +-
.../dubbo/remoting/api/NettyEventLoopFactory.java | 5 +-
.../dubbo/remoting/api/PortUnificationServer.java | 19 +-
.../remoting/api/PortUnificationServerHandler.java | 3 +-
.../dubbo/remoting/api/SslClientTlsHandler.java | 7 +-
.../org/apache/dubbo/remoting/api/SslContexts.java | 11 +-
.../dubbo/remoting/api/SslServerTlsHandler.java | 7 +-
.../apache/dubbo/remoting/api/WireProtocol.java | 5 +-
.../ConnectionOrderedChannelHandler.java | 2 +-
.../dubbo/remoting/PerformanceServerTest.java | 6 +-
.../apache/dubbo/remoting/api/EmptyProtocol.java | 3 +-
.../MultiplexProtocolConnectionManagerTest.java | 1 +
.../remoting/api/PortUnificationServerTest.java | 2 +-
.../api/SingleProtocolConnectionManagerTest.java | 1 +
.../exchange/PortUnificationExchangerTest.java | 1 +
.../support/ExchangeHandlerDispatcherTest.java | 1 +
.../support/header/CloseTimerTaskTest.java | 1 +
.../support/header/HeaderExchangeServerTest.java | 1 +
.../support/header/ReconnectTimerTaskTest.java | 1 +
.../handler/ConnectChannelHandlerTest.java | 1 +
.../handler/WrappedChannelHandlerTest.java | 1 +
.../telnet/support/TelnetHandlerAdapterTest.java | 1 +
.../remoting/transport/AbstractCodecTest.java | 3 +-
.../transport/ChannelHandlerDispatcherTest.java | 1 +
.../dubbo/remoting/transport/CodecSupportTest.java | 1 +
.../remoting/transport/DecodeHandlerTest.java | 1 +
.../transport/MultiMessageHandlerTest.java | 1 +
.../dispatcher/ChannelEventRunnableTest.java | 1 +
.../transport/dispatcher/ChannelHandlersTest.java | 5 +-
.../remoting/http/jetty/JettyLoggerAdapter.java | 1 +
.../http/jetty/JettyLoggerAdapterTest.java | 2 +-
.../remoting/transport/netty/ThreadNameTest.java | 1 +
.../remoting/transport/netty4/NettyClient.java | 21 +-
.../remoting/transport/netty4/NettyServer.java | 19 +-
.../transport/netty4/NettyChannelTest.java | 5 +-
.../transport/netty4/NettyClientHandlerTest.java | 9 +-
.../transport/netty4/NettyCodecAdapterTest.java | 5 +-
.../curator5/Curator5ZookeeperClient.java | 19 +-
.../curator5/Curator5ZookeeperTransporter.java | 2 +-
.../curator5/Curator5ZookeeperClientTest.java | 3 +
.../curator5/Curator5ZookeeperTransporterTest.java | 3 +-
.../support/AbstractZookeeperTransporterTest.java | 5 +-
.../zookeeper/curator/CuratorZookeeperClient.java | 19 +-
.../curator/CuratorZookeeperTransporter.java | 2 +-
.../curator/CuratorZookeeperTransporterTest.java | 1 +
.../org/apache/dubbo/rpc/filter/GenericFilter.java | 7 +-
.../dubbo/rpc/filter/tps/DefaultTPSLimiter.java | 4 +-
.../org/apache/dubbo/rpc/support/MockInvoker.java | 3 +-
.../dubbo/rpc/PenetrateAttachmentSelectorTest.java | 1 +
.../java/org/apache/dubbo/rpc/RpcStatusTest.java | 1 +
.../dubbo/rpc/filter/AccessLogFilterTest.java | 1 +
.../apache/dubbo/rpc/filter/tps/StatItemTest.java | 2 +-
.../rpc/protocol/ProtocolListenerWrapperTest.java | 1 +
.../rpc/proxy/InvokerInvocationHandlerTest.java | 1 +
.../proxy/wrapper/StubProxyFactoryWrapperTest.java | 1 +
.../apache/dubbo/rpc/support/MockInvokerTest.java | 1 +
.../org/apache/dubbo/rpc/support/RpcUtilsTest.java | 1 +
.../dubbo/rpc/protocol/dubbo/DubboProtocol.java | 6 +-
.../protocol/dubbo/LazyConnectExchangeClient.java | 9 +-
.../dubbo/ReferenceCountExchangeClient.java | 12 +-
.../dubbo/DecodeableRpcInvocationTest.java | 1 +
.../protocol/dubbo/DecodeableRpcResultTest.java | 1 +
.../rpc/protocol/dubbo/DubboCountCodecTest.java | 1 +
.../dubbo/rpc/protocol/dubbo/MultiThreadTest.java | 1 +
.../dubbo/rpc/protocol/dubbo/RpcFilterTest.java | 1 +
.../dubbo/decode/DubboTelnetDecodeTest.java | 7 +-
.../rpc/protocol/dubbo/filter/TraceFilterTest.java | 1 +
.../dubbo/status/ThreadPoolStatusCheckerTest.java | 1 +
.../dubbo/rpc/protocol/dubbo/support/EnumBak.java | 1 +
.../dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java | 19 +-
.../dubbo/rpc/protocol/grpc/GrpcProtocol.java | 13 +-
.../dubbo/rpc/protocol/grpc/GrpcProtocolTest.java | 5 +-
.../protocol/grpc/support/DubboGreeterGrpc.java | 2 +-
.../rpc/protocol/rest/BaseRestProtocolServer.java | 1 +
.../dubbo/rpc/protocol/rest/RestProtocol.java | 1 +
.../rpc/protocol/rest/RpcExceptionMapperTest.java | 1 +
.../dubbo/rpc/protocol/tri/AbstractStreamTest.java | 5 +-
.../dubbo/rpc/protocol/tri/ClientStreamTest.java | 29 +-
.../dubbo/rpc/protocol/tri/CompressorTest.java | 1 +
.../rpc/protocol/tri/GrpcDataDecoderTest.java | 3 +-
.../dubbo/rpc/protocol/tri/ServerStreamTest.java | 29 +-
.../rpc/protocol/tri/SingleProtobufUtilsTest.java | 3 +-
.../tri/TripleHttp2ClientResponseHandlerTest.java | 7 +-
.../rpc/protocol/tri/TriplePathResolverTest.java | 1 +
.../dubbo/rpc/protocol/tri/TripleProtocolTest.java | 6 +-
.../dubbo/rpc/protocol/tri/WriteQueueTest.java | 9 +-
.../tri/service/TriBuiltinServiceTest.java | 3 +-
.../protocol/tri/service/TriHealthImplTest.java | 5 +-
.../serialize/hessian2/Hessian2ObjectInput.java | 3 +-
.../serialize/hessian2/Hessian2ObjectOutput.java | 3 +-
.../hessian2/dubbo/Hessian2FactoryInitializer.java | 3 +-
.../DubboRelaxedBinding2AutoConfigurationTest.java | 2 +-
.../endpoint/metadata/AbstractDubboMetadata.java | 2 +-
.../endpoint/metadata/DubboShutdownMetadata.java | 1 +
.../boot/actuate/health/DubboHealthIndicator.java | 1 +
.../boot/autoconfigure/DubboAutoConfiguration.java | 1 +
.../config/ServiceBeanIdConflictProcessor.java | 2 +-
.../event/AwaitingNonWebApplicationListener.java | 1 +
.../CompatibleDubboAutoConfigurationTest.java | 2 +-
...ubboAutoConfigurationTestWithoutProperties.java | 2 +-
.../AwaitingNonWebApplicationListenerTest.java | 1 +
.../apache/dubbo/test/check/DubboTestChecker.java | 3 +-
.../dubbo/test/check/RegistryCenterFinished.java | 1 +
.../dubbo/test/check/RegistryCenterStarted.java | 1 +
.../context/ZookeeperWindowsContext.java | 3 +-
.../initializer/DownloadZookeeperInitializer.java | 7 +-
.../initializer/UnpackZookeeperInitializer.java | 9 +-
.../processor/FindPidWindowsProcessor.java | 9 +-
.../processor/KillProcessWindowsProcessor.java | 9 +-
.../processor/ResetZookeeperProcessor.java | 7 +-
.../processor/StartZookeeperWindowsProcessor.java | 7 +-
.../test/spring/SpringAnnotationBeanTest.java | 1 +
.../test/spring/SpringJavaConfigBeanTest.java | 1 +
.../dubbo/test/spring/SpringXmlConfigTest.java | 11 +
.../spring/context/MockSpringInitCustomizer.java | 1 +
.../{dubbo-demo.xml => dubbo-demo-provider.xml} | 17 +-
.../src/main/resources/spring/dubbo-demo.xml | 10 -
pom.xml | 3 +-
605 files changed, 5277 insertions(+), 10555 deletions(-)
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/LogFilter.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/LogFilter.java
index d34c1b7..0007d65 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/LogFilter.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/LogFilter.java
@@ -18,9 +18,9 @@ package org.apache.dubbo.rpc.cluster.filter;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.Filter;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Invocation;
+import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
index e49ac1f..ef921bb 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.rpc.cluster.merger;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
index de3383d..52647a3 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
@@ -20,14 +20,15 @@ package org.apache.dubbo.rpc.cluster.router.mesh.rule;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboRoute;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboRouteDetail;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.VirtualServiceRule;
+
import org.junit.jupiter.api.Test;
import org.yaml.snakeyaml.Yaml;
import java.util.List;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertEquals;
public class VirtualServiceRuleTest {
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/BroadCastClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/BroadCastClusterInvokerTest.java
index ea09d02..b25e94f 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/BroadCastClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/BroadCastClusterInvokerTest.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.cluster.filter.DemoService;
+
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ClusterUtilsTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ClusterUtilsTest.java
index c32707d..69fd0b5 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ClusterUtilsTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ClusterUtilsTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.rpc.cluster.support;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.URLBuilder;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ConnectivityValidationTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ConnectivityValidationTest.java
index 94f6579..41c96b5 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ConnectivityValidationTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ConnectivityValidationTest.java
@@ -41,8 +41,6 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadLocalRandom;
import static org.mockito.Mockito.when;
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ForkingClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ForkingClusterInvokerTest.java
index 17d6905..e00092d 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ForkingClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ForkingClusterInvokerTest.java
@@ -34,7 +34,6 @@ import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/merger/DefaultProviderURLMergeProcessorTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/merger/DefaultProviderURLMergeProcessorTest.java
index 8a5f43b..801b4cb 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/merger/DefaultProviderURLMergeProcessorTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/merger/DefaultProviderURLMergeProcessorTest.java
@@ -20,31 +20,32 @@ package org.apache.dubbo.rpc.cluster.support.merger;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.URLBuilder;
import org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.apache.dubbo.common.constants.CommonConstants.ALIVE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.CORE_THREADS_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY_PREFIX;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.QUEUES_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
public class DefaultProviderURLMergeProcessorTest {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java b/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java
new file mode 100644
index 0000000..bdf8467
--- /dev/null
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java
@@ -0,0 +1,238 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.dubbo.common.cache;
+
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.CollectionUtils;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.RandomAccessFile;
+import java.nio.channels.FileChannel;
+import java.nio.channels.FileLock;
+import java.nio.channels.OverlappingFileLockException;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Local file interaction class that can back different caches.
+ *
+ * All items in local file are of human friendly format.
+ */
+public class FileCacheStore {
+ private static final Logger logger = LoggerFactory.getLogger(FileCacheStore.class);
+
+ private static final int DEL = 0x7F;
+ private static final char ESCAPE = '%';
+ private static final Set<Character> ILLEGALS = new HashSet<Character>();
+ private static final String SUFFIX = ".dubbo.cache";
+
+ private String fileName;
+ private File basePath;
+ private File cacheFile;
+ private FileLock directoryLock;
+ private File lockFile;
+
+ public FileCacheStore(String basePath, String fileName) throws IOException, PathNotExclusiveException {
+ if (basePath == null) {
+ basePath = System.getProperty("user.home") + "/.dubbo/";
+ }
+ this.basePath = new File(basePath);
+ this.fileName = fileName;
+
+ this.cacheFile = getFile(fileName, SUFFIX);
+ if (cacheFile != null && !cacheFile.exists()) {
+ cacheFile.createNewFile();
+ }
+ }
+
+ public Map<String, String> loadCache(int entrySize) throws IOException {
+ Map<String, String> properties = new HashMap<>();
+ try (BufferedReader reader = new BufferedReader(new FileReader(cacheFile))) {
+ int count = 1;
+ String line = reader.readLine();
+ while (line != null && count <= entrySize) {
+ // content has '=' need to be encoded before write
+ if (!line.equals("") && !line.startsWith("#") && line.contains("=")) {
+ String[] pairs = line.split("=");
+ properties.put(pairs[0], pairs[1]);
+ count++;
+ }
+ line = reader.readLine();
+ }
+
+ if (count > entrySize) {
+ logger.warn("Cache file was truncated for exceeding the maximum entry size " + entrySize);
+ }
+ } catch (IOException e) {
+ logger.warn("Load cache failed ", e);
+ throw e;
+ }
+ return properties;
+ }
+
+ public File getFile(String cacheName, String suffix) throws PathNotExclusiveException {
+ cacheName = safeName(cacheName);
+ if (!cacheName.endsWith(suffix)) {
+ cacheName = cacheName + suffix;
+ }
+ return getFile(cacheName);
+ }
+
+ /**
+ * Get a file object for the given name
+ *
+ * @param name the file name
+ * @return a file object
+ */
+ public File getFile(String name) throws PathNotExclusiveException {
+ synchronized (this) {
+ File candidate = basePath;
+ // ensure cache store path exists
+ if (!candidate.isDirectory() && !candidate.mkdirs()) {
+ throw new RuntimeException("Cache store path can't be created: " + candidate);
+ }
+
+ try {
+ tryFileLock(name);
+ } catch (PathNotExclusiveException e) {
+ logger.warn("Path '" + basePath
+ + "' is already used by an existing Dubbo process.\n"
+ + "Please specify another one explicitly.");
+ throw e;
+ }
+ }
+
+ File file = new File(basePath, name);
+ for (File parent = file.getParentFile(); parent != null; parent = parent.getParentFile()) {
+ if (basePath.equals(parent)) {
+ return file;
+ }
+ }
+
+ throw new IllegalArgumentException("Attempted to access file outside the dubbo cache path");
+ }
+
+ /**
+ * sanitize a name for valid file or directory name
+ *
+ * @param name
+ * @return sanitized version of name
+ */
+ private static String safeName(String name) {
+ int len = name.length();
+ StringBuilder sb = new StringBuilder(len);
+ for (int i = 0; i < len; i++) {
+ char c = name.charAt(i);
+ if (c <= ' ' || c >= DEL || (c >= 'A' && c <= 'Z') || ILLEGALS.contains(c) || c == ESCAPE) {
+ sb.append(ESCAPE);
+ sb.append(String.format("%04x", (int) c));
+ } else {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ private void tryFileLock(String fileName) throws PathNotExclusiveException {
+ lockFile = new File(basePath.getAbsoluteFile(), fileName + ".lock");
+ lockFile.deleteOnExit();
+
+ FileLock dirLock;
+ try {
+ lockFile.createNewFile();
+ if (!lockFile.exists()) {
+ throw new AssertionError("Failed to create lock file " + lockFile);
+ }
+ FileChannel lockFileChannel = new RandomAccessFile(lockFile, "rw").getChannel();
+ dirLock = lockFileChannel.tryLock();
+ } catch (OverlappingFileLockException ofle) {
+ dirLock = null;
+ } catch (IOException ioe) {
+ throw new RuntimeException(ioe);
+ }
+
+ if (dirLock == null) {
+ throw new PathNotExclusiveException(basePath.getAbsolutePath() + "/" + fileName + " is not exclusive.");
+ }
+
+ this.directoryLock = dirLock;
+ }
+
+ private void unlock() {
+ if (directoryLock != null && directoryLock.isValid()) {
+ try {
+ directoryLock.release();
+ directoryLock.channel().close();
+ deleteFile(lockFile);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to release cache path's lock file:" + lockFile, e);
+ }
+ }
+ }
+
+ public void refreshCache(Map<String, String> properties, String comment) {
+ if (CollectionUtils.isEmptyMap(properties)) {
+ return;
+ }
+
+ try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cacheFile, false), StandardCharsets.UTF_8))) {
+ bw.write("#" + comment);
+ bw.write("#" + new Date().toString());
+ bw.newLine();
+ for (Map.Entry<String, String> e : properties.entrySet()) {
+ String key = e.getKey();
+ String val = e.getValue();
+ bw.write(key + "=" + val);
+ bw.newLine();
+ }
+ bw.flush();
+ } catch (IOException e) {
+ logger.warn("Update cache error.");
+ }
+ }
+
+ private static void deleteFile(File f) {
+ if (!f.delete()) {
+ logger.debug("Failed to delete file " + f.getAbsolutePath());
+ }
+ }
+
+ private static class PathNotExclusiveException extends Exception {
+ public PathNotExclusiveException() {
+ super();
+ }
+
+ public PathNotExclusiveException(String msg) {
+ super(msg);
+ }
+ }
+
+ public void destroy() {
+ unlock();
+ }
+}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
index a1e5e0e..34e7754 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
@@ -47,7 +47,7 @@ public class CompositeConfiguration implements Configuration {
}
}
- //FIXME, consider change configList to SortedMap to replace this boolean status.
+ //FIXME, consider changing configList to SortedMap to replace this boolean status.
public boolean isDynamicIncluded() {
return dynamicIncluded;
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
index d0c2f23..acbbf36 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
@@ -164,7 +164,7 @@ public class ConfigurationUtils {
public static Map<String, String> parseProperties(String content) throws IOException {
Map<String, String> map = new HashMap<>();
if (StringUtils.isEmpty(content)) {
- logger.warn("You specified the config center, but there's not even one single config item in it.");
+ logger.warn("Config center was specified, but no config item found.");
} else {
Properties properties = new Properties();
properties.load(new StringReader(content));
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
index fa7467c..815e714 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
@@ -16,9 +16,6 @@
*/
package org.apache.dubbo.common.config.configcenter.file;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.configcenter.ConfigChangeType;
import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;
@@ -33,6 +30,10 @@ import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ScopeModelUtil;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystem;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java
index a2e8dea..a345ad4 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java
@@ -97,7 +97,7 @@ public class CompositeDynamicConfiguration implements DynamicConfiguration {
try {
configuration.close();
} catch (Exception e) {
- logger.warn("close dynamic configuration failed: " + e.getMessage(), e);
+ logger.warn("close dynamic configuration " + configuration.getClass().getName() + "failed: " + e.getMessage(), e);
}
}
configurations.clear();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
index bb3833b..661a9aa 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
@@ -217,10 +217,6 @@ public interface CommonConstants {
String METADATA_KEY = "metadata-type";
- String CONFIG_MAPPING_TYPE = "config";
-
- String METADATA_MAPPING_TYPE = "metadata";
-
String DEFAULT_METADATA_STORAGE_TYPE = "local";
String REMOTE_METADATA_STORAGE_TYPE = "remote";
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java
index d8061cb..8f5a612 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java
@@ -96,11 +96,7 @@ public interface RegistryConstants {
String SERVICE_REGISTRY_PROTOCOL = "service-discovery-registry";
/**
- * The parameter key of the subscribed service names for Service-Oriented Registry
- * <p>
- * If there is a multiple-values, the "comma" is the separator.
- *
- * @since 2.7.5
+ * Specify registry level services consumer needs to subscribe to, multiple values should be separated using ",".
*/
String SUBSCRIBED_SERVICE_NAMES_KEY = "subscribed-services";
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java
index ba53201..704f0ea 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/AbstractDeployer.java
@@ -41,7 +41,7 @@ public abstract class AbstractDeployer<E extends ScopeModel> implements Deployer
protected AtomicBoolean initialized = new AtomicBoolean(false);
- private List<DeployListener<E>> listeners = new ArrayList<>();
+ protected List<DeployListener<E>> listeners = new ArrayList<>();
private E scopeModel;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
index 17fc82c..674ca90 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
@@ -25,5 +25,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
*/
@SPI(scope = ExtensionScope.APPLICATION)
public interface ApplicationDeployListener extends DeployListener<ApplicationModel> {
+ default void onModuleStarted(ApplicationModel applicationModel) {
+ }
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployer.java b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployer.java
index e882434..611f47c 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployer.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployer.java
@@ -51,6 +51,11 @@ public interface ApplicationDeployer extends Deployer<ApplicationModel> {
void prepareApplicationInstance();
/**
+ * Register application instance and start internal services
+ */
+ void prepareInternalModule();
+
+ /**
* Pre-processing before destroy model
*/
void preDestroy();
@@ -77,7 +82,7 @@ public interface ApplicationDeployer extends Deployer<ApplicationModel> {
/**
* check all module state and update application state
*/
- void checkState();
+ void checkState(ModuleModel moduleModel, DeployState moduleState);
/**
* module state changed callbacks
diff --git a/dubbo-registry/dubbo-registry-xds/src/main/java/org/apache/dubbo/registry/xds/XdsEnv.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/JsonUtils.java
similarity index 79%
rename from dubbo-registry/dubbo-registry-xds/src/main/java/org/apache/dubbo/registry/xds/XdsEnv.java
rename to dubbo-common/src/main/java/org/apache/dubbo/common/utils/JsonUtils.java
index e0fa40c..7548580 100644
--- a/dubbo-registry/dubbo-registry-xds/src/main/java/org/apache/dubbo/registry/xds/XdsEnv.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/JsonUtils.java
@@ -14,8 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.registry.xds;
+package org.apache.dubbo.common.utils;
-public interface XdsEnv {
- String getCluster();
+import com.google.gson.Gson;
+
+public class JsonUtils {
+ private static final Gson gson = new Gson();
+
+ public static Gson getGson() {
+ return gson;
+ }
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRU2Cache.java
similarity index 95%
copy from dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java
copy to dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRU2Cache.java
index 6b39890..b64a2d2 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRU2Cache.java
@@ -25,8 +25,10 @@ import java.util.concurrent.locks.ReentrantLock;
* </p>
* When the data accessed for the first time, add it to history list. If the size of history list reaches max capacity, eliminate the earliest data (first in first out).
* When the data already exists in the history list, and be accessed for the second time, then it will be put into cache.
+ *
+ * TODO, consider replacing with ConcurrentHashMap to improve performance under concurrency
*/
-public class LRUCache<K, V> extends LinkedHashMap<K, V> {
+public class LRU2Cache<K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = -5167631809472116969L;
@@ -39,11 +41,11 @@ public class LRUCache<K, V> extends LinkedHashMap<K, V> {
// as history list
private PreCache<K, Boolean> preCache;
- public LRUCache() {
+ public LRU2Cache() {
this(DEFAULT_MAX_CAPACITY);
}
- public LRUCache(int maxCapacity) {
+ public LRU2Cache(int maxCapacity) {
super(16, DEFAULT_LOAD_FACTOR, true);
this.maxCapacity = maxCapacity;
this.preCache = new PreCache<>(maxCapacity);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java
index 6b39890..90e905a 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/LRUCache.java
@@ -20,12 +20,6 @@ import java.util.LinkedHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-/**
- * LRU-2
- * </p>
- * When the data accessed for the first time, add it to history list. If the size of history list reaches max capacity, eliminate the earliest data (first in first out).
- * When the data already exists in the history list, and be accessed for the second time, then it will be put into cache.
- */
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = -5167631809472116969L;
@@ -36,9 +30,6 @@ public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final Lock lock = new ReentrantLock();
private volatile int maxCapacity;
- // as history list
- private PreCache<K, Boolean> preCache;
-
public LRUCache() {
this(DEFAULT_MAX_CAPACITY);
}
@@ -46,7 +37,6 @@ public class LRUCache<K, V> extends LinkedHashMap<K, V> {
public LRUCache(int maxCapacity) {
super(16, DEFAULT_LOAD_FACTOR, true);
this.maxCapacity = maxCapacity;
- this.preCache = new PreCache<>(maxCapacity);
}
@Override
@@ -78,15 +68,7 @@ public class LRUCache<K, V> extends LinkedHashMap<K, V> {
public V put(K key, V value) {
lock.lock();
try {
- if (preCache.containsKey(key)) {
- // add it to cache
- preCache.remove(key);
- return super.put(key, value);
- } else {
- // add it to history list
- preCache.put(key, true);
- return value;
- }
+ return super.put(key, value);
} finally {
lock.unlock();
}
@@ -96,7 +78,6 @@ public class LRUCache<K, V> extends LinkedHashMap<K, V> {
public V remove(Object key) {
lock.lock();
try {
- preCache.remove(key);
return super.remove(key);
} finally {
lock.unlock();
@@ -117,43 +98,26 @@ public class LRUCache<K, V> extends LinkedHashMap<K, V> {
public void clear() {
lock.lock();
try {
- preCache.clear();
super.clear();
} finally {
lock.unlock();
}
}
+ public void lock() {
+ lock.lock();
+ }
+
+ public void releaseLock() {
+ lock.unlock();
+ }
+
public int getMaxCapacity() {
return maxCapacity;
}
public void setMaxCapacity(int maxCapacity) {
- preCache.setMaxCapacity(maxCapacity);
this.maxCapacity = maxCapacity;
}
- static class PreCache<K, V> extends LinkedHashMap<K, V> {
-
- private volatile int maxCapacity;
-
- public PreCache() {
- this(DEFAULT_MAX_CAPACITY);
- }
-
- public PreCache(int maxCapacity) {
- super(16, DEFAULT_LOAD_FACTOR, true);
- this.maxCapacity = maxCapacity;
- }
-
- @Override
- protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
- return size() > maxCapacity;
- }
-
- public void setMaxCapacity(int maxCapacity) {
- this.maxCapacity = maxCapacity;
- }
- }
-
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java
index 3b2733f..0555602 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java
@@ -18,10 +18,10 @@ package org.apache.dubbo.common.utils;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
-import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
index db09b76..cfdec72 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java
@@ -16,14 +16,6 @@
*/
package org.apache.dubbo.metadata.definition;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
import org.apache.dubbo.metadata.definition.model.MethodDefinition;
import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
@@ -32,6 +24,14 @@ import org.apache.dubbo.metadata.definition.util.ClassUtils;
import com.google.gson.Gson;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
/**
* 2015/1/27.
*/
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
similarity index 90%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
index b2758e3..d3029b0 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
@@ -16,13 +16,13 @@
*/
package org.apache.dubbo.metadata.definition;
-import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder;
import org.apache.dubbo.metadata.definition.builder.TypeBuilder;
import org.apache.dubbo.metadata.definition.model.TypeDefinition;
+import org.apache.dubbo.rpc.model.FrameworkModel;
import java.lang.reflect.Type;
import java.util.ArrayList;
@@ -37,11 +37,10 @@ import java.util.Set;
*/
public class TypeDefinitionBuilder {
private static final Logger logger = LoggerFactory.getLogger(TypeDefinitionBuilder.class);
- static final List<TypeBuilder> BUILDERS;
+ public static List<TypeBuilder> BUILDERS;
- static {
- ExtensionLoader<TypeBuilder> extensionLoader = ExtensionLoader.getExtensionLoader(TypeBuilder.class);
- Set<TypeBuilder> tbs = extensionLoader.getSupportedExtensionInstances();
+ public static void initBuilders(FrameworkModel model) {
+ Set<TypeBuilder> tbs = model.getExtensionLoader(TypeBuilder.class).getSupportedExtensionInstances();
BUILDERS = new ArrayList<>(tbs);
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
similarity index 93%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
index 050de3c..8a8f830 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.metadata.definition.builder;
+import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.common.lang.Prioritized;
import org.apache.dubbo.metadata.definition.model.TypeDefinition;
@@ -26,7 +27,7 @@ import java.util.Map;
/**
* 2015/1/27.
*/
-@SPI
+@SPI(scope = ExtensionScope.FRAMEWORK)
public interface TypeBuilder extends Prioritized {
/**
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/MethodDefinition.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
index 40ced04..a16eb6a 100755
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/ServiceDefinition.java
@@ -16,14 +16,14 @@
*/
package org.apache.dubbo.metadata.definition.model;
+import org.apache.dubbo.metadata.definition.util.ClassUtils;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-import org.apache.dubbo.metadata.definition.util.ClassUtils;
-
/**
* 2015/1/27.
*/
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/model/TypeDefinition.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/util/ClassUtils.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java
rename to dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
index f66873a..168df38 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.resource.GlobalResourcesRepository;
import org.apache.dubbo.common.utils.Assert;
import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;
import java.util.ArrayList;
import java.util.Collections;
@@ -81,6 +82,9 @@ public class FrameworkModel extends ScopeModel {
@Override
protected void initialize() {
super.initialize();
+
+ TypeDefinitionBuilder.initBuilders(this);
+
serviceRepository = new FrameworkServiceRepository(this);
ExtensionLoader<ScopeModelInitializer> initializerExtensionLoader = this.getExtensionLoader(ScopeModelInitializer.class);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
index c8afc13..54a27c7 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
@@ -67,6 +67,7 @@ public class ModuleModel extends ScopeModel {
if (applicationDeployer != null) {
applicationDeployer.notifyModuleChanged(this, DeployState.PENDING);
}
+ this.internalModule = isInternal;
}
@Override
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleServiceRepository.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleServiceRepository.java
index b16a669..4815b30 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleServiceRepository.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleServiceRepository.java
@@ -188,6 +188,15 @@ public class ModuleServiceRepository {
return Collections.unmodifiableList(serviceDescriptors);
}
+ public ServiceDescriptor getService(String serviceName) {
+ // TODO, may need to distinguish service by class loader.
+ List<ServiceDescriptor> serviceDescriptors = services.get(serviceName);
+ if (CollectionUtils.isEmpty(serviceDescriptors)) {
+ return null;
+ }
+ return serviceDescriptors.get(0);
+ }
+
public ServiceDescriptor lookupService(String interfaceName) {
if (services.containsKey(interfaceName)) {
List<ServiceDescriptor> serviceDescriptors = services.get(interfaceName);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
index dd4becb..1eb9772 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
@@ -72,6 +72,7 @@ public abstract class ScopeModel implements ExtensionAccessor {
private Map<String, Object> attributes;
private final AtomicBoolean destroyed = new AtomicBoolean(false);
+ protected boolean internalModule;
public ScopeModel(ScopeModel parent, ExtensionScope scope) {
this.parent = parent;
@@ -227,6 +228,10 @@ public abstract class ScopeModel implements ExtensionAccessor {
this.desc = buildDesc();
}
+ public boolean isInternal() {
+ return internalModule;
+ }
+
/**
* @return the describe string of this scope model
*/
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceDescriptor.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceDescriptor.java
index c063ec5..b3ac2f4 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceDescriptor.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ServiceDescriptor.java
@@ -17,16 +17,21 @@
package org.apache.dubbo.rpc.model;
import org.apache.dubbo.common.utils.CollectionUtils;
+import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;
+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.ConcurrentNavigableMap;
+import java.util.concurrent.ConcurrentSkipListMap;
/**
* ServiceModel and ServiceMetadata are to some extend duplicated with each other. We should merge them in the future.
@@ -37,11 +42,18 @@ public class ServiceDescriptor {
// to accelerate search
private final Map<String, List<MethodDescriptor>> methods = new HashMap<>();
private final Map<String, Map<String, MethodDescriptor>> descToMethods = new HashMap<>();
+ private ConcurrentNavigableMap<String, FullServiceDefinition> serviceDefinitions = new ConcurrentSkipListMap<>();
public ServiceDescriptor(Class<?> interfaceClass) {
this.serviceInterfaceClass = interfaceClass;
this.serviceName = interfaceClass.getName();
initMethods();
+ initServiceDefinition(interfaceClass);
+ }
+
+ private void initServiceDefinition(Class<?> interfaceClass) {
+ FullServiceDefinition fullServiceDefinition = ServiceDefinitionBuilder.buildFullDefinition(interfaceClass, Collections.emptyMap());
+ serviceDefinitions.put(serviceName, fullServiceDefinition);
}
private void initMethods() {
@@ -116,6 +128,14 @@ public class ServiceDescriptor {
return methods.get(methodName);
}
+ public ConcurrentNavigableMap<String, FullServiceDefinition> getServiceDefinitions() {
+ return serviceDefinitions;
+ }
+
+ public FullServiceDefinition getServiceDefinition(String serviceName) {
+ return serviceDefinitions.get(serviceName);
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
rename to dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/CommonScopeModelInitializerTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/CommonScopeModelInitializerTest.java
index 3062c58..d7794f5 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/CommonScopeModelInitializerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/CommonScopeModelInitializerTest.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.status.reporter.FrameworkStatusReportService;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/URLBuilderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/URLBuilderTest.java
index 7abdda6..e083969 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/URLBuilderTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/URLBuilderTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.common;
import org.apache.dubbo.common.utils.NetUtils;
+
import org.junit.jupiter.api.Test;
import java.util.Arrays;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/beans/InstantiationStrategyTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/beans/InstantiationStrategyTest.java
index 80bdcf3..c54fe38 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/beans/InstantiationStrategyTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/beans/InstantiationStrategyTest.java
@@ -27,6 +27,7 @@ import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ScopeModelAccessor;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/beans/ScopeBeanFactoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/beans/ScopeBeanFactoryTest.java
index 3f95fa8..8a5fa08 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/beans/ScopeBeanFactoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/beans/ScopeBeanFactoryTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.beans.model.FooBeanWithApplicationModel;
import org.apache.dubbo.common.beans.model.FooBeanWithFrameworkModel;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/cache/FileCacheStoreTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/cache/FileCacheStoreTest.java
new file mode 100644
index 0000000..e9cc973
--- /dev/null
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/cache/FileCacheStoreTest.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.dubbo.common.cache;
+
+import org.junit.jupiter.api.Test;
+
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class FileCacheStoreTest {
+ FileCacheStore cacheStore;
+
+ @Test
+ public void testCache() throws Exception {
+ String directoryPath = getDirectoryOfClassPath();
+ String filePath = "test-cache.dubbo.cache";
+ cacheStore = new FileCacheStore(directoryPath, filePath);
+ Map<String, String> properties = cacheStore.loadCache(10);
+ assertEquals(2, properties.size());
+
+ Map<String, String> newProperties = new HashMap<>();
+ newProperties.put("newKey1", "newValue1");
+ newProperties.put("newKey2", "newValue2");
+ newProperties.put("newKey3", "newValue3");
+ newProperties.put("newKey4", "newValue4");
+ cacheStore = new FileCacheStore(directoryPath, "non-exit.dubbo.cache");
+ cacheStore.refreshCache(newProperties, "test refresh cache");
+ Map<String, String> propertiesLimitTo2 = cacheStore.loadCache(2);
+ assertEquals(2, propertiesLimitTo2.size());
+
+ Map<String, String> propertiesLimitTo10 = cacheStore.loadCache(10);
+ assertEquals(4, propertiesLimitTo10.size());
+ }
+
+ private String getDirectoryOfClassPath() throws URISyntaxException {
+ URL resource = this.getClass().getResource("/log4j.xml");
+ String path = Paths.get(resource.toURI()).toFile().getAbsolutePath();
+ int index = path.indexOf("log4j.xml");
+ String directoryPath = path.substring(0, index);
+ return directoryPath;
+ }
+
+}
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/concurrent/CompletableFutureTaskTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/concurrent/CompletableFutureTaskTest.java
index cf2b709..58317dd 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/concurrent/CompletableFutureTaskTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/concurrent/CompletableFutureTaskTest.java
@@ -16,12 +16,9 @@
*/
package org.apache.dubbo.common.concurrent;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.times;
+import org.apache.dubbo.common.utils.NamedThreadFactory;
+
+import org.junit.jupiter.api.Test;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
@@ -32,8 +29,12 @@ import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-import org.apache.dubbo.common.utils.NamedThreadFactory;
-import org.junit.jupiter.api.Test;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
public class CompletableFutureTaskTest {
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/EnvironmentTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/config/EnvironmentTest.java
index 699edef..cf2235e 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/config/EnvironmentTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/config/EnvironmentTest.java
@@ -20,8 +20,8 @@ import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;
import org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.rpc.model.ApplicationModel;
-
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/PropertiesConfigurationTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/config/PropertiesConfigurationTest.java
index 55afe86..d301f58 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/config/PropertiesConfigurationTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/config/PropertiesConfigurationTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.common.config;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java
index 7af1663..32430a8 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java
@@ -17,8 +17,8 @@
package org.apache.dubbo.common.config.configcenter.file;
import org.apache.dubbo.common.config.ConfigurationUtils;
-
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java
index 4d3caea..e7ecd4f 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java
@@ -16,10 +16,11 @@
*/
package org.apache.dubbo.common.config.configcenter.file;
-import org.apache.commons.io.FileUtils;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+
+import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionDirectorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionDirectorTest.java
index 372c3f5..0ef945d 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionDirectorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionDirectorTest.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.common.extension.director.impl.TestModuleService;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
index e262bc1..cf59887 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
@@ -64,6 +64,7 @@ import org.apache.dubbo.common.extension.wrapper.impl.DemoImpl;
import org.apache.dubbo.common.lang.Prioritized;
import org.apache.dubbo.common.url.component.ServiceConfigURL;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java
index c4aa3c1..0e1eda3 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java
@@ -16,9 +16,10 @@
*/
package org.apache.dubbo.common.extension.activate.impl;
-import com.alibaba.dubbo.common.extension.Activate;
import org.apache.dubbo.common.extension.activate.ActivateExt1;
+import com.alibaba.dubbo.common.extension.Activate;
+
@Activate(group = "old_group")
public class OldActivateExt1Impl2 implements ActivateExt1 {
public String echo(String msg) {
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java
index 497db35..3f42f40 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java
@@ -16,9 +16,10 @@
*/
package org.apache.dubbo.common.extension.activate.impl;
-import com.alibaba.dubbo.common.extension.Activate;
import org.apache.dubbo.common.extension.activate.ActivateExt1;
+import com.alibaba.dubbo.common.extension.Activate;
+
@Activate(group = "old_group")
public class OldActivateExt1Impl3 implements ActivateExt1 {
public String echo(String msg) {
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/inject/AdaptiveExtensionInjectorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/inject/AdaptiveExtensionInjectorTest.java
index cf40f50..9057b2f 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/inject/AdaptiveExtensionInjectorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/inject/AdaptiveExtensionInjectorTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.extension.ExtensionInjector;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.director.FooFrameworkProvider;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java
index c6baf04..29d8b1c 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.common.extension.support;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/lang/ShutdownHookCallbacksTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/lang/ShutdownHookCallbacksTest.java
index 6d0e7a4..faedb76 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/lang/ShutdownHookCallbacksTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/lang/ShutdownHookCallbacksTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.common.lang;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerFactoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerFactoryTest.java
index 685569c..c83765f 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerFactoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerFactoryTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.common.logger;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.Test;
import java.io.File;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/StatusTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/StatusTest.java
index 41cad69..02a4c4e 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/status/StatusTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/StatusTest.java
@@ -20,10 +20,10 @@ package org.apache.dubbo.common.status;
import org.junit.jupiter.api.Test;
import static org.apache.dubbo.common.status.Status.Level.OK;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isEmptyOrNullString;
-import static org.hamcrest.MatcherAssert.assertThat;
public class StatusTest {
@Test
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportServiceTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportServiceTest.java
index a308ba3..12696da 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportServiceTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportServiceTest.java
@@ -16,11 +16,12 @@
*/
package org.apache.dubbo.common.status.reporter;
-import com.google.gson.Gson;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
+import com.google.gson.Gson;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/LoadStatusCheckerTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/LoadStatusCheckerTest.java
index baafdca..3361ee3 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/LoadStatusCheckerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/LoadStatusCheckerTest.java
@@ -20,10 +20,11 @@ package org.apache.dubbo.common.status.support;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.status.Status;
+
import org.junit.jupiter.api.Test;
-import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.notNullValue;
public class LoadStatusCheckerTest {
private static Logger logger = LoggerFactory.getLogger(LoadStatusCheckerTest.class);
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/MemoryStatusCheckerTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/MemoryStatusCheckerTest.java
index 94e3b1d..e04b8d7 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/MemoryStatusCheckerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/MemoryStatusCheckerTest.java
@@ -20,13 +20,14 @@ package org.apache.dubbo.common.status.support;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.status.Status;
+
import org.junit.jupiter.api.Test;
import static org.apache.dubbo.common.status.Status.Level.OK;
import static org.apache.dubbo.common.status.Status.Level.WARN;
import static org.hamcrest.CoreMatchers.anyOf;
-import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
public class MemoryStatusCheckerTest {
private static final Logger logger = LoggerFactory.getLogger(MemoryStatusCheckerTest.class);
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/StatusUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/StatusUtilsTest.java
index 90b9400..9d6d059 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/StatusUtilsTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/support/StatusUtilsTest.java
@@ -18,16 +18,17 @@
package org.apache.dubbo.common.status.support;
import org.apache.dubbo.common.status.Status;
+
import org.junit.jupiter.api.Test;
import java.util.HashMap;
import java.util.Map;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.not;
-import static org.hamcrest.MatcherAssert.assertThat;
public class StatusUtilsTest {
@Test
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java
index 33ab9fb..98d6cea 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.common.threadpool.manager;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoaderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoaderTest.java
index 10331e8..4592103 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoaderTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoaderTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.common.utils;
import org.apache.dubbo.common.extension.DubboInternalLoadingStrategy;
import org.apache.dubbo.common.extension.director.FooAppProvider;
import org.apache.dubbo.common.resource.GlobalResourcesRepository;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ConfigUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ConfigUtilsTest.java
index b042167..787b837 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ConfigUtilsTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/ConfigUtilsTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.config.InmemoryConfiguration;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.threadpool.ThreadPool;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/HolderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/HolderTest.java
index 0534712..0735ad3 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/HolderTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/HolderTest.java
@@ -19,8 +19,8 @@ package org.apache.dubbo.common.utils;
import org.junit.jupiter.api.Test;
-import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
public class HolderTest {
@Test
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LRUCacheTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LRU2CacheTest.java
similarity index 93%
rename from dubbo-common/src/test/java/org/apache/dubbo/common/utils/LRUCacheTest.java
rename to dubbo-common/src/test/java/org/apache/dubbo/common/utils/LRU2CacheTest.java
index 78749bb..a616a33 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LRUCacheTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LRU2CacheTest.java
@@ -19,15 +19,15 @@ package org.apache.dubbo.common.utils;
import org.junit.jupiter.api.Test;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class LRUCacheTest {
+public class LRU2CacheTest {
@Test
public void testCache() throws Exception {
- LRUCache<String, Integer> cache = new LRUCache<String, Integer>(3);
+ LRU2Cache<String, Integer> cache = new LRU2Cache<String, Integer>(3);
cache.put("one", 1);
cache.put("two", 2);
cache.put("three", 3);
@@ -63,7 +63,7 @@ public class LRUCacheTest {
@Test
public void testCapacity() throws Exception {
- LRUCache<String, Integer> cache = new LRUCache<String, Integer>();
+ LRU2Cache<String, Integer> cache = new LRU2Cache<String, Integer>();
assertThat(cache.getMaxCapacity(), equalTo(1000));
cache.setMaxCapacity(10);
assertThat(cache.getMaxCapacity(), equalTo(10));
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogHelperTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogHelperTest.java
index 78de5f8..5134b95 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogHelperTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogHelperTest.java
@@ -18,6 +18,7 @@
package org.apache.dubbo.common.utils;
import org.apache.dubbo.common.logger.Logger;
+
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogUtilTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogUtilTest.java
index aec7cc7..4793d7b 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogUtilTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/LogUtilTest.java
@@ -22,8 +22,8 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NamedThreadFactoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NamedThreadFactoryTest.java
index ece6111..c28b701 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NamedThreadFactoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NamedThreadFactoryTest.java
@@ -20,11 +20,11 @@ package org.apache.dubbo.common.utils;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.containsString;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class NamedThreadFactoryTest {
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java b/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
index c9044fe..5771e99 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
@@ -18,10 +18,11 @@ package org.apache.dubbo.config;
import org.apache.dubbo.common.constants.CommonConstants;
+
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.io.TempDir;
import java.io.File;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigConfigurationAdapterTest.java b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigConfigurationAdapterTest.java
index 05a9fe7..3a4a7dd 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigConfigurationAdapterTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigConfigurationAdapterTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.context;
import org.apache.dubbo.config.RegistryConfig;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
index 321343c..e4a3757 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
@@ -26,6 +26,7 @@ import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.ProviderConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/descriptor/MethodDescriptorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/descriptor/MethodDescriptorTest.java
index 0ec485d..333557c 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/descriptor/MethodDescriptorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/descriptor/MethodDescriptorTest.java
@@ -16,10 +16,11 @@
*/
package org.apache.dubbo.descriptor;
-import io.reactivex.Single;
import org.apache.dubbo.common.stream.StreamObserver;
import org.apache.dubbo.proto.HelloReply;
import org.apache.dubbo.rpc.model.MethodDescriptor;
+
+import io.reactivex.Single;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
similarity index 96%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
index a75be44..ee59c62 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
@@ -23,9 +23,11 @@ import org.apache.dubbo.metadata.definition.common.ResultWithRawCollections;
import org.apache.dubbo.metadata.definition.common.TestService;
import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
import org.apache.dubbo.metadata.definition.model.TypeDefinition;
+import org.apache.dubbo.rpc.model.FrameworkModel;
import com.google.gson.Gson;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
/**
@@ -35,6 +37,11 @@ import org.junit.jupiter.api.Test;
*/
public class MetadataTest {
+ @BeforeAll
+ public static void setup() {
+ TypeDefinitionBuilder.initBuilders(FrameworkModel.defaultModel());
+ }
+
/**
*
*/
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/MetadataUtils.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataUtils.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/MetadataUtils.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataUtils.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilderTest.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilderTest.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/ServiceDefinitionBuilderTest.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/Test3TypeBuilder.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/Test3TypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/Test3TypeBuilder.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/Test3TypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/TestTypeBuilder.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/TestTypeBuilder.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/TestTypeBuilder.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/TestTypeBuilder.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilderTest.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilderTest.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilderTest.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/ClassExtendsMap.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/ClassExtendsMap.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/ClassExtendsMap.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/ClassExtendsMap.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/ColorEnum.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/ColorEnum.java
similarity index 100%
copy from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/ColorEnum.java
copy to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/ColorEnum.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/OuterClass.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/OuterClass.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/OuterClass.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/OuterClass.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/ResultWithRawCollections.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/TestService.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/TestService.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/common/TestService.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/common/TestService.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
similarity index 98%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
index 9371e8a..b984dee 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/ComplexObject.java
@@ -32,8 +32,8 @@ public class ComplexObject {
public ComplexObject() {
}
- public ComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, ComplexObject.TestEnum testEnum) {
- this.setInnerObject(new ComplexObject.InnerObject());
+ public ComplexObject(String var1, int var2, long l, String[] var3, List<Integer> var4, TestEnum testEnum) {
+ this.setInnerObject(new InnerObject());
this.getInnerObject().setInnerA(var1);
this.getInnerObject().setInnerB(var2);
this.setIntList(var4);
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/DemoService.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation2.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation2.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation2.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockMethodAnnotation2.java
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockTypeAnnotation.java b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockTypeAnnotation.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockTypeAnnotation.java
rename to dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/service/annotation/MockTypeAnnotation.java
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ApplicationModelTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ApplicationModelTest.java
index b42a39b..d4120c9 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ApplicationModelTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ApplicationModelTest.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.lang.ShutdownHookCallbacks;
import org.apache.dubbo.common.status.reporter.FrameworkStatusReportService;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.support.MockScopeModelDestroyListener;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkModelTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkModelTest.java
index ee32037..9ea6fb8 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkModelTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkModelTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.rpc.model;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.utils.StringUtils;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkServiceRepositoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkServiceRepositoryTest.java
index 6bdef4f..3969583 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkServiceRepositoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/FrameworkServiceRepositoryTest.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.support.DemoService;
import org.apache.dubbo.rpc.support.DemoServiceImpl;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleModelTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleModelTest.java
index 75366f5..f813dfb 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleModelTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleModelTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.config.ConfigurationCache;
import org.apache.dubbo.common.config.ModuleEnvironment;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.rpc.support.MockScopeModelDestroyListener;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleServiceRepositoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleServiceRepositoryTest.java
index 320bb2d..ca91caa 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleServiceRepositoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ModuleServiceRepositoryTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.rpc.model;
import org.apache.dubbo.rpc.support.DemoService;
import org.apache.dubbo.rpc.support.DemoServiceImpl;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelAwareExtensionProcessorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelAwareExtensionProcessorTest.java
index aa100e1..20a59ab 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelAwareExtensionProcessorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelAwareExtensionProcessorTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.rpc.model;
import org.apache.dubbo.rpc.support.MockScopeModelAware;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelTest.java
index f450586..59c1cbc 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.rpc.model;
import org.apache.dubbo.common.utils.StringUtils;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelUtilTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelUtilTest.java
index 7720d10..f6450fd 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelUtilTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ScopeModelUtilTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.rpc.model;
import org.apache.dubbo.common.config.Environment;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ServiceRepositoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ServiceRepositoryTest.java
index 917e7dc..6daa425 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ServiceRepositoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/rpc/model/ServiceRepositoryTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.rpc.model;
import org.apache.dubbo.rpc.support.DemoService;
import org.apache.dubbo.rpc.support.DemoServiceImpl;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder b/dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
rename to dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
diff --git a/dubbo-common/src/test/resources/test-cache.dubbo.cache b/dubbo-common/src/test/resources/test-cache.dubbo.cache
new file mode 100644
index 0000000..0695eef
--- /dev/null
+++ b/dubbo-common/src/test/resources/test-cache.dubbo.cache
@@ -0,0 +1,2 @@
+111=cache-entry-1
+222=cache-entry-2
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/PageServlet.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/PageServlet.java
index 2ff7035..68e287d 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/PageServlet.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/PageServlet.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.StringUtils;
-
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/HomePageHandler.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/HomePageHandler.java
index 09a10a1..f243345 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/HomePageHandler.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/HomePageHandler.java
@@ -16,9 +16,9 @@
*/
package com.alibaba.dubbo.container.page.pages;
-import com.alibaba.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
+import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/LogPageHandler.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/LogPageHandler.java
index c361748..874bdb3 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/LogPageHandler.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/LogPageHandler.java
@@ -17,11 +17,9 @@
package com.alibaba.dubbo.container.page.pages;
import com.alibaba.dubbo.common.URL;
-
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
-
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/StatusPageHandler.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/StatusPageHandler.java
index 88a0e8f..50e5564 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/StatusPageHandler.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/page/pages/StatusPageHandler.java
@@ -16,11 +16,11 @@
*/
package com.alibaba.dubbo.container.page.pages;
-import com.alibaba.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.common.status.support.StatusUtils;
+import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.status.StatusChecker;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java
index 3e8c053..fe3ee4d 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java
@@ -18,7 +18,6 @@
package org.apache.dubbo.config;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.service.DemoService;
import org.apache.dubbo.service.DemoServiceImpl;
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
index 3a469fd..cf2a320 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
@@ -18,8 +18,6 @@
package org.apache.dubbo.generic;
-import com.alibaba.dubbo.config.ReferenceConfig;
-import com.alibaba.fastjson.JSON;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
@@ -35,6 +33,9 @@ import org.apache.dubbo.rpc.service.GenericService;
import org.apache.dubbo.service.ComplexObject;
import org.apache.dubbo.service.DemoService;
import org.apache.dubbo.service.DemoServiceImpl;
+
+import com.alibaba.dubbo.config.ReferenceConfig;
+import com.alibaba.fastjson.JSON;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 5d83fed..03875d9 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -32,7 +32,7 @@ import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.support.Parameter;
import org.apache.dubbo.config.utils.ConfigValidationUtils;
-import org.apache.dubbo.registry.client.metadata.MetadataUtils;
+import org.apache.dubbo.metadata.ServiceNameMapping;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProxyFactory;
@@ -256,12 +256,14 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
// init serviceMetadata
initServiceMetadata(consumer);
+
serviceMetadata.setServiceType(getServiceInterfaceClass());
// TODO, uncomment this line once service key is unified
serviceMetadata.setServiceKey(URL.buildKey(interfaceName, group, version));
Map<String, String> referenceParameters = appendConfig();
-
+ // init service-application mapping
+ initServiceAppsMapping(referenceParameters);
ModuleServiceRepository repository = getScopeModel().getServiceRepository();
ServiceDescriptor serviceDescriptor = repository.registerService(interfaceClass);
@@ -283,6 +285,12 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
checkInvokerAvailable();
}
+ private void initServiceAppsMapping(Map<String, String> referenceParameters) {
+ ServiceNameMapping serviceNameMapping = ServiceNameMapping.getDefaultExtension(getScopeModel());
+ URL url = new ServiceConfigURL(LOCAL_PROTOCOL, LOCALHOST_VALUE, 0, interfaceName, referenceParameters);
+ serviceNameMapping.getServices(url);
+ }
+
/**
* convert and aggregate async method info
*
@@ -394,7 +402,6 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
referenceParameters.get(INTERFACE_KEY), referenceParameters);
consumerUrl = consumerUrl.setScopeModel(getScopeModel());
consumerUrl = consumerUrl.setServiceModel(consumerModel);
- MetadataUtils.publishServiceDefinition(consumerUrl);
// create service proxy
return (T) proxyFactory.getProxy(invoker, ProtocolUtils.isGeneric(generic));
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index bf7ae84..bc29fd0 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -32,9 +32,7 @@ import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker;
import org.apache.dubbo.config.support.Parameter;
import org.apache.dubbo.config.utils.ConfigValidationUtils;
-import org.apache.dubbo.metadata.MetadataService;
import org.apache.dubbo.metadata.ServiceNameMapping;
-import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.registry.client.metadata.MetadataUtils;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.Invoker;
@@ -47,7 +45,6 @@ import org.apache.dubbo.rpc.model.ProviderModel;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.rpc.service.GenericService;
-import org.apache.dubbo.rpc.support.ProtocolUtils;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -84,6 +81,7 @@ import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;
import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_BIND;
import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_REGISTRY;
import static org.apache.dubbo.config.Constants.SCOPE_NONE;
+import static org.apache.dubbo.metadata.MetadataService.isMetadataService;
import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;
import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;
import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;
@@ -94,6 +92,7 @@ import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;
import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;
import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.EXPORT_KEY;
+import static org.apache.dubbo.rpc.support.ProtocolUtils.isGeneric;
public class ServiceConfig<T> extends ServiceConfigBase<T> {
@@ -134,7 +133,6 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
private final List<Exporter<?>> exporters = new ArrayList<Exporter<?>>();
private final List<ServiceListener> serviceListeners = new ArrayList<>();
- private WritableMetadataService localMetadataService;
public ServiceConfig() {
}
@@ -156,7 +154,6 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
super.postProcessAfterScopeModelChanged(oldScopeModel, newScopeModel);
protocolSPI = this.getExtensionLoader(Protocol.class).getAdaptiveExtension();
proxyFactory = this.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
- localMetadataService = this.getScopeModel().getDefaultExtension(WritableMetadataService.class);
}
@Override
@@ -261,6 +258,8 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
boolean succeeded = serviceNameMapping.map(url);
if (succeeded) {
logger.info("Successfully registered interface application mapping for service " + url.getServiceKey());
+ } else {
+ logger.error("Failed register interface application mapping for service " + url.getServiceKey());
}
} catch (Exception e) {
logger.error("Failed register interface application mapping for service " + url.getServiceKey(), e);
@@ -428,7 +427,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
getMethods().forEach(method -> appendParametersWithMethod(method, map));
}
- if (ProtocolUtils.isGeneric(generic)) {
+ if (isGeneric(generic)) {
map.put(GENERIC_KEY, generic);
map.put(METHODS_KEY, ANY_VALUE);
} else {
@@ -541,8 +540,8 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
}
// export service
- String host = findConfiguredHosts(protocolConfig, params);
- Integer port = findConfiguredPorts(protocolConfig, name, params);
+ String host = findConfiguredHosts(protocolConfig, provider, params);
+ Integer port = findConfiguredPort(protocolConfig, provider, this.getExtensionLoader(Protocol.class), name, params);
URL url = new ServiceConfigURL(name, null, null, host, port, getContextPath(protocolConfig).map(p -> p + "/" + path).orElse(path), params);
// You can customize Configurator to append extra parameters
@@ -569,9 +568,13 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
// export to remote if the config is not local (export to local only when config is local)
if (!SCOPE_LOCAL.equalsIgnoreCase(scope)) {
url = exportRemote(url, registryURLs);
- MetadataUtils.publishServiceDefinition(url);
+ if (!isGeneric(generic) && !isMetadataService(interfaceName)) {
+ ServiceDescriptor descriptor = getScopeModel().getServiceRepository().getService(interfaceName);
+ if (descriptor != null) {
+ MetadataUtils.publishServiceDefinition(getScopeModel().getServiceRepository().getService(interfaceName), getApplicationModel());
+ }
+ }
}
-
}
this.urls.add(url);
}
@@ -613,10 +616,6 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
} else {
- if (MetadataService.class.getName().equals(url.getServiceInterface())) {
- localMetadataService.setMetadataServiceURL(url);
- }
-
if (logger.isInfoEnabled()) {
logger.info("Export dubbo service " + interfaceClass.getName() + " to url " + url);
}
@@ -664,6 +663,27 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
&& LOCAL_PROTOCOL.equalsIgnoreCase(getProtocols().get(0).getName());
}
+ private void postProcessConfig() {
+ List<ConfigPostProcessor> configPostProcessors = this.getExtensionLoader(ConfigPostProcessor.class)
+ .getActivateExtension(URL.valueOf("configPostProcessor://", getScopeModel()), (String[]) null);
+ configPostProcessors.forEach(component -> component.postProcessServiceConfig(this));
+ }
+
+ public void addServiceListener(ServiceListener listener) {
+ this.serviceListeners.add(listener);
+ }
+
+ protected void onExported() {
+ for (ServiceListener serviceListener : this.serviceListeners) {
+ serviceListener.exported(this);
+ }
+ }
+
+ protected void onUnexpoted() {
+ for (ServiceListener serviceListener : this.serviceListeners) {
+ serviceListener.unexported(this);
+ }
+ }
/**
* Register & bind IP address for service provider, can be configured separately.
@@ -674,8 +694,9 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
* @param map
* @return
*/
- private String findConfiguredHosts(ProtocolConfig protocolConfig,
- Map<String, String> map) {
+ private static String findConfiguredHosts(ProtocolConfig protocolConfig,
+ ProviderConfig provider,
+ Map<String, String> map) {
boolean anyhost = false;
String hostToBind = getValueFromConfig(protocolConfig, DUBBO_IP_TO_BIND);
@@ -724,9 +745,10 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
* @param name
* @return
*/
- private Integer findConfiguredPorts(ProtocolConfig protocolConfig,
- String name,
- Map<String, String> map) {
+ private static synchronized Integer findConfiguredPort(ProtocolConfig protocolConfig,
+ ProviderConfig provider,
+ ExtensionLoader<Protocol> extensionLoader,
+ String name,Map<String, String> map) {
Integer portToBind;
// parse bind port from environment
@@ -739,7 +761,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
if (provider != null && (portToBind == null || portToBind == 0)) {
portToBind = provider.getPort();
}
- final int defaultPort = this.getExtensionLoader(Protocol.class).getExtension(name).getDefaultPort();
+ final int defaultPort = extensionLoader.getExtension(name).getDefaultPort();
if (portToBind == null || portToBind == 0) {
portToBind = defaultPort;
}
@@ -765,7 +787,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
return portToRegistry;
}
- private Integer parsePort(String configPort) {
+ private static Integer parsePort(String configPort) {
Integer port = null;
if (StringUtils.isNotEmpty(configPort)) {
try {
@@ -781,7 +803,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
return port;
}
- private String getValueFromConfig(ProtocolConfig protocolConfig, String key) {
+ private static String getValueFromConfig(ProtocolConfig protocolConfig, String key) {
String protocolPrefix = protocolConfig.getName().toUpperCase() + "_";
String value = ConfigUtils.getSystemProperty(protocolPrefix + key);
if (StringUtils.isEmpty(value)) {
@@ -790,12 +812,12 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
return value;
}
- private Integer getRandomPort(String protocol) {
+ private static Integer getRandomPort(String protocol) {
protocol = protocol.toLowerCase();
return RANDOM_PORT_MAP.getOrDefault(protocol, Integer.MIN_VALUE);
}
- private void putRandomPort(String protocol, Integer port) {
+ private static void putRandomPort(String protocol, Integer port) {
protocol = protocol.toLowerCase();
if (!RANDOM_PORT_MAP.containsKey(protocol)) {
RANDOM_PORT_MAP.put(protocol, port);
@@ -803,25 +825,4 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
}
}
- private void postProcessConfig() {
- List<ConfigPostProcessor> configPostProcessors = this.getExtensionLoader(ConfigPostProcessor.class)
- .getActivateExtension(URL.valueOf("configPostProcessor://", getScopeModel()), (String[]) null);
- configPostProcessors.forEach(component -> component.postProcessServiceConfig(this));
- }
-
- public void addServiceListener(ServiceListener listener) {
- this.serviceListeners.add(listener);
- }
-
- protected void onExported() {
- for (ServiceListener serviceListener : this.serviceListeners) {
- serviceListener.exported(this);
- }
- }
-
- protected void onUnexpoted() {
- for (ServiceListener serviceListener : this.serviceListeners) {
- serviceListener.unexported(this);
- }
- }
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
index 518bd99..ae1f846 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
@@ -26,6 +26,7 @@ import org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfi
import org.apache.dubbo.common.deploy.AbstractDeployer;
import org.apache.dubbo.common.deploy.ApplicationDeployListener;
import org.apache.dubbo.common.deploy.ApplicationDeployer;
+import org.apache.dubbo.common.deploy.DeployListener;
import org.apache.dubbo.common.deploy.DeployState;
import org.apache.dubbo.common.deploy.ModuleDeployer;
import org.apache.dubbo.common.extension.ExtensionLoader;
@@ -44,16 +45,9 @@ import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.utils.CompositeReferenceCache;
import org.apache.dubbo.config.utils.ConfigValidationUtils;
-import org.apache.dubbo.metadata.MetadataService;
-import org.apache.dubbo.metadata.MetadataServiceExporter;
-import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.metadata.report.MetadataReportFactory;
import org.apache.dubbo.metadata.report.MetadataReportInstance;
-import org.apache.dubbo.registry.client.DefaultServiceInstance;
-import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
-import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;
import org.apache.dubbo.registry.support.RegistryManager;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ModuleModel;
@@ -76,15 +70,12 @@ import java.util.function.Supplier;
import static java.lang.String.format;
import static org.apache.dubbo.common.config.ConfigurationUtils.parseProperties;
-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;
import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
import static org.apache.dubbo.common.utils.StringUtils.isEmpty;
import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;
import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_PUBLISH_DELAY;
import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PUBLISH_DELAY_KEY;
-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.calInstanceRevision;
-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;
import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;
/**
@@ -104,22 +95,16 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
private final ExecutorRepository executorRepository;
- private volatile ServiceInstance serviceInstance;
-
- private AtomicBoolean hasPreparedApplicationInstance = new AtomicBoolean(false);
- private AtomicBoolean hasPreparedInternalModule = new AtomicBoolean(false);
-
- private volatile MetadataService metadataService;
-
- private volatile MetadataServiceExporter metadataServiceExporter;
+ private final AtomicBoolean hasPreparedApplicationInstance = new AtomicBoolean(false);
+ private final AtomicBoolean hasPreparedInternalModule = new AtomicBoolean(false);
private ScheduledFuture<?> asyncMetadataFuture;
- private volatile CompletableFuture startFuture;
- private DubboShutdownHook dubboShutdownHook;
- private Object stateLock = new Object();
- private Object startLock = new Object();
- private Object destroyLock = new Object();
- private Object internalModuleLock = new Object();
+ private volatile CompletableFuture<Boolean> startFuture;
+ private final DubboShutdownHook dubboShutdownHook;
+ private final Object stateLock = new Object();
+ private final Object startLock = new Object();
+ private final Object destroyLock = new Object();
+ private final Object internalModuleLock = new Object();
public DefaultApplicationDeployer(ApplicationModel applicationModel) {
super(applicationModel);
@@ -161,17 +146,16 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
dubboShutdownHook.unregister();
}
+ /**
+ * Close registration of instance for pure Consumer process by setting registerConsumer to 'false'
+ * by default is true.
+ */
private boolean isRegisterConsumerInstance() {
Boolean registerConsumer = getApplication().getRegisterConsumer();
- return Boolean.TRUE.equals(registerConsumer);
- }
-
- private String getMetadataType() {
- String type = getApplication().getMetadataType();
- if (StringUtils.isEmpty(type)) {
- type = DEFAULT_METADATA_STORAGE_TYPE;
+ if (registerConsumer == null) {
+ return true;
}
- return type;
+ return Boolean.TRUE.equals(registerConsumer);
}
@Override
@@ -204,8 +188,6 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
// @since 2.7.8
startMetadataCenter();
- initMetadataService();
-
initialized.set(true);
if (logger.isInfoEnabled()) {
@@ -296,13 +278,18 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
}
MetadataReportInstance metadataReportInstance = applicationModel.getBeanFactory().getBean(MetadataReportInstance.class);
+ List<MetadataReportConfig> validMetadataReportConfigs = new ArrayList<>(metadataReportConfigs.size());
for (MetadataReportConfig metadataReportConfig : metadataReportConfigs) {
ConfigValidationUtils.validateMetadataConfig(metadataReportConfig);
if (!metadataReportConfig.isValid()) {
- logger.info("Ignore invalid metadata-report config: " + metadataReportConfig);
+ logger.warn("Ignore invalid metadata-report config: " + metadataReportConfig);
continue;
}
- metadataReportInstance.init(metadataReportConfig);
+ validMetadataReportConfigs.add(metadataReportConfig);
+ }
+ metadataReportInstance.init(validMetadataReportConfigs);
+ if (!metadataReportInstance.inited()) {
+ throw new IllegalStateException(String.format("%s MetadataConfigs found, but none of them is valid.", metadataReportConfigs.size()));
}
}
@@ -502,19 +489,6 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
}
/**
- * Initialize {@link MetadataService} from {@link WritableMetadataService}'s extension
- */
- private void initMetadataService() {
-// startMetadataCenter();
- this.metadataService = getExtensionLoader(WritableMetadataService.class).getDefaultExtension();
- // support injection by super type MetadataService
- applicationModel.getBeanFactory().registerBean(this.metadataService);
-
- //this.metadataServiceExporter = new ConfigurableMetadataServiceExporter(metadataService);
- this.metadataServiceExporter = getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
- }
-
- /**
* Start the bootstrap
*
* @return
@@ -581,7 +555,7 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
startModules();
// prepare application instance
- prepareApplicationInstance();
+// prepareApplicationInstance();
// Ignore checking new module after start
// executorRepository.getSharedExecutor().submit(() -> {
@@ -621,18 +595,12 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
@Override
public void prepareApplicationInstance() {
- // ensure init and start internal module first
- prepareInternalModule();
-
- // always start metadata service on application model start, so it's ready whenever a new module is started
- // export MetadataService
- exportMetadataService();
-
if (hasPreparedApplicationInstance.get()) {
return;
}
- // if register consumer instance or has exported services
- if (isRegisterConsumerInstance() || hasExportedServices()) {
+
+ if (isRegisterConsumerInstance()) {
+ exportMetadataService();
if (hasPreparedApplicationInstance.compareAndSet(false, true)) {
// register the local ServiceInstance if required
registerServiceInstance();
@@ -640,7 +608,7 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
}
}
- private void prepareInternalModule() {
+ public void prepareInternalModule() {
synchronized (internalModuleLock) {
if (!hasPreparedInternalModule.compareAndSet(false, true)) {
return;
@@ -734,122 +702,42 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
return factory.getDynamicConfiguration(connectionURL);
}
- /**
- * export {@link MetadataService}
- */
- private void exportMetadataService() {
- // fixme, let's disable local metadata service export at this moment
- if (!REMOTE_METADATA_STORAGE_TYPE.equals(getMetadataType())) {
- metadataServiceExporter.export();
- }
- }
-
- private void unexportMetadataService() {
- if (metadataServiceExporter != null && metadataServiceExporter.isExported()) {
- try {
- metadataServiceExporter.unexport();
- } catch (Exception ignored) {
- // ignored
- }
- }
- }
+ private volatile boolean registered;
private void registerServiceInstance() {
- if (isRegisteredServiceInstance()) {
- return;
- }
-
- ApplicationConfig application = getApplication();
- String serviceName = application.getName();
- ServiceInstance serviceInstance = createServiceInstance(serviceName);
- boolean registered = true;
try {
- ServiceInstanceMetadataUtils.registerMetadataAndInstance(serviceInstance);
+ registered = true;
+ ServiceInstanceMetadataUtils.registerMetadataAndInstance(applicationModel);
} catch (Exception e) {
- registered = false;
logger.error("Register instance error", e);
}
if (registered) {
// scheduled task for updating Metadata and ServiceInstance
- asyncMetadataFuture = executorRepository.getSharedScheduledExecutor().scheduleAtFixedRate(() -> {
+ asyncMetadataFuture = executorRepository.getSharedScheduledExecutor().scheduleWithFixedDelay(() -> {
// ignore refresh metadata on stopping
if (applicationModel.isDestroyed()) {
return;
}
-
- InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension(applicationModel);
- localMetadataService.blockUntilUpdated();
try {
- if (!applicationModel.isDestroyed()) {
- ServiceInstanceMetadataUtils.refreshMetadataAndInstance(serviceInstance);
+ if (!applicationModel.isDestroyed() && registered) {
+ ServiceInstanceMetadataUtils.refreshMetadataAndInstance(applicationModel);
}
} catch (Exception e) {
if (!applicationModel.isDestroyed()) {
logger.error("Refresh instance and metadata error", e);
}
- } finally {
- localMetadataService.releaseBlock();
}
}, 0, ConfigurationUtils.get(applicationModel, METADATA_PUBLISH_DELAY_KEY, DEFAULT_METADATA_PUBLISH_DELAY), TimeUnit.MILLISECONDS);
}
}
- private boolean isRegisteredServiceInstance() {
- return this.serviceInstance != null;
- }
-
- private void doRegisterServiceInstance(ServiceInstance serviceInstance) {
- // register instance only when at least one service is exported.
- if (serviceInstance.getPort() > 0) {
- publishMetadataToRemote(serviceInstance);
- logger.info("Start registering instance address to registry.");
- RegistryManager.getInstance(applicationModel).getServiceDiscoveries().forEach(serviceDiscovery ->
- {
- ServiceInstance serviceInstanceForRegistry = new DefaultServiceInstance((DefaultServiceInstance) serviceInstance);
- calInstanceRevision(serviceDiscovery, serviceInstanceForRegistry);
- if (logger.isDebugEnabled()) {
- logger.info("Start registering instance address to registry" + serviceDiscovery.getUrl() + ", instance " + serviceInstanceForRegistry);
- }
- // register metadata
- serviceDiscovery.register(serviceInstanceForRegistry);
- });
- }
- }
-
- private void publishMetadataToRemote(ServiceInstance serviceInstance) {
-// InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService)WritableMetadataService.getDefaultExtension();
-// localMetadataService.blockUntilUpdated();
- if (logger.isInfoEnabled()) {
- logger.info("Start publishing metadata to remote center, this only makes sense for applications enabled remote metadata center.");
- }
- RemoteMetadataServiceImpl remoteMetadataService = applicationModel.getBeanFactory().getBean(RemoteMetadataServiceImpl.class);
- remoteMetadataService.publishMetadata(serviceInstance.getServiceName());
- }
-
private void unregisterServiceInstance() {
- if (isRegisteredServiceInstance()) {
- RegistryManager.getInstance(applicationModel).getServiceDiscoveries().forEach(serviceDiscovery -> {
- try {
- serviceDiscovery.unregister(serviceInstance);
- } catch (Exception ignored) {
- // ignored
- }
- });
+ if (registered) {
+ ServiceInstanceMetadataUtils.unregisterMetadataAndInstance(applicationModel);
}
}
- private ServiceInstance createServiceInstance(String serviceName) {
- this.serviceInstance = new DefaultServiceInstance(serviceName, applicationModel);
- setMetadataStorageType(serviceInstance, getMetadataType());
- ServiceInstanceMetadataUtils.customizeInstance(this.serviceInstance);
- return this.serviceInstance;
- }
-
- public ServiceInstance getServiceInstance() {
- return serviceInstance;
- }
-
@Override
public void stop() {
applicationModel.destroy();
@@ -868,7 +756,6 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
asyncMetadataFuture.cancel(true);
}
unregisterServiceInstance();
- unexportMetadataService();
}
}
@@ -909,7 +796,7 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
@Override
public void notifyModuleChanged(ModuleModel moduleModel, DeployState state) {
- checkState();
+ checkState(moduleModel, state);
// notify module state changed or module changed
synchronized (stateLock) {
@@ -918,8 +805,11 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
}
@Override
- public void checkState() {
+ public void checkState(ModuleModel moduleModel, DeployState moduleState) {
synchronized (stateLock) {
+ if (!moduleModel.isInternal() && moduleState == DeployState.STARTED) {
+ prepareApplicationInstance();
+ }
DeployState newState = calculateState();
switch (newState) {
case STARTED:
@@ -937,11 +827,11 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
case FAILED:
Throwable error = null;
ModuleModel errorModule = null;
- for (ModuleModel moduleModel : applicationModel.getModuleModels()) {
- ModuleDeployer deployer = moduleModel.getDeployer();
+ for (ModuleModel module : applicationModel.getModuleModels()) {
+ ModuleDeployer deployer = module.getDeployer();
if (deployer.isFailed() && deployer.getError() != null) {
error = deployer.getError();
- errorModule = moduleModel;
+ errorModule = module;
break;
}
}
@@ -1010,6 +900,21 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
return newState;
}
+ private void exportMetadataService() {
+ if (!isStarting()) {
+ return;
+ }
+ for (DeployListener<ApplicationModel> listener : listeners) {
+ try {
+ if (listener instanceof ApplicationDeployListener) {
+ ((ApplicationDeployListener) listener).onModuleStarted(applicationModel);
+ }
+ } catch (Throwable e) {
+ logger.error(getIdentifier() + " an exception occurred when handle starting event", e);
+ }
+ }
+ }
+
private void onStarting() {
// pending -> starting
// started -> starting
@@ -1035,11 +940,11 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
}
// refresh metadata
try {
- if (serviceInstance != null) {
- ServiceInstanceMetadataUtils.refreshMetadataAndInstance(serviceInstance);
+ if (registered) {
+ ServiceInstanceMetadataUtils.refreshMetadataAndInstance(applicationModel);
}
} catch (Exception e) {
- logger.error("refresh metadata failed: " + e.getMessage(), e);
+ logger.error("refresh meta and instance failed: " + e.getMessage(), e);
}
} finally {
// complete future
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
index b2c4bbf..0bdeb69 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
@@ -141,11 +141,11 @@ public class DefaultModuleDeployer extends AbstractDeployer<ModuleModel> impleme
// export services
exportServices();
- // prepare application instance
- // exclude internal module to avoid wait itself
- if (moduleModel != moduleModel.getApplicationModel().getInternalModule()) {
- applicationDeployer.prepareApplicationInstance();
- }
+ // prepare application instance
+ // exclude internal module to avoid wait itself
+ if (moduleModel != moduleModel.getApplicationModel().getInternalModule()) {
+ applicationDeployer.prepareInternalModule();
+ }
// refer services
referServices();
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
index 39a1fc6..8d7ac95 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
@@ -22,20 +22,14 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ArgumentConfig;
-import org.apache.dubbo.config.MethodConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.metadata.MetadataService;
-import org.apache.dubbo.metadata.MetadataServiceExporter;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProtocolServer;
import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.ScopeModelAware;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -46,70 +40,31 @@ import static org.apache.dubbo.common.constants.CommonConstants.METADATA_SERVICE
import static org.apache.dubbo.common.constants.CommonConstants.METADATA_SERVICE_PROTOCOL_KEY;
/**
- * {@link MetadataServiceExporter} implementation based on {@link ConfigManager Dubbo configurations}, the clients
- * should make sure the {@link ApplicationConfig}, {@link RegistryConfig} and {@link ProtocolConfig} are ready before
- * {@link #export()}.
- * <p>
- * Typically, do not worry about their ready status, because they are initialized before
- * any {@link ServiceConfig} exports, or The Dubbo export will be failed.
- * <p>
- * Being aware of it's not a thread-safe implementation.
- *
- * @see MetadataServiceExporter
- * @see ServiceConfig
- * @see ConfigManager
- * @since 2.7.5
+ * Export metadata service
*/
-public class ConfigurableMetadataServiceExporter implements MetadataServiceExporter, ScopeModelAware {
+public class ConfigurableMetadataServiceExporter {
private final Logger logger = LoggerFactory.getLogger(getClass());
- private MetadataService metadataService;
+ private MetadataServiceDelegation metadataService;
private volatile ServiceConfig<MetadataService> serviceConfig;
- private ApplicationModel applicationModel;
-
- public ConfigurableMetadataServiceExporter() {
- }
+ private final ApplicationModel applicationModel;
- @Override
- public void setApplicationModel(ApplicationModel applicationModel) {
+ public ConfigurableMetadataServiceExporter(ApplicationModel applicationModel, MetadataServiceDelegation metadataService) {
this.applicationModel = applicationModel;
- }
-
- public void setMetadataService(MetadataService metadataService) {
this.metadataService = metadataService;
}
- @Override
- public ConfigurableMetadataServiceExporter export() {
-
- if (!isExported()) {
-
- ApplicationConfig applicationConfig = getApplicationConfig();
- ServiceConfig<MetadataService> serviceConfig = new ServiceConfig<>();
- serviceConfig.setScopeModel(applicationModel.getInternalModule());
- serviceConfig.setApplication(applicationConfig);
- serviceConfig.setRegistry(new RegistryConfig("N/A"));
- serviceConfig.setProtocol(generateMetadataProtocol());
- serviceConfig.setInterface(MetadataService.class);
- serviceConfig.setDelay(0);
- serviceConfig.setRef(metadataService);
- serviceConfig.setGroup(applicationConfig.getName());
- serviceConfig.setVersion(metadataService.version());
- serviceConfig.setMethods(generateMethodConfig());
- serviceConfig.setConnections(1);
- serviceConfig.setExecutes(100);
-
+ public synchronized ConfigurableMetadataServiceExporter export() {
+ if (serviceConfig == null || !isExported()) {
+ this.serviceConfig = buildServiceConfig();
// export
serviceConfig.export();
-
+ metadataService.setMetadataURL(serviceConfig.getExportedUrls().get(0));
if (logger.isInfoEnabled()) {
logger.info("The MetadataService exports urls : " + serviceConfig.getExportedUrls());
}
-
- this.serviceConfig = serviceConfig;
-
} else {
if (logger.isWarnEnabled()) {
logger.warn("The MetadataService has been exported : " + serviceConfig.getExportedUrls());
@@ -119,41 +74,14 @@ public class ConfigurableMetadataServiceExporter implements MetadataServiceExpor
return this;
}
- /**
- * Generate Method Config for Service Discovery Metadata <p/>
- * <p>
- * Make {@link MetadataService} support argument callback,
- * used to notify {@link org.apache.dubbo.registry.client.ServiceInstance}'s
- * metadata change event
- *
- * @since 3.0
- */
- private List<MethodConfig> generateMethodConfig() {
- MethodConfig methodConfig = new MethodConfig();
- methodConfig.setName("getAndListenInstanceMetadata");
-
- ArgumentConfig argumentConfig = new ArgumentConfig();
- argumentConfig.setIndex(1);
- argumentConfig.setCallback(true);
-
- methodConfig.setArguments(Collections.singletonList(argumentConfig));
-
- return Collections.singletonList(methodConfig);
- }
-
- @Override
public ConfigurableMetadataServiceExporter unexport() {
if (isExported()) {
serviceConfig.unexport();
+ metadataService.setMetadataURL(null);
}
return this;
}
- @Override
- public List<URL> getExportedURLs() {
- return serviceConfig != null ? serviceConfig.getExportedUrls() : emptyList();
- }
-
public boolean isExported() {
return serviceConfig != null && serviceConfig.isExported() && !serviceConfig.isUnexported();
}
@@ -227,4 +155,35 @@ public class ConfigurableMetadataServiceExporter implements MetadataServiceExpor
return StringUtils.isNotEmpty(protocol) ? protocol : DUBBO_PROTOCOL;
}
+
+
+ private ServiceConfig<MetadataService> buildServiceConfig() {
+ ApplicationConfig applicationConfig = getApplicationConfig();
+ ServiceConfig<MetadataService> serviceConfig = new ServiceConfig<>();
+ serviceConfig.setScopeModel(applicationModel.getInternalModule());
+ serviceConfig.setApplication(applicationConfig);
+ serviceConfig.setRegistry(new RegistryConfig("N/A"));
+ serviceConfig.setProtocol(generateMetadataProtocol());
+ serviceConfig.setInterface(MetadataService.class);
+ serviceConfig.setDelay(0);
+ serviceConfig.setRef(metadataService);
+ serviceConfig.setGroup(applicationConfig.getName());
+ serviceConfig.setVersion(MetadataService.VERSION);
+// serviceConfig.setMethods(generateMethodConfig());
+ serviceConfig.setConnections(1);
+ serviceConfig.setExecutes(100);
+
+ return serviceConfig;
+ }
+
+ // for unit test
+ public void setMetadataService(MetadataServiceDelegation metadataService) {
+ this.metadataService = metadataService;
+ }
+
+ // for unit test
+ public List<URL> getExportedURLs() {
+ return serviceConfig != null ? serviceConfig.getExportedUrls() : emptyList();
+ }
+
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java
new file mode 100644
index 0000000..1a0bafc
--- /dev/null
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.dubbo.config.metadata;
+
+import org.apache.dubbo.common.deploy.ApplicationDeployListener;
+import org.apache.dubbo.common.lang.Prioritized;
+import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
+
+public class ExporterDeployListener implements ApplicationDeployListener, Prioritized {
+ protected volatile ConfigurableMetadataServiceExporter metadataServiceExporter;
+
+ @Override
+ public void onStarting(ApplicationModel scopeModel) {
+
+ }
+
+ @Override
+ public synchronized void onStarted(ApplicationModel applicationModel) {
+
+ }
+
+ @Override
+ public synchronized void onStopping(ApplicationModel scopeModel) {
+
+ }
+
+ private String getMetadataType(ApplicationModel applicationModel) {
+ String type = applicationModel.getApplicationConfigManager().getApplicationOrElseThrow().getMetadataType();
+ if (StringUtils.isEmpty(type)) {
+ type = DEFAULT_METADATA_STORAGE_TYPE;
+ }
+ return type;
+ }
+
+
+ public ConfigurableMetadataServiceExporter getMetadataServiceExporter() {
+ return metadataServiceExporter;
+ }
+
+ public void setMetadataServiceExporter(ConfigurableMetadataServiceExporter metadataServiceExporter) {
+ this.metadataServiceExporter = metadataServiceExporter;
+ }
+
+ @Override
+ public synchronized void onModuleStarted(ApplicationModel applicationModel) {
+ // start metadata service exporter
+ MetadataServiceDelegation metadataService = applicationModel.getBeanFactory().getOrRegisterBean(MetadataServiceDelegation.class);
+ if (metadataServiceExporter == null) {
+ metadataServiceExporter = new ConfigurableMetadataServiceExporter(applicationModel, metadataService);
+ // fixme, let's disable local metadata service export at this moment
+ if (!REMOTE_METADATA_STORAGE_TYPE.equals(getMetadataType(applicationModel))) {
+ metadataServiceExporter.export();
+ }
+ }
+ }
+
+
+ @Override
+ public synchronized void onStopped(ApplicationModel scopeModel) {
+ if (metadataServiceExporter != null && metadataServiceExporter.isExported()) {
+ try {
+ metadataServiceExporter.unexport();
+ } catch (Exception ignored) {
+ // ignored
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(ApplicationModel scopeModel, Throwable cause) {
+
+ }
+
+ @Override
+ public int getPriority() {
+ return MAX_PRIORITY;
+ }
+}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java
new file mode 100644
index 0000000..b33d560
--- /dev/null
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java
@@ -0,0 +1,228 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.dubbo.config.metadata;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.resource.Disposable;
+import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.metadata.MetadataInfo;
+import org.apache.dubbo.metadata.MetadataService;
+import org.apache.dubbo.registry.client.ServiceDiscovery;
+import org.apache.dubbo.registry.support.RegistryManager;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.concurrent.ConcurrentNavigableMap;
+import java.util.concurrent.ConcurrentSkipListMap;
+
+import static java.util.Collections.emptySortedSet;
+import static java.util.Collections.unmodifiableSortedSet;
+import static org.apache.dubbo.common.URL.buildKey;
+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
+import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;
+
+/**
+ * Implementation providing remote RPC service to facilitate the query of metadata information.
+ */
+public class MetadataServiceDelegation implements MetadataService, Disposable {
+ Logger logger = LoggerFactory.getLogger(getClass());
+ private final ApplicationModel applicationModel;
+ private final RegistryManager registryManager;
+ private final ConcurrentNavigableMap<String, String> serviceDefinitions = new ConcurrentSkipListMap<>();
+ private URL url;
+
+ public MetadataServiceDelegation(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ registryManager = RegistryManager.getInstance(applicationModel);
+ }
+
+ /**
+ * Gets the current Dubbo Service name
+ *
+ * @return non-null
+ */
+ @Override
+ public String serviceName() {
+ return ApplicationModel.ofNullable(applicationModel).getApplicationName();
+ }
+
+ @Override
+ public URL getMetadataURL() {
+ return url;
+ }
+
+ public void setMetadataURL(URL url) {
+ this.url = url;
+ }
+
+ @Override
+ public SortedSet<String> getSubscribedURLs() {
+ return getAllUnmodifiableSubscribedURLs();
+ }
+
+ private SortedSet<String> getAllUnmodifiableServiceURLs() {
+ SortedSet<URL> bizURLs = new TreeSet<>(URLComparator.INSTANCE);
+ List<ServiceDiscovery> serviceDiscoveries = registryManager.getServiceDiscoveries();
+ for (ServiceDiscovery sd : serviceDiscoveries) {
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
+ Map<String, SortedSet<URL>> serviceURLs = metadataInfo.getExportedServiceURLs();
+ for (Map.Entry<String, SortedSet<URL>> entry : serviceURLs.entrySet()) {
+ SortedSet<URL> urls = entry.getValue();
+ if (urls != null) {
+ for (URL url : urls) {
+ if (!MetadataService.class.getName().equals(url.getServiceInterface())) {
+ bizURLs.add(url);
+ }
+ }
+ }
+ }
+ }
+ return MetadataService.toSortedStrings(bizURLs);
+ }
+
+ private SortedSet<String> getAllUnmodifiableSubscribedURLs() {
+ SortedSet<URL> bizURLs = new TreeSet<>(URLComparator.INSTANCE);
+ List<ServiceDiscovery> serviceDiscoveries = registryManager.getServiceDiscoveries();
+ for (ServiceDiscovery sd : serviceDiscoveries) {
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
+ Map<String, SortedSet<URL>> serviceURLs = metadataInfo.getSubscribedServiceURLs();
+ for (Map.Entry<String, SortedSet<URL>> entry : serviceURLs.entrySet()) {
+ SortedSet<URL> urls = entry.getValue();
+ if (urls != null) {
+ for (URL url : urls) {
+ if (!MetadataService.class.getName().equals(url.getServiceInterface())) {
+ bizURLs.add(url);
+ }
+ }
+ }
+ }
+ }
+ return MetadataService.toSortedStrings(bizURLs);
+ }
+
+ @Override
+ public SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol) {
+ if (ALL_SERVICE_INTERFACES.equals(serviceInterface)) {
+ return getAllUnmodifiableServiceURLs();
+ }
+ String serviceKey = buildKey(serviceInterface, group, version);
+ return unmodifiableSortedSet(getServiceURLs(getAllServiceURLs(), serviceKey, protocol));
+ }
+
+ private Map<String, SortedSet<URL>> getAllServiceURLs () {
+ List<ServiceDiscovery> serviceDiscoveries = registryManager.getServiceDiscoveries();
+ Map<String, SortedSet<URL>> allServiceURLs = new HashMap<>();
+ for (ServiceDiscovery sd : serviceDiscoveries) {
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
+ Map<String, SortedSet<URL>> serviceURLs = metadataInfo.getExportedServiceURLs();
+ allServiceURLs.putAll(serviceURLs);
+ }
+ return allServiceURLs;
+ }
+
+ @Override
+ public Set<URL> getExportedServiceURLs() {
+ Set<URL> set = new HashSet<>();
+ registryManager.getRegistries();
+ for (Map.Entry<String, SortedSet<URL>> entry : getAllServiceURLs().entrySet()) {
+ set.addAll(entry.getValue());
+ }
+ return set;
+ }
+
+ @Override
+ public String getServiceDefinition(String interfaceName, String version, String group) {
+ return serviceDefinitions.get(URL.buildKey(interfaceName, group, version));
+ }
+
+ @Override
+ public String getServiceDefinition(String serviceKey) {
+ return serviceDefinitions.get(serviceKey);
+ }
+
+ @Override
+ public MetadataInfo getMetadataInfo(String revision) {
+ if (StringUtils.isEmpty(revision)) {
+ return null;
+ }
+
+ for (ServiceDiscovery sd : registryManager.getServiceDiscoveries()) {
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
+ if (revision.equals(metadataInfo.getRevision())) {
+ return metadataInfo;
+ }
+ }
+
+ if (logger.isWarnEnabled()) {
+ logger.warn("metadata not found for revision: " + revision);
+ }
+ return null;
+ }
+
+ @Override
+ public List<MetadataInfo> getMetadataInfos() {
+ List<MetadataInfo> metadataInfos = new ArrayList<>();
+ for (ServiceDiscovery sd : registryManager.getServiceDiscoveries()) {
+ metadataInfos.add(sd.getLocalMetadata());
+ }
+ return metadataInfos;
+ }
+
+ private SortedSet<String> getServiceURLs(Map<String, SortedSet<URL>> exportedServiceURLs, String serviceKey,
+ String protocol) {
+
+ SortedSet<URL> serviceURLs = exportedServiceURLs.get(serviceKey);
+
+ if (isEmpty(serviceURLs)) {
+ return emptySortedSet();
+ }
+
+ return MetadataService.toSortedStrings(serviceURLs.stream().filter(url -> isAcceptableProtocol(protocol, url)));
+ }
+
+ private boolean isAcceptableProtocol(String protocol, URL url) {
+ return protocol == null
+ || protocol.equals(url.getParameter(PROTOCOL_KEY))
+ || protocol.equals(url.getProtocol());
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+
+
+ static class URLComparator implements Comparator<URL> {
+
+ public static final URLComparator INSTANCE = new URLComparator();
+
+ @Override
+ public int compare(URL o1, URL o2) {
+ return o1.toFullString().compareTo(o2.toFullString());
+ }
+ }
+}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizer.java
similarity index 56%
rename from dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
rename to dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizer.java
index d584c74..f8f016d 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizer.java
@@ -14,12 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.registry.client.metadata;
+package org.apache.dubbo.config.metadata;
-import org.apache.dubbo.metadata.WritableMetadataService;
+import org.apache.dubbo.common.BaseServiceMetadata;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.utils.CollectionUtils;
+import org.apache.dubbo.metadata.MetadataService;
import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;
+import org.apache.dubbo.registry.client.metadata.SpringCloudMetadataServiceURLBuilder;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ModuleServiceRepository;
+import org.apache.dubbo.rpc.model.ProviderModel;
+import java.util.List;
import java.util.Map;
import static org.apache.dubbo.common.utils.StringUtils.isBlank;
@@ -32,12 +40,12 @@ import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataU
public class MetadataServiceURLParamsMetadataCustomizer implements ServiceInstanceCustomizer {
@Override
- public void customize(ServiceInstance serviceInstance) {
+ public void customize(ServiceInstance serviceInstance, ApplicationModel applicationModel) {
Map<String, String> metadata = serviceInstance.getMetadata();
String propertyName = resolveMetadataPropertyName(serviceInstance);
- String propertyValue = resolveMetadataPropertyValue(serviceInstance);
+ String propertyValue = resolveMetadataPropertyValue(applicationModel);
if (!isBlank(propertyName) && !isBlank(propertyValue)) {
metadata.put(propertyName, propertyValue);
@@ -48,8 +56,17 @@ public class MetadataServiceURLParamsMetadataCustomizer implements ServiceInstan
return METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;
}
- private String resolveMetadataPropertyValue(ServiceInstance serviceInstance) {
- WritableMetadataService writableMetadataService = WritableMetadataService.getDefaultExtension(serviceInstance.getApplicationModel());
- return getMetadataServiceParameter(writableMetadataService.getMetadataServiceURL());
+ private String resolveMetadataPropertyValue(ApplicationModel applicationModel) {
+ ModuleServiceRepository serviceRepository = applicationModel.getInternalModule().getServiceRepository();
+ String key = BaseServiceMetadata.buildServiceKey(MetadataService.class.getName(), applicationModel.getApplicationName(), MetadataService.VERSION);
+ ProviderModel providerModel = serviceRepository.lookupExportedService(key);
+ String metadataValue = "";
+ if (providerModel != null) {
+ List<URL> metadataURLs = providerModel.getServiceConfig().getExportedUrls();
+ if (CollectionUtils.isNotEmpty(metadataURLs)) {
+ metadataValue = getMetadataServiceParameter(metadataURLs.get(0));
+ }
+ }
+ return metadataValue;
}
}
diff --git a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.deploy.ApplicationDeployListener b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.deploy.ApplicationDeployListener
new file mode 100644
index 0000000..0074701
--- /dev/null
+++ b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.deploy.ApplicationDeployListener
@@ -0,0 +1 @@
+exporter=org.apache.dubbo.config.metadata.ExporterDeployListener
diff --git a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter
deleted file mode 100644
index 2bda3f2..0000000
--- a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter
+++ /dev/null
@@ -1,2 +0,0 @@
-# since 2.7.8
-local = org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter
diff --git a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
index 656f868..f3cb706 100644
--- a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
+++ b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
@@ -1 +1 @@
-port=org.apache.dubbo.config.metadata.ServiceInstanceHostPortCustomizer
\ No newline at end of file
+metadata-url=org.apache.dubbo.config.metadata.MetadataServiceURLParamsMetadataCustomizer
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractMethodConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractMethodConfigTest.java
index ceb63d5..2c75a18 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractMethodConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractMethodConfigTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java
index 858fcf0..7eb8c74 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java
@@ -18,6 +18,7 @@
package org.apache.dubbo.config;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConfigScopeModelInitializerTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConfigScopeModelInitializerTest.java
index a527097..f80f546 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConfigScopeModelInitializerTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConfigScopeModelInitializerTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.config;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java
index 1afaeab..6bc617c 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java
@@ -20,6 +20,7 @@ package org.apache.dubbo.config;
import org.apache.dubbo.config.api.DemoService;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
index adae9ec..5677e67 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
@@ -20,6 +20,7 @@ package org.apache.dubbo.config;
import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.context.ConfigManager;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java
index 10186e1..d2b7ba5 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java
@@ -21,8 +21,8 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.rpc.model.ApplicationModel;
-
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java
index ceb24b1..771d8d4 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java
@@ -17,7 +17,6 @@
package org.apache.dubbo.config;
-import com.google.common.collect.Lists;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.config.api.DemoService;
@@ -33,6 +32,8 @@ import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.service.GenericService;
+
+import com.google.common.collect.Lists;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
index 15707bd..7b79bf0 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.bootstrap;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.constants.CommonConstants;
+import org.apache.dubbo.common.deploy.ApplicationDeployListener;
import org.apache.dubbo.common.url.component.ServiceConfigURL;
import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.common.utils.ReflectUtils;
@@ -31,19 +32,18 @@ import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.SysProps;
import org.apache.dubbo.config.api.DemoService;
import org.apache.dubbo.config.deploy.DefaultApplicationDeployer;
+import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter;
+import org.apache.dubbo.config.metadata.ExporterDeployListener;
import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
import org.apache.dubbo.config.utils.ConfigValidationUtils;
-import org.apache.dubbo.metadata.MetadataInfo;
import org.apache.dubbo.metadata.MetadataService;
-import org.apache.dubbo.metadata.MetadataServiceExporter;
-import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.monitor.MonitorService;
import org.apache.dubbo.registry.RegistryService;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
-
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
@@ -249,7 +249,6 @@ public class DubboBootstrapTest {
ApplicationModel applicationModel = bootstrap.getApplicationModel();
DefaultApplicationDeployer applicationDeployer = getApplicationDeployer(applicationModel);
- Assertions.assertNotNull(ReflectUtils.getFieldValue(applicationDeployer, "serviceInstance"));
Assertions.assertNotNull(ReflectUtils.getFieldValue(applicationDeployer, "asyncMetadataFuture"));
Assertions.assertTrue(applicationModel.getDefaultModule().getServiceRepository().getExportedServices().size() > 0);
}
@@ -321,31 +320,27 @@ public class DubboBootstrapTest {
}
- private void assertMetadataService(DubboBootstrap bootstrap, int availablePort, boolean shouldReport) {
- DefaultApplicationDeployer applicationDeployer = getApplicationDeployer(bootstrap.getApplicationModel());
- MetadataServiceExporter metadataServiceExporter = ReflectUtils.getFieldValue(applicationDeployer, "metadataServiceExporter");
+ private ExporterDeployListener getListener(ApplicationModel model) {
+ return (ExporterDeployListener)model.getExtensionLoader(ApplicationDeployListener.class).getExtension("exporter");
+ }
+
+ private void assertMetadataService(DubboBootstrap bootstrap, int availablePort, boolean metadataExported) {
+ ExporterDeployListener listener = getListener(bootstrap.getApplicationModel());
+ ConfigurableMetadataServiceExporter metadataServiceExporter = listener.getMetadataServiceExporter();
+ Assertions.assertEquals(metadataExported, metadataServiceExporter.isExported());
DubboProtocol protocol = DubboProtocol.getDubboProtocol(bootstrap.getApplicationModel());
Map<String, Exporter<?>> exporters = protocol.getExporterMap();
-
- ServiceConfig<MetadataService> serviceConfig = new ServiceConfig<>();
- serviceConfig.setRegistry(new RegistryConfig("N/A"));
- serviceConfig.setInterface(MetadataService.class);
- serviceConfig.setGroup(ApplicationModel.defaultModel().getCurrentConfig().getName());
- serviceConfig.setVersion(MetadataService.VERSION);
-
- WritableMetadataService metadataService = WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel());
- MetadataInfo metadataInfo = metadataService.getDefaultMetadataInfo();
-
- Assertions.assertNotNull(metadataInfo);
- if (shouldReport) {
- Assertions.assertTrue(metadataServiceExporter.isExported());
+ if (metadataExported) {
Assertions.assertEquals(2, exporters.size());
+
+ ServiceConfig<MetadataService> serviceConfig = new ServiceConfig<>();
+ serviceConfig.setRegistry(new RegistryConfig("N/A"));
+ serviceConfig.setInterface(MetadataService.class);
+ serviceConfig.setGroup(ApplicationModel.defaultModel().getCurrentConfig().getName());
+ serviceConfig.setVersion(MetadataService.VERSION);
assertThat(exporters, hasEntry(is(serviceConfig.getUniqueServiceName() + ":" + availablePort), anything()));
- Assertions.assertFalse(metadataInfo.hasReported());
} else {
- Assertions.assertFalse(metadataServiceExporter.isExported());
Assertions.assertEquals(1, exporters.size());
- Assertions.assertTrue(metadataInfo.hasReported());
}
}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
index b4f4698..1db7599 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
@@ -43,6 +43,7 @@ import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.test.check.DubboTestChecker;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilderTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilderTest.java
index 092efae..157b73d 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilderTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilderTest.java
@@ -23,8 +23,8 @@ import org.apache.dubbo.config.MetadataReportConfig;
import org.apache.dubbo.config.ModuleConfig;
import org.apache.dubbo.config.MonitorConfig;
import org.apache.dubbo.config.RegistryConfig;
-
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java
index 4468434..8d11269 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java
@@ -17,10 +17,10 @@
package org.apache.dubbo.config.integration.multiple.exportmetadata;
import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.RegistryConfig;
+import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.ServiceListener;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.integration.IntegrationTest;
@@ -29,6 +29,7 @@ import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
index 3f9a4c4..a98fa58 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java
@@ -34,6 +34,7 @@ import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java
index 291f559..cdc3adf 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.config.integration.IntegrationTest;
import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
index aa61d4a..1c2b154 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
@@ -25,10 +25,11 @@ import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.integration.IntegrationTest;
+import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
import org.apache.dubbo.registry.RegistryServiceListener;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
-import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperConfig;
+import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -172,15 +173,15 @@ public class MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest imple
Assertions.assertTrue(serviceDiscoveryRegistryInfoWrapper.isRegistered());
// check if it's subscribed
Assertions.assertFalse(serviceDiscoveryRegistryInfoWrapper.isSubscribed());
- InMemoryWritableMetadataService inMemoryWritableMetadataService = serviceDiscoveryRegistryInfoWrapper.getInMemoryWritableMetadataService();
+ MetadataServiceDelegation metadataService = DubboBootstrap.getInstance().getApplicationModel().getBeanFactory().getBean(MetadataServiceDelegation.class);
// check if the count of exported urls is right or not
- Assertions.assertEquals(inMemoryWritableMetadataService.getExportedURLs().size(), 1);
+ Assertions.assertEquals(metadataService.getExportedURLs().size(), 1);
// check the exported url is right or not.
- Assertions.assertTrue(inMemoryWritableMetadataService.getExportedURLs()
+ Assertions.assertTrue(metadataService.getExportedURLs()
.first()
.contains(MultipleRegistryCenterServiceDiscoveryRegistryService.class.getName()));
// check the count of metadatainfo is right or not.
- Assertions.assertEquals(inMemoryWritableMetadataService.getMetadataInfos().size(), 1);
+ Assertions.assertEquals(2, metadataService.getMetadataInfos().size());
}
}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
index 519f75a..f84a9b8 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
@@ -18,11 +18,9 @@ package org.apache.dubbo.config.integration.multiple.servicediscoveryregistry;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
-import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.RegistryServiceListener;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistry;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
import static org.apache.dubbo.config.integration.Constants.MULTIPLE_CONFIG_CENTER_SERVICE_DISCOVERY_REGISTRY;
@@ -43,7 +41,6 @@ public class MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListen
serviceDiscoveryRegistryInfoWrapper.setHost(host);
serviceDiscoveryRegistryInfoWrapper.setPort(port);
serviceDiscoveryRegistryInfoWrapper.setServiceDiscoveryRegistry(serviceDiscoveryRegistry);
- serviceDiscoveryRegistryInfoWrapper.setInMemoryWritableMetadataService((InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension(url.getScopeModel()));
serviceDiscoveryRegistryInfoWrapper.setRegistered(true);
return serviceDiscoveryRegistryInfoWrapper;
}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java
index a5f35f8..be60e4e 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/ServiceDiscoveryRegistryInfoWrapper.java
@@ -16,17 +16,16 @@
*/
package org.apache.dubbo.config.integration.multiple.servicediscoveryregistry;
+import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistry;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
/**
* The instance to wrap {@link org.apache.dubbo.registry.client.ServiceDiscoveryRegistry}
- * and {@link org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService}
*/
public class ServiceDiscoveryRegistryInfoWrapper {
private ServiceDiscoveryRegistry serviceDiscoveryRegistry;
- private InMemoryWritableMetadataService inMemoryWritableMetadataService;
+ private MetadataServiceDelegation inMemoryWritableMetadataService;
private boolean registered;
private boolean subscribed;
private String host;
@@ -40,14 +39,6 @@ public class ServiceDiscoveryRegistryInfoWrapper {
this.serviceDiscoveryRegistry = serviceDiscoveryRegistry;
}
- public InMemoryWritableMetadataService getInMemoryWritableMetadataService() {
- return inMemoryWritableMetadataService;
- }
-
- public void setInMemoryWritableMetadataService(InMemoryWritableMetadataService inMemoryWritableMetadataService) {
- this.inMemoryWritableMetadataService = inMemoryWritableMetadataService;
- }
-
public boolean isRegistered() {
return registered;
}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
index 5b4b8dd..290c863 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java
@@ -27,19 +27,20 @@ import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.ServiceListener;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.integration.IntegrationTest;
+import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
import org.apache.dubbo.metadata.MetadataInfo;
-import org.apache.dubbo.metadata.WritableMetadataService;
+import org.apache.dubbo.metadata.MetadataService;
import org.apache.dubbo.registry.ListenerRegistryWrapper;
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistry;
import org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
import org.apache.dubbo.registry.client.migration.MigrationInvoker;
import org.apache.dubbo.registry.support.RegistryManager;
import org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -172,8 +173,6 @@ public class SingleRegistryCenterDubboProtocolIntegrationTest implements Integra
* <li>Protocol port is right or not</li>
* <li>ServiceDiscoveryRegistry's protocol is right or not</li>
* <li>Registered service in registry center is right or not</li>
- * <li>Exported url is right or not in InMemoryWritableMetadataService</li>
- * <li>MetadataInfo exists or not in InMemoryWritableMetadataService</li>
* <li>MetadataInfo has reported or not</li>
* <li>MetadataInfo has reported or not has service or not</li>
* <li>MetadataInfo's application name is right or not</li>
@@ -224,24 +223,18 @@ public class SingleRegistryCenterDubboProtocolIntegrationTest implements Integra
Assertions.assertTrue(services.contains(PROVIDER_APPLICATION_NAME));
// obtain InMemoryWritableMetadataService instance
- InMemoryWritableMetadataService inMemoryWritableMetadataService = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension(serviceConfig.getScopeModel());
+ MetadataServiceDelegation inMemoryWritableMetadataService = (MetadataServiceDelegation) serviceConfig.getScopeModel().getBeanFactory().getBean(MetadataService.class);
// Exported url is right or not in InMemoryWritableMetadataService
Assertions.assertEquals(inMemoryWritableMetadataService.getExportedURLs().size(), 1);
// MetadataInfo exists or not in InMemoryWritableMetadataService
- Assertions.assertFalse(inMemoryWritableMetadataService.getMetadataInfos().values().isEmpty());
- // get MetadataInfo
- MetadataInfo metadataInfo = inMemoryWritableMetadataService.getMetadataInfos().get("default");
- // MetadataInfo exists or not in InMemoryWritableMetadataService
- Assertions.assertNotNull(metadataInfo);
- // MetadataInfo has reported or not
- Assertions.assertFalse(metadataInfo.hasReported());
+ Assertions.assertFalse(inMemoryWritableMetadataService.getMetadataInfos().isEmpty());
// MetadataInfo has reported or not has service or not
- Assertions.assertFalse(metadataInfo.getServices().isEmpty());
+ Assertions.assertFalse(inMemoryWritableMetadataService.getMetadataInfos().get(0).getServices().isEmpty());
// MetadataInfo has reported or not has service or not
- Assertions.assertEquals(metadataInfo.getServices().size(), 1);
+ Assertions.assertEquals(inMemoryWritableMetadataService.getMetadataInfos().get(0).getServices().size(), 1);
// obtain the service's key
String key = SingleRegistryCenterIntegrationService.class.getName() + ":" + PROTOCOL_NAME;
- MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServices().get(key);
+ MetadataInfo.ServiceInfo serviceInfo = inMemoryWritableMetadataService.getMetadataInfos().get(0).getServices().get(key);
// MetadataInfo's service exists or not
Assertions.assertNotNull(serviceInfo);
// The name of MetadataInfo's service is right or not
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java
index bfab1a6..6f2f3e6 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java
@@ -17,10 +17,10 @@
package org.apache.dubbo.config.integration.single.exportmetadata;
import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.RegistryConfig;
+import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.ServiceListener;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.integration.IntegrationTest;
@@ -29,6 +29,7 @@ import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
index 3c9b9cb..16398b1 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java
@@ -34,6 +34,7 @@ import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java
index 4e1bab9..fc414df 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.config.integration.IntegrationTest;
import org.apache.dubbo.rpc.ExporterListener;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java
deleted file mode 100644
index da704e4..0000000
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.config.metadata;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.api.DemoService;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
-import org.apache.dubbo.metadata.MetadataService;
-import org.apache.dubbo.metadata.MetadataServiceExporter;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.FrameworkModel;
-import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import java.util.List;
-
-import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * {@link MetadataServiceExporter} Test-Cases
- *
- * @since 2.7.8
- */
-public class MetadataServiceExporterTest {
-
- @BeforeEach
- public void init() {
- DubboBootstrap.reset();
-
- ApplicationConfig applicationConfig = new ApplicationConfig("Test");
- applicationConfig.setRegisterConsumer(true);
- ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
- ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
- ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm"));
- }
-
- @Test
- public void test() {
- MetadataService metadataService = Mockito.mock(MetadataService.class);
- ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter();
- exporter.setMetadataService(metadataService);
- exporter.setApplicationModel(ApplicationModel.defaultModel());
-
- exporter.export();
- assertTrue(exporter.isExported());
- exporter.unexport();
-
- assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
- assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
- assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
- }
-
- @Test
- public void test2() throws Exception {
-
- ApplicationModel applicationModel = ApplicationModel.defaultModel();
- ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
- MetadataService metadataService = Mockito.mock(MetadataService.class);
- exporter.setMetadataService(metadataService);
-
- applicationModel.getDeployer().start().get();
- assertTrue(exporter.isExported());
- assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
- assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
- assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
-
- applicationModel.getDeployer().stop();
- assertFalse(exporter.isExported());
- }
-
- /**
- * test reuse of port started by normal service
- */
- @Test
- public void testPortReuse() throws Exception {
- DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
- ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
- serviceConfig.setInterface(DemoService.class);
- serviceConfig.setRef(new DemoServiceImpl());
-
- ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
- applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-
- providerBootstrap
- .application(applicationConfig)
- .registry(registryConfig)
- .protocol(new ProtocolConfig("dubbo", 2002))
- .service(serviceConfig);
-
- // will start exporter
- providerBootstrap.start();
- ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-
- try {
- assertTrue(exporter.isExported());
- List<URL> urls = exporter.getExportedURLs();
- assertNotNull(urls);
- assertEquals(2002, urls.get(0).getPort());
- assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol());
- } finally {
- providerBootstrap.stop();
- }
- assertFalse(exporter.isExported());
- }
-
- /**
- * test user specified port and protocol
- * @throws Exception
- */
- @Test
- public void testSpecifiedPortAndProtocol() throws Exception {
- DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
- ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
- serviceConfig.setInterface(DemoService.class);
- serviceConfig.setRef(new DemoServiceImpl());
-
- ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
- applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
- applicationConfig.setMetadataServiceProtocol("tri");
- applicationConfig.setMetadataServicePort(8089);
-
- providerBootstrap
- .application(applicationConfig)
- .registry(registryConfig)
- .protocol(new ProtocolConfig("dubbo", 2002))
- .service(serviceConfig);
-
- // will start exporter.export()
- providerBootstrap.start();
- ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-
- try {
- assertTrue(exporter.isExported());
- List<URL> urls = exporter.getExportedURLs();
- assertNotNull(urls);
- assertEquals(8089, urls.get(0).getPort());
- assertEquals("tri", urls.get(0).getProtocol());
- } finally {
- providerBootstrap.stop();
- }
- assertFalse(exporter.isExported());
- }
-
- @Test
- public void testMetadataStartsBeforeNormalService() throws Exception {
- DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
- ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
- serviceConfig.setInterface(DemoService.class);
- serviceConfig.setRef(new DemoServiceImpl());
- serviceConfig.setDelay(1000);
-
- ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
- applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
-// applicationConfig.setMetadataServiceProtocol("triple");
-// applicationConfig.setMetadataServicePort(8089);
-
- providerBootstrap
- .application(applicationConfig)
- .registry(registryConfig)
- .protocol(new ProtocolConfig("dubbo", 2002))
- .service(serviceConfig);
-
- // will start exporter.export()
- providerBootstrap.start();
- ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-
- try {
- assertTrue(exporter.isExported());
- List<URL> urls = exporter.getExportedURLs();
- assertNotNull(urls);
- assertNotEquals(2002, urls.get(0).getPort());
- assertEquals("dubbo", urls.get(0).getProtocol());
- } finally {
- providerBootstrap.stop();
- }
- assertFalse(exporter.isExported());
- }
-//
-// /**
-// * test multiple protocols
-// * @throws Exception
-// */
-// @Test
-// public void testMultiProtocols() throws Exception {
-// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
-// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
-// serviceConfig.setInterface(DemoService.class);
-// serviceConfig.setRef(new DemoServiceImpl());
-//
-// providerBootstrap
-// .application("provider-app")
-// .registry(registryConfig)
-// .protocol(new ProtocolConfig("dubbo", 2002))
-// .service(serviceConfig);
-//
-// ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
-// MetadataService metadataService = Mockito.mock(MetadataService.class);
-// exporter.setMetadataService(metadataService);
-//
-// try {
-// providerBootstrap.start();
-// assertTrue(exporter.isExported());
-// assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
-// assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
-// assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
-// } finally {
-// providerBootstrap.stop();
-// }
-// assertFalse(exporter.isExported());
-// }
-
- private static RegistryConfig registryConfig;
-
- @BeforeAll
- public static void beforeAll() {
- FrameworkModel.destroyAll();
- registryConfig = new RegistryConfig(ZookeeperRegistryCenterConfig.getConnectionAddress());
- // pre-check threads
- //precheckUnclosedThreads();
- }
-
-}
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
similarity index 50%
rename from dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
rename to dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
index f3ea39d..d3fe734 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceURLParamsMetadataCustomizerTest.java
@@ -14,43 +14,46 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.registry.client.metadata;
+package org.apache.dubbo.config.metadata;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.metadata.MetadataService;
-import org.apache.dubbo.metadata.WritableMetadataService;
+import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.RegistryConfig;
+import org.apache.dubbo.config.ServiceConfig;
+import org.apache.dubbo.config.api.DemoService;
+import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
import org.apache.dubbo.registry.client.DefaultServiceInstance;
-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
import org.mockito.Mockito;
import java.io.IOException;
import java.util.Map;
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
public class MetadataServiceURLParamsMetadataCustomizerTest {
private static final Gson gson = new Gson();
public DefaultServiceInstance instance;
- private InMemoryWritableMetadataService metadataService;
- private URL metadataServiceURL = URL.valueOf("metadata://127.0.0.1:21881/" + MetadataService.class.getName() +
- "?application=demo&group=g1&version=1.0.0×tamp=1632662388960");
+ private URL metadataServiceURL = URL.valueOf("dubbo://10.225.12.124:20880/org.apache.dubbo.metadata.MetadataService" +
+ "?application=MetadataServiceURLParamsMetadataCustomizerTest&group=MetadataServiceURLParamsMetadataCustomizerTest" +
+ "&interface=org.apache.dubbo.metadata.MetadataService&side=provider×tamp=1637573430740&version=1.0.0");
public static DefaultServiceInstance createInstance() {
@@ -60,8 +63,6 @@ public class MetadataServiceURLParamsMetadataCustomizerTest {
@BeforeEach
public void init() {
instance = createInstance();
- metadataService = mock(InMemoryWritableMetadataService.class);
- when(metadataService.getMetadataServiceURL()).thenReturn(metadataServiceURL);
}
@AfterEach
@@ -71,22 +72,38 @@ public class MetadataServiceURLParamsMetadataCustomizerTest {
@Test
public void test() {
+ DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+ ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+ serviceConfig.setInterface(DemoService.class);
+ serviceConfig.setRef(new DemoServiceImpl());
+ serviceConfig.setDelay(1000);
+
+ ApplicationConfig applicationConfig = new ApplicationConfig("MetadataServiceURLParamsMetadataCustomizerTest");
+ applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+
+ providerBootstrap
+ .application(applicationConfig)
+ .registry(new RegistryConfig("N/A"))
+ .protocol(new ProtocolConfig("dubbo", 2002))
+ .service(serviceConfig);
+
+ // will start exporter.export()
+ providerBootstrap.start();
+
+ ApplicationModel applicationModel = providerBootstrap.getApplicationModel();
MetadataServiceURLParamsMetadataCustomizer customizer = new MetadataServiceURLParamsMetadataCustomizer();
- try (MockedStatic<WritableMetadataService> mockMetadataService = Mockito.mockStatic(WritableMetadataService.class)) {
- mockMetadataService.when(() -> WritableMetadataService.getDefaultExtension(ApplicationModel.defaultModel())).thenReturn(metadataService);
- customizer.customize(instance);
-
- String val = instance.getMetadata().get(METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME);
- Assertions.assertNotNull(val);
-
- Map<String, String> map = gson.fromJson(val, new TypeToken<Map<String, String>>() {
- }.getType());
- Assertions.assertEquals(map.get(PORT_KEY), String.valueOf(metadataServiceURL.getPort()));
- Assertions.assertEquals(map.get(PROTOCOL_KEY), metadataServiceURL.getProtocol());
- Assertions.assertEquals(map.get(VERSION_KEY), metadataServiceURL.getVersion());
- Assertions.assertFalse(map.containsKey(TIMESTAMP_KEY));
- Assertions.assertFalse(map.containsKey(GROUP_KEY));
- Assertions.assertFalse(map.containsKey(APPLICATION_KEY));
- }
+ customizer.customize(instance, applicationModel);
+
+ String val = instance.getMetadata().get(METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME);
+ Assertions.assertNotNull(val);
+
+ Map<String, String> map = gson.fromJson(val, new TypeToken<Map<String, String>>() {
+ }.getType());
+ Assertions.assertEquals(map.get(PORT_KEY), String.valueOf(metadataServiceURL.getPort()));
+ Assertions.assertEquals(map.get(PROTOCOL_KEY), metadataServiceURL.getProtocol());
+ Assertions.assertEquals(map.get(VERSION_KEY), metadataServiceURL.getVersion());
+ Assertions.assertFalse(map.containsKey(TIMESTAMP_KEY));
+ Assertions.assertFalse(map.containsKey(GROUP_KEY));
+ Assertions.assertFalse(map.containsKey(APPLICATION_KEY));
}
}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizerTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizerTest.java
deleted file mode 100644
index ebad6d9..0000000
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizerTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.config.metadata;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.metadata.WritableMetadataService;
-import org.apache.dubbo.registry.client.DefaultServiceInstance;
-import org.apache.dubbo.registry.client.ServiceInstance;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.FrameworkModel;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-/**
- * Test for https://github.com/apache/dubbo/issues/8698
- */
-class ServiceInstanceHostPortCustomizerTest {
- private static ServiceInstanceHostPortCustomizer serviceInstanceHostPortCustomizer;
- private static ApplicationModel applicationModel;
-
- @BeforeAll
- public static void setUp() {
- applicationModel = new ApplicationModel(new FrameworkModel());
- applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig("service-preferredProtocol"));
- serviceInstanceHostPortCustomizer = new ServiceInstanceHostPortCustomizer();
- }
-
- @AfterAll
- public static void clearUp() {
- applicationModel.destroy();
- }
-
- @Test
- void customizePreferredProtocol() {
- WritableMetadataService writableMetadataService = WritableMetadataService.getDefaultExtension(applicationModel);
-
- // Only have tri protocol
- writableMetadataService.exportURL(
- URL.valueOf("tri://127.1.1.1:50052/org.apache.dubbo.demo.GreetingService")
- );
-
- // Trigger the fallback strategy
- ServiceInstance serviceInstance1 = new DefaultServiceInstance("without-preferredProtocol", applicationModel);
- serviceInstanceHostPortCustomizer.customize(serviceInstance1);
- Assertions.assertEquals("127.1.1.1", serviceInstance1.getHost());
- Assertions.assertEquals(50052, serviceInstance1.getPort());
-
-
- // Add the default protocol
- writableMetadataService.exportURL(
- URL.valueOf("dubbo://127.1.2.3:20889/org.apache.dubbo.demo.HelloService")
- );
-
- // pick the preferredProtocol, but not found, so trigger the fallback strategy
- ApplicationConfig applicationConfig = applicationModel.getApplicationConfigManager().getApplication().get();
- applicationConfig.setProtocol("not-exist-protocol");
- ServiceInstance serviceInstance2 = new DefaultServiceInstance("with-preferredProtocol", applicationModel);
- serviceInstanceHostPortCustomizer.customize(serviceInstance2);
- Assertions.assertEquals("127.1.2.3", serviceInstance2.getHost());
- Assertions.assertEquals(20889, serviceInstance2.getPort());
-
- // pick the preferredProtocol(tri)
- applicationConfig = applicationModel.getApplicationConfigManager().getApplication().get();
- applicationConfig.setProtocol("tri");
- ServiceInstance serviceInstance3 = new DefaultServiceInstance("with-preferredProtocol", applicationModel);
- serviceInstanceHostPortCustomizer.customize(serviceInstance3);
- Assertions.assertEquals("127.1.1.1", serviceInstance3.getHost());
- Assertions.assertEquals(50052, serviceInstance3.getPort());
- }
-}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java
index 3044dcb..11f584c 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java
@@ -19,16 +19,22 @@ package org.apache.dubbo.config.mock;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
import org.apache.dubbo.registry.client.ServiceInstance;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
public class MockServiceDiscovery extends AbstractServiceDiscovery {
private URL registryURL;
- @Override
- public void doInitialize(URL registryURL) throws Exception {
- this.registryURL = registryURL;
+ public MockServiceDiscovery(ApplicationModel applicationModel, URL registryURL) {
+ super(applicationModel, registryURL);
+ }
+
+ public MockServiceDiscovery(String serviceName, URL registryURL) {
+ super(serviceName, registryURL);
}
@Override
@@ -57,6 +63,11 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery {
}
@Override
+ public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {
+ return Collections.emptyList();
+ }
+
+ @Override
public URL getUrl() {
return registryURL;
}
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
index 8d98088..dabdb7a 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java
@@ -18,9 +18,9 @@ package org.apache.dubbo.config.utils;
import org.apache.dubbo.config.AbstractInterfaceConfig;
import org.apache.dubbo.config.api.Greeting;
-
import org.apache.dubbo.config.mock.GreetingMock1;
import org.apache.dubbo.config.mock.GreetingMock2;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java
index 2a74228..84d2029 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.utils.service.FooService;
+
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java
new file mode 100644
index 0000000..6e60131
--- /dev/null
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java
@@ -0,0 +1,256 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+//package org.apache.dubbo.metadata;
+//
+//import org.apache.dubbo.common.URL;
+//import org.apache.dubbo.common.deploy.ApplicationDeployListener;
+//import org.apache.dubbo.common.utils.NetUtils;
+//import org.apache.dubbo.config.ApplicationConfig;
+//import org.apache.dubbo.config.ProtocolConfig;
+//import org.apache.dubbo.config.RegistryConfig;
+//import org.apache.dubbo.config.ServiceConfig;
+//import org.apache.dubbo.config.api.DemoService;
+//import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+//import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter;
+//import org.apache.dubbo.config.metadata.ExporterDeployListener;
+//import org.apache.dubbo.config.metadata.MetadataServiceDelegation;
+//import org.apache.dubbo.config.provider.impl.DemoServiceImpl;
+//import org.apache.dubbo.rpc.model.ApplicationModel;
+//import org.apache.dubbo.rpc.model.FrameworkModel;
+//import org.apache.dubbo.test.check.registrycenter.RegistryCenter;
+//
+//import org.junit.jupiter.api.BeforeAll;
+//import org.junit.jupiter.api.BeforeEach;
+//import org.junit.jupiter.api.Test;
+//import org.mockito.Mockito;
+//
+//import java.util.List;
+//
+//import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
+//import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
+//import static org.junit.jupiter.api.Assertions.assertEquals;
+//import static org.junit.jupiter.api.Assertions.assertFalse;
+//import static org.junit.jupiter.api.Assertions.assertNotEquals;
+//import static org.junit.jupiter.api.Assertions.assertNotNull;
+//import static org.junit.jupiter.api.Assertions.assertTrue;
+//
+//public class MetadataServiceExporterTest {
+//
+// @BeforeEach
+// public void init() {
+// DubboBootstrap.reset();
+//
+// ApplicationConfig applicationConfig = new ApplicationConfig("Test");
+// applicationConfig.setRegisterConsumer(true);
+// ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
+// ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
+// ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm"));
+// }
+//
+// @Test
+// public void test() {
+// MetadataServiceDelegation metadataService = Mockito.mock(MetadataServiceDelegation.class);
+// ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter(ApplicationModel.defaultModel(), metadataService);
+// exporter.setMetadataService(metadataService);
+//
+// exporter.export();
+// assertTrue(exporter.isExported());
+// exporter.unexport();
+//
+// }
+//
+// @Test
+// public void test2() throws Exception {
+//
+// ApplicationModel applicationModel = ApplicationModel.defaultModel();
+//
+// applicationModel.getDeployer().start().get();
+// ExporterDeployListener listener = getListener(applicationModel);
+// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+//
+// assertTrue(exporter.isExported());
+//
+// applicationModel.getDeployer().stop();
+// assertFalse(exporter.isExported());
+// }
+//
+// /**
+// * test reuse of port started by normal service
+// */
+// @Test
+// public void testPortReuse() throws Exception {
+// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+// serviceConfig.setInterface(DemoService.class);
+// serviceConfig.setRef(new DemoServiceImpl());
+//
+// ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
+// applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+//
+// providerBootstrap
+// .application(applicationConfig)
+// .registry(registryConfig)
+// .protocol(new ProtocolConfig("dubbo", 2002))
+// .service(serviceConfig);
+//
+// // will start exporter
+// providerBootstrap.start();
+// ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
+// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+//
+// try {
+// assertTrue(exporter.isExported());
+// List<URL> urls = exporter.getExportedURLs();
+// assertNotNull(urls);
+// assertEquals(2002, urls.get(0).getPort());
+// assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol());
+// } finally {
+// providerBootstrap.stop();
+// }
+// assertFalse(exporter.isExported());
+// }
+//
+// /**
+// * test user specified port and protocol
+// * @throws Exception
+// */
+// @Test
+// public void testSpecifiedPortAndProtocol() throws Exception {
+// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+// serviceConfig.setInterface(DemoService.class);
+// serviceConfig.setRef(new DemoServiceImpl());
+//
+// ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
+// applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+// applicationConfig.setMetadataServiceProtocol("tri");
+// applicationConfig.setMetadataServicePort(8089);
+//
+// providerBootstrap
+// .application(applicationConfig)
+// .registry(registryConfig)
+// .protocol(new ProtocolConfig("dubbo", 2002))
+// .service(serviceConfig);
+//
+// // will start exporter.export()
+// providerBootstrap.start();
+// ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
+// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+//
+// try {
+// assertTrue(exporter.isExported());
+// List<URL> urls = exporter.getExportedURLs();
+// assertNotNull(urls);
+// assertEquals(8089, urls.get(0).getPort());
+// assertEquals("tri", urls.get(0).getProtocol());
+// } finally {
+// providerBootstrap.stop();
+// }
+// assertFalse(exporter.isExported());
+// }
+//
+// @Test
+// public void testMetadataStartsBeforeNormalService() throws Exception {
+// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+// serviceConfig.setInterface(DemoService.class);
+// serviceConfig.setRef(new DemoServiceImpl());
+// serviceConfig.setDelay(1000);
+//
+// ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test");
+// applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE);
+//// applicationConfig.setMetadataServiceProtocol("triple");
+//// applicationConfig.setMetadataServicePort(8089);
+//
+// providerBootstrap
+// .application(applicationConfig)
+// .registry(registryConfig)
+// .protocol(new ProtocolConfig("dubbo", 2002))
+// .service(serviceConfig);
+//
+// // will start exporter.export()
+// providerBootstrap.start();
+// ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel());
+// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter();
+// try {
+// assertTrue(exporter.isExported());
+// List<URL> urls = exporter.getExportedURLs();
+// assertNotNull(urls);
+// assertNotEquals(2002, urls.get(0).getPort());
+// assertEquals("dubbo", urls.get(0).getProtocol());
+// } finally {
+// providerBootstrap.stop();
+// }
+// assertFalse(exporter.isExported());
+// }
+////
+//// /**
+//// * test multiple protocols
+//// * @throws Exception
+//// */
+//// @Test
+//// public void testMultiProtocols() throws Exception {
+//// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance();
+//// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();
+//// serviceConfig.setInterface(DemoService.class);
+//// serviceConfig.setRef(new DemoServiceImpl());
+////
+//// providerBootstrap
+//// .application("provider-app")
+//// .registry(registryConfig)
+//// .protocol(new ProtocolConfig("dubbo", 2002))
+//// .service(serviceConfig);
+////
+//// ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension();
+//// MetadataService metadataService = Mockito.mock(MetadataService.class);
+//// exporter.setMetadataService(metadataService);
+////
+//// try {
+//// providerBootstrap.start();
+//// assertTrue(exporter.isExported());
+//// assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE));
+//// assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE));
+//// assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE));
+//// } finally {
+//// providerBootstrap.stop();
+//// }
+//// assertFalse(exporter.isExported());
+//// }
+//
+// private static ZookeeperSingleRegistryCenter registryCenter;
+// private static RegistryConfig registryConfig;
+//
+// @BeforeAll
+// public static void beforeAll() {
+// FrameworkModel.destroyAll();
+// registryCenter = new ZookeeperSingleRegistryCenter(NetUtils.getAvailablePort());
+// registryCenter.startup();
+// RegistryCenter.Instance instance = registryCenter.getRegistryCenterInstance().get(0);
+// registryConfig = new RegistryConfig(String.format("%s://%s:%s",
+// instance.getType(),
+// instance.getHostname(),
+// instance.getPort()));
+//
+// // pre-check threads
+// //precheckUnclosedThreads();
+// }
+//
+// private ExporterDeployListener getListener(ApplicationModel model) {
+// return (ExporterDeployListener)model.getExtensionLoader(ApplicationDeployListener.class).getExtension("exporter");
+// }
+//
+//}
diff --git a/dubbo-config/dubbo-config-api/src/test/resources/META-INF/services/org.apache.dubbo.registry.client.ServiceDiscovery b/dubbo-config/dubbo-config-api/src/test/resources/META-INF/services/org.apache.dubbo.registry.client.ServiceDiscovery
deleted file mode 100644
index 22ceb16..0000000
--- a/dubbo-config/dubbo-config-api/src/test/resources/META-INF/services/org.apache.dubbo.registry.client.ServiceDiscovery
+++ /dev/null
@@ -1 +0,0 @@
-mockregistry=org.apache.dubbo.config.mock.MockServiceDiscovery
\ No newline at end of file
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index 71add7b..bb37a5a 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -27,6 +27,7 @@ import org.apache.dubbo.config.spring.reference.ReferenceBeanSupport;
import org.apache.dubbo.config.spring.schema.DubboBeanDefinitionParser;
import org.apache.dubbo.config.support.Parameter;
import org.apache.dubbo.rpc.proxy.AbstractProxyFactory;
+
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.target.AbstractLazyCreationTargetSource;
import org.springframework.beans.MutablePropertyValues;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java
index 2fe8836..6a2d43c 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.config.spring.beans.factory.annotation;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.common.utils.Assert;
import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.common.utils.StringUtils;
@@ -32,6 +30,9 @@ import org.apache.dubbo.config.spring.reference.ReferenceBeanManager;
import org.apache.dubbo.config.spring.reference.ReferenceBeanSupport;
import org.apache.dubbo.config.spring.util.SpringCompatUtils;
import org.apache.dubbo.rpc.service.GenericService;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.PropertyValue;
import org.springframework.beans.PropertyValues;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessor.java
index 08814b1..3351a41 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessor.java
@@ -16,7 +16,6 @@
*/
package org.apache.dubbo.config.spring.beans.factory.annotation;
-import com.alibaba.spring.util.AnnotationUtils;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.StringUtils;
@@ -30,6 +29,8 @@ import org.apache.dubbo.config.spring.context.annotation.DubboClassPathBeanDefin
import org.apache.dubbo.config.spring.schema.AnnotationBeanDefinitionParser;
import org.apache.dubbo.config.spring.util.DubboAnnotationUtils;
import org.apache.dubbo.config.spring.util.SpringCompatUtils;
+
+import com.alibaba.spring.util.AnnotationUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.BeanClassLoaderAware;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java
index a660878..c29182c 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java
@@ -17,9 +17,9 @@
package org.apache.dubbo.config.spring.beans.factory.config;
import org.apache.dubbo.config.AbstractConfig;
+import org.apache.dubbo.config.Constants;
import com.alibaba.spring.beans.factory.config.GenericBeanPostProcessorAdapter;
-import org.apache.dubbo.config.Constants;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor;
import org.springframework.beans.factory.config.BeanPostProcessor;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java
index 90e23dc..58e295c 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java
@@ -16,13 +16,14 @@
*/
package org.apache.dubbo.config.spring.context;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.config.bootstrap.BootstrapTakeoverMode;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.context.event.DubboConfigInitEvent;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java
index 0894a52..b5c3366 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener;
import org.apache.dubbo.config.spring.context.event.DubboBootstrapStatedEvent;
import org.apache.dubbo.config.spring.context.event.DubboBootstrapStopedEvent;
+
import org.springframework.context.ApplicationContext;
/**
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigApplicationListener.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigApplicationListener.java
index 6a839e7..96c11fa 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigApplicationListener.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigApplicationListener.java
@@ -16,11 +16,12 @@
*/
package org.apache.dubbo.config.spring.context;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.config.spring.context.event.DubboConfigInitEvent;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigBeanInitializer.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigBeanInitializer.java
index a551551..71b648f 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigBeanInitializer.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboConfigBeanInitializer.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.config.spring.context;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.config.AbstractConfig;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ConsumerConfig;
@@ -34,6 +32,9 @@ import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.spring.ConfigCenterBean;
import org.apache.dubbo.config.spring.reference.ReferenceBeanManager;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.FatalBeanException;
import org.springframework.beans.factory.BeanFactory;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboDeployApplicationListener.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboDeployApplicationListener.java
index a1cdfb3..8b8ed06 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboDeployApplicationListener.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboDeployApplicationListener.java
@@ -27,6 +27,7 @@ import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ModelConstants;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
index ecbe4ad..b2ce4e6 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.config.spring.util.EnvironmentUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitContext.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitContext.java
index f2a2fd3..e3c8ae7 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitContext.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitContext.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.config.spring.context;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ModelConstants;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ApplicationContext;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitCustomizer.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitCustomizer.java
index fa9da0e..5d5adab 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitCustomizer.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitCustomizer.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.context;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.BeanPostProcessor;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitializer.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitializer.java
index 176d694..a8f7952 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitializer.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboSpringInitializer.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.rpc.model.ScopeModel;
+
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ApplicationContext;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java
index d1db4db..59cd3de 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationPostProcessor;
import org.apache.dubbo.config.spring.context.DubboSpringInitializer;
+
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java
index 9fcc5ed..5eac728 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.context.annotation;
import org.apache.dubbo.config.AbstractConfig;
import org.apache.dubbo.config.spring.context.DubboSpringInitializer;
+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.Ordered;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboApplicationStateEvent.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboApplicationStateEvent.java
index 7b1c3f0..bafa46d 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboApplicationStateEvent.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboApplicationStateEvent.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.context.event;
import org.apache.dubbo.common.deploy.DeployState;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.springframework.context.ApplicationEvent;
/**
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java
index 21d245d..4bc4ed6 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.context.event;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.springframework.context.ApplicationEvent;
/**
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java
index 90bf810..3eceaa6 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.context.event;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.springframework.context.ApplicationEvent;
/**
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboConfigInitEvent.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboConfigInitEvent.java
index bf3bb3d..252b482 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboConfigInitEvent.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/event/DubboConfigInitEvent.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.context.event;
import org.apache.dubbo.config.spring.context.DubboConfigBeanInitializer;
+
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
index 6e6a1a8..a451cac 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.StringUtils;
+
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.context.ApplicationContext;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
index 0c7619b7..0dce203 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanManager.java
@@ -16,13 +16,14 @@
*/
package org.apache.dubbo.config.spring.reference;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.common.utils.Assert;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
index 066ea0b..b22d032 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
@@ -16,13 +16,14 @@
*/
package org.apache.dubbo.config.spring.reference;
-import com.alibaba.spring.util.AnnotationUtils;
import org.apache.dubbo.common.utils.Assert;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.spring.Constants;
import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.util.DubboAnnotationUtils;
import org.apache.dubbo.rpc.service.GenericService;
+
+import com.alibaba.spring.util.AnnotationUtils;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.PropertyValue;
import org.springframework.beans.factory.config.BeanDefinition;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceCreator.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceCreator.java
index 9dc3095..4d7493e 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceCreator.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceCreator.java
@@ -16,9 +16,6 @@
*/
package org.apache.dubbo.config.spring.reference;
-import com.alibaba.spring.util.AnnotationUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.config.AbstractConfig;
import org.apache.dubbo.config.ArgumentConfig;
import org.apache.dubbo.config.ConsumerConfig;
@@ -33,6 +30,10 @@ import org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationPropert
import org.apache.dubbo.config.spring.util.DubboAnnotationUtils;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import com.alibaba.spring.util.AnnotationUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.context.ApplicationContext;
import org.springframework.core.convert.support.DefaultConversionService;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java
index b50bddb..69911ed 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java
@@ -17,8 +17,8 @@
package org.apache.dubbo.config.spring.schema;
import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
-
import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationPostProcessor;
+
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
index 200e57c..982b85d 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java
@@ -32,6 +32,7 @@ import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.ServiceBean;
import org.apache.dubbo.config.spring.beans.factory.config.ConfigurableSourceBeanMetadataElement;
import org.apache.dubbo.config.spring.context.DubboSpringInitializer;
+
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
index c9cd8b6..0f9760f 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.common.status.StatusChecker;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.springframework.context.ApplicationContext;
import javax.sql.DataSource;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
index fad4121..d83398b 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.common.status.StatusChecker;
import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.springframework.context.ApplicationContext;
import org.springframework.context.Lifecycle;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java
index c8f5a23..baed5e4 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.rpc.service.GenericService;
+
import org.springframework.util.Assert;
import java.util.ArrayList;
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboBeanUtils.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboBeanUtils.java
index 5fb6dd8..c350348 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboBeanUtils.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/util/DubboBeanUtils.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.config.spring.util;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigAliasPostProcessor;
import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
import org.apache.dubbo.config.spring.beans.factory.annotation.ServicePackagesHolder;
@@ -31,6 +29,9 @@ import org.apache.dubbo.config.spring.context.DubboSpringInitContext;
import org.apache.dubbo.config.spring.reference.ReferenceBeanManager;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanPostProcessor;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
index 027e365..ebddc1f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
@@ -51,10 +51,9 @@ import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.service.GenericService;
-import org.junit.jupiter.api.AfterAll;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/DubboStateListener.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/DubboStateListener.java
index c5b6326..b2c3307 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/DubboStateListener.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/DubboStateListener.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring;
import org.apache.dubbo.common.deploy.DeployState;
import org.apache.dubbo.config.spring.context.event.DubboApplicationStateEvent;
+
import org.springframework.context.ApplicationListener;
public class DubboStateListener implements ApplicationListener<DubboApplicationStateEvent> {
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java
index abd2f25..03fc754 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/JavaConfigBeanTest.java
@@ -32,6 +32,7 @@ import org.apache.dubbo.config.spring.impl.DemoServiceImpl;
import org.apache.dubbo.rpc.Constants;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ServiceBeanTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ServiceBeanTest.java
index 518a4e8..d77cc75 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ServiceBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ServiceBeanTest.java
@@ -17,8 +17,8 @@
package org.apache.dubbo.config.spring;
import org.apache.dubbo.config.annotation.Service;
-
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.hamcrest.MatcherAssert;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/MethodConfigCallbackTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/MethodConfigCallbackTest.java
index ccb70c9..a0eac46 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/MethodConfigCallbackTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/MethodConfigCallbackTest.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.api.MethodCallback;
import org.apache.dubbo.config.spring.context.annotation.provider.ProviderConfiguration;
import org.apache.dubbo.config.spring.impl.MethodCallbackImpl;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ParameterConvertTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ParameterConvertTest.java
index e74d0c4..cf10022 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ParameterConvertTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ParameterConvertTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.beans.factory.annotation;
import org.apache.dubbo.config.spring.util.DubboAnnotationUtils;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.test.annotation.DirtiesContext;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceCreatorTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceCreatorTest.java
index 3e27564..a5d785f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceCreatorTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceCreatorTest.java
@@ -17,7 +17,6 @@
package org.apache.dubbo.config.spring.beans.factory.annotation;
-import com.alibaba.spring.util.AnnotationUtils;
import org.apache.dubbo.config.ArgumentConfig;
import org.apache.dubbo.config.ConsumerConfig;
import org.apache.dubbo.config.MethodConfig;
@@ -34,6 +33,8 @@ import org.apache.dubbo.config.spring.impl.NotifyService;
import org.apache.dubbo.config.spring.reference.ReferenceCreator;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
+import com.alibaba.spring.util.AnnotationUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessorTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessorTest.java
index 78fa75f..aba4c12 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessorTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationPostProcessorTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.config.spring.ServiceBean;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilderTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilderTest.java
index c57667c..a117ad5 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilderTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilderTest.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.config.spring.beans.factory.annotation;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.config.spring.api.DemoService;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/MultipleServicesWithMethodConfigsTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/MultipleServicesWithMethodConfigsTest.java
index 541c500..6253371 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/MultipleServicesWithMethodConfigsTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/MultipleServicesWithMethodConfigsTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.beans.factory.config;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.ServiceBean;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional1/XmlReferenceBeanConditionalTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional1/XmlReferenceBeanConditionalTest.java
index 54ed291..c18b64f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional1/XmlReferenceBeanConditionalTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional1/XmlReferenceBeanConditionalTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.boot.conditional1;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.HelloService;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional2/JavaConfigAnnotationReferenceBeanConditionalTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional2/JavaConfigAnnotationReferenceBeanConditionalTest.java
index 5b4f7bb..ec4c71c 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional2/JavaConfigAnnotationReferenceBeanConditionalTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional2/JavaConfigAnnotationReferenceBeanConditionalTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.context.annotation.provider.HelloServiceImpl;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional3/JavaConfigRawReferenceBeanConditionalTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional3/JavaConfigRawReferenceBeanConditionalTest.java
index 014682b..ba5fa3c 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional3/JavaConfigRawReferenceBeanConditionalTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional3/JavaConfigRawReferenceBeanConditionalTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.context.annotation.provider.HelloServiceImpl;
import org.apache.dubbo.config.spring.reference.ReferenceBeanBuilder;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional4/JavaConfigReferenceBeanConditionalTest4.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional4/JavaConfigReferenceBeanConditionalTest4.java
index ce6968a..3e01fe0 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional4/JavaConfigReferenceBeanConditionalTest4.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional4/JavaConfigReferenceBeanConditionalTest4.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.context.annotation.provider.HelloServiceImpl;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
index 1542a2a..4d2b8e3 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
@@ -32,6 +32,7 @@ import org.apache.dubbo.config.context.ModuleConfigManager;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
index 27151e6..1bf1a65 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
@@ -32,6 +32,7 @@ import org.apache.dubbo.config.context.ModuleConfigManager;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml/SpringBootImportDubboXmlTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml/SpringBootImportDubboXmlTest.java
index bd7ffea..3975978 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml/SpringBootImportDubboXmlTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml/SpringBootImportDubboXmlTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.boot.importxml;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.HelloService;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/SpringBootImportAndScanTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/SpringBootImportAndScanTest.java
index 1a815f2..a13c44b 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/SpringBootImportAndScanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/SpringBootImportAndScanTest.java
@@ -19,9 +19,10 @@ package org.apache.dubbo.config.spring.boot.importxml2;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.ReferenceBean;
-import org.apache.dubbo.config.spring.reference.ReferenceBeanManager;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
+import org.apache.dubbo.config.spring.reference.ReferenceBeanManager;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/dubbo-provider.xml b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/dubbo-provider.xml
index b2dfdb5..f6281ac 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/dubbo-provider.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/importxml2/dubbo-provider.xml
@@ -19,9 +19,9 @@
-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+ http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- <context:property-placeholder/>-->
<dubbo:application name="${myapp.name:foo}"/>
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/KeepRunningOnSpringClosedTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/KeepRunningOnSpringClosedTest.java
index 2fcbeb5..4cc6908 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/KeepRunningOnSpringClosedTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/KeepRunningOnSpringClosedTest.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.DubboStateListener;
import org.apache.dubbo.config.spring.SysProps;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrarTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrarTest.java
index 7522ba6..a12c1bb 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrarTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrarTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.context.annotation.consumer.ConsumerConfiguration;
import org.apache.dubbo.config.spring.context.annotation.provider.DemoServiceImpl;
import org.apache.dubbo.config.spring.context.annotation.provider.ProviderConfiguration;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationTest.java
index e745f51..17a27f4 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationTest.java
@@ -20,8 +20,8 @@ import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ModuleConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
-
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboTest.java
index 17c4286..75ff827 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationTestConfiguration;
import org.apache.dubbo.config.spring.context.annotation.consumer.test.TestConsumerConfiguration;
import org.apache.dubbo.config.spring.context.annotation.provider.DemoServiceImpl;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/customize/DubboSpringInitCustomizerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/customize/DubboSpringInitCustomizerTest.java
index c5e6cfb..f8b98bc 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/customize/DubboSpringInitCustomizerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/customize/DubboSpringInitCustomizerTest.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinderTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinderTest.java
index d64b60d..ea42e1f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinderTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinderTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
index 78bf9eb..8514a07 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.config.spring.impl.DemoServiceImpl;
import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.Protocol;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/impl/MethodCallbackImpl.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/impl/MethodCallbackImpl.java
index 7f9a454..a005471 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/impl/MethodCallbackImpl.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/impl/MethodCallbackImpl.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.impl;
import org.apache.dubbo.config.spring.api.MethodCallback;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/Issue6000Test.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/Issue6000Test.java
index c652a4c..3be2329 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/Issue6000Test.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/Issue6000Test.java
@@ -19,9 +19,10 @@ package org.apache.dubbo.config.spring.issues.issue6000;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.issues.issue6000.adubbo.HelloDubbo;
+
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/adubbo/HelloDubbo.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/adubbo/HelloDubbo.java
index c66ced0..44962c8 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/adubbo/HelloDubbo.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/adubbo/HelloDubbo.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.issues.issue6000.adubbo;
import org.apache.dubbo.config.spring.api.HelloService;
+
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/dubbo/MyReferenceConfig.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/dubbo/MyReferenceConfig.java
index a235115..f5d3155 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/dubbo/MyReferenceConfig.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6000/dubbo/MyReferenceConfig.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.issues.issue6000.dubbo;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.spring.api.HelloService;
+
import org.springframework.context.annotation.Configuration;
/**
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6252/Issue6252Test.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6252/Issue6252Test.java
index 8d9e815..51b6f14 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6252/Issue6252Test.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue6252/Issue6252Test.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
index a31fbee..71edfbe 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue7003/Issue7003Test.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.config.spring.ReferenceBean;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9172/MultipleConsumerAndProviderTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9172/MultipleConsumerAndProviderTest.java
index 654ba9c..4e196b2 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9172/MultipleConsumerAndProviderTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9172/MultipleConsumerAndProviderTest.java
@@ -27,6 +27,7 @@ import org.apache.dubbo.config.spring.impl.DemoServiceImpl;
import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9207/ConfigCenterBeanTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9207/ConfigCenterBeanTest.java
index 86a42fc..78b891f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9207/ConfigCenterBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/issues/issue9207/ConfigCenterBeanTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.spring.ConfigCenterBean;
import org.apache.dubbo.config.spring.SysProps;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeansException;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/DemoBeanFactoryPostProcessor.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/DemoBeanFactoryPostProcessor.java
index 9aca76f..e5cafe8 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/DemoBeanFactoryPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/DemoBeanFactoryPostProcessor.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.propertyconfigurer.consumer;
import org.apache.dubbo.config.spring.api.HelloService;
+
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/dubbo-consumer.xml b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/dubbo-consumer.xml
index d00f3b2..5f78077 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/dubbo-consumer.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer/dubbo-consumer.xml
@@ -17,9 +17,9 @@
-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
- http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+ http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/dubbo-consumer.xml b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/dubbo-consumer.xml
index 6048716..d3e5725 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/dubbo-consumer.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer2/dubbo-consumer.xml
@@ -17,9 +17,9 @@
-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
- http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+ http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<bean id="propertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location">
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/dubbo-consumer.xml b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/dubbo-consumer.xml
index 4a5d492..89f42b6 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/dubbo-consumer.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/propertyconfigurer/consumer3/dubbo-consumer.xml
@@ -17,9 +17,9 @@
-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
- http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+ http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="demo-consumer">
</dubbo:application>
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/DubboConfigBeanInitializerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/DubboConfigBeanInitializerTest.java
index a056711..c2b42ca 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/DubboConfigBeanInitializerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/DubboConfigBeanInitializerTest.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.DubboConfigBeanInitializer;
import org.apache.dubbo.config.spring.context.annotation.provider.ProviderConfiguration;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcall/local-call-consumer.xml b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcall/local-call-consumer.xml
index aa41fb9..bbac855 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcall/local-call-consumer.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcall/local-call-consumer.xml
@@ -18,9 +18,9 @@
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+ http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:reference id="helloService" interface="org.apache.dubbo.config.spring.api.HelloService"/>
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcallmix/local-call-consumer.xml b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcallmix/local-call-consumer.xml
index aa41fb9..bbac855 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcallmix/local-call-consumer.xml
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/localcallmix/local-call-consumer.xml
@@ -18,9 +18,9 @@
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+ http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:reference id="helloService" interface="org.apache.dubbo.config.spring.api.HelloService"/>
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java
index e77719d..a5c5b3c 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java
@@ -19,16 +19,22 @@ package org.apache.dubbo.config.spring.registry;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
import org.apache.dubbo.registry.client.ServiceInstance;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
public class MockServiceDiscovery extends AbstractServiceDiscovery {
private URL registryURL;
- @Override
- public void doInitialize(URL registryURL) throws Exception {
- this.registryURL = registryURL;
+ public MockServiceDiscovery(ApplicationModel applicationModel, URL registryURL) {
+ super(applicationModel, registryURL);
+ }
+
+ public MockServiceDiscovery(String serviceName, URL registryURL) {
+ super(serviceName, registryURL);
}
@Override
@@ -54,6 +60,11 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery {
}
@Override
+ public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {
+ return Collections.emptyList();
+ }
+
+ @Override
public URL getUrl() {
return registryURL;
}
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/nacos/nacos/NacosServiceNameTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/nacos/nacos/NacosServiceNameTest.java
index 5aa5783..0ea50e6 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/nacos/nacos/NacosServiceNameTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/nacos/nacos/NacosServiceNameTest.java
@@ -23,9 +23,9 @@ import org.junit.jupiter.api.Test;
import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;
import static org.apache.dubbo.registry.nacos.NacosServiceName.WILDCARD;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* {@link NacosServiceName} Test
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandlerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandlerTest.java
index 7415f17..69bb8d7 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandlerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/DubboNamespaceHandlerTest.java
@@ -32,6 +32,7 @@ import org.apache.dubbo.config.spring.ServiceBean;
import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.impl.DemoServiceImpl;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceTest.java
index 79d0afe..061130f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.config.context.ModuleConfigManager;
import org.apache.dubbo.config.spring.ServiceBean;
import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.rpc.service.GenericService;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceWithoutInterfaceTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceWithoutInterfaceTest.java
index ff0861d..e5a947f 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceWithoutInterfaceTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/schema/GenericServiceWithoutInterfaceTest.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.config.ReferenceConfigBase;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.rpc.service.GenericService;
+
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
index fac121d..1606258 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.config.spring.status;
import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.config.spring.ServiceBean;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
index 384112f..5eeb0cb 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.spring.status;
import org.apache.dubbo.common.status.Status;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-config/dubbo-config-spring/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery b/dubbo-config/dubbo-config-spring/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
deleted file mode 100644
index cea6b84..0000000
--- a/dubbo-config/dubbo-config-spring/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
+++ /dev/null
@@ -1 +0,0 @@
-mock=org.apache.dubbo.config.spring.registry.MockServiceDiscovery
\ No newline at end of file
diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java
index 7d35543..dcba4ff 100644
--- a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java
+++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java
@@ -17,16 +17,6 @@
package org.apache.dubbo.configcenter.support.nacos;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.api.NacosFactory;
-import com.alibaba.nacos.api.PropertyKeyConst;
-import com.alibaba.nacos.api.config.ConfigService;
-import com.alibaba.nacos.api.config.listener.AbstractSharedListener;
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.client.config.http.HttpAgent;
-import com.alibaba.nacos.common.http.HttpRestResult;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.configcenter.ConfigChangeType;
import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;
@@ -38,6 +28,17 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.MD5Utils;
import org.apache.dubbo.common.utils.StringUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.config.listener.AbstractSharedListener;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.alibaba.nacos.client.config.http.HttpAgent;
+import com.alibaba.nacos.common.http.HttpRestResult;
+
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
diff --git a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
index cb867d7..a7ac3f2 100644
--- a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
+++ b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.NamedThreadFactory;
import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
+
import org.apache.zookeeper.data.Stat;
import java.util.Collection;
diff --git a/dubbo-container/dubbo-container-spring/src/main/java/org/apache/dubbo/container/spring/SpringContainer.java b/dubbo-container/dubbo-container-spring/src/main/java/org/apache/dubbo/container/spring/SpringContainer.java
index e221577..e3c0040 100644
--- a/dubbo-container/dubbo-container-spring/src/main/java/org/apache/dubbo/container/spring/SpringContainer.java
+++ b/dubbo-container/dubbo-container-spring/src/main/java/org/apache/dubbo/container/spring/SpringContainer.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.container.Container;
+
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
index 785e53d..b9f31c9 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
@@ -19,9 +19,9 @@ package org.apache.dubbo.demo.consumer;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetadataReportConfig;
+import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.demo.DemoService;
import org.apache.dubbo.rpc.service.GenericService;
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
index 7712d6f..73a5d73 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
@@ -19,9 +19,9 @@ package org.apache.dubbo.demo.provider;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetadataReportConfig;
+import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.demo.DemoService;
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
index b5e2eac..81dd095 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
@@ -74,10 +74,6 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-xds</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-filter-validation</artifactId>
</dependency>
<dependency>
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java
index 254842a..1c253d8 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java
@@ -16,7 +16,6 @@
*/
package com.apache.dubbo.demo.graalvm.consumer;
-import org.apace.dubbo.graalvm.demo.DemoService;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
@@ -24,6 +23,8 @@ import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apace.dubbo.graalvm.demo.DemoService;
+
import java.util.HashMap;
import java.util.Map;
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
index bcc6d9a..1870d96 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
@@ -68,10 +68,6 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-xds</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-filter-validation</artifactId>
</dependency>
<dependency>
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java
index 37459c5..38a0348 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java
@@ -16,9 +16,10 @@
*/
package org.apache.dubbo.demo.graalvm.provider;
-import org.apace.dubbo.graalvm.demo.DemoService;
import org.apache.dubbo.rpc.RpcContext;
+import org.apace.dubbo.graalvm.demo.DemoService;
+
public class DemoServiceImpl implements DemoService {
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
index a89803c..d04700d 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
@@ -26,7 +26,7 @@
<dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>
- <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+ <dubbo:registry id="demo1" address="zookeeper://127.0.0.1:2181?registry-type=service"/>
<dubbo:protocol name="dubbo" port="-1"/>
<dubbo:protocol name="rest" port="-1"/>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
index 64c81e1..60f1d93 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
@@ -21,7 +21,7 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="demo-provider">
+ <dubbo:application name="demo-provider" metadata-type="remote">
</dubbo:application>
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index f5ed76d..2dc55ad 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -169,7 +169,7 @@
<mortbay_jetty_version>6.1.26</mortbay_jetty_version>
<portlet_version>2.0</portlet_version>
<maven_flatten_version>1.1.0</maven_flatten_version>
- <revision>3.0.6-SNAPSHOT</revision>
+ <revision>3.0.5-metadata-SNAPSHOT</revision>
</properties>
<dependencyManagement>
diff --git a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
index eea6d0e..853048c 100644
--- a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
+++ b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
@@ -32,7 +32,7 @@
<packaging>pom</packaging>
<properties>
- <revision>3.0.6-SNAPSHOT</revision>
+ <revision>3.0.5-metadata-SNAPSHOT</revision>
<maven_flatten_version>1.1.0</maven_flatten_version>
<zookeeper_version>3.7.0</zookeeper_version>
</properties>
diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml
index a9d3190..5eb590e 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -173,27 +173,6 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-kubernetes</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-dns</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-xds</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-monitor-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
@@ -429,12 +408,9 @@
<include>org.apache.dubbo:dubbo-plugin</include>
<include>org.apache.dubbo:dubbo-qos</include>
<include>org.apache.dubbo:dubbo-registry-api</include>
- <include>org.apache.dubbo:dubbo-registry-dns</include>
- <include>org.apache.dubbo:dubbo-registry-kubernetes</include>
<include>org.apache.dubbo:dubbo-registry-multicast</include>
<include>org.apache.dubbo:dubbo-registry-multiple</include>
<include>org.apache.dubbo:dubbo-registry-nacos</include>
- <include>org.apache.dubbo:dubbo-registry-xds</include>
<include>org.apache.dubbo:dubbo-registry-zookeeper</include>
<include>org.apache.dubbo:dubbo-registry</include>
<include>org.apache.dubbo:dubbo-remoting-api</include>
@@ -683,24 +659,12 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter
- </resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
META-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping
</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
- </resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
META-INF/dubbo/internal/org.apache.dubbo.metadata.annotation.processing.builder.TypeBuilder
</resource>
</transformer>
@@ -845,12 +809,6 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.registry.client.selector.ServiceInstanceSelector
- </resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
META-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener
</resource>
</transformer>
diff --git a/dubbo-distribution/dubbo-bom/pom.xml b/dubbo-distribution/dubbo-bom/pom.xml
index 821fa9e..1065927 100644
--- a/dubbo-distribution/dubbo-bom/pom.xml
+++ b/dubbo-distribution/dubbo-bom/pom.xml
@@ -155,21 +155,6 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-xds</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-dns</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-kubernetes</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-monitor-api</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/dubbo-distribution/dubbo-core-spi/pom.xml b/dubbo-distribution/dubbo-core-spi/pom.xml
index 8453537..84e78a5 100644
--- a/dubbo-distribution/dubbo-core-spi/pom.xml
+++ b/dubbo-distribution/dubbo-core-spi/pom.xml
@@ -367,24 +367,12 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter
- </resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
META-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping
</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
- </resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
META-INF/dubbo/internal/org.apache.dubbo.metadata.annotation.processing.builder.TypeBuilder
</resource>
</transformer>
@@ -529,12 +517,6 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.registry.client.selector.ServiceInstanceSelector
- </resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
META-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener
</resource>
</transformer>
diff --git a/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/lru/LruCache.java b/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/lru/LruCache.java
index 1b8022f..5b7c256 100644
--- a/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/lru/LruCache.java
+++ b/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/support/lru/LruCache.java
@@ -18,7 +18,7 @@ package org.apache.dubbo.cache.support.lru;
import org.apache.dubbo.cache.Cache;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.LRUCache;
+import org.apache.dubbo.common.utils.LRU2Cache;
import java.util.Map;
@@ -54,7 +54,7 @@ public class LruCache implements Cache {
*/
public LruCache(URL url) {
final int max = url.getParameter("cache.size", 1000);
- this.store = new LRUCache<>(max);
+ this.store = new LRU2Cache<>(max);
}
/**
diff --git a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/lru/LruCacheFactoryTest.java b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/lru/LruCacheFactoryTest.java
index 8244d4a..132d65a 100644
--- a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/lru/LruCacheFactoryTest.java
+++ b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/lru/LruCacheFactoryTest.java
@@ -19,10 +19,11 @@ package org.apache.dubbo.cache.support.lru;
import org.apache.dubbo.cache.Cache;
import org.apache.dubbo.cache.support.AbstractCacheFactory;
import org.apache.dubbo.cache.support.AbstractCacheFactoryTest;
+
import org.junit.jupiter.api.Test;
-import static org.hamcrest.core.Is.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
public class LruCacheFactoryTest extends AbstractCacheFactoryTest{
@Test
diff --git a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/threadlocal/ThreadLocalCacheFactoryTest.java b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/threadlocal/ThreadLocalCacheFactoryTest.java
index f84e05e..aa57668 100644
--- a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/threadlocal/ThreadLocalCacheFactoryTest.java
+++ b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/support/threadlocal/ThreadLocalCacheFactoryTest.java
@@ -19,10 +19,11 @@ package org.apache.dubbo.cache.support.threadlocal;
import org.apache.dubbo.cache.Cache;
import org.apache.dubbo.cache.support.AbstractCacheFactory;
import org.apache.dubbo.cache.support.AbstractCacheFactoryTest;
+
import org.junit.jupiter.api.Test;
-import static org.hamcrest.core.Is.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
public class ThreadLocalCacheFactoryTest extends AbstractCacheFactoryTest {
@Test
diff --git a/dubbo-metadata/dubbo-metadata-api/pom.xml b/dubbo-metadata/dubbo-metadata-api/pom.xml
index 3903f38..ecfd6bc 100644
--- a/dubbo-metadata/dubbo-metadata-api/pom.xml
+++ b/dubbo-metadata/dubbo-metadata-api/pom.xml
@@ -44,7 +44,7 @@
<artifactId>dubbo-cluster</artifactId>
<version>${project.parent.version}</version>
</dependency>
-
+
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
index 72a7985..e18d789 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
@@ -19,12 +19,17 @@ package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModelAware;
+import java.util.Collections;
+import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
import static java.util.Collections.emptySet;
import static java.util.Collections.unmodifiableSet;
@@ -38,12 +43,12 @@ import static org.apache.dubbo.common.utils.StringUtils.isBlank;
public abstract class AbstractServiceNameMapping implements ServiceNameMapping, ScopeModelAware {
protected final Logger logger = LoggerFactory.getLogger(getClass());
protected ApplicationModel applicationModel;
- private WritableMetadataService metadataService;
+ private final Map<String, Set<String>> serviceToAppsMapping = new ConcurrentHashMap<>();
+ private final Map<String, MappingListener> mappingListeners = new ConcurrentHashMap<>();
@Override
public void setApplicationModel(ApplicationModel applicationModel) {
this.applicationModel = applicationModel;
- metadataService = WritableMetadataService.getDefaultExtension(applicationModel);
}
/**
@@ -60,6 +65,8 @@ public abstract class AbstractServiceNameMapping implements ServiceNameMapping,
*/
abstract public Set<String> getAndListen(URL url, MappingListener mappingListener);
+ abstract protected void removeListener(URL url, MappingListener mappingListener);
+
@Override
public Set<String> getServices(URL subscribedURL) {
Set<String> subscribedServices = new TreeSet<>();
@@ -70,8 +77,10 @@ public abstract class AbstractServiceNameMapping implements ServiceNameMapping,
subscribedServices.addAll(parseServices(serviceNames));
}
+ String key = ServiceNameMapping.buildMappingKey(subscribedURL);
+
if (isEmpty(subscribedServices)) {
- Set<String> cachedServices = metadataService.getCachedMapping(ServiceNameMapping.buildMappingKey(subscribedURL));
+ Set<String> cachedServices = this.getCachedMapping(key);
if(!isEmpty(cachedServices)) {
subscribedServices.addAll(cachedServices);
}
@@ -81,35 +90,68 @@ public abstract class AbstractServiceNameMapping implements ServiceNameMapping,
Set<String> mappedServices = get(subscribedURL);
logger.info(subscribedURL.getServiceInterface() + " mapping to " + mappedServices + " instructed by remote metadata center.");
subscribedServices.addAll(mappedServices);
- metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(subscribedURL), subscribedServices);
}
+
+ this.putCachedMapping(key, subscribedServices);
+
return subscribedServices;
}
+ /**
+ * Register callback to listen to mapping changes.
+ *
+ * @return cached or remote mapping data
+ */
@Override
- public Set<String> getAndListenServices(URL registryURL, URL subscribedURL, MappingListener listener) {
- Set<String> subscribedServices = new TreeSet<>();
- Set<String> globalConfiguredSubscribingServices = parseServices(registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY));
-
- String serviceNames = subscribedURL.getParameter(PROVIDED_BY);
- if (StringUtils.isNotEmpty(serviceNames)) {
- logger.info(subscribedURL.getServiceInterface() + " mapping to " + serviceNames + " instructed by provided-by set by user.");
- subscribedServices.addAll(parseServices(serviceNames));
- }
-
- if (isEmpty(subscribedServices)) {
- Set<String> mappedServices = getAndListen(subscribedURL, listener);
- logger.info(subscribedURL.getServiceInterface() + " mapping to " + mappedServices + " instructed by remote metadata center.");
- subscribedServices.addAll(mappedServices);
- if (isEmpty(subscribedServices)) {
- logger.info(subscribedURL.getServiceInterface() + " mapping to " + globalConfiguredSubscribingServices + " by default.");
- subscribedServices.addAll(globalConfiguredSubscribingServices);
+ public Set<String> getAndListen(URL registryURL, URL subscribedURL, MappingListener listener) {
+ String key = ServiceNameMapping.buildMappingKey(subscribedURL);
+ // use previously cached services.
+ Set<String> cachedServices = this.getCachedMapping(key);
+
+ Runnable runnable = () -> {
+ synchronized (mappingListeners) {
+ if (listener != null) {
+ Set<String> mappedServices = getAndListen(subscribedURL, listener);
+ this.putCachedMapping(key, mappedServices);
+ mappingListeners.put(subscribedURL.getProtocolServiceKey(), listener);
+ } else {
+ Set<String> mappedServices = get(subscribedURL);
+ this.putCachedMapping(key, mappedServices);
+ }
+ }
+ };
+
+ // Asynchronously register listener in case previous cache does not exist or cache updating in the future.
+ if (CollectionUtils.isEmpty(cachedServices)) {
+ runnable.run();
+ cachedServices = this.getCachedMapping(key);
+ if (CollectionUtils.isEmpty(cachedServices)) {
+ String registryServices = registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY);
+ if (StringUtils.isNotEmpty(registryServices)) {
+ logger.info(subscribedURL.getServiceInterface() + " mapping to " + registryServices + " instructed by registry subscribed-services.");
+ cachedServices = parseServices(registryServices);
+ }
}
+ } else {
+ ExecutorService executorService = applicationModel.getApplicationExecutorRepository().nextExecutorExecutor();
+ executorService.submit(runnable);
}
- metadataService.putCachedMapping(ServiceNameMapping.buildMappingKey(subscribedURL), subscribedServices);
+ return cachedServices;
+ }
- return subscribedServices;
+ @Override
+ public MappingListener stopListen(URL subscribeURL) {
+ synchronized (mappingListeners) {
+ MappingListener listener = mappingListeners.remove(subscribeURL.getProtocolServiceKey());
+ //todo, remove listener from remote metadata center
+ listener.stop();
+ removeListener(subscribeURL, listener);
+ if (mappingListeners.size() == 0) {
+ removeCachedMapping(ServiceNameMapping.buildMappingKey(subscribeURL));
+ }
+ return listener;
+ }
}
static Set<String> parseServices(String literalServices) {
@@ -120,4 +162,28 @@ public abstract class AbstractServiceNameMapping implements ServiceNameMapping,
.collect(toSet()));
}
+ @Override
+ public void putCachedMapping(String serviceKey, Set<String> apps) {
+ serviceToAppsMapping.put(serviceKey, new TreeSet<>(apps));
+ }
+
+ @Override
+ public Set<String> getCachedMapping(String mappingKey) {
+ return serviceToAppsMapping.get(mappingKey);
+ }
+
+ @Override
+ public Set<String> getCachedMapping(URL consumerURL) {
+ return serviceToAppsMapping.get(ServiceNameMapping.buildMappingKey(consumerURL));
+ }
+
+ @Override
+ public Set<String> removeCachedMapping(String serviceKey) {
+ return serviceToAppsMapping.remove(serviceKey);
+ }
+
+ @Override
+ public Map<String, Set<String>> getCachedMapping() {
+ return Collections.unmodifiableMap(serviceToAppsMapping);
+ }
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MappingListener.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MappingListener.java
index f709d75..c9e7922 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MappingListener.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MappingListener.java
@@ -18,4 +18,6 @@ package org.apache.dubbo.metadata;
public interface MappingListener {
void onEvent(MappingChangedEvent event);
+
+ void stop();
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java
index 8cfa3de..32b3f5b 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java
@@ -24,7 +24,7 @@ public class MetadataConstants {
public static final String SERVICE_META_DATA_STORE_TAG = ".smd";
public static final String CONSUMER_META_DATA_STORE_TAG = ".cmd";
public static final String METADATA_PUBLISH_DELAY_KEY = "dubbo.application.metadata.publish.delay";
- public static final int DEFAULT_METADATA_PUBLISH_DELAY = 10000;
+ public static final int DEFAULT_METADATA_PUBLISH_DELAY = 30000;
public static final String METADATA_PROXY_TIMEOUT_KEY = "dubbo.application.metadata.proxy.delay";
public static final int DEFAULT_METADATA_TIMEOUT_VALUE = 5000;
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
index 3c3a614..0d10238 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
@@ -27,12 +27,17 @@ import org.apache.dubbo.common.utils.StringUtils;
import java.io.Serializable;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.SortedSet;
import java.util.TreeMap;
+import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentNavigableMap;
+import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicBoolean;
import static org.apache.dubbo.common.constants.CommonConstants.DOT_SEPARATOR;
@@ -59,9 +64,15 @@ public class MetadataInfo implements Serializable {
private String revision;
private Map<String, ServiceInfo> services;
+ private volatile AtomicBoolean initiated = new AtomicBoolean(false);
+
// used at runtime
- private transient Map<String, String> extendParams;
- private transient AtomicBoolean reported = new AtomicBoolean(false);
+ private transient final Map<String, String> extendParams;
+ private transient final Map<String, String> instanceParams;
+ protected transient AtomicBoolean updated = new AtomicBoolean(false);
+ private transient ConcurrentNavigableMap<String, SortedSet<URL>> subscribedServiceURLs;
+ private transient ConcurrentNavigableMap<String, SortedSet<URL>> exportedServiceURLs;
+ private transient ExtensionLoader<MetadataParamsFilter> loader;
public MetadataInfo() {
this(null);
@@ -76,30 +87,52 @@ public class MetadataInfo implements Serializable {
this.revision = revision;
this.services = services == null ? new ConcurrentHashMap<>() : services;
this.extendParams = new ConcurrentHashMap<>();
+ this.instanceParams = new ConcurrentHashMap<>();
}
- public void addService(ServiceInfo serviceInfo) {
- if (serviceInfo == null) {
+ /**
+ * Initialize is needed when MetadataInfo is created from deserialization on the consumer side before being used for RPC call.
+ */
+ public void init() {
+ if (!initiated.compareAndSet(false, true)) {
return;
}
- this.services.put(serviceInfo.getMatchKey(), serviceInfo);
- markChanged();
+ if (CollectionUtils.isNotEmptyMap(services)) {
+ services.forEach((_k, serviceInfo) -> {
+ serviceInfo.init();
+ });
+ }
}
- public void removeService(ServiceInfo serviceInfo) {
- if (serviceInfo == null) {
- return;
+ public synchronized void addService(URL url) {
+ // fixme, pass in application mode context during initialization of MetadataInfo.
+ if (this.loader == null) {
+ this.loader = url.getOrDefaultApplicationModel().getExtensionLoader(MetadataParamsFilter.class);
+ }
+ List<MetadataParamsFilter> filters = loader.getActivateExtension(url, "params-filter");
+ // generate service level metadata
+ ServiceInfo serviceInfo = new ServiceInfo(url, filters);
+ this.services.put(serviceInfo.getMatchKey(), serviceInfo);
+ // extract common instance level params
+ extractInstanceParams(url, filters);
+
+ if (exportedServiceURLs == null) {
+ exportedServiceURLs = new ConcurrentSkipListMap<>();
}
- this.services.remove(serviceInfo.getMatchKey());
- markChanged();
+ addURL(exportedServiceURLs, url);
+ updated.compareAndSet(false, true);
}
- public void removeService(String key) {
- if (key == null) {
+ public synchronized void removeService(URL url) {
+ if (url == null) {
return;
}
- this.services.remove(key);
- markChanged();
+ this.services.remove(url.getProtocolServiceKey());
+ if (exportedServiceURLs != null) {
+ removeURL(exportedServiceURLs, url);
+ }
+
+ updated.compareAndSet(false, true);
}
public String getRevision() {
@@ -109,11 +142,13 @@ public class MetadataInfo implements Serializable {
/**
* Reported status and metadata modification must be synchronized if used in multiple threads.
*/
- public String calAndGetRevision() {
- if (revision != null && hasReported()) {
+ public synchronized String calAndGetRevision() {
+ if (revision != null && !updated.get()) {
return revision;
}
+ updated.compareAndSet(true, false);
+
if (CollectionUtils.isEmptyMap(services)) {
this.revision = EMPTY_REVISION;
} else {
@@ -137,27 +172,6 @@ public class MetadataInfo implements Serializable {
this.revision = revision;
}
- /**
- * Reported status and metadata modification must be synchronized if used in multiple threads.
- */
- public boolean hasReported() {
- return reported.get();
- }
-
- /**
- * Reported status and metadata modification must be synchronized if used in multiple threads.
- */
- public void markReported() {
- reported.compareAndSet(false, true);
- }
-
- /**
- * Reported status and metadata modification must be synchronized if used in multiple threads.
- */
- public void markChanged() {
- reported.compareAndSet(true, false);
- }
-
public String getApp() {
return app;
}
@@ -170,10 +184,6 @@ public class MetadataInfo implements Serializable {
return services;
}
- public void setServices(Map<String, ServiceInfo> services) {
- this.services = services;
- }
-
public ServiceInfo getServiceInfo(String protocolServiceKey) {
return services.get(protocolServiceKey);
}
@@ -182,6 +192,10 @@ public class MetadataInfo implements Serializable {
return extendParams;
}
+ public Map<String, String> getInstanceParams() {
+ return instanceParams;
+ }
+
public String getParameter(String key, String serviceKey) {
ServiceInfo serviceInfo = services.get(serviceKey);
if (serviceInfo == null) {
@@ -210,6 +224,52 @@ public class MetadataInfo implements Serializable {
return serviceInfo.toFullString();
}
+ public synchronized void addSubscribedURL(URL url) {
+ if (subscribedServiceURLs == null) {
+ subscribedServiceURLs = new ConcurrentSkipListMap<>();
+ }
+ addURL(subscribedServiceURLs, url);
+ }
+
+ public boolean removeSubscribedURL(URL url) {
+ if (subscribedServiceURLs == null) {
+ return true;
+ }
+ return removeURL(subscribedServiceURLs, url);
+ }
+
+ public ConcurrentNavigableMap<String, SortedSet<URL>> getSubscribedServiceURLs() {
+ return subscribedServiceURLs;
+ }
+
+ public ConcurrentNavigableMap<String, SortedSet<URL>> getExportedServiceURLs() {
+ return exportedServiceURLs;
+ }
+
+ private boolean addURL(Map<String, SortedSet<URL>> serviceURLs, URL url) {
+ SortedSet<URL> urls = serviceURLs.computeIfAbsent(url.getServiceKey(), this::newSortedURLs);
+ // make sure the parameters of tmpUrl is variable
+ return urls.add(url);
+ }
+
+ boolean removeURL(Map<String, SortedSet<URL>> serviceURLs, URL url) {
+ String key = url.getServiceKey();
+ SortedSet<URL> urls = serviceURLs.getOrDefault(key, null);
+ if (urls == null) {
+ return true;
+ }
+ boolean r = urls.remove(url);
+ // if it is empty
+ if (urls.isEmpty()) {
+ serviceURLs.remove(key);
+ }
+ return r;
+ }
+
+ private SortedSet<URL> newSortedURLs(String serviceKey) {
+ return new TreeSet<>(URLComparator.INSTANCE);
+ }
+
@Override
public int hashCode() {
return Objects.hash(app, services);
@@ -228,8 +288,34 @@ public class MetadataInfo implements Serializable {
MetadataInfo other = (MetadataInfo)obj;
return Objects.equals(app, other.getApp())
- && ((services == null && other.getServices() == null)
- || (services != null && services.equals(other.getServices())));
+ && ((services == null && other.services == null)
+ || (services != null && services.equals(other.services)));
+ }
+
+ private void extractInstanceParams(URL url, List<MetadataParamsFilter> filters) {
+ if (CollectionUtils.isEmpty(filters)) {
+ return;
+ }
+
+ filters.forEach(filter -> {
+ String[] included = filter.instanceParamsIncluded();
+ if (ArrayUtils.isEmpty(included)) {
+ /*
+ * Does not put any parameter in instance if not specified.
+ * It will bring no functional suppression as long as all params will appear in service metadata.
+ */
+ } else {
+ for (String p : included) {
+ String value = url.getParameter(p);
+ if (value != null) {
+ String oldValue = instanceParams.put(p, value);
+ if (oldValue != null && !oldValue.equals(value)) {
+ throw new IllegalStateException(String.format("Inconsistent instance metadata found in different services: %s, %s", oldValue, value));
+ }
+ }
+ }
+ }
+ });
}
@Override
@@ -267,32 +353,29 @@ public class MetadataInfo implements Serializable {
private Map<String, String> params;
// params configured on consumer side,
- private transient Map<String, String> consumerParams;
+ private volatile transient Map<String, String> consumerParams;
// cached method params
- private transient Map<String, Map<String, String>> methodParams;
- private transient Map<String, Map<String, String>> consumerMethodParams;
+ private volatile transient Map<String, Map<String, String>> methodParams;
+ private volatile transient Map<String, Map<String, String>> consumerMethodParams;
// cached numbers
- private transient Map<String, Number> numbers;
- private transient Map<String, Map<String, Number>> methodNumbers;
+ private volatile transient Map<String, Number> numbers;
+ private volatile transient Map<String, Map<String, Number>> methodNumbers;
// service + group + version
- private transient String serviceKey;
+ private volatile transient String serviceKey;
// service + group + version + protocol
- private transient String matchKey;
+ private volatile transient String matchKey;
private transient URL url;
- private transient ExtensionLoader<MetadataParamsFilter> loader;
private final static String[] KEYS_TO_REMOVE = {MONITOR_KEY, BIND_IP_KEY, BIND_PORT_KEY, QOS_ENABLE,
QOS_HOST, QOS_PORT, ACCEPT_FOREIGN_IP, VALIDATION_KEY, INTERFACES, PID_KEY, TIMESTAMP_KEY};
public ServiceInfo() {}
- public ServiceInfo(URL url) {
+ public ServiceInfo(URL url, List<MetadataParamsFilter> filters) {
this(url.getServiceInterface(), url.getGroup(), url.getVersion(), url.getProtocol(), url.getPath(), null);
- this.loader = url.getOrDefaultApplicationModel().getExtensionLoader(MetadataParamsFilter.class);
this.url = url;
Map<String, String> params = new HashMap<>();
- List<MetadataParamsFilter> filters = loader.getActivateExtension(url, "params-filter");
if (filters.size() == 0) {
params.putAll(url.getParameters());
for (String key : KEYS_TO_REMOVE) {
@@ -320,6 +403,9 @@ public class MetadataInfo implements Serializable {
}
}
this.params = params;
+ // initialize method params caches.
+ this.methodParams = URLParam.initMethodParameters(params);
+ this.consumerMethodParams = URLParam.initMethodParameters(consumerParams);
}
public ServiceInfo(String name, String group, String version, String protocol, String path, Map<String, String> params) {
@@ -330,10 +416,24 @@ public class MetadataInfo implements Serializable {
this.path = path;
this.params = params == null ? new ConcurrentHashMap<>() : params;
- this.serviceKey = URL.buildKey(name, group, version);
+ this.serviceKey = buildServiceKey(name, group, version);
this.matchKey = buildMatchKey();
}
+ /**
+ * Initialize necessary caches right after deserialization on the consumer side
+ */
+ protected void init() {
+ buildMatchKey();
+ buildServiceKey(name, group, version);
+ // init method params
+ this.methodParams = URLParam.initMethodParameters(params);
+ // Actually, consumer params is empty after deserialization on the consumer side, so no need to initialize.
+ // Check how InstanceAddressURL operates on consumer url for more detail.
+// this.consumerMethodParams = URLParam.initMethodParameters(consumerParams);
+ // no need to init numbers for it's only for cache purpose
+ }
+
public String getMatchKey() {
if (matchKey != null) {
return matchKey;
@@ -350,11 +450,16 @@ public class MetadataInfo implements Serializable {
return matchKey;
}
+ private String buildServiceKey(String name, String group, String version) {
+ this.serviceKey = URL.buildKey(name, group, version);
+ return this.serviceKey;
+ }
+
public String getServiceKey() {
if (serviceKey != null) {
return serviceKey;
}
- this.serviceKey = URL.buildKey(name, group, version);
+ buildServiceKey(name, group, version);
return serviceKey;
}
@@ -430,11 +535,6 @@ public class MetadataInfo implements Serializable {
}
public String getMethodParameter(String method, String key, String defaultValue) {
- if (methodParams == null) {
- methodParams = URLParam.initMethodParameters(params);
- consumerMethodParams = URLParam.initMethodParameters(consumerParams);
- }
-
String value = getMethodParameter(method, key, consumerMethodParams);
if (value != null) {
return value;
@@ -445,11 +545,13 @@ public class MetadataInfo implements Serializable {
private String getMethodParameter(String method, String key, Map<String, Map<String, String>> map) {
String value = null;
- if (map != null) {
- Map<String, String> keyMap = map.get(method);
- if (keyMap != null) {
- value = keyMap.get(key);
- }
+ if (map == null) {
+ return value;
+ }
+
+ Map<String, String> keyMap = map.get(method);
+ if (keyMap != null) {
+ value = keyMap.get(key);
}
return value;
}
@@ -460,12 +562,8 @@ public class MetadataInfo implements Serializable {
}
public boolean hasMethodParameter(String method) {
- if (methodParams == null) {
- methodParams = URLParam.initMethodParameters(params);
- consumerMethodParams = URLParam.initMethodParameters(consumerParams);
- }
-
- return consumerMethodParams.containsKey(method) || methodParams.containsKey(method);
+ return (consumerMethodParams != null && consumerMethodParams.containsKey(method))
+ || (methodParams != null && methodParams.containsKey(method));
}
public String toDescString() {
@@ -476,18 +574,24 @@ public class MetadataInfo implements Serializable {
if (consumerParams != null) {
this.consumerParams.put(key, value);
}
+ // refresh method params
+ consumerMethodParams = URLParam.initMethodParameters(consumerParams);
}
public void addParameterIfAbsent(String key, String value) {
if (consumerParams != null) {
this.consumerParams.putIfAbsent(key, value);
}
+ // refresh method params
+ consumerMethodParams = URLParam.initMethodParameters(consumerParams);
}
public void addConsumerParams(Map<String, String> params) {
// copy once for one service subscription
if (consumerParams == null) {
consumerParams = new ConcurrentHashMap<>(params);
+ // init method params
+ consumerMethodParams = URLParam.initMethodParameters(consumerParams);
}
}
@@ -552,4 +656,14 @@ public class MetadataInfo implements Serializable {
"}";
}
}
+
+ static class URLComparator implements Comparator<URL> {
+
+ public static final URLComparator INSTANCE = new URLComparator();
+
+ @Override
+ public int compare(URL o1, URL o2) {
+ return o1.toFullString().compareTo(o2.toFullString());
+ }
+ }
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataService.java
index 5ccb0b0..6e48658 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataService.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataService.java
@@ -20,51 +20,29 @@ import org.apache.dubbo.common.URL;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import static java.util.Collections.unmodifiableSortedSet;
-import static java.util.stream.StreamSupport.stream;
import static org.apache.dubbo.common.URL.buildKey;
/**
- * A framework interface of Dubbo Metadata Service defines the contract of Dubbo Services registration and subscription
- * between Dubbo service providers and its consumers. The implementation will be exported as a normal Dubbo service that
- * the clients would subscribe, whose version comes from the {@link #version()} method and group gets from
- * {@link #serviceName()}, that means, The different Dubbo service(application) will export the different
- * {@link MetadataService} that persists all the exported and subscribed metadata, they are present by
- * {@link #getExportedURLs()} and {@link #getSubscribedURLs()} respectively. What's more, {@link MetadataService}
- * also providers the fine-grain methods for the precise queries.
- *
- * @see WritableMetadataService
- * @since 2.7.5
+ * This service is used to expose the metadata information inside a Dubbo process.
+ * Typical uses include:
+ * 1. The Consumer queries the metadata information of the Provider to list the interfaces and each interface's configuration
+ * 2. The Console (dubbo-admin) queries for the metadata of a specific process, or aggregate data of all processes.
*/
public interface MetadataService {
- //FIXME the value is default, it was used by testing temporarily
- static final String DEFAULT_EXTENSION = "default";
-
- /**
- * The value of all service names
- */
- String ALL_SERVICE_NAMES = "*";
-
/**
* The value of All service instances
*/
String ALL_SERVICE_INTERFACES = "*";
/**
- * The service interface name of {@link MetadataService}
- */
- String SERVICE_INTERFACE_NAME = MetadataService.class.getName();
-
- /**
* The contract version of {@link MetadataService}, the future update must make sure compatible.
*/
String VERSION = "1.0.0";
@@ -86,6 +64,8 @@ public interface MetadataService {
return VERSION;
}
+ URL getMetadataURL();
+
/**
* the list of String that presents all Dubbo subscribed {@link URL urls}
*
@@ -176,39 +156,11 @@ public interface MetadataService {
return getServiceDefinition(buildKey(interfaceName, group, version));
}
- /**
- * Interface definition.
- *
- * @return
- */
String getServiceDefinition(String serviceKey);
MetadataInfo getMetadataInfo(String revision);
- Map<String, MetadataInfo> getMetadataInfos();
-
- /**
- * Is the {@link URL} for the {@link MetadataService} or not?
- *
- * @param url {@link URL url}
- * @return
- */
- static boolean isMetadataServiceURL(URL url) {
- String serviceInterface = url.getServiceInterface();
- return SERVICE_INTERFACE_NAME.equals(serviceInterface);
- }
-
- /**
- * Convert the multiple {@link URL urls} to a {@link List list} of {@link URL urls}
- *
- * @param urls the strings presents the {@link URL Dubbo URLs}
- * @return non-null
- */
- static List<URL> toURLs(Iterable<String> urls) {
- return stream(urls.spliterator(), false)
- .map(URL::valueOf)
- .collect(Collectors.toList());
- }
+ List<MetadataInfo> getMetadataInfos();
/**
* Convert the specified {@link Iterable} of {@link URL URLs} to be the {@link URL#toFullString() strings} presenting
@@ -234,45 +186,8 @@ public interface MetadataService {
return unmodifiableSortedSet(stream.map(URL::toFullString).collect(TreeSet::new, Set::add, Set::addAll));
}
- /**
- * Export Metadata in Service Instance of Service Discovery
- * <p>
- * Used for consumer to get Service Instance Metadata
- * if Registry is unsupported with publishing metadata
- *
- * @param instanceMetadata {@link Map} of provider Service Instance Metadata
- * @since 3.0
- */
- default void exportInstanceMetadata(String instanceMetadata) {
- throw new UnsupportedOperationException("This operation is not supported for consumer.");
- }
-
- /**
- * Get all Metadata listener from local
- * <p>
- * Used for consumer to get Service Instance Metadata
- * if Registry is unsupported with publishing metadata
- *
- * @return {@link Map} of {@link InstanceMetadataChangedListener}
- * @since 3.0
- */
- default Map<String, InstanceMetadataChangedListener> getInstanceMetadataChangedListenerMap() {
- throw new UnsupportedOperationException("This operation is not supported for consumer.");
+ static boolean isMetadataService(String interfaceName) {
+ return interfaceName != null && interfaceName.equals(MetadataService.class.getName());
}
- /**
- * 1. Fetch Metadata in Service Instance of Service Discovery
- * 2. Add a metadata change listener
- * <p>
- * Used for consumer to get Service Instance Metadata
- * if Registry is unsupported with publishing metadata
- *
- * @param consumerId consumerId
- * @param listener {@link InstanceMetadataChangedListener} used to notify event
- * @return {@link Map} of provider Service Instance Metadata
- * @since 3.0
- */
- default String getAndListenInstanceMetadata(String consumerId, InstanceMetadataChangedListener listener) {
- throw new UnsupportedOperationException("This operation is not supported for consumer.");
- }
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataServiceExporter.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataServiceExporter.java
deleted file mode 100644
index e6192f3..0000000
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataServiceExporter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.metadata;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.common.lang.Prioritized;
-import org.apache.dubbo.rpc.model.ScopeModel;
-
-import java.util.List;
-
-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.extension.ExtensionScope.APPLICATION;
-
-/**
- * The exporter of {@link MetadataService}
- *
- * @see MetadataService
- * @see #export()
- * @see #unexport()
- * @since 2.7.5
- */
-@SPI(value = DEFAULT_METADATA_STORAGE_TYPE, scope = APPLICATION)
-public interface MetadataServiceExporter extends Prioritized {
-
- /**
- * Exports the {@link MetadataService} as a Dubbo service
- *
- * @return {@link MetadataServiceExporter itself}
- */
- MetadataServiceExporter export();
-
- /**
- * Unexports the {@link MetadataService}
- *
- * @return {@link MetadataServiceExporter itself}
- */
- MetadataServiceExporter unexport();
-
- /**
- * Get the {@link URL URLs} that were exported
- *
- * @return non-null
- */
- List<URL> getExportedURLs();
-
- /**
- * {@link MetadataService} is export or not
- *
- * @return if {@link #export()} was executed, return <code>true</code>, or <code>false</code>
- */
- boolean isExported();
-
- /**
- * Does current implementation support the specified metadata type?
- *
- * @param metadataType the specified metadata type
- * @return If supports, return <code>true</code>, or <code>false</code>
- * @since 2.7.8
- */
- default boolean supports(String metadataType) {
- return true;
- }
-
- /**
- * Get the extension of {@link MetadataServiceExporter} by the type.
- * If not found, return the default implementation
- *
- * @param metadataType the metadata type
- * @return non-null
- * @since 2.7.8
- */
- static MetadataServiceExporter getExtension(ScopeModel scopeModel, String metadataType) {
- return scopeModel.getExtensionLoader(MetadataServiceExporter.class).getOrDefaultExtension(metadataType);
- }
-
- /**
- * Get the default extension of {@link MetadataServiceExporter}
- *
- * @return non-null
- * @since 2.7.8
- */
- static MetadataServiceExporter getDefaultExtension(ScopeModel scopeModel) {
- return getExtension(scopeModel, DEFAULT_METADATA_STORAGE_TYPE);
- }
-}
-
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataServiceType.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataServiceType.java
deleted file mode 100644
index 3af6b38..0000000
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataServiceType.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.metadata;
-
-import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
-
-/**
- * The type enumerations of {@link MetadataService}
- *
- * @see MetadataService
- * @since 2.7.8
- */
-public enum MetadataServiceType {
-
- /**
- * The default type of {@link MetadataService}
- */
- DEFAULT(DEFAULT_METADATA_STORAGE_TYPE),
-
- /**
- * The remote type of {@link MetadataService}
- */
- REMOTE(REMOTE_METADATA_STORAGE_TYPE),
-
- /**
- * The composite type of {@link MetadataService}
- */
- COMPOSITE(COMPOSITE_METADATA_STORAGE_TYPE);
-
- /**
- * The {@link String} value of type
- */
- private final String value;
-
- MetadataServiceType(String value) {
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
-
- public static MetadataServiceType getOrDefault(String value) {
- MetadataServiceType targetType = null;
- for (MetadataServiceType type : values()) {
- if (type.getValue().equals(value)) {
- targetType = type;
- break;
- }
- }
- if (targetType == null) {
- targetType = DEFAULT;
- }
- return targetType;
- }
-}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
index ac71b5c..ab923e7 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
@@ -18,13 +18,15 @@ package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.SPI;
+import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.Arrays;
-import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
import static java.util.Collections.emptySet;
import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR;
@@ -32,9 +34,9 @@ import static org.apache.dubbo.common.extension.ExtensionScope.APPLICATION;
import static org.apache.dubbo.common.utils.StringUtils.SLASH;
/**
- * The interface for Dubbo service name Mapping
+ * This will interact with remote metadata center to find the interface-app mapping and will cache the data locally.
*
- * @since 2.7.5
+ * Call variants of getCachedMapping() methods whenever need to use the mapping data.
*/
@SPI(value = "metadata", scope = APPLICATION)
public interface ServiceNameMapping {
@@ -65,26 +67,54 @@ public interface ServiceNameMapping {
}
static String toStringKeys(Set<String> serviceNames) {
- return serviceNames.toString();
+ if (CollectionUtils.isEmpty(serviceNames)) {
+ return "";
+ }
+
+ StringBuilder builder = new StringBuilder();
+ for (String n : serviceNames) {
+ builder.append(n);
+ builder.append(COMMA_SEPARATOR);
+ }
+
+ builder.deleteCharAt(builder.length() - 1);
+ return builder.toString();
}
static Set<String> getAppNames(String content) {
if (StringUtils.isBlank(content)) {
return emptySet();
}
- return new HashSet<>(Arrays.asList(content.split(COMMA_SEPARATOR)));
+ return new TreeSet<>(Arrays.asList(content.split(COMMA_SEPARATOR)));
}
/**
- * 1.developer explicitly specifies the application name this interface belongs to
- * 2.check Interface-App mapping
+ * Get the mapping data from remote metadata center and cache in local storage.
+ *
+ * @return app list current interface mapping to, in sequence determined by:
+ * 1.check PROVIDED_BY
+ * 2.check remote metadata center
+ *
*/
Set<String> getServices(URL subscribedURL);
/**
- * 1.developer explicitly specifies the application name this interface belongs to
- * 2.check Interface-App mapping
- * 3.use the services specified in registry url.
+ * Register listener to get notified once mapping data changes.
+ *
+ * @param listener
+ * @return
*/
- Set<String> getAndListenServices(URL registryURL, URL subscribedURL, MappingListener listener);
+ Set<String> getAndListen(URL registryURL, URL subscribedURL, MappingListener listener);
+
+ MappingListener stopListen(URL subscribeURL);
+
+ void putCachedMapping(String serviceKey, Set<String> apps);
+
+ Set<String> getCachedMapping(String mappingKey);
+
+ Set<String> getCachedMapping(URL consumerURL);
+
+ Map<String, Set<String>> getCachedMapping();
+
+ Set<String> removeCachedMapping(String serviceKey);
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
deleted file mode 100644
index bd77ec5..0000000
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.metadata;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.extension.ExtensionScope;
-import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.rpc.model.ScopeModel;
-import org.apache.dubbo.rpc.model.ScopeModelUtil;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Local {@link MetadataService} that extends {@link MetadataService} and provides the modification, which is used for
- * Dubbo's consumers and providers.
- *
- * @since 2.7.5
- */
-@SPI(value = "default", scope = ExtensionScope.APPLICATION)
-public interface WritableMetadataService extends MetadataService {
-
- /**
- * Exports a {@link URL}
- *
- * @param url a {@link URL}
- * @return If success , return <code>true</code>
- */
- boolean exportURL(URL url);
-
- /**
- * Unexports a {@link URL}
- *
- * @param url a {@link URL}
- * @return If success , return <code>true</code>
- */
- boolean unexportURL(URL url);
-
- /**
- * Subscribes a {@link URL}
- *
- * @param url a {@link URL}
- * @return If success , return <code>true</code>
- */
- boolean subscribeURL(URL url);
-
- /**
- * Unsubscribes a {@link URL}
- *
- * @param url a {@link URL}
- * @return If success , return <code>true</code>
- */
- boolean unsubscribeURL(URL url);
-
- void publishServiceDefinition(URL url);
-
- default void setMetadataServiceURL(URL url) {
-
- }
-
- default URL getMetadataServiceURL() {
- return null;
- }
-
- void putCachedMapping(String serviceKey, Set<String> apps);
-
- Set<String> getCachedMapping(String mappingKey);
-
- Set<String> getCachedMapping(URL consumerURL);
-
- Set<String> removeCachedMapping(String serviceKey);
-
- Map<String, Set<String>> getCachedMapping();
-
- MetadataInfo getDefaultMetadataInfo();
-
- /**
- * Get {@link ExtensionLoader#getDefaultExtension() the defautl extension} of {@link WritableMetadataService}
- *
- * @return non-null
- */
- static WritableMetadataService getDefaultExtension(ScopeModel scopeModel) {
- return ScopeModelUtil.getExtensionLoader(WritableMetadataService.class, scopeModel).getDefaultExtension();
- }
-}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReport.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReport.java
index 3dc659e..9cb009b 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReport.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReport.java
@@ -45,6 +45,9 @@ public interface MetadataReport {
default void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {
}
+ default void unPublishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {
+ }
+
default MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {
return null;
}
@@ -78,6 +81,10 @@ public interface MetadataReport {
return false;
}
+ default void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+
+ }
+
/**
* Service<-->Application Mapping -- START
**/
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
index ee40342..be4664d 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
@@ -18,34 +18,68 @@ package org.apache.dubbo.metadata.report;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.URLBuilder;
+import org.apache.dubbo.common.resource.Disposable;
import org.apache.dubbo.config.MetadataReportConfig;
+import org.apache.dubbo.metadata.report.support.NopMetadataReport;
import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_DIRECTORY;
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
+import static org.apache.dubbo.common.utils.StringUtils.isEmpty;
import static org.apache.dubbo.metadata.report.support.Constants.METADATA_REPORT_KEY;
/**
- * 2019-08-09
+ * Repository of MetadataReport instances that can talk to remote metadata server.
+ *
+ * MetadataReport instances are initiated during the beginning of deployer.start() and used by components that
+ * need to interact with metadata server.
+ *
+ * If multiple metadata reports and registries need to be declared, it is recommended to group each two metadata report and registry together by giving them the same id:
+ * <dubbo:registry id=demo1 address="registry://"/>
+ * <dubbo:metadata id=demo1 address="metadata://"/>
+ *
+ * <dubbo:registry id=demo2 address="registry://"/>
+ * <dubbo:metadata id=demo2 address="metadata://"/>
*/
-public class MetadataReportInstance {
+public class MetadataReportInstance implements Disposable {
private AtomicBoolean init = new AtomicBoolean(false);
+ private String metadataType;
+ // mapping of registry id to metadata report instance, registry instances will use this mapping to find related metadata reports
private final Map<String, MetadataReport> metadataReports = new HashMap<>();
+ private ApplicationModel applicationModel;
+ private final NopMetadataReport nopMetadataReport;
+
+ public MetadataReportInstance(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ this.nopMetadataReport = new NopMetadataReport();
+ }
- public void init(MetadataReportConfig config) {
+ public void init(List<MetadataReportConfig> metadataReportConfigs) {
if (!init.compareAndSet(false, true)) {
return;
}
- ApplicationModel applicationModel = config.getApplicationModel();
+
+ this.metadataType = applicationModel.getApplicationConfigManager().getApplicationOrElseThrow().getMetadataType();
+ if (metadataType == null) {
+ this.metadataType = DEFAULT_METADATA_STORAGE_TYPE;
+ }
MetadataReportFactory metadataReportFactory = applicationModel.getExtensionLoader(MetadataReportFactory.class).getAdaptiveExtension();
+ for (MetadataReportConfig metadataReportConfig : metadataReportConfigs) {
+ init(metadataReportConfig, metadataReportFactory);
+ }
+ }
+
+ private void init(MetadataReportConfig config, MetadataReportFactory metadataReportFactory) {
URL url = config.toUrl();
if (METADATA_REPORT_KEY.equals(url.getProtocol())) {
String protocol = url.getParameter(METADATA_REPORT_KEY, DEFAULT_DIRECTORY);
@@ -56,7 +90,7 @@ public class MetadataReportInstance {
.build();
}
url = url.addParameterIfAbsent(APPLICATION_KEY, applicationModel.getCurrentConfig().getName());
- String relatedRegistryId = config.getRegistry() == null ? DEFAULT_KEY : config.getRegistry();
+ String relatedRegistryId = isEmpty(config.getRegistry()) ? (isEmpty(config.getId()) ? DEFAULT_KEY : config.getId()) : config.getRegistry();
// RegistryConfig registryConfig = applicationModel.getConfigManager().getRegistry(relatedRegistryId)
// .orElseThrow(() -> new IllegalStateException("Registry id " + relatedRegistryId + " does not exist."));
MetadataReport metadataReport = metadataReportFactory.getMetadataReport(url);
@@ -66,26 +100,34 @@ public class MetadataReportInstance {
}
public Map<String, MetadataReport> getMetadataReports(boolean checked) {
- if (checked) {
- checkInit();
- }
return metadataReports;
}
public MetadataReport getMetadataReport(String registryKey) {
- checkInit();
MetadataReport metadataReport = metadataReports.get(registryKey);
- if (metadataReport == null) {
+ if (metadataReport == null && metadataReports.size() > 0) {
metadataReport = metadataReports.values().iterator().next();
}
return metadataReport;
}
+ public MetadataReport getNopMetadataReport() {
+ return nopMetadataReport;
+ }
+
+ public String getMetadataType() {
+ return metadataType;
+ }
- private void checkInit() {
- if (!init.get()) {
- throw new IllegalStateException("the metadata report was not initialized.");
- }
+ public boolean inited() {
+ return init.get();
}
+ @Override
+ public void destroy() {
+ metadataReports.forEach((_k, reporter) -> {
+ reporter.destroy();
+ });
+ metadataReports.clear();
+ }
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java
index 093fadb..71901c5 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.metadata.report.support;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
@@ -32,6 +30,9 @@ import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -75,9 +76,6 @@ import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADAT
import static org.apache.dubbo.metadata.report.support.Constants.DUBBO_METADATA;
import static org.apache.dubbo.metadata.report.support.Constants.USER_HOME;
-/**
- *
- */
public abstract class AbstractMetadataReport implements MetadataReport {
protected final static String DEFAULT_ROOT = "dubbo";
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/NopMetadataReport.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/NopMetadataReport.java
new file mode 100644
index 0000000..f63be93
--- /dev/null
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/NopMetadataReport.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.dubbo.metadata.report.support;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
+import org.apache.dubbo.metadata.report.MetadataReport;
+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class NopMetadataReport implements MetadataReport {
+ public NopMetadataReport() {
+ }
+
+ @Override
+ public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {
+
+ }
+
+ @Override
+ public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {
+ return null;
+ }
+
+ @Override
+ public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {
+
+ }
+
+ @Override
+ public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {
+ return null;
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+
+ @Override
+ public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {
+
+ }
+
+ @Override
+ public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {
+
+ }
+
+ @Override
+ public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {
+
+ }
+
+ @Override
+ public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {
+ return null;
+ }
+}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java
deleted file mode 100644
index d084477..0000000
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.metadata.store;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.metadata.WritableMetadataService;
-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
-
-import com.google.gson.Gson;
-
-import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;
-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
-import static org.apache.dubbo.common.utils.ClassUtils.forName;
-import static org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder.buildFullDefinition;
-import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;
-import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;
-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;
-import static org.apache.dubbo.rpc.support.ProtocolUtils.isGeneric;
-
-/**
- * The abstract implementation of {@link WritableMetadataService}
- *
- * @see WritableMetadataService
- * @since 2.7.8
- */
-public abstract class AbstractAbstractWritableMetadataService implements WritableMetadataService {
-
- protected final Logger logger = LoggerFactory.getLogger(getClass());
-
- @Override
- public void publishServiceDefinition(URL url) {
- if (SERVICE_INTERFACE_NAME.equals(url.getServiceInterface())) { // Ignore the interface "MetadataService"
- return;
- }
-
- // Remove the useless parameters
- url = url.removeParameters(PID_KEY, TIMESTAMP_KEY, BIND_IP_KEY, BIND_PORT_KEY, TIMESTAMP_KEY);
-
- String side = url.getSide();
- if (PROVIDER_SIDE.equalsIgnoreCase(side)) {
- publishProviderServiceDefinition(url);
- } else {
- publishConsumerParameters(url);
- }
- }
-
- protected void publishProviderServiceDefinition(URL url) {
- String serviceDefinition = getServiceDefinition(url);
- if (!StringUtils.isBlank(serviceDefinition)) {
- publishServiceDefinition(url.getServiceKey(), serviceDefinition);
- }
- }
-
- protected String getServiceDefinition(URL exportedURL) {
- String interfaceName = exportedURL.getServiceInterface();
- String json = null;
- try {
- if (StringUtils.isNotEmpty(interfaceName) && !isGeneric(exportedURL.getParameter(GENERIC_KEY))) {
- Class interfaceClass = forName(interfaceName);
- ServiceDefinition serviceDefinition = buildFullDefinition(interfaceClass, exportedURL.getParameters());
- Gson gson = new Gson();
- json = gson.toJson(serviceDefinition);
- }
- } catch (ClassNotFoundException e) {
- //ignore error
- if (logger.isErrorEnabled()) {
- logger.error("The interface class[name : " + interfaceName + "] can't be found , providerUrl: "
- + exportedURL.toFullString());
- }
- }
- return json;
- }
-
- protected void publishConsumerParameters(URL url) {
- }
-
- protected void publishServiceDefinition(String key, String json) {
- }
-
-}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/AbstractServiceNameMappingTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/AbstractServiceNameMappingTest.java
index 2c974c8..7f71705 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/AbstractServiceNameMappingTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/AbstractServiceNameMappingTest.java
@@ -17,19 +17,16 @@
package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
+
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDED_BY;
import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;
@@ -40,53 +37,68 @@ import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SER
class AbstractServiceNameMappingTest {
private MockServiceNameMapping mapping = new MockServiceNameMapping();
- private MockWritableMetadataService writableMetadataService = new MockWritableMetadataService();
+ private MockServiceNameMapping2 mapping2 = new MockServiceNameMapping2();
+
+ URL url = URL.valueOf("dubbo://127.0.0.1:21880/" + AbstractServiceNameMappingTest.class);
@BeforeEach
- public void setUp() throws Exception {
- Field metadataService = mapping.getClass().getSuperclass().getDeclaredField("metadataService");
- metadataService.setAccessible(true);
- metadataService.set(mapping, writableMetadataService);
+ public void setUp() throws Exception {}
+
+ @AfterEach
+ public void clearup() throws Exception {
+ mapping.removeCachedMapping(ServiceNameMapping.buildMappingKey(url));
}
@Test
void testGetServices() {
- URL url = URL.valueOf("dubbo://127.0.0.1:21880/" + AbstractServiceNameMappingTest.class);
url = url.addParameter(PROVIDED_BY, "app1,app2");
Set<String> services = mapping.getServices(url);
Assertions.assertTrue(services.contains("app1"));
Assertions.assertTrue(services.contains("app2"));
+ // check mapping cache works.
url = url.removeParameter(PROVIDED_BY);
services = mapping.getServices(url);
+ Assertions.assertTrue(services.contains("app1"));
+ Assertions.assertTrue(services.contains("app2"));
+
+ // remove mapping cache, check get() works.
+ mapping.removeCachedMapping(ServiceNameMapping.buildMappingKey(url));
+ services = mapping.getServices(url);
Assertions.assertTrue(services.contains("remote-app1"));
Assertions.assertTrue(services.contains("remote-app2"));
- Map<String, Set<String>> cachedMapping = writableMetadataService.getCachedMapping();
- Assertions.assertNotNull(cachedMapping);
- Assertions.assertTrue(cachedMapping.containsKey(ServiceNameMapping.buildMappingKey(url)));
- Assertions.assertIterableEquals(cachedMapping.get(ServiceNameMapping.buildMappingKey(url)), services);
-
+ Assertions.assertNotNull(mapping.getCachedMapping(url));
+ Assertions.assertIterableEquals(mapping.getCachedMapping(url), services);
}
@Test
public void testGetAndListener() {
- URL url = URL.valueOf("dubbo://127.0.0.1:21880/" + AbstractServiceNameMappingTest.class);
URL registryURL = URL.valueOf("registry://127.0.0.1:7777/test");
registryURL = registryURL.addParameter(SUBSCRIBED_SERVICE_NAMES_KEY, "registry-app1");
- Set<String> services = mapping.getAndListenServices(registryURL, url, null);
+ Set<String> services = mapping2.getAndListen(registryURL, url, null);
Assertions.assertTrue(services.contains("registry-app1"));
- mapping.enabled = true;
- services = mapping.getAndListenServices(registryURL, url, event -> {
+ // remove mapping cache, check get() works.
+ mapping.removeCachedMapping(ServiceNameMapping.buildMappingKey(url));
+ mapping2.enabled = true;
+ services = mapping2.getAndListen(registryURL, url, new MappingListener() {
+ @Override
+ public void onEvent(MappingChangedEvent event) {
+
+ }
+
+ @Override
+ public void stop() {
+
+ }
});
Assertions.assertTrue(services.contains("remote-app3"));
}
-
private class MockServiceNameMapping extends AbstractServiceNameMapping {
public boolean enabled = false;
@@ -105,93 +117,41 @@ class AbstractServiceNameMappingTest {
}
@Override
- public boolean map(URL url) {
- return false;
- }
- }
-
- private class MockWritableMetadataService implements WritableMetadataService {
- private final Map<String, Set<String>> serviceToAppsMapping = new HashMap<>();
-
- @Override
- public String serviceName() {
- return null;
- }
-
- @Override
- public SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol) {
- return null;
- }
-
- @Override
- public String getServiceDefinition(String serviceKey) {
- return null;
- }
-
- @Override
- public MetadataInfo getMetadataInfo(String revision) {
- return null;
- }
-
- @Override
- public Map<String, MetadataInfo> getMetadataInfos() {
- return null;
- }
-
- @Override
- public boolean exportURL(URL url) {
- return false;
- }
-
- @Override
- public boolean unexportURL(URL url) {
- return false;
- }
+ protected void removeListener(URL url, MappingListener mappingListener) {
- @Override
- public boolean subscribeURL(URL url) {
- return false;
}
@Override
- public boolean unsubscribeURL(URL url) {
+ public boolean map(URL url) {
return false;
}
+ }
- @Override
- public void publishServiceDefinition(URL url) {
-
- }
+ private class MockServiceNameMapping2 extends AbstractServiceNameMapping {
- @Override
- public Set<String> getCachedMapping(String mappingKey) {
- return serviceToAppsMapping.get(mappingKey);
- }
+ public boolean enabled = false;
@Override
- public Set<String> getCachedMapping(URL consumerURL) {
- String serviceKey = ServiceNameMapping.buildMappingKey(consumerURL);
- return serviceToAppsMapping.get(serviceKey);
+ public Set<String> get(URL url) {
+ return Collections.emptySet();
}
@Override
- public Set<String> removeCachedMapping(String serviceKey) {
- return serviceToAppsMapping.remove(serviceKey);
+ public Set<String> getAndListen(URL url, MappingListener mappingListener) {
+ if (!enabled) {
+ return Collections.emptySet();
+ }
+ return new HashSet<>(Arrays.asList("remote-app3"));
}
@Override
- public void putCachedMapping(String serviceKey, Set<String> apps) {
- serviceToAppsMapping.put(serviceKey, new TreeSet<>(apps));
- }
+ protected void removeListener(URL url, MappingListener mappingListener) {
- @Override
- public Map<String, Set<String>> getCachedMapping() {
- return serviceToAppsMapping;
}
@Override
- public MetadataInfo getDefaultMetadataInfo() {
- return null;
+ public boolean map(URL url) {
+ return false;
}
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
index ca25300..4a8cc31 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
+import com.google.gson.Gson;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -63,7 +64,7 @@ public class MetadataInfoTest {
MetadataInfo metadataInfo = new MetadataInfo("demo");
// export normal url again
- metadataInfo.addService(new MetadataInfo.ServiceInfo(url));
+ metadataInfo.addService(url);
MetadataInfo.ServiceInfo serviceInfo2 = metadataInfo.getServiceInfo(url.getProtocolServiceKey());
assertNotNull(serviceInfo2);
assertEquals(5, serviceInfo2.getParams().size());
@@ -80,31 +81,31 @@ public class MetadataInfoTest {
public void testEqualsAndRevision() {
// same metadata
MetadataInfo metadataInfo = new MetadataInfo("demo");
- metadataInfo.addService(new MetadataInfo.ServiceInfo(url));
+ metadataInfo.addService(url);
MetadataInfo sameMetadataInfo = new MetadataInfo("demo");
- sameMetadataInfo.addService(new MetadataInfo.ServiceInfo(url));
+ sameMetadataInfo.addService(url);
assertEquals(metadataInfo, sameMetadataInfo);
assertEquals(metadataInfo.calAndGetRevision(), sameMetadataInfo.calAndGetRevision());
// url with different params that are not counted in ServiceInfo
MetadataInfo metadataInfoWithDifferentParam1 = new MetadataInfo("demo");
- metadataInfoWithDifferentParam1.addService(new MetadataInfo.ServiceInfo(url.addParameter("delay", 6000)));
+ metadataInfoWithDifferentParam1.addService(url.addParameter("delay", 6000));
assertEquals(metadataInfo, metadataInfoWithDifferentParam1);
assertEquals(metadataInfo.calAndGetRevision(), metadataInfoWithDifferentParam1.calAndGetRevision());
// url with different params that are counted in ServiceInfo
MetadataInfo metadataInfoWithDifferentParam2 = new MetadataInfo("demo");
- metadataInfoWithDifferentParam2.addService(new MetadataInfo.ServiceInfo(url.addParameter(TIMEOUT_KEY, 6000)));
+ metadataInfoWithDifferentParam2.addService(url.addParameter(TIMEOUT_KEY, 6000));
assertNotEquals(metadataInfo, metadataInfoWithDifferentParam2);
assertNotEquals(metadataInfo.calAndGetRevision(), metadataInfoWithDifferentParam2.calAndGetRevision());
MetadataInfo metadataInfoWithDifferentGroup = new MetadataInfo("demo");
- metadataInfoWithDifferentGroup.addService(new MetadataInfo.ServiceInfo(url.addParameter(GROUP_KEY, "newGroup")));
+ metadataInfoWithDifferentGroup.addService(url.addParameter(GROUP_KEY, "newGroup"));
assertNotEquals(metadataInfo, metadataInfoWithDifferentGroup);
assertNotEquals(metadataInfo.calAndGetRevision(), metadataInfoWithDifferentGroup.calAndGetRevision());
MetadataInfo metadataInfoWithDifferentServices = new MetadataInfo("demo");
- metadataInfoWithDifferentServices.addService(new MetadataInfo.ServiceInfo(url));
- metadataInfoWithDifferentServices.addService(new MetadataInfo.ServiceInfo(url2));
+ metadataInfoWithDifferentServices.addService(url);
+ metadataInfoWithDifferentServices.addService(url2);
assertNotEquals(metadataInfo, metadataInfoWithDifferentServices);
assertNotEquals(metadataInfo.calAndGetRevision(), metadataInfoWithDifferentServices.calAndGetRevision());
}
@@ -112,12 +113,29 @@ public class MetadataInfoTest {
@Test
public void testChanged() {
MetadataInfo metadataInfo = new MetadataInfo("demo");
- metadataInfo.addService(new MetadataInfo.ServiceInfo(url));
- metadataInfo.addService(new MetadataInfo.ServiceInfo(url2));
- assertFalse(metadataInfo.hasReported());
- metadataInfo.markReported();
- assertTrue(metadataInfo.hasReported());
- metadataInfo.removeService(new MetadataInfo.ServiceInfo(url2));
- assertFalse(metadataInfo.hasReported());
+ metadataInfo.addService(url);
+ metadataInfo.addService(url2);
+ assertTrue(metadataInfo.updated.get());
+ metadataInfo.calAndGetRevision();
+ assertFalse(metadataInfo.updated.get());
+ metadataInfo.removeService(url2);
+ assertTrue(metadataInfo.updated.get());
+ }
+
+ @Test
+ public void testJsonFormat() {
+ MetadataInfo metadataInfo = new MetadataInfo("demo");
+
+ // export normal url again
+ metadataInfo.addService(url);
+ Gson gson = new Gson();
+ System.out.println(gson.toJson(metadataInfo));
+
+ MetadataInfo metadataInfo2 = new MetadataInfo("demo");
+ // export normal url again
+ metadataInfo2.addService(url);
+ metadataInfo2.addService(url2);
+ System.out.println(gson.toJson(metadataInfo2));
+
}
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceTypeTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceTypeTest.java
deleted file mode 100644
index 11eec1d..0000000
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceTypeTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.metadata;
-
-import org.junit.jupiter.api.Test;
-
-import static org.apache.dubbo.metadata.MetadataServiceType.COMPOSITE;
-import static org.apache.dubbo.metadata.MetadataServiceType.DEFAULT;
-import static org.apache.dubbo.metadata.MetadataServiceType.REMOTE;
-import static org.apache.dubbo.metadata.MetadataServiceType.getOrDefault;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- * {@link MetadataServiceType} Test-Cases
- *
- * @since 2.7.8
- */
-public class MetadataServiceTypeTest {
-
- @Test
- public void testGetValue() {
- assertEquals("local", DEFAULT.getValue());
- assertEquals("remote", REMOTE.getValue());
- assertEquals("composite", COMPOSITE.getValue());
- }
-
- @Test
- public void testGetOrDefault() {
- assertEquals(DEFAULT, getOrDefault("local"));
- assertEquals(REMOTE, getOrDefault("remote"));
- assertEquals(COMPOSITE, getOrDefault("composite"));
- assertEquals(DEFAULT, getOrDefault("others"));
- }
-}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
index 94f27e4..ac329ee 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
@@ -21,13 +21,17 @@ import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetadataReportConfig;
import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import org.hamcrest.Matchers;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -41,9 +45,9 @@ class MetadataReportInstanceTest {
@BeforeEach
public void setUp() {
- metadataReportInstance = new MetadataReportInstance();
configManager = mock(ConfigManager.class);
ApplicationModel applicationModel = spy(ApplicationModel.defaultModel());
+ metadataReportInstance = new MetadataReportInstance(applicationModel);
URL url = URL.valueOf("metadata://127.0.0.1:20880/TestService?version=1.0.0&metadata=JTest");
@@ -61,16 +65,11 @@ class MetadataReportInstanceTest {
@Test
public void test() {
- Assertions.assertThrows(IllegalStateException.class,
- () -> metadataReportInstance.getMetadataReport(registryId),
- "the metadata report was not initialized.");
-
- Assertions.assertThrows(IllegalStateException.class,
- () -> metadataReportInstance.getMetadataReports(true),
+ Assertions.assertNull(metadataReportInstance.getMetadataReport(registryId),
"the metadata report was not initialized.");
+ assertThat(metadataReportInstance.getMetadataReports(true), Matchers.anEmptyMap());
-
- metadataReportInstance.init(metadataReportConfig);
+ metadataReportInstance.init(Arrays.asList(metadataReportConfig));
MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryId);
Assertions.assertNotNull(metadataReport);
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/identifier/MetadataIdentifierTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/identifier/MetadataIdentifierTest.java
index 90df3db..3a58933 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/identifier/MetadataIdentifierTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/identifier/MetadataIdentifierTest.java
@@ -17,7 +17,6 @@
package org.apache.dubbo.metadata.report.identifier;
import org.apache.dubbo.metadata.MetadataConstants;
-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactoryTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactoryTest.java
index 4a9acc9..eb68abf 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactoryTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactoryTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.metadata.report.support;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.metadata.MappingListener;
import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
import org.apache.dubbo.metadata.report.MetadataReport;
import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
@@ -79,6 +80,11 @@ public class AbstractMetadataReportFactoryTest {
}
@Override
+ public void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+
+ }
+
+ @Override
public String getServiceDefinition(MetadataIdentifier consumerMetadataIdentifier) {
return null;
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
index 9d20e91..624a97f 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
@@ -17,10 +17,10 @@
package org.apache.dubbo.metadata.report.support;
-import com.google.gson.Gson;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metadata.MappingListener;
import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;
@@ -28,6 +28,8 @@ import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import com.google.gson.Gson;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -314,6 +316,11 @@ public class AbstractMetadataReportTest {
public String getServiceDefinition(MetadataIdentifier consumerMetadataIdentifier) {
throw new UnsupportedOperationException("This extension does not support working as a remote metadata center.");
}
+
+ @Override
+ public void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+ throw new UnsupportedOperationException("This extension does not support working as a remote metadata center.");
+ }
}
private static class RetryMetadataReport extends AbstractMetadataReport {
@@ -376,6 +383,11 @@ public class AbstractMetadataReportTest {
throw new UnsupportedOperationException("This extension does not support working as a remote metadata center.");
}
+ @Override
+ public void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+ throw new UnsupportedOperationException("This extension does not support working as a remote metadata center.");
+ }
+
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/test/JTestMetadataReport4Test.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/test/JTestMetadataReport4Test.java
index c52aff9..8e94495 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/test/JTestMetadataReport4Test.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/test/JTestMetadataReport4Test.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metadata.test;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.metadata.MappingListener;
import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;
import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
@@ -98,4 +99,9 @@ public class JTestMetadataReport4Test extends AbstractMetadataReport {
public String getServiceDefinition(MetadataIdentifier consumerMetadataIdentifier) {
return store.get(consumerMetadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));
}
+
+ @Override
+ public void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+
+ }
}
diff --git a/dubbo-metadata/dubbo-metadata-definition-protobuf/src/main/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilder.java b/dubbo-metadata/dubbo-metadata-definition-protobuf/src/main/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilder.java
index 13adf95..e320f4b 100644
--- a/dubbo-metadata/dubbo-metadata-definition-protobuf/src/main/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-definition-protobuf/src/main/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilder.java
@@ -16,11 +16,6 @@
*/
package org.apache.dubbo.metadata.definition.protobuf;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.Descriptors;
-import com.google.protobuf.GeneratedMessageV3;
-import com.google.protobuf.ProtocolStringList;
-import com.google.protobuf.UnknownFieldSet;
import org.apache.dubbo.common.lang.Prioritized;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
@@ -28,6 +23,12 @@ import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;
import org.apache.dubbo.metadata.definition.builder.TypeBuilder;
import org.apache.dubbo.metadata.definition.model.TypeDefinition;
+import com.google.protobuf.ByteString;
+import com.google.protobuf.Descriptors;
+import com.google.protobuf.GeneratedMessageV3;
+import com.google.protobuf.ProtocolStringList;
+import com.google.protobuf.UnknownFieldSet;
+
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.HashMap;
diff --git a/dubbo-metadata/dubbo-metadata-definition-protobuf/src/test/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilderTest.java b/dubbo-metadata/dubbo-metadata-definition-protobuf/src/test/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilderTest.java
index 0919410..426fe0c 100644
--- a/dubbo-metadata/dubbo-metadata-definition-protobuf/src/test/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilderTest.java
+++ b/dubbo-metadata/dubbo-metadata-definition-protobuf/src/test/java/org/apache/dubbo/metadata/definition/protobuf/ProtobufTypeBuilderTest.java
@@ -17,10 +17,12 @@
package org.apache.dubbo.metadata.definition.protobuf;
import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;
+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
import org.apache.dubbo.metadata.definition.model.MethodDefinition;
import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import org.apache.dubbo.metadata.definition.protobuf.model.ServiceInterface;
+import org.apache.dubbo.rpc.model.FrameworkModel;
import org.junit.jupiter.api.Test;
@@ -37,6 +39,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
public class ProtobufTypeBuilderTest {
@Test
public void testProtobufBuilder() {
+ TypeDefinitionBuilder.initBuilders(FrameworkModel.defaultModel());
+
// TEST Pb Service metaData builder
FullServiceDefinition serviceDefinition = ServiceDefinitionBuilder.buildFullDefinition(ServiceInterface.class);
MethodDefinition methodDefinition = serviceDefinition.getMethods().get(0);
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/EnumTypeDefinitionBuilder.java b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/EnumTypeDefinitionBuilder.java
index b766e38..bc3b05c 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/EnumTypeDefinitionBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/EnumTypeDefinitionBuilder.java
@@ -23,7 +23,6 @@ import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.Element;
import javax.lang.model.element.Name;
import javax.lang.model.type.DeclaredType;
-
import java.util.Map;
import static org.apache.dubbo.metadata.annotation.processing.util.FieldUtils.getDeclaredFields;
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/GeneralTypeDefinitionBuilder.java b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/GeneralTypeDefinitionBuilder.java
index 83c3f8f..1e907e7 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/GeneralTypeDefinitionBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/GeneralTypeDefinitionBuilder.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.DeclaredType;
-
import java.util.Map;
import static org.apache.dubbo.metadata.annotation.processing.util.FieldUtils.getNonStaticFields;
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilder.java b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilder.java
index 72a5184..6153917 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilder.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.type.PrimitiveType;
import javax.lang.model.type.TypeMirror;
-
import java.util.Map;
import static org.apache.dubbo.metadata.annotation.processing.util.TypeUtils.isPrimitiveType;
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/ServiceDefinitionBuilder.java b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/ServiceDefinitionBuilder.java
index 39c7bf6..4fe27b5 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/ServiceDefinitionBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/ServiceDefinitionBuilder.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.TypeElement;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/SimpleTypeDefinitionBuilder.java b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/SimpleTypeDefinitionBuilder.java
index 627345a..172d8aa 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/SimpleTypeDefinitionBuilder.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/builder/SimpleTypeDefinitionBuilder.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.metadata.definition.model.TypeDefinition;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.type.DeclaredType;
-
import java.util.Map;
import static org.apache.dubbo.metadata.annotation.processing.util.TypeUtils.isSimpleType;
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/test/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilderTest.java b/dubbo-metadata/dubbo-metadata-processor/src/test/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilderTest.java
index 0e5655b..c259ffc 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/test/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilderTest.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/test/java/org/apache/dubbo/metadata/annotation/processing/builder/PrimitiveTypeDefinitionBuilderTest.java
@@ -31,7 +31,6 @@ import java.util.Set;
import static org.apache.dubbo.metadata.annotation.processing.util.FieldUtils.findField;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
diff --git a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java
index 54bfa60..3fb52fb 100644
--- a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java
+++ b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java
@@ -45,6 +45,10 @@ public class NacosConfigServiceWrapper {
configService.addListener(handleInnerSymbol(dataId), handleInnerSymbol(group), listener);
}
+ public void removeListener(String dataId, String group, Listener listener) throws NacosException {
+ configService.removeListener(handleInnerSymbol(dataId), handleInnerSymbol(group), listener);
+ }
+
public String getConfig(String dataId, String group) throws NacosException {
return configService.getConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), DEFAULT_TIMEOUT);
}
diff --git a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
index 23e866a..1baa96c 100644
--- a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
+++ b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
@@ -17,11 +17,6 @@
package org.apache.dubbo.metadata.store.nacos;
-import com.alibaba.nacos.api.NacosFactory;
-import com.alibaba.nacos.api.PropertyKeyConst;
-import com.alibaba.nacos.api.config.listener.AbstractSharedListener;
-import com.alibaba.nacos.api.exception.NacosException;
-import com.google.gson.Gson;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.configcenter.ConfigChangeType;
import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;
@@ -39,7 +34,12 @@ import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;
-import org.apache.dubbo.rpc.RpcException;
+
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.listener.AbstractSharedListener;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Arrays;
@@ -155,6 +155,15 @@ public class NacosMetadataReport extends AbstractMetadataReport {
}
@Override
+ public void unPublishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {
+ try {
+ configService.removeConfig(identifier.getApplication(), identifier.getRevision());
+ } catch (NacosException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
+ @Override
public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {
try {
String content = configService.getConfig(identifier.getApplication(), identifier.getRevision(), 3000L);
@@ -243,6 +252,14 @@ public class NacosMetadataReport extends AbstractMetadataReport {
}
@Override
+ public void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+ MappingDataListener mappingDataListener = casListenerMap.get(buildListenerKey(serviceKey, group));
+ if (null != mappingDataListener) {
+ removeCasServiceMappingListener(serviceKey, group, listener);
+ }
+ }
+
+ @Override
public Set<String> getServiceAppMapping(String serviceKey, URL url) {
String content = getConfig(serviceKey, DEFAULT_MAPPING_GROUP);
return ServiceNameMapping.getAppNames(content);
@@ -263,6 +280,17 @@ public class NacosMetadataReport extends AbstractMetadataReport {
addListener(serviceKey, DEFAULT_MAPPING_GROUP, mappingDataListener);
}
+ private void removeCasServiceMappingListener(String serviceKey, String group, MappingListener listener) {
+ MappingDataListener mappingDataListener = casListenerMap.get(buildListenerKey(serviceKey, group));
+ if (mappingDataListener != null) {
+ mappingDataListener.removeListeners(listener);
+ if (mappingDataListener.isEmpty()) {
+ removeListener(serviceKey, DEFAULT_MAPPING_GROUP, mappingDataListener);
+ casListenerMap.remove(buildListenerKey(serviceKey, group), mappingDataListener);
+ }
+ }
+ }
+
public void addListener(String key, String group, ConfigurationListener listener) {
String listenerKey = buildListenerKey(key, group);
NacosConfigListener nacosConfigListener =
@@ -275,6 +303,22 @@ public class NacosMetadataReport extends AbstractMetadataReport {
}
}
+ public void removeListener(String key, String group, ConfigurationListener listener) {
+ String listenerKey = buildListenerKey(key, group);
+ NacosConfigListener nacosConfigListener = watchListenerMap.get(listenerKey);
+ try {
+ if (nacosConfigListener != null) {
+ nacosConfigListener.removeListener(listener);
+ if (nacosConfigListener.isEmpty()) {
+ configService.removeListener(key, group, nacosConfigListener);
+ watchListenerMap.remove(listenerKey);
+ }
+ }
+ } catch (NacosException e) {
+ logger.error(e.getMessage());
+ }
+ }
+
private NacosConfigListener createTargetListener(String key, String group) {
NacosConfigListener configListener = new NacosConfigListener();
configListener.fillContext(key, group);
@@ -294,7 +338,7 @@ public class NacosMetadataReport extends AbstractMetadataReport {
}
} catch (Throwable t) {
logger.error("Failed to put " + identifier + " to nacos " + value + ", cause: " + t.getMessage(), t);
- throw new RpcException("Failed to put " + identifier + " to nacos " + value + ", cause: " + t.getMessage(), t);
+ throw new RuntimeException("Failed to put " + identifier + " to nacos " + value + ", cause: " + t.getMessage(), t);
}
}
@@ -306,7 +350,7 @@ public class NacosMetadataReport extends AbstractMetadataReport {
}
} catch (Throwable t) {
logger.error("Failed to remove " + identifier + " from nacos , cause: " + t.getMessage(), t);
- throw new RpcException("Failed to remove " + identifier + " from nacos , cause: " + t.getMessage(), t);
+ throw new RuntimeException("Failed to remove " + identifier + " from nacos , cause: " + t.getMessage(), t);
}
}
@@ -315,7 +359,7 @@ public class NacosMetadataReport extends AbstractMetadataReport {
return configService.getConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group, 3000L);
} catch (Throwable t) {
logger.error("Failed to get " + identifier + " from nacos , cause: " + t.getMessage(), t);
- throw new RpcException("Failed to get " + identifier + " from nacos , cause: " + t.getMessage(), t);
+ throw new RuntimeException("Failed to get " + identifier + " from nacos , cause: " + t.getMessage(), t);
}
}
@@ -360,6 +404,10 @@ public class NacosMetadataReport extends AbstractMetadataReport {
this.listeners.remove(configurationListener);
}
+ boolean isEmpty() {
+ return this.listeners.isEmpty();
+ }
+
private ConfigChangeType getChangeType(String configInfo, String oldValue) {
if (StringUtils.isBlank(configInfo)) {
return ConfigChangeType.DELETED;
@@ -392,6 +440,14 @@ public class NacosMetadataReport extends AbstractMetadataReport {
listeners.add(mappingListener);
}
+ public void removeListeners(MappingListener mappingListener) {
+ listeners.remove(mappingListener);
+ }
+
+ public boolean isEmpty() {
+ return listeners.isEmpty();
+ }
+
@Override
public void process(ConfigChangedEvent event) {
if (ConfigChangeType.DELETED == event.getChangeType()) {
diff --git a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
index 78a1909..cf28c75 100644
--- a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
+++ b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
@@ -16,7 +16,6 @@
*/
package org.apache.dubbo.metadata.store.zookeeper;
-import com.google.gson.Gson;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.configcenter.ConfigItem;
import org.apache.dubbo.common.logger.Logger;
@@ -35,6 +34,8 @@ import org.apache.dubbo.remoting.zookeeper.DataListener;
import org.apache.dubbo.remoting.zookeeper.EventType;
import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
+
+import com.google.gson.Gson;
import org.apache.zookeeper.data.Stat;
import java.util.ArrayList;
@@ -146,6 +147,14 @@ public class ZookeeperMetadataReport extends AbstractMetadataReport {
}
@Override
+ public void unPublishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {
+ String path = getNodePath(identifier);
+ if (StringUtils.isNotEmpty(zkClient.getContent(path))) {
+ zkClient.delete(path);
+ }
+ }
+
+ @Override
public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {
String content = zkClient.getContent(getNodePath(identifier));
return gson.fromJson(content, MetadataInfo.class);
@@ -161,6 +170,14 @@ public class ZookeeperMetadataReport extends AbstractMetadataReport {
}
@Override
+ public void removeServiceAppMappingListener(String serviceKey, MappingListener listener) {
+ String path = buildPathKey(DEFAULT_MAPPING_GROUP, serviceKey);
+ if (null != casListenerMap.get(path)) {
+ removeCasServiceMappingListener(path, listener);
+ }
+ }
+
+ @Override
public Set<String> getServiceAppMapping(String serviceKey, URL url) {
String path = buildPathKey(DEFAULT_MAPPING_GROUP, serviceKey);
return getAppNames(zkClient.getContent(path));
@@ -204,6 +221,15 @@ public class ZookeeperMetadataReport extends AbstractMetadataReport {
zkClient.addDataListener(path, mappingDataListener);
}
+ private void removeCasServiceMappingListener(String path, MappingListener listener) {
+ MappingDataListener mappingDataListener = casListenerMap.get(path);
+ mappingDataListener.removeListener(listener);
+ if (mappingDataListener.isEmpty()) {
+ zkClient.removeDataListener(path, mappingDataListener);
+ casListenerMap.remove(path, mappingDataListener);
+ }
+ }
+
private static class MappingDataListener implements DataListener {
private String serviceKey;
@@ -220,6 +246,14 @@ public class ZookeeperMetadataReport extends AbstractMetadataReport {
this.listeners.add(listener);
}
+ public void removeListener(MappingListener listener) {
+ this.listeners.remove(listener);
+ }
+
+ public boolean isEmpty() {
+ return listeners.isEmpty();
+ }
+
@Override
public void dataChanged(String path, Object value, EventType eventType) {
if (!this.path.equals(path)) {
diff --git a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
index c004cc5..04cd436 100644
--- a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
+++ b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
@@ -16,10 +16,11 @@
*/
package org.apache.dubbo.metadata.store.zookeeper;
-import com.google.gson.Gson;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.configcenter.ConfigItem;
import org.apache.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.metadata.MappingChangedEvent;
+import org.apache.dubbo.metadata.MappingListener;
import org.apache.dubbo.metadata.MetadataInfo;
import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;
import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
@@ -29,9 +30,11 @@ import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
+import com.google.gson.Gson;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
@@ -285,12 +288,20 @@ public class ZookeeperMetadataReportTest {
String appNames = "demo1,demo2";
CountDownLatch latch = new CountDownLatch(1);
- Set<String> serviceAppMapping = zookeeperMetadataReport.getServiceAppMapping(serviceKey, event -> {
- Set<String> apps = event.getApps();
- Assertions.assertEquals(apps.size(), 2);
- Assertions.assertTrue(apps.contains("demo1"));
- Assertions.assertTrue(apps.contains("demo2"));
- latch.countDown();
+ Set<String> serviceAppMapping = zookeeperMetadataReport.getServiceAppMapping(serviceKey, new MappingListener() {
+ @Override
+ public void onEvent(MappingChangedEvent event) {
+ Set<String> apps = event.getApps();
+ Assertions.assertEquals(apps.size(), 2);
+ Assertions.assertTrue(apps.contains("demo1"));
+ Assertions.assertTrue(apps.contains("demo2"));
+ latch.countDown();
+ }
+
+ @Override
+ public void stop() {
+
+ }
}, url);
Assertions.assertTrue(serviceAppMapping.isEmpty());
@@ -305,7 +316,7 @@ public class ZookeeperMetadataReportTest {
String appName = "demo";
URL url = URL.valueOf("test://127.0.0.1:8888/" + serviceKey);
MetadataInfo metadataInfo = new MetadataInfo(appName);
- metadataInfo.addService(new MetadataInfo.ServiceInfo(url));
+ metadataInfo.addService(url);
SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(appName, metadataInfo.calAndGetRevision());
MetadataInfo appMetadata = zookeeperMetadataReport.getAppMetadata(identifier, Collections.emptyMap());
diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/Constants.java b/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/Constants.java
index 11ad601..38b371b 100644
--- a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/Constants.java
+++ b/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/Constants.java
@@ -16,9 +16,6 @@
*/
package org.apache.dubbo.monitor;
-import static org.apache.dubbo.rpc.Constants.INPUT_KEY;
-import static org.apache.dubbo.rpc.Constants.OUTPUT_KEY;
-
public interface Constants {
String DUBBO_PROVIDER = "dubbo.provider";
diff --git a/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/ClassFinder.java b/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/ClassFinder.java
index bf0f02c..c5c350e 100644
--- a/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/ClassFinder.java
+++ b/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/ClassFinder.java
@@ -16,7 +16,6 @@
*/
package org.apache.dubbo.maven.plugin;
-
import java.io.File;
import java.net.JarURLConnection;
import java.net.URL;
diff --git a/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/Test.java b/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/Test.java
index f5ab791..29fc800 100644
--- a/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/Test.java
+++ b/dubbo-native-plugin/src/main/java/org/apache/dubbo/maven/plugin/Test.java
@@ -19,10 +19,6 @@ package org.apache.dubbo.maven.plugin;
import java.util.Set;
-/**
- * @Author goodjava@qq.com
- * @Date 2021/9/26 14:12
- */
public class Test {
public static void main(String[] args) {
diff --git a/dubbo-native-plugin/src/main/resources/META-INF/native-image/reflect-config.json b/dubbo-native-plugin/src/main/resources/META-INF/native-image/reflect-config.json
index a713aea..8497537 100644
--- a/dubbo-native-plugin/src/main/resources/META-INF/native-image/reflect-config.json
+++ b/dubbo-native-plugin/src/main/resources/META-INF/native-image/reflect-config.json
@@ -1593,9 +1593,6 @@
]
},
{
- "name": "org.apache.dubbo.registry.client.DefaultServiceDiscoveryFactory"
- },
- {
"name": "org.apache.dubbo.registry.client.DefaultServiceInstance$Endpoint",
"allDeclaredFields": true,
"methods": [
diff --git a/dubbo-native-plugin/src/main/resources/META-INF/native-image/resource-config.json b/dubbo-native-plugin/src/main/resources/META-INF/native-image/resource-config.json
index 07396cb..2d1ac93 100644
--- a/dubbo-native-plugin/src/main/resources/META-INF/native-image/resource-config.json
+++ b/dubbo-native-plugin/src/main/resources/META-INF/native-image/resource-config.json
@@ -47,9 +47,6 @@
"pattern": "\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping\\E"
},
{
- "pattern": "\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService\\E"
- },
- {
"pattern": "\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\\E"
},
{
diff --git a/dubbo-native/src/main/java/org/apache/dubbo/registry/client/selector/ServiceInstanceSelector$Adaptive.java b/dubbo-native/src/main/java/org/apache/dubbo/registry/client/selector/ServiceInstanceSelector$Adaptive.java
deleted file mode 100644
index d3e1be0..0000000
--- a/dubbo-native/src/main/java/org/apache/dubbo/registry/client/selector/ServiceInstanceSelector$Adaptive.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.dubbo.registry.client.selector;
-import org.apache.dubbo.rpc.model.ScopeModel;
-import org.apache.dubbo.rpc.model.ScopeModelUtil;
-public class ServiceInstanceSelector$Adaptive implements org.apache.dubbo.registry.client.selector.ServiceInstanceSelector {
-public org.apache.dubbo.registry.client.ServiceInstance select(org.apache.dubbo.common.URL arg0, java.util.List arg1) {
-if (arg0 == null) throw new IllegalArgumentException("url == null");
-org.apache.dubbo.common.URL url = arg0;
-String extName = url.getParameter("service-instance-selector", "random");
-if(extName == null) throw new IllegalStateException("Failed to get extension (org.apache.dubbo.registry.client.selector.ServiceInstanceSelector) name from url (" + url.toString() + ") use keys([service-instance-selector])");
-ScopeModel scopeModel = ScopeModelUtil.getOrDefault(url.getScopeModel(), org.apache.dubbo.registry.client.selector.ServiceInstanceSelector.class);
-org.apache.dubbo.registry.client.selector.ServiceInstanceSelector extension = (org.apache.dubbo.registry.client.selector.ServiceInstanceSelector)scopeModel.getExtensionLoader(org.apache.dubbo.registry.client.selector.ServiceInstanceSelector.class).getExtension(extName);
-return extension.select(arg0, arg1);
-}
-}
diff --git a/dubbo-native/src/main/java/org/apache/dubbo/utils/CodeGenerator.java b/dubbo-native/src/main/java/org/apache/dubbo/utils/CodeGenerator.java
index f4ca7d1..8cc77a6 100644
--- a/dubbo-native/src/main/java/org/apache/dubbo/utils/CodeGenerator.java
+++ b/dubbo-native/src/main/java/org/apache/dubbo/utils/CodeGenerator.java
@@ -16,12 +16,13 @@
*/
package org.apache.dubbo.utils;
-import org.apache.commons.io.FileUtils;
import org.apache.dubbo.common.extension.Adaptive;
import org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.commons.io.FileUtils;
+
import java.io.File;
import java.io.IOException;
import java.lang.annotation.Annotation;
diff --git a/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/AccessKeyAuthenticatorTest.java b/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/AccessKeyAuthenticatorTest.java
index c6e11c9..c12c313 100644
--- a/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/AccessKeyAuthenticatorTest.java
+++ b/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/AccessKeyAuthenticatorTest.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
diff --git a/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/filter/ConsumerSignFilterTest.java b/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/filter/ConsumerSignFilterTest.java
index 3093840..8a52081 100644
--- a/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/filter/ConsumerSignFilterTest.java
+++ b/dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/filter/ConsumerSignFilterTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Test;
import static org.mockito.ArgumentMatchers.anyString;
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
index 708a18b..d0a9f2d 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.util.AttributeKey;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.qos.command.BaseCommand;
import org.apache.dubbo.qos.command.CommandContext;
@@ -26,6 +24,9 @@ import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+import io.netty.channel.Channel;
+import io.netty.util.AttributeKey;
+
@Cmd(name = "cd", summary = "Change default service.", example = {
"cd [service]"
})
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
index 8fad057..03599f7 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelFuture;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.qos.command.BaseCommand;
@@ -32,6 +30,9 @@ import org.apache.dubbo.rpc.RpcStatus;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.util.ArrayList;
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/InvokeTelnet.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/InvokeTelnet.java
index a2afa63..9734cf5 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/InvokeTelnet.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/InvokeTelnet.java
@@ -16,9 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import com.alibaba.fastjson.JSON;
-import io.netty.channel.Channel;
-import io.netty.util.AttributeKey;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.ReflectUtils;
@@ -31,6 +28,10 @@ import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.MethodDescriptor;
import org.apache.dubbo.rpc.model.ProviderModel;
+import com.alibaba.fastjson.JSON;
+import io.netty.channel.Channel;
+import io.netty.util.AttributeKey;
+
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/PublishMetadata.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/PublishMetadata.java
index 97767b1..8cf435a 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/PublishMetadata.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/PublishMetadata.java
@@ -20,11 +20,9 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;
import org.apache.dubbo.common.utils.ArrayUtils;
-import org.apache.dubbo.config.deploy.DefaultApplicationDeployer;
import org.apache.dubbo.qos.command.BaseCommand;
import org.apache.dubbo.qos.command.CommandContext;
import org.apache.dubbo.qos.command.annotation.Cmd;
-import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
@@ -52,24 +50,20 @@ public class PublishMetadata implements BaseCommand {
List<ApplicationModel> applicationModels = frameworkModel.getApplicationModels();
for (ApplicationModel applicationModel : applicationModels) {
- DefaultApplicationDeployer deployer = applicationModel.getBeanFactory().getBean(DefaultApplicationDeployer.class);
- ServiceInstance serviceInstance = deployer.getServiceInstance();
- if (serviceInstance != null) {
- if (ArrayUtils.isEmpty(args)) {
- ServiceInstanceMetadataUtils.refreshMetadataAndInstance(serviceInstance);
- stringBuilder.append("publish metadata succeeded. App:").append(serviceInstance.getServiceName()).append("\n");
- } else {
- try {
- int delay = Integer.parseInt(args[0]);
- ExecutorRepository executorRepository = applicationModel.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
- executorRepository.nextScheduledExecutor()
- .schedule(() -> ServiceInstanceMetadataUtils.refreshMetadataAndInstance(serviceInstance), delay, TimeUnit.SECONDS);
- } catch (NumberFormatException e) {
- logger.error("Wrong delay param", e);
- return "publishMetadata failed! Wrong delay param!";
- }
- stringBuilder.append("publish task submitted, will publish in ").append(args[0]).append(" seconds. App:").append(serviceInstance.getServiceName()).append("\n");
+ if (ArrayUtils.isEmpty(args)) {
+ ServiceInstanceMetadataUtils.refreshMetadataAndInstance(applicationModel);
+ stringBuilder.append("publish metadata succeeded. App:").append(applicationModel.getApplicationName()).append("\n");
+ } else {
+ try {
+ int delay = Integer.parseInt(args[0]);
+ ExecutorRepository executorRepository = applicationModel.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
+ executorRepository.nextScheduledExecutor()
+ .schedule(() -> ServiceInstanceMetadataUtils.refreshMetadataAndInstance(applicationModel), delay, TimeUnit.SECONDS);
+ } catch (NumberFormatException e) {
+ logger.error("Wrong delay param", e);
+ return "publishMetadata failed! Wrong delay param!";
}
+ stringBuilder.append("publish task submitted, will publish in ").append(args[0]).append(" seconds. App:").append(applicationModel.getApplicationName()).append("\n");
}
}
return stringBuilder.toString();
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/SelectTelnet.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/SelectTelnet.java
index 7fd01a1..f49544e 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/SelectTelnet.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/SelectTelnet.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.util.AttributeKey;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
@@ -26,6 +24,9 @@ import org.apache.dubbo.qos.command.CommandContext;
import org.apache.dubbo.qos.command.annotation.Cmd;
import org.apache.dubbo.rpc.model.FrameworkModel;
+import io.netty.channel.Channel;
+import io.netty.util.AttributeKey;
+
import java.lang.reflect.Method;
import java.util.List;
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/Server.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/Server.java
index 5b51023..2689ecd 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/Server.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/Server.java
@@ -16,6 +16,12 @@
*/
package org.apache.dubbo.qos.server;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.qos.server.handler.QosProcessHandler;
+import org.apache.dubbo.rpc.model.FrameworkModel;
+
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
@@ -24,11 +30,6 @@ import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.util.concurrent.DefaultThreadFactory;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.qos.server.handler.QosProcessHandler;
-import org.apache.dubbo.rpc.model.FrameworkModel;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java
index efb125f..167f5ad 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java
@@ -16,6 +16,15 @@
*/
package org.apache.dubbo.qos.server.handler;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.qos.command.CommandContext;
+import org.apache.dubbo.qos.command.CommandExecutor;
+import org.apache.dubbo.qos.command.DefaultCommandExecutor;
+import org.apache.dubbo.qos.command.NoSuchCommandException;
+import org.apache.dubbo.qos.command.decoder.HttpCommandDecoder;
+import org.apache.dubbo.rpc.model.FrameworkModel;
+
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
@@ -27,14 +36,6 @@ import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpVersion;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.qos.command.CommandContext;
-import org.apache.dubbo.qos.command.CommandExecutor;
-import org.apache.dubbo.qos.command.DefaultCommandExecutor;
-import org.apache.dubbo.qos.command.NoSuchCommandException;
-import org.apache.dubbo.qos.command.decoder.HttpCommandDecoder;
-import org.apache.dubbo.rpc.model.FrameworkModel;
/**
* Parse HttpRequest for uri and parameters
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/QosProcessHandler.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/QosProcessHandler.java
index 2bf5a16..f1dc1ee 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/QosProcessHandler.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/QosProcessHandler.java
@@ -16,6 +16,9 @@
*/
package org.apache.dubbo.qos.server.handler;
+import org.apache.dubbo.common.utils.ExecutorUtil;
+import org.apache.dubbo.rpc.model.FrameworkModel;
+
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
@@ -30,8 +33,6 @@ import io.netty.handler.timeout.IdleStateEvent;
import io.netty.handler.timeout.IdleStateHandler;
import io.netty.util.CharsetUtil;
import io.netty.util.concurrent.ScheduledFuture;
-import org.apache.dubbo.common.utils.ExecutorUtil;
-import org.apache.dubbo.rpc.model.FrameworkModel;
import java.util.List;
import java.util.concurrent.TimeUnit;
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java
index f7560e5..4631401 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java
@@ -16,9 +16,6 @@
*/
package org.apache.dubbo.qos.server.handler;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.SimpleChannelInboundHandler;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.StringUtils;
@@ -30,6 +27,10 @@ import org.apache.dubbo.qos.command.decoder.TelnetCommandDecoder;
import org.apache.dubbo.qos.common.QosConstants;
import org.apache.dubbo.rpc.model.FrameworkModel;
+import io.netty.channel.ChannelFutureListener;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.SimpleChannelInboundHandler;
+
/**
* Telnet process handler
*/
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextFactoryTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextFactoryTest.java
index e65c3cd..d5d983c 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextFactoryTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextFactoryTest.java
@@ -20,8 +20,8 @@ package org.apache.dubbo.qos.command;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
-import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class CommandContextFactoryTest {
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextTest.java
index 5dec30d..d6a6d3a 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/CommandContextTest.java
@@ -21,11 +21,11 @@ import io.netty.channel.Channel;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.arrayContaining;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class CommandContextTest {
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/DefaultCommandExecutorTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/DefaultCommandExecutorTest.java
index af137f7..8db17bf 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/DefaultCommandExecutorTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/DefaultCommandExecutorTest.java
@@ -18,6 +18,7 @@
package org.apache.dubbo.qos.command;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java
index b030927..2911e23 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java
@@ -16,21 +16,22 @@
*/
package org.apache.dubbo.qos.command.decoder;
+import org.apache.dubbo.qos.command.CommandContext;
+
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpRequest;
-import org.apache.dubbo.qos.command.CommandContext;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.arrayContaining;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/TelnetCommandDecoderTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/TelnetCommandDecoderTest.java
index 50a1add..a33b9b1 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/TelnetCommandDecoderTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/TelnetCommandDecoderTest.java
@@ -17,12 +17,13 @@
package org.apache.dubbo.qos.command.decoder;
import org.apache.dubbo.qos.command.CommandContext;
+
import org.junit.jupiter.api.Test;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.arrayContaining;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
public class TelnetCommandDecoderTest {
@Test
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
index 5ecc778..cb3a3a0 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.util.DefaultAttributeMap;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.qos.command.BaseCommand;
@@ -27,6 +25,9 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+
+import io.netty.channel.Channel;
+import io.netty.util.DefaultAttributeMap;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
index c28c9f5..5263e69 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.RpcStatus;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/HelpTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/HelpTest.java
index 17031fc..642637d 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/HelpTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/HelpTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.qos.command.impl;
import org.apache.dubbo.qos.command.CommandContext;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/InvokeTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/InvokeTelnetTest.java
index 612f565..2cac564 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/InvokeTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/InvokeTelnetTest.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.util.DefaultAttributeMap;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.qos.command.BaseCommand;
import org.apache.dubbo.qos.command.CommandContext;
@@ -28,6 +26,9 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleServiceRepository;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
+
+import io.netty.channel.Channel;
+import io.netty.util.DefaultAttributeMap;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
index cdacfc5..d924bb2 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.qos.command.impl;
import org.apache.dubbo.qos.command.CommandContext;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java
index f95a228..601f8ad 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LsTest.java
@@ -27,6 +27,7 @@ import org.apache.dubbo.rpc.model.ModuleServiceRepository;
import org.apache.dubbo.rpc.model.ProviderModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.rpc.model.ServiceMetadata;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java
index 05a4449..d4a2a27 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OfflineTest.java
@@ -26,6 +26,7 @@ import org.apache.dubbo.rpc.model.ModuleServiceRepository;
import org.apache.dubbo.rpc.model.ProviderModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.rpc.model.ServiceMetadata;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java
index d0906e9..b663125 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/OnlineTest.java
@@ -26,10 +26,11 @@ import org.apache.dubbo.rpc.model.ModuleServiceRepository;
import org.apache.dubbo.rpc.model.ProviderModel;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
import org.apache.dubbo.rpc.model.ServiceMetadata;
+
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Assertions;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY;
import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_TYPE;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PortTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PortTelnetTest.java
index b3b4ecf..cc01320 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PortTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PortTelnetTest.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PublishMetadataTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PublishMetadataTest.java
index d6d2e68..4aaee6f 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PublishMetadataTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PublishMetadataTest.java
@@ -16,20 +16,17 @@
*/
package org.apache.dubbo.qos.command.impl;
-import org.apache.dubbo.config.deploy.DefaultApplicationDeployer;
+import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.qos.command.CommandContext;
-import org.apache.dubbo.registry.client.DefaultServiceInstance;
-import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import java.lang.reflect.Field;
-
public class PublishMetadataTest {
private FrameworkModel frameworkModel;
@@ -38,11 +35,7 @@ public class PublishMetadataTest {
frameworkModel = new FrameworkModel();
for (int i = 0; i < 3; i++) {
ApplicationModel applicationModel = frameworkModel.newApplication();
- DefaultApplicationDeployer deployer = applicationModel.getBeanFactory().getBean(DefaultApplicationDeployer.class);
- ServiceInstance serviceInstance = new DefaultServiceInstance("APP_" + i, applicationModel);
- Field serviceInstanceField = deployer.getClass().getDeclaredField("serviceInstance");
- serviceInstanceField.setAccessible(true);
- serviceInstanceField.set(deployer, serviceInstance);
+ applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig("APP_" + i));
}
}
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PwdTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PwdTelnetTest.java
index e66fb54..3cedda9 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PwdTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/PwdTelnetTest.java
@@ -16,12 +16,13 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.util.DefaultAttributeMap;
import org.apache.dubbo.qos.command.BaseCommand;
import org.apache.dubbo.qos.command.CommandContext;
import org.apache.dubbo.remoting.RemotingException;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
+import io.netty.channel.Channel;
+import io.netty.util.DefaultAttributeMap;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/QuitTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/QuitTest.java
index 012c96b..fb9a151 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/QuitTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/QuitTest.java
@@ -18,11 +18,12 @@ package org.apache.dubbo.qos.command.impl;
import org.apache.dubbo.qos.command.CommandContext;
import org.apache.dubbo.qos.common.QosConstants;
+
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
public class QuitTest {
@Test
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ReadyTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ReadyTest.java
index a2a88cd..08b7a88 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ReadyTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ReadyTest.java
@@ -27,6 +27,7 @@ import org.apache.dubbo.qos.probe.impl.ProviderReadinessProbe;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/SelectTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/SelectTelnetTest.java
index 9f2192b..c52a1e5 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/SelectTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/SelectTelnetTest.java
@@ -16,8 +16,6 @@
*/
package org.apache.dubbo.qos.command.impl;
-import io.netty.channel.Channel;
-import io.netty.util.DefaultAttributeMap;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.qos.command.BaseCommand;
import org.apache.dubbo.qos.command.CommandContext;
@@ -28,6 +26,9 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleServiceRepository;
import org.apache.dubbo.rpc.model.ServiceDescriptor;
+
+import io.netty.channel.Channel;
+import io.netty.util.DefaultAttributeMap;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ShutdownTelnetTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ShutdownTelnetTest.java
index 4fa797c..a724b75 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ShutdownTelnetTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ShutdownTelnetTest.java
@@ -16,11 +16,12 @@
*/
package org.apache.dubbo.qos.command.impl;
... 15906 lines suppressed ...