Full Code of apache/dubbo for AI

3.3 63fe8c3a982a cached
4827 files
19.2 MB
4.3M tokens
27668 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (17,228K chars total). Download the full file to get everything.
Repository: apache/dubbo
Branch: 3.3
Commit: 63fe8c3a982a
Files: 4827
Total size: 19.2 MB

Directory structure:
gitextract_qgs740n0/

├── .artifacts
├── .asf.yaml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── DISCUSSION_TEMPLATE/
│   │   ├── general.yml
│   │   └── question.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug.yml
│   │   ├── 2-feature.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yaml
│   └── workflows/
│       ├── build-and-test-pr.yml
│       ├── build-and-test-scheduled-3.1.yml
│       ├── build-and-test-scheduled-3.2.yml
│       ├── build-and-test-scheduled-3.3.yml
│       └── release-test.yml
├── .gitignore
├── .licenserc.yaml
├── .mvn/
│   ├── jvm.config
│   └── wrapper/
│       └── maven-wrapper.properties
├── CHANGES.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Jenkinsfile
├── Jenkinsfile.sonar
├── LICENSE
├── NOTICE
├── README.md
├── SECURITY.md
├── build
├── build.cmd
├── codecov.yml
├── codestyle/
│   ├── checkstyle-suppressions.xml
│   ├── checkstyle.xml
│   ├── checkstyle_unix.xml
│   └── dubbo_codestyle_for_idea.xml
├── dubbo-cluster/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── dubbo/
│       │   │               ├── registry/
│       │   │               │   └── AddressListener.java
│       │   │               └── rpc/
│       │   │                   └── cluster/
│       │   │                       ├── CacheableRouterFactory.java
│       │   │                       ├── Cluster.java
│       │   │                       ├── ClusterInvoker.java
│       │   │                       ├── ClusterScopeModelInitializer.java
│       │   │                       ├── Configurator.java
│       │   │                       ├── ConfiguratorFactory.java
│       │   │                       ├── Constants.java
│       │   │                       ├── Directory.java
│       │   │                       ├── LoadBalance.java
│       │   │                       ├── MergeableClusterScopeModelInitializer.java
│       │   │                       ├── Merger.java
│       │   │                       ├── ProviderURLMergeProcessor.java
│       │   │                       ├── Router.java
│       │   │                       ├── RouterChain.java
│       │   │                       ├── RouterFactory.java
│       │   │                       ├── RuleConverter.java
│       │   │                       ├── SingleRouterChain.java
│       │   │                       ├── configurator/
│       │   │                       │   ├── AbstractConfigurator.java
│       │   │                       │   ├── absent/
│       │   │                       │   │   ├── AbsentConfigurator.java
│       │   │                       │   │   └── AbsentConfiguratorFactory.java
│       │   │                       │   ├── override/
│       │   │                       │   │   ├── OverrideConfigurator.java
│       │   │                       │   │   └── OverrideConfiguratorFactory.java
│       │   │                       │   └── parser/
│       │   │                       │       ├── ConfigParser.java
│       │   │                       │       └── model/
│       │   │                       │           ├── ConditionMatch.java
│       │   │                       │           ├── ConfigItem.java
│       │   │                       │           ├── ConfiguratorConfig.java
│       │   │                       │           └── ParamMatch.java
│       │   │                       ├── directory/
│       │   │                       │   ├── AbstractDirectory.java
│       │   │                       │   └── StaticDirectory.java
│       │   │                       ├── filter/
│       │   │                       │   ├── DefaultFilterChainBuilder.java
│       │   │                       │   ├── FilterChainBuilder.java
│       │   │                       │   ├── InvocationInterceptorBuilder.java
│       │   │                       │   ├── ProtocolFilterWrapper.java
│       │   │                       │   └── support/
│       │   │                       │       ├── CallbackConsumerContextFilter.java
│       │   │                       │       ├── ConsumerClassLoaderFilter.java
│       │   │                       │       ├── ConsumerContextFilter.java
│       │   │                       │       └── MetricsConsumerFilter.java
│       │   │                       ├── governance/
│       │   │                       │   ├── DefaultGovernanceRuleRepositoryImpl.java
│       │   │                       │   └── GovernanceRuleRepository.java
│       │   │                       ├── interceptor/
│       │   │                       │   └── ClusterInterceptor.java
│       │   │                       ├── loadbalance/
│       │   │                       │   ├── AbstractLoadBalance.java
│       │   │                       │   ├── AdaptiveLoadBalance.java
│       │   │                       │   ├── ConsistentHashLoadBalance.java
│       │   │                       │   ├── LeastActiveLoadBalance.java
│       │   │                       │   ├── RandomLoadBalance.java
│       │   │                       │   ├── RoundRobinLoadBalance.java
│       │   │                       │   └── ShortestResponseLoadBalance.java
│       │   │                       ├── merger/
│       │   │                       │   ├── ArrayMerger.java
│       │   │                       │   ├── BooleanArrayMerger.java
│       │   │                       │   ├── ByteArrayMerger.java
│       │   │                       │   ├── CharArrayMerger.java
│       │   │                       │   ├── DoubleArrayMerger.java
│       │   │                       │   ├── FloatArrayMerger.java
│       │   │                       │   ├── IntArrayMerger.java
│       │   │                       │   ├── ListMerger.java
│       │   │                       │   ├── LongArrayMerger.java
│       │   │                       │   ├── MapMerger.java
│       │   │                       │   ├── MergerFactory.java
│       │   │                       │   ├── SetMerger.java
│       │   │                       │   └── ShortArrayMerger.java
│       │   │                       ├── router/
│       │   │                       │   ├── AbstractRouter.java
│       │   │                       │   ├── AbstractRouterRule.java
│       │   │                       │   ├── RouterResult.java
│       │   │                       │   ├── RouterSnapshotFilter.java
│       │   │                       │   ├── RouterSnapshotNode.java
│       │   │                       │   ├── RouterSnapshotSwitcher.java
│       │   │                       │   ├── affinity/
│       │   │                       │   │   ├── AffinityStateRouter.java
│       │   │                       │   │   ├── AffinityStateRouterFactory.java
│       │   │                       │   │   └── config/
│       │   │                       │   │       ├── AffinityListenableStateRouter.java
│       │   │                       │   │       ├── AffinityProviderAppStateRouter.java
│       │   │                       │   │       ├── AffinityProviderAppStateRouterFactory.java
│       │   │                       │   │       ├── AffinityServiceStateRouter.java
│       │   │                       │   │       ├── AffinityServiceStateRouterFactory.java
│       │   │                       │   │       └── model/
│       │   │                       │   │           ├── AffinityRouterRule.java
│       │   │                       │   │           └── AffinityRuleParser.java
│       │   │                       │   ├── condition/
│       │   │                       │   │   ├── ConditionStateRouter.java
│       │   │                       │   │   ├── ConditionStateRouterFactory.java
│       │   │                       │   │   ├── MultiDestConditionRouter.java
│       │   │                       │   │   ├── config/
│       │   │                       │   │   │   ├── AppStateRouter.java
│       │   │                       │   │   │   ├── AppStateRouterFactory.java
│       │   │                       │   │   │   ├── ListenableStateRouter.java
│       │   │                       │   │   │   ├── ProviderAppStateRouter.java
│       │   │                       │   │   │   ├── ProviderAppStateRouterFactory.java
│       │   │                       │   │   │   ├── ServiceStateRouter.java
│       │   │                       │   │   │   ├── ServiceStateRouterFactory.java
│       │   │                       │   │   │   └── model/
│       │   │                       │   │   │       ├── ConditionRouterRule.java
│       │   │                       │   │   │       ├── ConditionRuleParser.java
│       │   │                       │   │   │       ├── ConditionSubSet.java
│       │   │                       │   │   │       ├── Destination.java
│       │   │                       │   │   │       ├── DestinationSet.java
│       │   │                       │   │   │       ├── MultiDestCondition.java
│       │   │                       │   │   │       └── MultiDestConditionRouterRule.java
│       │   │                       │   │   └── matcher/
│       │   │                       │   │       ├── AbstractConditionMatcher.java
│       │   │                       │   │       ├── ConditionMatcher.java
│       │   │                       │   │       ├── ConditionMatcherFactory.java
│       │   │                       │   │       ├── argument/
│       │   │                       │   │       │   ├── ArgumentConditionMatcher.java
│       │   │                       │   │       │   └── ArgumentConditionMatcherFactory.java
│       │   │                       │   │       ├── attachment/
│       │   │                       │   │       │   ├── AttachmentConditionMatcher.java
│       │   │                       │   │       │   └── AttachmentConditionMatcherFactory.java
│       │   │                       │   │       ├── param/
│       │   │                       │   │       │   ├── UrlParamConditionMatcher.java
│       │   │                       │   │       │   └── UrlParamConditionMatcherFactory.java
│       │   │                       │   │       └── pattern/
│       │   │                       │   │           ├── ValuePattern.java
│       │   │                       │   │           ├── range/
│       │   │                       │   │           │   └── RangeValuePattern.java
│       │   │                       │   │           └── wildcard/
│       │   │                       │   │               └── WildcardValuePattern.java
│       │   │                       │   ├── file/
│       │   │                       │   │   └── FileStateRouterFactory.java
│       │   │                       │   ├── mesh/
│       │   │                       │   │   ├── MeshScopeModelInitializer.java
│       │   │                       │   │   ├── route/
│       │   │                       │   │   │   ├── MeshAppRuleListener.java
│       │   │                       │   │   │   ├── MeshEnvListener.java
│       │   │                       │   │   │   ├── MeshEnvListenerFactory.java
│       │   │                       │   │   │   ├── MeshRuleCache.java
│       │   │                       │   │   │   ├── MeshRuleConstants.java
│       │   │                       │   │   │   ├── MeshRuleManager.java
│       │   │                       │   │   │   ├── MeshRuleRouter.java
│       │   │                       │   │   │   ├── StandardMeshRuleRouter.java
│       │   │                       │   │   │   └── StandardMeshRuleRouterFactory.java
│       │   │                       │   │   ├── rule/
│       │   │                       │   │   │   ├── BaseRule.java
│       │   │                       │   │   │   ├── VsDestinationGroup.java
│       │   │                       │   │   │   ├── destination/
│       │   │                       │   │   │   │   ├── ConnectionPoolSettings.java
│       │   │                       │   │   │   │   ├── DestinationRule.java
│       │   │                       │   │   │   │   ├── DestinationRuleSpec.java
│       │   │                       │   │   │   │   ├── Subset.java
│       │   │                       │   │   │   │   ├── TCPSettings.java
│       │   │                       │   │   │   │   ├── TcpKeepalive.java
│       │   │                       │   │   │   │   ├── TrafficPolicy.java
│       │   │                       │   │   │   │   └── loadbalance/
│       │   │                       │   │   │   │       ├── ConsistentHashLB.java
│       │   │                       │   │   │   │       ├── LoadBalancerSettings.java
│       │   │                       │   │   │   │       └── SimpleLB.java
│       │   │                       │   │   │   └── virtualservice/
│       │   │                       │   │   │       ├── DubboMatchRequest.java
│       │   │                       │   │   │       ├── DubboRoute.java
│       │   │                       │   │   │       ├── DubboRouteDetail.java
│       │   │                       │   │   │       ├── VirtualServiceRule.java
│       │   │                       │   │   │       ├── VirtualServiceSpec.java
│       │   │                       │   │   │       ├── destination/
│       │   │                       │   │   │       │   ├── DubboDestination.java
│       │   │                       │   │   │       │   └── DubboRouteDestination.java
│       │   │                       │   │   │       └── match/
│       │   │                       │   │   │           ├── AddressMatch.java
│       │   │                       │   │   │           ├── BoolMatch.java
│       │   │                       │   │   │           ├── DoubleMatch.java
│       │   │                       │   │   │           ├── DoubleRangeMatch.java
│       │   │                       │   │   │           ├── DubboAttachmentMatch.java
│       │   │                       │   │   │           ├── DubboMethodArg.java
│       │   │                       │   │   │           ├── DubboMethodMatch.java
│       │   │                       │   │   │           ├── ListBoolMatch.java
│       │   │                       │   │   │           ├── ListDoubleMatch.java
│       │   │                       │   │   │           ├── ListStringMatch.java
│       │   │                       │   │   │           └── StringMatch.java
│       │   │                       │   │   └── util/
│       │   │                       │   │       ├── MeshRuleDispatcher.java
│       │   │                       │   │       ├── MeshRuleListener.java
│       │   │                       │   │       └── TracingContextProvider.java
│       │   │                       │   ├── mock/
│       │   │                       │   │   ├── MockInvokersSelector.java
│       │   │                       │   │   └── MockStateRouterFactory.java
│       │   │                       │   ├── script/
│       │   │                       │   │   ├── ScriptStateRouter.java
│       │   │                       │   │   ├── ScriptStateRouterFactory.java
│       │   │                       │   │   └── config/
│       │   │                       │   │       ├── AppScriptRouterFactory.java
│       │   │                       │   │       ├── AppScriptStateRouter.java
│       │   │                       │   │       └── model/
│       │   │                       │   │           └── ScriptRule.java
│       │   │                       │   ├── state/
│       │   │                       │   │   ├── AbstractStateRouter.java
│       │   │                       │   │   ├── BitList.java
│       │   │                       │   │   ├── CacheableStateRouterFactory.java
│       │   │                       │   │   ├── RouterGroupingState.java
│       │   │                       │   │   ├── StateRouter.java
│       │   │                       │   │   ├── StateRouterFactory.java
│       │   │                       │   │   └── TailStateRouter.java
│       │   │                       │   └── tag/
│       │   │                       │       ├── TagStateRouter.java
│       │   │                       │       ├── TagStateRouterFactory.java
│       │   │                       │       └── model/
│       │   │                       │           ├── ParamMatch.java
│       │   │                       │           ├── Tag.java
│       │   │                       │           ├── TagRouterRule.java
│       │   │                       │           └── TagRuleParser.java
│       │   │                       └── support/
│       │   │                           ├── AbstractClusterInvoker.java
│       │   │                           ├── AvailableCluster.java
│       │   │                           ├── AvailableClusterInvoker.java
│       │   │                           ├── BroadcastCluster.java
│       │   │                           ├── BroadcastClusterInvoker.java
│       │   │                           ├── ClusterUtils.java
│       │   │                           ├── FailbackCluster.java
│       │   │                           ├── FailbackClusterInvoker.java
│       │   │                           ├── FailfastCluster.java
│       │   │                           ├── FailfastClusterInvoker.java
│       │   │                           ├── FailoverCluster.java
│       │   │                           ├── FailoverClusterInvoker.java
│       │   │                           ├── FailsafeCluster.java
│       │   │                           ├── FailsafeClusterInvoker.java
│       │   │                           ├── ForkingCluster.java
│       │   │                           ├── ForkingClusterInvoker.java
│       │   │                           ├── MergeableCluster.java
│       │   │                           ├── MergeableClusterInvoker.java
│       │   │                           ├── merger/
│       │   │                           │   └── DefaultProviderURLMergeProcessor.java
│       │   │                           ├── registry/
│       │   │                           │   ├── ZoneAwareCluster.java
│       │   │                           │   └── ZoneAwareClusterInvoker.java
│       │   │                           └── wrapper/
│       │   │                               ├── AbstractCluster.java
│       │   │                               ├── MockClusterInvoker.java
│       │   │                               ├── MockClusterWrapper.java
│       │   │                               ├── ScopeClusterInvoker.java
│       │   │                               └── ScopeClusterWrapper.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── dubbo/
│       │               └── internal/
│       │                   ├── org.apache.dubbo.rpc.Filter
│       │                   ├── org.apache.dubbo.rpc.Protocol
│       │                   ├── org.apache.dubbo.rpc.cluster.Cluster
│       │                   ├── org.apache.dubbo.rpc.cluster.ConfiguratorFactory
│       │                   ├── org.apache.dubbo.rpc.cluster.LoadBalance
│       │                   ├── org.apache.dubbo.rpc.cluster.Merger
│       │                   ├── org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor
│       │                   ├── org.apache.dubbo.rpc.cluster.filter.ClusterFilter
│       │                   ├── org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder
│       │                   ├── org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository
│       │                   ├── org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
│       │                   ├── org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern
│       │                   ├── org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
│       │                   └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               └── rpc/
│           │                   └── cluster/
│           │                       ├── ConfiguratorTest.java
│           │                       ├── StickyTest.java
│           │                       ├── configurator/
│           │                       │   ├── absent/
│           │                       │   │   └── AbsentConfiguratorTest.java
│           │                       │   ├── consts/
│           │                       │   │   └── UrlConstant.java
│           │                       │   ├── override/
│           │                       │   │   └── OverrideConfiguratorTest.java
│           │                       │   └── parser/
│           │                       │       └── ConfigParserTest.java
│           │                       ├── directory/
│           │                       │   ├── AbstractDirectoryConcurrencyTest.java
│           │                       │   ├── MockDirInvocation.java
│           │                       │   └── StaticDirectoryTest.java
│           │                       ├── filter/
│           │                       │   ├── DefaultFilterChainBuilderTest.java
│           │                       │   ├── DemoService.java
│           │                       │   ├── DemoServiceImpl.java
│           │                       │   ├── DemoServiceLocal.java
│           │                       │   ├── DemoServiceMock.java
│           │                       │   ├── DemoServiceStub.java
│           │                       │   ├── LogFilter.java
│           │                       │   └── MockService.java
│           │                       ├── loadbalance/
│           │                       │   ├── AbstractLoadBalanceTest.java
│           │                       │   ├── AdaptiveLoadBalanceTest.java
│           │                       │   ├── ConsistentHashLoadBalanceTest.java
│           │                       │   ├── LeastActiveBalanceTest.java
│           │                       │   ├── LoadBalanceBaseTest.java
│           │                       │   ├── RandomLoadBalanceTest.java
│           │                       │   ├── RoundRobinLoadBalanceTest.java
│           │                       │   └── ShortestResponseLoadBalanceTest.java
│           │                       ├── merger/
│           │                       │   ├── DoubleSumMerger.java
│           │                       │   ├── FloatSumMerger.java
│           │                       │   ├── IntFindAnyMerger.java
│           │                       │   ├── IntFindFirstMerger.java
│           │                       │   ├── IntSumMerger.java
│           │                       │   ├── LongSumMerger.java
│           │                       │   └── ResultMergerTest.java
│           │                       ├── router/
│           │                       │   ├── MockInvoker.java
│           │                       │   ├── RouterSnapshotFilterTest.java
│           │                       │   ├── affinity/
│           │                       │   │   └── AffinityRouteTest.java
│           │                       │   ├── condition/
│           │                       │   │   ├── ConditionStateRouterTest.java
│           │                       │   │   └── config/
│           │                       │   │       ├── ConditionStateRouterTestV31.java
│           │                       │   │       └── ProviderAppConditionStateRouterTest.java
│           │                       │   ├── file/
│           │                       │   │   └── FileRouterEngineTest.java
│           │                       │   ├── mesh/
│           │                       │   │   ├── route/
│           │                       │   │   │   ├── MeshAppRuleListenerTest.java
│           │                       │   │   │   ├── MeshRuleCacheTest.java
│           │                       │   │   │   ├── MeshRuleManagerTest.java
│           │                       │   │   │   ├── MeshRuleRouterTest.java
│           │                       │   │   │   └── StandardMeshRuleRouterFactoryTest.java
│           │                       │   │   ├── rule/
│           │                       │   │   │   ├── DestinationRuleTest.java
│           │                       │   │   │   ├── VirtualServiceRuleTest.java
│           │                       │   │   │   └── virtualservice/
│           │                       │   │   │       ├── DubboMatchRequestTest.java
│           │                       │   │   │       └── match/
│           │                       │   │   │           ├── BoolMatchTest.java
│           │                       │   │   │           ├── DoubleMatchTest.java
│           │                       │   │   │           ├── DubboAttachmentMatchTest.java
│           │                       │   │   │           ├── DubboMethodMatchTest.java
│           │                       │   │   │           ├── ListBoolMatchTest.java
│           │                       │   │   │           ├── ListDoubleMatchTest.java
│           │                       │   │   │           ├── ListStringMatchTest.java
│           │                       │   │   │           └── StringMatchTest.java
│           │                       │   │   └── util/
│           │                       │   │       └── MeshRuleDispatcherTest.java
│           │                       │   ├── mock/
│           │                       │   │   └── MockInvokersSelectorTest.java
│           │                       │   ├── script/
│           │                       │   │   ├── ScriptStateRouterTest.java
│           │                       │   │   └── config/
│           │                       │   │       └── AppScriptStateRouterTest.java
│           │                       │   ├── state/
│           │                       │   │   └── BitListTest.java
│           │                       │   └── tag/
│           │                       │       └── TagStateRouterTest.java
│           │                       └── support/
│           │                           ├── AbstractClusterInvokerTest.java
│           │                           ├── AvailableClusterInvokerTest.java
│           │                           ├── BroadCastClusterInvokerTest.java
│           │                           ├── ClusterUtilsTest.java
│           │                           ├── ConnectivityValidationTest.java
│           │                           ├── DemoServiceA.java
│           │                           ├── DemoServiceAMock.java
│           │                           ├── DemoServiceB.java
│           │                           ├── DemoServiceBMock.java
│           │                           ├── FailSafeClusterInvokerTest.java
│           │                           ├── FailbackClusterInvokerTest.java
│           │                           ├── FailfastClusterInvokerTest.java
│           │                           ├── FailoverClusterInvokerTest.java
│           │                           ├── ForkingClusterInvokerTest.java
│           │                           ├── Greeting.java
│           │                           ├── GreetingMock1.java
│           │                           ├── GreetingMock2.java
│           │                           ├── Menu.java
│           │                           ├── MenuService.java
│           │                           ├── MergeableClusterInvokerTest.java
│           │                           ├── MockAbstractClusterInvokerTest.java
│           │                           ├── MockInvokerTest.java
│           │                           ├── TagProviderURLMergeProcessor.java
│           │                           ├── merger/
│           │                           │   └── DefaultProviderURLMergeProcessorTest.java
│           │                           ├── registry/
│           │                           │   └── ZoneAwareClusterInvokerTest.java
│           │                           └── wrapper/
│           │                               ├── AbstractClusterTest.java
│           │                               ├── DemoClusterFilter.java
│           │                               ├── MockClusterInvokerTest.java
│           │                               ├── MockProviderRpcExceptionTest.java
│           │                               ├── MyMockException.java
│           │                               └── ScopeClusterInvokerTest.java
│           └── resources/
│               ├── AppAnyServices.yml
│               ├── AppMultiServices.yml
│               ├── AppNoService.yml
│               ├── ConditionRule.yml
│               ├── ConfiguratorV3.yml
│               ├── ConfiguratorV3Compatibility.yml
│               ├── ConfiguratorV3Duplicate.yml
│               ├── ConsumerSpecificProviders.yml
│               ├── DestinationRuleTest.yaml
│               ├── DestinationRuleTest2.yaml
│               ├── META-INF/
│               │   └── dubbo/
│               │       └── internal/
│               │           ├── org.apache.dubbo.rpc.Filter
│               │           ├── org.apache.dubbo.rpc.cluster.Merger
│               │           ├── org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor
│               │           ├── org.apache.dubbo.rpc.cluster.filter.ClusterFilter
│               │           └── org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
│               ├── ScriptRule.yaml
│               ├── ServiceGroupVersion.yml
│               ├── ServiceMultiApps.yml
│               ├── ServiceNoApp.yml
│               ├── ServiceNoRule.yml
│               ├── TagRule.yml
│               ├── VirtualServiceTest.yaml
│               ├── dubbo.properties
│               ├── log4j2-test.xml
│               └── org/
│                   └── apache/
│                       └── dubbo/
│                           └── rpc/
│                               └── cluster/
│                                   └── router/
│                                       └── file/
│                                           ├── availablerule.javascript
│                                           ├── methodrule.javascript
│                                           └── notAvailablerule.javascript
├── dubbo-common/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── dubbo/
│       │   │               ├── common/
│       │   │               │   ├── BaseServiceMetadata.java
│       │   │               │   ├── BatchExecutorQueue.java
│       │   │               │   ├── CommonScopeModelInitializer.java
│       │   │               │   ├── Experimental.java
│       │   │               │   ├── Extension.java
│       │   │               │   ├── Node.java
│       │   │               │   ├── Parameters.java
│       │   │               │   ├── ProtocolServiceKey.java
│       │   │               │   ├── Resetable.java
│       │   │               │   ├── ServiceKey.java
│       │   │               │   ├── URL.java
│       │   │               │   ├── URLBuilder.java
│       │   │               │   ├── URLStrParser.java
│       │   │               │   ├── Version.java
│       │   │               │   ├── aot/
│       │   │               │   │   └── NativeDetector.java
│       │   │               │   ├── beans/
│       │   │               │   │   ├── ScopeBeanException.java
│       │   │               │   │   ├── ScopeBeanExtensionInjector.java
│       │   │               │   │   ├── factory/
│       │   │               │   │   │   └── ScopeBeanFactory.java
│       │   │               │   │   └── support/
│       │   │               │   │       └── InstantiationStrategy.java
│       │   │               │   ├── beanutil/
│       │   │               │   │   ├── JavaBeanAccessor.java
│       │   │               │   │   ├── JavaBeanDescriptor.java
│       │   │               │   │   └── JavaBeanSerializeUtil.java
│       │   │               │   ├── bytecode/
│       │   │               │   │   ├── ClassGenerator.java
│       │   │               │   │   ├── DubboLoaderClassPath.java
│       │   │               │   │   ├── Mixin.java
│       │   │               │   │   ├── NoSuchMethodException.java
│       │   │               │   │   ├── NoSuchPropertyException.java
│       │   │               │   │   ├── Proxy.java
│       │   │               │   │   └── Wrapper.java
│       │   │               │   ├── cache/
│       │   │               │   │   ├── FileCacheStore.java
│       │   │               │   │   └── FileCacheStoreFactory.java
│       │   │               │   ├── compact/
│       │   │               │   │   ├── Dubbo2ActivateUtils.java
│       │   │               │   │   ├── Dubbo2CompactUtils.java
│       │   │               │   │   └── Dubbo2GenericExceptionUtils.java
│       │   │               │   ├── compiler/
│       │   │               │   │   ├── Compiler.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── AbstractCompiler.java
│       │   │               │   │       ├── AdaptiveCompiler.java
│       │   │               │   │       ├── ClassUtils.java
│       │   │               │   │       ├── CtClassBuilder.java
│       │   │               │   │       ├── JavassistCompiler.java
│       │   │               │   │       └── JdkCompiler.java
│       │   │               │   ├── concurrent/
│       │   │               │   │   ├── AbortPolicy.java
│       │   │               │   │   ├── CallableSafeInitializer.java
│       │   │               │   │   ├── DiscardOldestPolicy.java
│       │   │               │   │   ├── DiscardPolicy.java
│       │   │               │   │   ├── RejectException.java
│       │   │               │   │   └── Rejector.java
│       │   │               │   ├── config/
│       │   │               │   │   ├── CompositeConfiguration.java
│       │   │               │   │   ├── Configuration.java
│       │   │               │   │   ├── ConfigurationCache.java
│       │   │               │   │   ├── ConfigurationUtils.java
│       │   │               │   │   ├── Environment.java
│       │   │               │   │   ├── EnvironmentConfiguration.java
│       │   │               │   │   ├── InmemoryConfiguration.java
│       │   │               │   │   ├── ModuleEnvironment.java
│       │   │               │   │   ├── OrderedPropertiesConfiguration.java
│       │   │               │   │   ├── OrderedPropertiesProvider.java
│       │   │               │   │   ├── PrefixedConfiguration.java
│       │   │               │   │   ├── PropertiesConfiguration.java
│       │   │               │   │   ├── ReferenceCache.java
│       │   │               │   │   ├── SystemConfiguration.java
│       │   │               │   │   └── configcenter/
│       │   │               │   │       ├── AbstractDynamicConfiguration.java
│       │   │               │   │       ├── AbstractDynamicConfigurationFactory.java
│       │   │               │   │       ├── ConfigChangeType.java
│       │   │               │   │       ├── ConfigChangedEvent.java
│       │   │               │   │       ├── ConfigItem.java
│       │   │               │   │       ├── ConfigurationListener.java
│       │   │               │   │       ├── Constants.java
│       │   │               │   │       ├── DynamicConfiguration.java
│       │   │               │   │       ├── DynamicConfigurationFactory.java
│       │   │               │   │       ├── TreePathDynamicConfiguration.java
│       │   │               │   │       ├── nop/
│       │   │               │   │       │   ├── NopDynamicConfiguration.java
│       │   │               │   │       │   └── NopDynamicConfigurationFactory.java
│       │   │               │   │       └── wrapper/
│       │   │               │   │           └── CompositeDynamicConfiguration.java
│       │   │               │   ├── constants/
│       │   │               │   │   ├── ClusterRules.java
│       │   │               │   │   ├── CommonConstants.java
│       │   │               │   │   ├── FilterConstants.java
│       │   │               │   │   ├── LoadbalanceRules.java
│       │   │               │   │   ├── LoggerCodeConstants.java
│       │   │               │   │   ├── MetricsConstants.java
│       │   │               │   │   ├── QosConstants.java
│       │   │               │   │   ├── RegisterTypeEnum.java
│       │   │               │   │   ├── RegistryConstants.java
│       │   │               │   │   └── RemotingConstants.java
│       │   │               │   ├── context/
│       │   │               │   │   ├── ApplicationExt.java
│       │   │               │   │   ├── Lifecycle.java
│       │   │               │   │   ├── LifecycleAdapter.java
│       │   │               │   │   └── ModuleExt.java
│       │   │               │   ├── convert/
│       │   │               │   │   ├── Converter.java
│       │   │               │   │   ├── ConverterUtil.java
│       │   │               │   │   ├── StringConverter.java
│       │   │               │   │   ├── StringToBooleanConverter.java
│       │   │               │   │   ├── StringToByteConverter.java
│       │   │               │   │   ├── StringToCharArrayConverter.java
│       │   │               │   │   ├── StringToCharacterConverter.java
│       │   │               │   │   ├── StringToDoubleConverter.java
│       │   │               │   │   ├── StringToDurationConverter.java
│       │   │               │   │   ├── StringToFloatConverter.java
│       │   │               │   │   ├── StringToIntegerConverter.java
│       │   │               │   │   ├── StringToLongConverter.java
│       │   │               │   │   ├── StringToOptionalConverter.java
│       │   │               │   │   ├── StringToShortConverter.java
│       │   │               │   │   ├── StringToStringConverter.java
│       │   │               │   │   └── multiple/
│       │   │               │   │       ├── MultiValueConverter.java
│       │   │               │   │       ├── StringToArrayConverter.java
│       │   │               │   │       ├── StringToBlockingDequeConverter.java
│       │   │               │   │       ├── StringToBlockingQueueConverter.java
│       │   │               │   │       ├── StringToCollectionConverter.java
│       │   │               │   │       ├── StringToDequeConverter.java
│       │   │               │   │       ├── StringToIterableConverter.java
│       │   │               │   │       ├── StringToListConverter.java
│       │   │               │   │       ├── StringToMultiValueConverter.java
│       │   │               │   │       ├── StringToNavigableSetConverter.java
│       │   │               │   │       ├── StringToQueueConverter.java
│       │   │               │   │       ├── StringToSetConverter.java
│       │   │               │   │       ├── StringToSortedSetConverter.java
│       │   │               │   │       └── StringToTransferQueueConverter.java
│       │   │               │   ├── deploy/
│       │   │               │   │   ├── AbstractDeployer.java
│       │   │               │   │   ├── ApplicationDeployListener.java
│       │   │               │   │   ├── ApplicationDeployer.java
│       │   │               │   │   ├── DeployListener.java
│       │   │               │   │   ├── DeployListenerAdapter.java
│       │   │               │   │   ├── DeployState.java
│       │   │               │   │   ├── Deployer.java
│       │   │               │   │   ├── ModuleDeployListener.java
│       │   │               │   │   └── ModuleDeployer.java
│       │   │               │   ├── extension/
│       │   │               │   │   ├── Activate.java
│       │   │               │   │   ├── Adaptive.java
│       │   │               │   │   ├── AdaptiveClassCodeGenerator.java
│       │   │               │   │   ├── DisableInject.java
│       │   │               │   │   ├── DubboInternalLoadingStrategy.java
│       │   │               │   │   ├── DubboLoadingStrategy.java
│       │   │               │   │   ├── ExtensionAccessor.java
│       │   │               │   │   ├── ExtensionAccessorAware.java
│       │   │               │   │   ├── ExtensionDirector.java
│       │   │               │   │   ├── ExtensionFactory.java
│       │   │               │   │   ├── ExtensionInjector.java
│       │   │               │   │   ├── ExtensionLoader.java
│       │   │               │   │   ├── ExtensionPostProcessor.java
│       │   │               │   │   ├── ExtensionScope.java
│       │   │               │   │   ├── LoadingStrategy.java
│       │   │               │   │   ├── SPI.java
│       │   │               │   │   ├── ServicesLoadingStrategy.java
│       │   │               │   │   ├── Wrapper.java
│       │   │               │   │   ├── inject/
│       │   │               │   │   │   ├── AdaptiveExtensionInjector.java
│       │   │               │   │   │   └── SpiExtensionInjector.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── ActivateComparator.java
│       │   │               │   │       └── WrapperComparator.java
│       │   │               │   ├── function/
│       │   │               │   │   ├── Predicates.java
│       │   │               │   │   ├── Streams.java
│       │   │               │   │   ├── ThrowableAction.java
│       │   │               │   │   ├── ThrowableConsumer.java
│       │   │               │   │   └── ThrowableFunction.java
│       │   │               │   ├── infra/
│       │   │               │   │   ├── InfraAdapter.java
│       │   │               │   │   └── support/
│       │   │               │   │       └── EnvironmentAdapter.java
│       │   │               │   ├── io/
│       │   │               │   │   ├── Bytes.java
│       │   │               │   │   ├── StreamUtils.java
│       │   │               │   │   ├── UnsafeByteArrayInputStream.java
│       │   │               │   │   ├── UnsafeByteArrayOutputStream.java
│       │   │               │   │   ├── UnsafeStringReader.java
│       │   │               │   │   └── UnsafeStringWriter.java
│       │   │               │   ├── json/
│       │   │               │   │   ├── GsonUtils.java
│       │   │               │   │   ├── JsonUtil.java
│       │   │               │   │   └── impl/
│       │   │               │   │       ├── AbstractJsonUtilImpl.java
│       │   │               │   │       ├── FastJson2Impl.java
│       │   │               │   │       ├── FastJsonImpl.java
│       │   │               │   │       ├── GsonImpl.java
│       │   │               │   │       └── JacksonImpl.java
│       │   │               │   ├── lang/
│       │   │               │   │   ├── Nullable.java
│       │   │               │   │   ├── Prioritized.java
│       │   │               │   │   ├── ShutdownHookCallback.java
│       │   │               │   │   └── ShutdownHookCallbacks.java
│       │   │               │   ├── logger/
│       │   │               │   │   ├── ErrorTypeAwareLogger.java
│       │   │               │   │   ├── FluentLogger.java
│       │   │               │   │   ├── FluentLoggerImpl.java
│       │   │               │   │   ├── Level.java
│       │   │               │   │   ├── ListenableLogger.java
│       │   │               │   │   ├── LogListener.java
│       │   │               │   │   ├── Logger.java
│       │   │               │   │   ├── LoggerAdapter.java
│       │   │               │   │   ├── LoggerFactory.java
│       │   │               │   │   ├── helpers/
│       │   │               │   │   │   ├── FormattingTuple.java
│       │   │               │   │   │   └── MessageFormatter.java
│       │   │               │   │   ├── jcl/
│       │   │               │   │   │   ├── JclLogger.java
│       │   │               │   │   │   └── JclLoggerAdapter.java
│       │   │               │   │   ├── jdk/
│       │   │               │   │   │   ├── JdkLogger.java
│       │   │               │   │   │   └── JdkLoggerAdapter.java
│       │   │               │   │   ├── log4j/
│       │   │               │   │   │   ├── Log4jLogger.java
│       │   │               │   │   │   └── Log4jLoggerAdapter.java
│       │   │               │   │   ├── log4j2/
│       │   │               │   │   │   ├── Log4j2Logger.java
│       │   │               │   │   │   └── Log4j2LoggerAdapter.java
│       │   │               │   │   ├── slf4j/
│       │   │               │   │   │   ├── Slf4jLogger.java
│       │   │               │   │   │   └── Slf4jLoggerAdapter.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── FailsafeErrorTypeAwareLogger.java
│       │   │               │   │       └── FailsafeLogger.java
│       │   │               │   ├── profiler/
│       │   │               │   │   ├── Profiler.java
│       │   │               │   │   ├── ProfilerEntry.java
│       │   │               │   │   └── ProfilerSwitch.java
│       │   │               │   ├── reference/
│       │   │               │   │   └── ReferenceCountedResource.java
│       │   │               │   ├── resource/
│       │   │               │   │   ├── Disposable.java
│       │   │               │   │   ├── GlobalResourceInitializer.java
│       │   │               │   │   ├── GlobalResourcesRepository.java
│       │   │               │   │   └── Initializable.java
│       │   │               │   ├── serialization/
│       │   │               │   │   ├── ClassHolder.java
│       │   │               │   │   └── PreferSerializationProvider.java
│       │   │               │   ├── ssl/
│       │   │               │   │   ├── AuthPolicy.java
│       │   │               │   │   ├── Cert.java
│       │   │               │   │   ├── CertManager.java
│       │   │               │   │   ├── CertProvider.java
│       │   │               │   │   ├── ProviderCert.java
│       │   │               │   │   └── impl/
│       │   │               │   │       └── SSLConfigCertProvider.java
│       │   │               │   ├── status/
│       │   │               │   │   ├── Status.java
│       │   │               │   │   ├── StatusChecker.java
│       │   │               │   │   ├── reporter/
│       │   │               │   │   │   ├── FrameworkStatusReportService.java
│       │   │               │   │   │   └── FrameworkStatusReporter.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── LoadStatusChecker.java
│       │   │               │   │       ├── MemoryStatusChecker.java
│       │   │               │   │       └── StatusUtils.java
│       │   │               │   ├── store/
│       │   │               │   │   ├── DataStore.java
│       │   │               │   │   ├── DataStoreUpdateListener.java
│       │   │               │   │   └── support/
│       │   │               │   │       └── SimpleDataStore.java
│       │   │               │   ├── stream/
│       │   │               │   │   ├── CallStreamObserver.java
│       │   │               │   │   ├── ClientCallStreamObserver.java
│       │   │               │   │   ├── ClientResponseObserver.java
│       │   │               │   │   ├── ServerCallStreamObserver.java
│       │   │               │   │   └── StreamObserver.java
│       │   │               │   ├── system/
│       │   │               │   │   └── OperatingSystemBeanManager.java
│       │   │               │   ├── threadlocal/
│       │   │               │   │   ├── InternalRunnable.java
│       │   │               │   │   ├── InternalThread.java
│       │   │               │   │   ├── InternalThreadLocal.java
│       │   │               │   │   ├── InternalThreadLocalMap.java
│       │   │               │   │   └── NamedInternalThreadFactory.java
│       │   │               │   ├── threadpool/
│       │   │               │   │   ├── MemoryLimitCalculator.java
│       │   │               │   │   ├── MemoryLimitedLinkedBlockingQueue.java
│       │   │               │   │   ├── MemoryLimiter.java
│       │   │               │   │   ├── MemorySafeLinkedBlockingQueue.java
│       │   │               │   │   ├── ThreadPool.java
│       │   │               │   │   ├── ThreadlessExecutor.java
│       │   │               │   │   ├── concurrent/
│       │   │               │   │   │   └── ScheduledCompletableFuture.java
│       │   │               │   │   ├── event/
│       │   │               │   │   │   ├── ThreadPoolExhaustedEvent.java
│       │   │               │   │   │   └── ThreadPoolExhaustedListener.java
│       │   │               │   │   ├── manager/
│       │   │               │   │   │   ├── DefaultExecutorRepository.java
│       │   │               │   │   │   ├── ExecutorRepository.java
│       │   │               │   │   │   ├── FrameworkExecutorRepository.java
│       │   │               │   │   │   ├── IsolationExecutorRepository.java
│       │   │               │   │   │   └── Ring.java
│       │   │               │   │   ├── serial/
│       │   │               │   │   │   └── SerializingExecutor.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── AbortPolicyWithReport.java
│       │   │               │   │       ├── cached/
│       │   │               │   │       │   └── CachedThreadPool.java
│       │   │               │   │       ├── eager/
│       │   │               │   │       │   ├── EagerThreadPool.java
│       │   │               │   │       │   ├── EagerThreadPoolExecutor.java
│       │   │               │   │       │   └── TaskQueue.java
│       │   │               │   │       ├── fixed/
│       │   │               │   │       │   └── FixedThreadPool.java
│       │   │               │   │       └── limited/
│       │   │               │   │           └── LimitedThreadPool.java
│       │   │               │   ├── timer/
│       │   │               │   │   ├── HashedWheelTimer.java
│       │   │               │   │   ├── Timeout.java
│       │   │               │   │   ├── Timer.java
│       │   │               │   │   └── TimerTask.java
│       │   │               │   ├── url/
│       │   │               │   │   └── component/
│       │   │               │   │       ├── DubboServiceAddressURL.java
│       │   │               │   │       ├── PathURLAddress.java
│       │   │               │   │       ├── ServiceAddressURL.java
│       │   │               │   │       ├── ServiceConfigURL.java
│       │   │               │   │       ├── URLAddress.java
│       │   │               │   │       ├── URLItemCache.java
│       │   │               │   │       ├── URLParam.java
│       │   │               │   │       ├── URLPlainParam.java
│       │   │               │   │       └── param/
│       │   │               │   │           ├── DefaultDynamicParamSource.java
│       │   │               │   │           ├── DynamicParamSource.java
│       │   │               │   │           ├── DynamicParamTable.java
│       │   │               │   │           ├── DynamicValues.java
│       │   │               │   │           ├── FixedParamValue.java
│       │   │               │   │           ├── IgnoredParam.java
│       │   │               │   │           └── ParamValue.java
│       │   │               │   └── utils/
│       │   │               │       ├── AllowClassNotifyListener.java
│       │   │               │       ├── AnnotationUtils.java
│       │   │               │       ├── ArrayUtils.java
│       │   │               │       ├── Assert.java
│       │   │               │       ├── AtomicPositiveInteger.java
│       │   │               │       ├── CIDRUtils.java
│       │   │               │       ├── CacheableSupplier.java
│       │   │               │       ├── CharSequenceComparator.java
│       │   │               │       ├── ClassHelper.java
│       │   │               │       ├── ClassLoaderResourceLoader.java
│       │   │               │       ├── ClassUtils.java
│       │   │               │       ├── CollectionUtils.java
│       │   │               │       ├── CompatibleTypeUtils.java
│       │   │               │       ├── ConcurrentHashMapUtils.java
│       │   │               │       ├── ConcurrentHashSet.java
│       │   │               │       ├── ConfigUtils.java
│       │   │               │       ├── DateUtils.java
│       │   │               │       ├── DefaultPage.java
│       │   │               │       ├── DefaultParameterNameReader.java
│       │   │               │       ├── DefaultSerializeClassChecker.java
│       │   │               │       ├── DubboAppender.java
│       │   │               │       ├── ExecutorUtil.java
│       │   │               │       ├── FieldUtils.java
│       │   │               │       ├── Holder.java
│       │   │               │       ├── IOUtils.java
│       │   │               │       ├── JRE.java
│       │   │               │       ├── JVMUtil.java
│       │   │               │       ├── JavassistParameterNameReader.java
│       │   │               │       ├── JsonCompatibilityUtil.java
│       │   │               │       ├── JsonUtils.java
│       │   │               │       ├── LFUCache.java
│       │   │               │       ├── LRU2Cache.java
│       │   │               │       ├── LRUCache.java
│       │   │               │       ├── LockUtils.java
│       │   │               │       ├── Log.java
│       │   │               │       ├── LogHelper.java
│       │   │               │       ├── LogUtil.java
│       │   │               │       ├── MD5Utils.java
│       │   │               │       ├── MemberUtils.java
│       │   │               │       ├── MethodComparator.java
│       │   │               │       ├── MethodUtils.java
│       │   │               │       ├── NamedThreadFactory.java
│       │   │               │       ├── NetUtils.java
│       │   │               │       ├── Page.java
│       │   │               │       ├── Pair.java
│       │   │               │       ├── ParameterNameReader.java
│       │   │               │       ├── PathUtils.java
│       │   │               │       ├── PojoUtils.java
│       │   │               │       ├── ProtobufUtils.java
│       │   │               │       ├── ReflectUtils.java
│       │   │               │       ├── ReflectionUtils.java
│       │   │               │       ├── RegexProperties.java
│       │   │               │       ├── SerializeCheckStatus.java
│       │   │               │       ├── SerializeSecurityConfigurator.java
│       │   │               │       ├── SerializeSecurityManager.java
│       │   │               │       ├── ServiceAnnotationResolver.java
│       │   │               │       ├── Stack.java
│       │   │               │       ├── StringConstantFieldValuePredicate.java
│       │   │               │       ├── StringUtils.java
│       │   │               │       ├── SystemPropertyConfigUtils.java
│       │   │               │       ├── TimeUtils.java
│       │   │               │       ├── ToStringUtils.java
│       │   │               │       ├── TypeUtils.java
│       │   │               │       ├── UrlUtils.java
│       │   │               │       └── Utf8Utils.java
│       │   │               ├── config/
│       │   │               │   ├── AbstractConfig.java
│       │   │               │   ├── AbstractInterfaceConfig.java
│       │   │               │   ├── AbstractMethodConfig.java
│       │   │               │   ├── AbstractReferenceConfig.java
│       │   │               │   ├── AbstractServiceConfig.java
│       │   │               │   ├── ApplicationConfig.java
│       │   │               │   ├── ArgumentConfig.java
│       │   │               │   ├── ConfigCenterConfig.java
│       │   │               │   ├── ConfigKeys.java
│       │   │               │   ├── Constants.java
│       │   │               │   ├── ConsumerConfig.java
│       │   │               │   ├── MetadataReportConfig.java
│       │   │               │   ├── MethodConfig.java
│       │   │               │   ├── MetricsConfig.java
│       │   │               │   ├── ModuleConfig.java
│       │   │               │   ├── MonitorConfig.java
│       │   │               │   ├── ProtocolConfig.java
│       │   │               │   ├── ProviderConfig.java
│       │   │               │   ├── ReferenceConfigBase.java
│       │   │               │   ├── RegistryConfig.java
│       │   │               │   ├── ServiceConfigBase.java
│       │   │               │   ├── SslConfig.java
│       │   │               │   ├── TracingConfig.java
│       │   │               │   ├── annotation/
│       │   │               │   │   ├── Argument.java
│       │   │               │   │   ├── DubboReference.java
│       │   │               │   │   ├── DubboService.java
│       │   │               │   │   ├── Method.java
│       │   │               │   │   ├── ProvidedBy.java
│       │   │               │   │   ├── Reference.java
│       │   │               │   │   └── Service.java
│       │   │               │   ├── context/
│       │   │               │   │   ├── AbstractConfigManager.java
│       │   │               │   │   ├── ConfigConfigurationAdapter.java
│       │   │               │   │   ├── ConfigManager.java
│       │   │               │   │   ├── ConfigMode.java
│       │   │               │   │   ├── ConfigValidator.java
│       │   │               │   │   └── ModuleConfigManager.java
│       │   │               │   ├── nested/
│       │   │               │   │   ├── AggregationConfig.java
│       │   │               │   │   ├── BaggageConfig.java
│       │   │               │   │   ├── CorsConfig.java
│       │   │               │   │   ├── ExporterConfig.java
│       │   │               │   │   ├── HistogramConfig.java
│       │   │               │   │   ├── Http3Config.java
│       │   │               │   │   ├── McpConfig.java
│       │   │               │   │   ├── OpenAPIConfig.java
│       │   │               │   │   ├── OtlpMetricConfig.java
│       │   │               │   │   ├── PrometheusConfig.java
│       │   │               │   │   ├── PropagationConfig.java
│       │   │               │   │   ├── RestConfig.java
│       │   │               │   │   ├── SamplingConfig.java
│       │   │               │   │   ├── ServletConfig.java
│       │   │               │   │   ├── TripleConfig.java
│       │   │               │   │   └── WebSocketConfig.java
│       │   │               │   └── support/
│       │   │               │       ├── Nested.java
│       │   │               │       └── Parameter.java
│       │   │               ├── metadata/
│       │   │               │   └── definition/
│       │   │               │       ├── MethodDefinitionBuilder.java
│       │   │               │       ├── ServiceDefinitionBuilder.java
│       │   │               │       ├── TypeDefinitionBuilder.java
│       │   │               │       ├── builder/
│       │   │               │       │   ├── ArrayTypeBuilder.java
│       │   │               │       │   ├── CollectionTypeBuilder.java
│       │   │               │       │   ├── DefaultTypeBuilder.java
│       │   │               │       │   ├── EnumTypeBuilder.java
│       │   │               │       │   ├── MapTypeBuilder.java
│       │   │               │       │   └── TypeBuilder.java
│       │   │               │       ├── model/
│       │   │               │       │   ├── FullServiceDefinition.java
│       │   │               │       │   ├── MethodDefinition.java
│       │   │               │       │   ├── ServiceDefinition.java
│       │   │               │       │   └── TypeDefinition.java
│       │   │               │       └── util/
│       │   │               │           ├── ClassUtils.java
│       │   │               │           └── JaketConfigurationUtils.java
│       │   │               └── rpc/
│       │   │                   ├── executor/
│       │   │                   │   ├── AbstractIsolationExecutorSupport.java
│       │   │                   │   ├── DefaultExecutorSupport.java
│       │   │                   │   ├── DefaultIsolationExecutorSupportFactory.java
│       │   │                   │   ├── ExecutorSupport.java
│       │   │                   │   └── IsolationExecutorSupportFactory.java
│       │   │                   ├── model/
│       │   │                   │   ├── ApplicationInitListener.java
│       │   │                   │   ├── ApplicationModel.java
│       │   │                   │   ├── AsyncMethodInfo.java
│       │   │                   │   ├── BuiltinServiceDetector.java
│       │   │                   │   ├── ConsumerMethodModel.java
│       │   │                   │   ├── ConsumerModel.java
│       │   │                   │   ├── DubboStub.java
│       │   │                   │   ├── FrameworkModel.java
│       │   │                   │   ├── FrameworkServiceRepository.java
│       │   │                   │   ├── MethodDescriptor.java
│       │   │                   │   ├── ModelConstants.java
│       │   │                   │   ├── ModuleModel.java
│       │   │                   │   ├── ModuleServiceRepository.java
│       │   │                   │   ├── Pack.java
│       │   │                   │   ├── PackableMethod.java
│       │   │                   │   ├── PackableMethodFactory.java
│       │   │                   │   ├── ProviderMethodModel.java
│       │   │                   │   ├── ProviderModel.java
│       │   │                   │   ├── ReflectionMethodDescriptor.java
│       │   │                   │   ├── ReflectionServiceDescriptor.java
│       │   │                   │   ├── ScopeClassLoaderListener.java
│       │   │                   │   ├── ScopeModel.java
│       │   │                   │   ├── ScopeModelAccessor.java
│       │   │                   │   ├── ScopeModelAware.java
│       │   │                   │   ├── ScopeModelAwareExtensionProcessor.java
│       │   │                   │   ├── ScopeModelDestroyListener.java
│       │   │                   │   ├── ScopeModelInitializer.java
│       │   │                   │   ├── ScopeModelUtil.java
│       │   │                   │   ├── ServiceDescriptor.java
│       │   │                   │   ├── ServiceMetadata.java
│       │   │                   │   ├── ServiceModel.java
│       │   │                   │   ├── ServiceRepository.java
│       │   │                   │   ├── StubMethodDescriptor.java
│       │   │                   │   ├── StubServiceDescriptor.java
│       │   │                   │   ├── UnPack.java
│       │   │                   │   └── WrapperUnPack.java
│       │   │                   ├── service/
│       │   │                   │   ├── Destroyable.java
│       │   │                   │   ├── EchoService.java
│       │   │                   │   ├── EchoServiceDetector.java
│       │   │                   │   ├── GenericException.java
│       │   │                   │   ├── GenericService.java
│       │   │                   │   ├── GenericServiceDetector.java
│       │   │                   │   └── ServiceDescriptorInternalCache.java
│       │   │                   └── support/
│       │   │                       ├── GroupServiceKeyCache.java
│       │   │                       └── ProtocolUtils.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── dubbo/
│       │       │   │   └── internal/
│       │       │   │       ├── org.apache.dubbo.common.compiler.Compiler
│       │       │   │       ├── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│       │       │   │       ├── org.apache.dubbo.common.context.ApplicationExt
│       │       │   │       ├── org.apache.dubbo.common.context.ModuleExt
│       │       │   │       ├── org.apache.dubbo.common.convert.Converter
│       │       │   │       ├── org.apache.dubbo.common.convert.multiple.MultiValueConverter
│       │       │   │       ├── org.apache.dubbo.common.extension.ExtensionInjector
│       │       │   │       ├── org.apache.dubbo.common.infra.InfraAdapter
│       │       │   │       ├── org.apache.dubbo.common.json.JsonUtil
│       │       │   │       ├── org.apache.dubbo.common.logger.LoggerAdapter
│       │       │   │       ├── org.apache.dubbo.common.ssl.CertProvider
│       │       │   │       ├── org.apache.dubbo.common.status.StatusChecker
│       │       │   │       ├── org.apache.dubbo.common.store.DataStore
│       │       │   │       ├── org.apache.dubbo.common.threadpool.ThreadPool
│       │       │   │       ├── org.apache.dubbo.common.threadpool.manager.ExecutorRepository
│       │       │   │       ├── org.apache.dubbo.common.url.component.param.DynamicParamSource
│       │       │   │       ├── org.apache.dubbo.common.utils.ParameterNameReader
│       │       │   │       ├── org.apache.dubbo.metadata.definition.builder.TypeBuilder
│       │       │   │       ├── org.apache.dubbo.rpc.executor.IsolationExecutorSupportFactory
│       │       │   │       ├── org.apache.dubbo.rpc.model.BuiltinServiceDetector
│       │       │   │       └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│       │       │   ├── services/
│       │       │   │   ├── org.apache.dubbo.common.extension.LoadingStrategy
│       │       │   │   └── org.apache.dubbo.common.json.JsonUtil
│       │       │   └── version
│       │       └── security/
│       │           ├── serialize.allowlist
│       │           └── serialize.blockedlist
│       └── test/
│           ├── java/
│           │   ├── com/
│           │   │   ├── pojo/
│           │   │   │   ├── Demo1.java
│           │   │   │   ├── Demo2.java
│           │   │   │   ├── Demo3.java
│           │   │   │   ├── Demo4.java
│           │   │   │   ├── Demo5.java
│           │   │   │   ├── Demo6.java
│           │   │   │   ├── Demo7.java
│           │   │   │   ├── Demo8.java
│           │   │   │   ├── DemoException1.java
│           │   │   │   ├── DemoException2.java
│           │   │   │   ├── DemoException3.java
│           │   │   │   └── Simple.java
│           │   │   └── service/
│           │   │       ├── DemoService1.java
│           │   │       ├── DemoService2.java
│           │   │       ├── DemoService4.java
│           │   │       ├── DemoService5.java
│           │   │       ├── Params.java
│           │   │       ├── Service.java
│           │   │       ├── User.java
│           │   │       ├── UserService.java
│           │   │       └── deep1/
│           │   │           └── deep2/
│           │   │               └── deep3/
│           │   │                   └── DemoService3.java
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               ├── common/
│           │               │   ├── BaseServiceMetadataTest.java
│           │               │   ├── CommonScopeModelInitializerTest.java
│           │               │   ├── InterfaceAddressURLTest.java
│           │               │   ├── PojoUtilsForNonPublicStaticTest.java
│           │               │   ├── ProtocolServiceKeyMatcherTest.java
│           │               │   ├── ProtocolServiceKeyTest.java
│           │               │   ├── ServiceKeyMatcherTest.java
│           │               │   ├── ServiceKeyTest.java
│           │               │   ├── URLBuilderTest.java
│           │               │   ├── URLStrParserTest.java
│           │               │   ├── URLTest.java
│           │               │   ├── beans/
│           │               │   │   ├── InstantiationStrategyTest.java
│           │               │   │   ├── ScopeBeanFactoryTest.java
│           │               │   │   └── model/
│           │               │   │       ├── FooBeanWithApplicationModel.java
│           │               │   │       ├── FooBeanWithFrameworkModel.java
│           │               │   │       ├── FooBeanWithModuleModel.java
│           │               │   │       ├── FooBeanWithScopeModel.java
│           │               │   │       └── FooBeanWithoutUniqueConstructors.java
│           │               │   ├── beanutil/
│           │               │   │   ├── Bean.java
│           │               │   │   ├── JavaBeanAccessorTest.java
│           │               │   │   └── JavaBeanSerializeUtilTest.java
│           │               │   ├── bytecode/
│           │               │   │   ├── ClassGeneratorTest.java
│           │               │   │   ├── MixinTest.java
│           │               │   │   ├── ProxyTest.java
│           │               │   │   └── WrapperTest.java
│           │               │   ├── cache/
│           │               │   │   ├── FileCacheStoreFactoryTest.java
│           │               │   │   └── FileCacheStoreTest.java
│           │               │   ├── compiler/
│           │               │   │   └── support/
│           │               │   │       ├── AdaptiveCompilerTest.java
│           │               │   │       ├── ClassUtilsTest.java
│           │               │   │       ├── HelloService.java
│           │               │   │       ├── HelloServiceImpl0.java
│           │               │   │       ├── JavaCodeTest.java
│           │               │   │       ├── JavassistCompilerTest.java
│           │               │   │       ├── JdkCompilerTest.java
│           │               │   │       └── internal/
│           │               │   │           └── HelloServiceInternalImpl.java
│           │               │   ├── concurrent/
│           │               │   │   └── CompletableFutureTaskTest.java
│           │               │   ├── config/
│           │               │   │   ├── CompositeConfigurationTest.java
│           │               │   │   ├── ConfigurationCacheTest.java
│           │               │   │   ├── ConfigurationUtilsTest.java
│           │               │   │   ├── EnvironmentConfigurationTest.java
│           │               │   │   ├── EnvironmentTest.java
│           │               │   │   ├── InmemoryConfigurationTest.java
│           │               │   │   ├── MockOrderedPropertiesProvider1.java
│           │               │   │   ├── MockOrderedPropertiesProvider2.java
│           │               │   │   ├── OrderedPropertiesConfigurationTest.java
│           │               │   │   ├── PrefixedConfigurationTest.java
│           │               │   │   ├── PropertiesConfigurationTest.java
│           │               │   │   ├── SystemConfigurationTest.java
│           │               │   │   └── configcenter/
│           │               │   │       ├── AbstractDynamicConfigurationFactoryTest.java
│           │               │   │       ├── AbstractDynamicConfigurationTest.java
│           │               │   │       ├── ConfigChangeTypeTest.java
│           │               │   │       ├── ConfigChangedEventTest.java
│           │               │   │       └── DynamicConfigurationFactoryTest.java
│           │               │   ├── constants/
│           │               │   │   └── CommonConstantsTest.java
│           │               │   ├── convert/
│           │               │   │   ├── ConverterTest.java
│           │               │   │   ├── StringToBooleanConverterTest.java
│           │               │   │   ├── StringToCharArrayConverterTest.java
│           │               │   │   ├── StringToCharacterConverterTest.java
│           │               │   │   ├── StringToDoubleConverterTest.java
│           │               │   │   ├── StringToDurationConverterTest.java
│           │               │   │   ├── StringToFloatConverterTest.java
│           │               │   │   ├── StringToIntegerConverterTest.java
│           │               │   │   ├── StringToLongConverterTest.java
│           │               │   │   ├── StringToOptionalConverterTest.java
│           │               │   │   ├── StringToShortConverterTest.java
│           │               │   │   ├── StringToStringConverterTest.java
│           │               │   │   └── multiple/
│           │               │   │       ├── MultiValueConverterTest.java
│           │               │   │       ├── StringToArrayConverterTest.java
│           │               │   │       ├── StringToBlockingDequeConverterTest.java
│           │               │   │       ├── StringToBlockingQueueConverterTest.java
│           │               │   │       ├── StringToCollectionConverterTest.java
│           │               │   │       ├── StringToDequeConverterTest.java
│           │               │   │       ├── StringToListConverterTest.java
│           │               │   │       ├── StringToNavigableSetConverterTest.java
│           │               │   │       ├── StringToQueueConverterTest.java
│           │               │   │       ├── StringToSetConverterTest.java
│           │               │   │       ├── StringToSortedSetConverterTest.java
│           │               │   │       └── StringToTransferQueueConverterTest.java
│           │               │   ├── extension/
│           │               │   │   ├── AdaptiveClassCodeGeneratorTest.java
│           │               │   │   ├── DubboExternalLoadingStrategy.java
│           │               │   │   ├── ExtensionDirectorTest.java
│           │               │   │   ├── ExtensionLoaderTest.java
│           │               │   │   ├── ExtensionLoader_Activate_Test.java
│           │               │   │   ├── ExtensionLoader_Adaptive_Test.java
│           │               │   │   ├── ExtensionLoader_Adaptive_UseJdkCompiler_Test.java
│           │               │   │   ├── ExtensionLoader_Compatible_Test.java
│           │               │   │   ├── NoSpiExt.java
│           │               │   │   ├── SPI1.java
│           │               │   │   ├── SPI1Impl.java
│           │               │   │   ├── SPI2.java
│           │               │   │   ├── SPI2Impl.java
│           │               │   │   ├── SPI3.java
│           │               │   │   ├── SPI3Impl.java
│           │               │   │   ├── SPI4.java
│           │               │   │   ├── SPI4Impl.java
│           │               │   │   ├── activate/
│           │               │   │   │   ├── ActivateExt1.java
│           │               │   │   │   ├── ActivateWrapperExt1.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── ActivateExt1Impl1.java
│           │               │   │   │       ├── ActivateOnClassExt1Impl.java
│           │               │   │   │       ├── ActivateWrapperExt1Impl1.java
│           │               │   │   │       ├── ActivateWrapperExt1Impl2.java
│           │               │   │   │       ├── ActivateWrapperExt1Wrapper.java
│           │               │   │   │       ├── GroupActivateExtImpl.java
│           │               │   │   │       ├── OrderActivateExtImpl1.java
│           │               │   │   │       ├── OrderActivateExtImpl2.java
│           │               │   │   │       └── ValueActivateExtImpl.java
│           │               │   │   ├── adaptive/
│           │               │   │   │   ├── HasAdaptiveExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── HasAdaptiveExtImpl1.java
│           │               │   │   │       └── HasAdaptiveExt_ManualAdaptive.java
│           │               │   │   ├── compatible/
│           │               │   │   │   ├── CompatibleExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── CompatibleExtImpl1.java
│           │               │   │   │       └── CompatibleExtImpl2.java
│           │               │   │   ├── convert/
│           │               │   │   │   ├── String2BooleanConverter.java
│           │               │   │   │   ├── String2DoubleConverter.java
│           │               │   │   │   └── String2IntegerConverter.java
│           │               │   │   ├── director/
│           │               │   │   │   ├── FooAppProvider.java
│           │               │   │   │   ├── FooAppService.java
│           │               │   │   │   ├── FooFrameworkProvider.java
│           │               │   │   │   ├── FooFrameworkService.java
│           │               │   │   │   ├── FooModuleProvider.java
│           │               │   │   │   ├── FooModuleService.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── BaseTestService.java
│           │               │   │   │       ├── TestAppProvider.java
│           │               │   │   │       ├── TestAppService.java
│           │               │   │   │       ├── TestFrameworkProvider.java
│           │               │   │   │       ├── TestFrameworkService.java
│           │               │   │   │       ├── TestModuleProvider.java
│           │               │   │   │       └── TestModuleService.java
│           │               │   │   ├── duplicated/
│           │               │   │   │   ├── DuplicatedOverriddenExt.java
│           │               │   │   │   ├── DuplicatedWithoutOverriddenExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── DuplicatedOverriddenExt1.java
│           │               │   │   │       ├── DuplicatedOverriddenExt2.java
│           │               │   │   │       ├── DuplicatedWithoutOverriddenExt1.java
│           │               │   │   │       └── DuplicatedWithoutOverriddenExt2.java
│           │               │   │   ├── ext1/
│           │               │   │   │   ├── SimpleExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── SimpleExtImpl1.java
│           │               │   │   │       ├── SimpleExtImpl2.java
│           │               │   │   │       └── SimpleExtImpl3.java
│           │               │   │   ├── ext10_multi_names/
│           │               │   │   │   ├── Ext10MultiNames.java
│           │               │   │   │   └── impl/
│           │               │   │   │       └── Ext10MultiNamesImpl.java
│           │               │   │   ├── ext11_no_adaptive/
│           │               │   │   │   ├── NoAdaptiveExt.java
│           │               │   │   │   └── NoAdaptiveExtImpl.java
│           │               │   │   ├── ext2/
│           │               │   │   │   ├── Ext2.java
│           │               │   │   │   ├── UrlHolder.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext2Impl1.java
│           │               │   │   │       ├── Ext2Impl2.java
│           │               │   │   │       └── Ext2Impl3.java
│           │               │   │   ├── ext3/
│           │               │   │   │   ├── UseProtocolKeyExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── UseProtocolKeyExtImpl1.java
│           │               │   │   │       ├── UseProtocolKeyExtImpl2.java
│           │               │   │   │       └── UseProtocolKeyExtImpl3.java
│           │               │   │   ├── ext4/
│           │               │   │   │   ├── NoUrlParamExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext4Impl1.java
│           │               │   │   │       └── Ext4Impl2.java
│           │               │   │   ├── ext5/
│           │               │   │   │   ├── NoAdaptiveMethodExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext5Impl1.java
│           │               │   │   │       └── Ext5Impl2.java
│           │               │   │   ├── ext6_inject/
│           │               │   │   │   ├── Dao.java
│           │               │   │   │   ├── Ext6.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── DaoImpl.java
│           │               │   │   │       ├── Ext6Impl1.java
│           │               │   │   │       └── Ext6Impl2.java
│           │               │   │   ├── ext6_wrap/
│           │               │   │   │   ├── WrappedExt.java
│           │               │   │   │   ├── WrappedExtWrapper.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext6Impl1.java
│           │               │   │   │       ├── Ext6Impl2.java
│           │               │   │   │       ├── Ext6Impl3.java
│           │               │   │   │       ├── Ext6Impl4.java
│           │               │   │   │       ├── Ext6Wrapper1.java
│           │               │   │   │       ├── Ext6Wrapper2.java
│           │               │   │   │       ├── Ext6Wrapper3.java
│           │               │   │   │       └── Ext6Wrapper4.java
│           │               │   │   ├── ext7/
│           │               │   │   │   ├── InitErrorExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext7Impl.java
│           │               │   │   │       └── Ext7InitErrorImpl.java
│           │               │   │   ├── ext8_add/
│           │               │   │   │   ├── AddExt1.java
│           │               │   │   │   ├── AddExt2.java
│           │               │   │   │   ├── AddExt3.java
│           │               │   │   │   ├── AddExt4.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── AddExt1Impl1.java
│           │               │   │   │       ├── AddExt1_ManualAdaptive.java
│           │               │   │   │       ├── AddExt1_ManualAdd1.java
│           │               │   │   │       ├── AddExt1_ManualAdd2.java
│           │               │   │   │       ├── AddExt2Impl1.java
│           │               │   │   │       ├── AddExt2_ManualAdaptive.java
│           │               │   │   │       ├── AddExt3_ManualAdaptive.java
│           │               │   │   │       └── AddExt4_ManualAdaptive.java
│           │               │   │   ├── ext9_empty/
│           │               │   │   │   ├── Ext9Empty.java
│           │               │   │   │   └── impl/
│           │               │   │   │       └── Ext9EmptyImpl.java
│           │               │   │   ├── inject/
│           │               │   │   │   └── AdaptiveExtensionInjectorTest.java
│           │               │   │   ├── injection/
│           │               │   │   │   ├── InjectExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       └── InjectExtImpl.java
│           │               │   │   ├── support/
│           │               │   │   │   ├── ActivateComparatorTest.java
│           │               │   │   │   ├── Filter0.java
│           │               │   │   │   ├── Filter1.java
│           │               │   │   │   ├── Filter2.java
│           │               │   │   │   ├── Filter3.java
│           │               │   │   │   ├── Filter4.java
│           │               │   │   │   ├── Order0Filter0.java
│           │               │   │   │   ├── Order0Filter1.java
│           │               │   │   │   └── Order0Filter2.java
│           │               │   │   └── wrapper/
│           │               │   │       ├── Demo.java
│           │               │   │       ├── WrapperTest.java
│           │               │   │       └── impl/
│           │               │   │           ├── DemoImpl.java
│           │               │   │           ├── DemoWrapper.java
│           │               │   │           └── DemoWrapper2.java
│           │               │   ├── function/
│           │               │   │   ├── PredicatesTest.java
│           │               │   │   ├── StreamsTest.java
│           │               │   │   ├── ThrowableActionTest.java
│           │               │   │   ├── ThrowableConsumerTest.java
│           │               │   │   └── ThrowableFunctionTest.java
│           │               │   ├── io/
│           │               │   │   ├── BytesTest.java
│           │               │   │   ├── StreamUtilsTest.java
│           │               │   │   ├── UnsafeByteArrayInputStreamTest.java
│           │               │   │   ├── UnsafeByteArrayOutputStreamTest.java
│           │               │   │   ├── UnsafeStringReaderTest.java
│           │               │   │   └── UnsafeStringWriterTest.java
│           │               │   ├── json/
│           │               │   │   ├── GsonUtilsTest.java
│           │               │   │   └── impl/
│           │               │   │       ├── FastJson2ImplTest.java
│           │               │   │       ├── FastJsonImplTest.java
│           │               │   │       └── GsonImplTest.java
│           │               │   ├── lang/
│           │               │   │   ├── DefaultShutdownHookCallback.java
│           │               │   │   ├── PrioritizedTest.java
│           │               │   │   └── ShutdownHookCallbacksTest.java
│           │               │   ├── logger/
│           │               │   │   ├── LoggerAdapterTest.java
│           │               │   │   ├── LoggerFactoryTest.java
│           │               │   │   ├── LoggerTest.java
│           │               │   │   ├── slf4j/
│           │               │   │   │   └── Slf4jLoggerTest.java
│           │               │   │   └── support/
│           │               │   │       ├── FailsafeErrorTypeAwareLoggerTest.java
│           │               │   │       └── FailsafeLoggerTest.java
│           │               │   ├── model/
│           │               │   │   ├── Person.java
│           │               │   │   ├── SerializablePerson.java
│           │               │   │   ├── User.java
│           │               │   │   ├── media/
│           │               │   │   │   ├── Image.java
│           │               │   │   │   └── Media.java
│           │               │   │   └── person/
│           │               │   │       ├── Ageneric.java
│           │               │   │       ├── Bgeneric.java
│           │               │   │       ├── BigPerson.java
│           │               │   │       ├── Cgeneric.java
│           │               │   │       ├── Dgeneric.java
│           │               │   │       ├── FullAddress.java
│           │               │   │       ├── PersonInfo.java
│           │               │   │       ├── PersonMap.java
│           │               │   │       ├── PersonStatus.java
│           │               │   │       └── Phone.java
│           │               │   ├── profiler/
│           │               │   │   └── ProfilerTest.java
│           │               │   ├── resource/
│           │               │   │   └── GlobalResourcesRepositoryTest.java
│           │               │   ├── ssl/
│           │               │   │   ├── CertManagerTest.java
│           │               │   │   ├── FirstCertProvider.java
│           │               │   │   ├── SSLConfigCertProviderTest.java
│           │               │   │   └── SecondCertProvider.java
│           │               │   ├── status/
│           │               │   │   ├── StatusTest.java
│           │               │   │   ├── reporter/
│           │               │   │   │   ├── FrameworkStatusReportServiceTest.java
│           │               │   │   │   └── MockFrameworkStatusReporter.java
│           │               │   │   └── support/
│           │               │   │       ├── LoadStatusCheckerTest.java
│           │               │   │       ├── MemoryStatusCheckerTest.java
│           │               │   │       └── StatusUtilsTest.java
│           │               │   ├── store/
│           │               │   │   └── support/
│           │               │   │       └── SimpleDataStoreTest.java
│           │               │   ├── threadlocal/
│           │               │   │   ├── InternalThreadLocalTest.java
│           │               │   │   └── NamedInternalThreadFactoryTest.java
│           │               │   ├── threadpool/
│           │               │   │   ├── MemoryLimitedLinkedBlockingQueueTest.java
│           │               │   │   ├── MemorySafeLinkedBlockingQueueTest.java
│           │               │   │   ├── ThreadlessExecutorTest.java
│           │               │   │   ├── event/
│           │               │   │   │   ├── ThreadPoolExhaustedEventListenerTest.java
│           │               │   │   │   └── ThreadPoolExhaustedEventTest.java
│           │               │   │   ├── manager/
│           │               │   │   │   ├── ExecutorRepositoryTest.java
│           │               │   │   │   └── FrameworkExecutorRepositoryTest.java
│           │               │   │   ├── serial/
│           │               │   │   │   └── SerializingExecutorTest.java
│           │               │   │   └── support/
│           │               │   │       ├── AbortPolicyWithReportTest.java
│           │               │   │       ├── cached/
│           │               │   │       │   └── CachedThreadPoolTest.java
│           │               │   │       ├── eager/
│           │               │   │       │   ├── EagerThreadPoolExecutorTest.java
│           │               │   │       │   ├── EagerThreadPoolTest.java
│           │               │   │       │   └── TaskQueueTest.java
│           │               │   │       ├── fixed/
│           │               │   │       │   └── FixedThreadPoolTest.java
│           │               │   │       └── limited/
│           │               │   │           └── LimitedThreadPoolTest.java
│           │               │   ├── timer/
│           │               │   │   └── HashedWheelTimerTest.java
│           │               │   ├── url/
│           │               │   │   └── URLParamTest.java
│           │               │   ├── utils/
│           │               │   │   ├── AnnotationUtilsTest.java
│           │               │   │   ├── ArrayUtilsTest.java
│           │               │   │   ├── AssertTest.java
│           │               │   │   ├── AtomicPositiveIntegerTest.java
│           │               │   │   ├── CIDRUtilsTest.java
│           │               │   │   ├── ClassLoaderResourceLoaderTest.java
│           │               │   │   ├── ClassUtilsTest.java
│           │               │   │   ├── CollectionUtilsTest.java
│           │               │   │   ├── CompatibleTypeUtilsTest.java
│           │               │   │   ├── ConcurrentHashMapUtilsTest.java
│           │               │   │   ├── ConfigUtilsTest.java
│           │               │   │   ├── DefaultCharSequence.java
│           │               │   │   ├── DefaultPageTest.java
│           │               │   │   ├── DefaultSerializeClassCheckerTest.java
│           │               │   │   ├── DubboAppenderTest.java
│           │               │   │   ├── ExecutorUtilTest.java
│           │               │   │   ├── FieldUtilsTest.java
│           │               │   │   ├── HolderTest.java
│           │               │   │   ├── IOUtilsTest.java
│           │               │   │   ├── JRETest.java
│           │               │   │   ├── JVMUtilTest.java
│           │               │   │   ├── JavassistParameterNameReaderTest.java
│           │               │   │   ├── JsonCompatibilityUtilTest.java
│           │               │   │   ├── JsonUtilsTest.java
│           │               │   │   ├── LFUCacheTest.java
│           │               │   │   ├── LRU2CacheTest.java
│           │               │   │   ├── LRUCacheTest.java
│           │               │   │   ├── LockUtilsTest.java
│           │               │   │   ├── LogHelperTest.java
│           │               │   │   ├── LogTest.java
│           │               │   │   ├── LogUtilTest.java
│           │               │   │   ├── MD5UtilsTest.java
│           │               │   │   ├── MemberUtilsTest.java
│           │               │   │   ├── MethodComparatorTest.java
│           │               │   │   ├── MethodUtilsTest.java
│           │               │   │   ├── MyEnum.java
│           │               │   │   ├── NamedThreadFactoryTest.java
│           │               │   │   ├── NetUtilsInterfaceDisplayNameHasMetaCharactersTest.java
│           │               │   │   ├── NetUtilsTest.java
│           │               │   │   ├── ParametersTest.java
│           │               │   │   ├── PathUtilsTest.java
│           │               │   │   ├── PojoUtilsTest.java
│           │               │   │   ├── ProtobufUtilsTest.java
│           │               │   │   ├── ReflectUtilsTest.java
│           │               │   │   ├── RegexPropertiesTest.java
│           │               │   │   ├── SerializeSecurityConfiguratorTest.java
│           │               │   │   ├── SerializeSecurityManagerTest.java
│           │               │   │   ├── StackTest.java
│           │               │   │   ├── StringConstantFieldValuePredicateTest.java
│           │               │   │   ├── StringUtilsTest.java
│           │               │   │   ├── SystemPropertyConfigUtilsTest.java
│           │               │   │   ├── TestAllowClassNotifyListener.java
│           │               │   │   ├── TimeUtilsTest.java
│           │               │   │   ├── UrlUtilsTest.java
│           │               │   │   └── json/
│           │               │   │       ├── AbstractObject.java
│           │               │   │       ├── Color.java
│           │               │   │       ├── Printer.java
│           │               │   │       ├── Range.java
│           │               │   │       ├── Service.java
│           │               │   │       ├── Student.java
│           │               │   │       ├── Teacher.java
│           │               │   │       ├── TestEnum.java
│           │               │   │       ├── TestObjectA.java
│           │               │   │       └── TestObjectB.java
│           │               │   ├── version/
│           │               │   │   └── VersionTest.java
│           │               │   └── vo/
│           │               │       └── UserVo.java
│           │               ├── config/
│           │               │   ├── AbstractInterfaceConfigTest.java
│           │               │   ├── Greeting.java
│           │               │   ├── GreetingLocal1.java
│           │               │   ├── GreetingLocal2.java
│           │               │   ├── GreetingLocal3.java
│           │               │   └── context/
│           │               │       ├── ConfigConfigurationAdapterTest.java
│           │               │       └── ConfigManagerTest.java
│           │               ├── metadata/
│           │               │   └── definition/
│           │               │       ├── DefaultTypeBuilderTest.java
│           │               │       ├── MetadataTest.java
│           │               │       ├── MetadataUtils.java
│           │               │       ├── ServiceDefinitionBuilderTest.java
│           │               │       ├── Test3TypeBuilder.java
│           │               │       ├── TestTypeBuilder.java
│           │               │       ├── TypeDefinitionBuilderTest.java
│           │               │       ├── common/
│           │               │       │   ├── ClassExtendsMap.java
│           │               │       │   ├── ColorEnum.java
│           │               │       │   ├── OuterClass.java
│           │               │       │   ├── ResultWithRawCollections.java
│           │               │       │   └── TestService.java
│           │               │       └── service/
│           │               │           ├── ComplexObject.java
│           │               │           ├── DemoService.java
│           │               │           └── annotation/
│           │               │               ├── MockMethodAnnotation.java
│           │               │               ├── MockMethodAnnotation2.java
│           │               │               └── MockTypeAnnotation.java
│           │               └── rpc/
│           │                   ├── executor/
│           │                   │   ├── IsolationExecutorSupportFactoryTest.java
│           │                   │   ├── Mock1ExecutorSupport.java
│           │                   │   ├── Mock1IsolationExecutorSupportFactory.java
│           │                   │   ├── Mock2ExecutorSupport.java
│           │                   │   └── Mock2IsolationExecutorSupportFactory.java
│           │                   ├── model/
│           │                   │   ├── ApplicationModelTest.java
│           │                   │   ├── FrameworkModelTest.java
│           │                   │   ├── FrameworkServiceRepositoryTest.java
│           │                   │   ├── HelloReply.java
│           │                   │   ├── HelloRequest.java
│           │                   │   ├── ModuleModelTest.java
│           │                   │   ├── ModuleServiceRepositoryTest.java
│           │                   │   ├── Person.java
│           │                   │   ├── ReflectionMethodDescriptorTest.java
│           │                   │   ├── ReflectionServiceDescriptorTest.java
│           │                   │   ├── ScopeModelAwareExtensionProcessorTest.java
│           │                   │   ├── ScopeModelTest.java
│           │                   │   ├── ScopeModelUtilTest.java
│           │                   │   ├── SerializablePerson.java
│           │                   │   ├── ServiceRepositoryTest.java
│           │                   │   ├── User.java
│           │                   │   ├── media/
│           │                   │   │   ├── Image.java
│           │                   │   │   └── Media.java
│           │                   │   └── person/
│           │                   │       ├── BigPerson.java
│           │                   │       ├── FullAddress.java
│           │                   │       ├── PersonInfo.java
│           │                   │       ├── PersonStatus.java
│           │                   │       └── Phone.java
│           │                   ├── service/
│           │                   │   ├── GenericExceptionTest.java
│           │                   │   └── ServiceDescriptorInternalCacheTest.java
│           │                   └── support/
│           │                       ├── DemoService.java
│           │                       ├── DemoService1.java
│           │                       ├── DemoService1Impl.java
│           │                       ├── DemoServiceImpl.java
│           │                       ├── MockScopeModelAware.java
│           │                       ├── MockScopeModelDestroyListener.java
│           │                       └── ProtocolUtilsTest.java
│           └── resources/
│               ├── META-INF/
│               │   ├── dubbo/
│               │   │   ├── external/
│               │   │   │   ├── org.apache.dubbo.common.convert.Converter
│               │   │   │   ├── org.apache.dubbo.common.extension.duplicated.DuplicatedOverriddenExt
│               │   │   │   └── org.apache.dubbo.common.extension.duplicated.DuplicatedWithoutOverriddenExt
│               │   │   ├── internal/
│               │   │   │   ├── org.apache.dubbo.common.config.OrderedPropertiesProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.SPI2
│               │   │   │   ├── org.apache.dubbo.common.extension.activate.ActivateExt1
│               │   │   │   ├── org.apache.dubbo.common.extension.activate.ActivateWrapperExt1
│               │   │   │   ├── org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt
│               │   │   │   ├── org.apache.dubbo.common.extension.compatible.CompatibleExt
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooAppProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooAppService
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooFrameworkProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooFrameworkService
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooModuleProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooModuleService
│               │   │   │   ├── org.apache.dubbo.common.extension.duplicated.DuplicatedOverriddenExt
│               │   │   │   ├── org.apache.dubbo.common.extension.duplicated.DuplicatedWithoutOverriddenExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext1.SimpleExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext10_multi_names.Ext10MultiNames
│               │   │   │   ├── org.apache.dubbo.common.extension.ext11_no_adaptive.NoAdaptiveExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext2.Ext2
│               │   │   │   ├── org.apache.dubbo.common.extension.ext3.UseProtocolKeyExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext4.NoUrlParamExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext6_inject.Ext6
│               │   │   │   ├── org.apache.dubbo.common.extension.ext6_wrap.WrappedExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext7.InitErrorExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext8_add.AddExt1
│               │   │   │   ├── org.apache.dubbo.common.extension.ext9_empty.Ext9Empty
│               │   │   │   ├── org.apache.dubbo.common.extension.injection.InjectExt
│               │   │   │   ├── org.apache.dubbo.common.extension.support.Filter0
│               │   │   │   ├── org.apache.dubbo.common.extension.wrapper.Demo
│               │   │   │   ├── org.apache.dubbo.common.lang.ShutdownHookCallback
│               │   │   │   ├── org.apache.dubbo.common.logger.LoggerAdapter
│               │   │   │   ├── org.apache.dubbo.common.ssl.CertProvider
│               │   │   │   ├── org.apache.dubbo.common.status.StatusChecker
│               │   │   │   ├── org.apache.dubbo.common.status.reporter.FrameworkStatusReporter
│               │   │   │   ├── org.apache.dubbo.event.EventListener
│               │   │   │   ├── org.apache.dubbo.metadata.definition.builder.TypeBuilder
│               │   │   │   └── org.apache.dubbo.rpc.executor.IsolationExecutorSupportFactory
│               │   │   ├── org.apache.dubbo.common.convert.Converter
│               │   │   └── org.apache.dubbo.common.extension.SPI1
│               │   ├── services/
│               │   │   ├── java.lang.CharSequence
│               │   │   ├── org.apache.dubbo.common.extension.LoadingStrategy
│               │   │   ├── org.apache.dubbo.common.extension.SPI3
│               │   │   ├── org.apache.dubbo.common.extension.SPI4
│               │   │   └── org.apache.dubbo.common.extension.activate.ActivateExt1
│               │   └── test-versions/
│               │       └── dubbo-common
│               ├── StreamUtilsTest.txt
│               ├── certs/
│               │   ├── ca.pem
│               │   ├── cert.pem
│               │   └── key.pem
│               ├── dubbo-migration.yaml
│               ├── dubbo.properties
│               ├── json.flex
│               ├── log4j2-test.xml
│               ├── md5.testfile.txt
│               ├── org/
│               │   └── apache/
│               │       └── dubbo/
│               │           └── common/
│               │               ├── bytecode/
│               │               │   └── TestClass
│               │               ├── extension/
│               │               │   └── adaptive/
│               │               │       └── HasAdaptiveExt$Adaptive
│               │               └── serialize/
│               │                   └── dubbo/
│               │                       └── SimpleDO.fc
│               ├── parameters.properties
│               ├── properties.load
│               ├── security/
│               │   ├── serialize.allowlist
│               │   └── serialize.blockedlist
│               └── special_spi.properties
├── dubbo-compatible/
│   ├── README.md
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── alibaba/
│       │               └── dubbo/
│       │                   ├── cache/
│       │                   │   ├── Cache.java
│       │                   │   ├── CacheFactory.java
│       │                   │   └── support/
│       │                   │       └── AbstractCacheFactory.java
│       │                   ├── common/
│       │                   │   ├── Constants.java
│       │                   │   ├── DelegateURL.java
│       │                   │   ├── URL.java
│       │                   │   ├── compiler/
│       │                   │   │   └── Compiler.java
│       │                   │   ├── extension/
│       │                   │   │   ├── Activate.java
│       │                   │   │   └── ExtensionFactory.java
│       │                   │   ├── logger/
│       │                   │   │   └── LoggerAdapter.java
│       │                   │   ├── serialize/
│       │                   │   │   ├── ObjectInput.java
│       │                   │   │   ├── ObjectOutput.java
│       │                   │   │   └── Serialization.java
│       │                   │   ├── status/
│       │                   │   │   ├── Status.java
│       │                   │   │   └── StatusChecker.java
│       │                   │   ├── store/
│       │                   │   │   └── DataStore.java
│       │                   │   ├── threadpool/
│       │                   │   │   └── ThreadPool.java
│       │                   │   └── utils/
│       │                   │       └── UrlUtils.java
│       │                   ├── config/
│       │                   │   ├── ApplicationConfig.java
│       │                   │   ├── ArgumentConfig.java
│       │                   │   ├── ConsumerConfig.java
│       │                   │   ├── MethodConfig.java
│       │                   │   ├── ModuleConfig.java
│       │                   │   ├── MonitorConfig.java
│       │                   │   ├── ProtocolConfig.java
│       │                   │   ├── ProviderConfig.java
│       │                   │   ├── ReferenceConfig.java
│       │                   │   ├── RegistryConfig.java
│       │                   │   ├── ServiceConfig.java
│       │                   │   ├── annotation/
│       │                   │   │   ├── Reference.java
│       │                   │   │   └── Service.java
│       │                   │   └── spring/
│       │                   │       └── context/
│       │                   │           └── annotation/
│       │                   │               └── EnableDubbo.java
│       │                   ├── container/
│       │                   │   └── page/
│       │                   │       ├── Menu.java
│       │                   │       ├── MenuComparator.java
│       │                   │       ├── Page.java
│       │                   │       ├── PageHandler.java
│       │                   │       ├── PageServlet.java
│       │                   │       ├── ResourceFilter.java
│       │                   │       └── pages/
│       │                   │           ├── HomePageHandler.java
│       │                   │           ├── LogPageHandler.java
│       │                   │           ├── StatusPageHandler.java
│       │                   │           └── SystemPageHandler.java
│       │                   ├── monitor/
│       │                   │   ├── Monitor.java
│       │                   │   └── MonitorFactory.java
│       │                   ├── qos/
│       │                   │   └── command/
│       │                   │       ├── BaseCommand.java
│       │                   │       └── CommandContext.java
│       │                   ├── registry/
│       │                   │   ├── NotifyListener.java
│       │                   │   ├── Registry.java
│       │                   │   ├── RegistryFactory.java
│       │                   │   └── support/
│       │                   │       ├── AbstractRegistry.java
│       │                   │       ├── AbstractRegistryFactory.java
│       │                   │       └── FailbackRegistry.java
│       │                   ├── remoting/
│       │                   │   ├── Channel.java
│       │                   │   ├── ChannelHandler.java
│       │                   │   ├── Codec.java
│       │                   │   ├── Codec2.java
│       │                   │   ├── Dispatcher.java
│       │                   │   ├── RemotingException.java
│       │                   │   ├── Server.java
│       │                   │   ├── Transporter.java
│       │                   │   ├── exchange/
│       │                   │   │   ├── Exchanger.java
│       │                   │   │   ├── ResponseCallback.java
│       │                   │   │   └── ResponseFuture.java
│       │                   │   └── telnet/
│       │                   │       └── TelnetHandler.java
│       │                   ├── rpc/
│       │                   │   ├── Exporter.java
│       │                   │   ├── Filter.java
│       │                   │   ├── Invocation.java
│       │                   │   ├── Invoker.java
│       │                   │   ├── InvokerListener.java
│       │                   │   ├── Protocol.java
│       │                   │   ├── ProxyFactory.java
│       │                   │   ├── Result.java
│       │                   │   ├── RpcContext.java
│       │                   │   ├── RpcException.java
│       │                   │   ├── RpcInvocation.java
│       │                   │   ├── RpcResult.java
│       │                   │   ├── cluster/
│       │                   │   │   ├── Cluster.java
│       │                   │   │   ├── Configurator.java
│       │                   │   │   ├── ConfiguratorFactory.java
│       │                   │   │   ├── Directory.java
│       │                   │   │   ├── LoadBalance.java
│       │                   │   │   ├── Merger.java
│       │                   │   │   ├── Router.java
│       │                   │   │   ├── RouterFactory.java
│       │                   │   │   ├── RuleConverter.java
│       │                   │   │   └── loadbalance/
│       │                   │   │       └── AbstractLoadBalance.java
│       │                   │   ├── protocol/
│       │                   │   │   └── dubbo/
│       │                   │   │       └── FutureAdapter.java
│       │                   │   ├── service/
│       │                   │   │   ├── EchoService.java
│       │                   │   │   ├── GenericException.java
│       │                   │   │   └── GenericService.java
│       │                   │   └── support/
│       │                   │       └── RpcUtils.java
│       │                   └── validation/
│       │                       ├── Validation.java
│       │                       └── Validator.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               ├── cache/
│           │               │   ├── CacheTest.java
│           │               │   ├── MyCache.java
│           │               │   └── MyCacheFactory.java
│           │               ├── common/
│           │               │   ├── extension/
│           │               │   │   ├── ExtensionTest.java
│           │               │   │   ├── MockDispatcher.java
│           │               │   │   ├── MyExtensionFactory.java
│           │               │   │   ├── activate/
│           │               │   │   │   ├── ActivateExt1.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── ActivateExt1Impl1.java
│           │               │   │   │       ├── OldActivateExt1Impl2.java
│           │               │   │   │       └── OldActivateExt1Impl3.java
│           │               │   │   └── support/
│           │               │   │       ├── ActivateComparatorTest.java
│           │               │   │       ├── Filter0.java
│           │               │   │       ├── Filter1.java
│           │               │   │       ├── Filter2.java
│           │               │   │       ├── Filter3.java
│           │               │   │       ├── Filter4.java
│           │               │   │       ├── OldFilter0.java
│           │               │   │       ├── OldFilter5.java
│           │               │   │       ├── Order0Filter0.java
│           │               │   │       ├── Order0Filter1.java
│           │               │   │       └── Order0Filter2.java
│           │               │   └── utils/
│           │               │       └── AnnotationUtilsTest.java
│           │               ├── config/
│           │               │   ├── ApplicationConfigTest.java
│           │               │   ├── ArgumentConfigTest.java
│           │               │   ├── ConfigTest.java
│           │               │   ├── ConsumerConfigTest.java
│           │               │   ├── MethodConfigTest.java
│           │               │   ├── ModuleConfigTest.java
│           │               │   ├── ProtocolConfigTest.java
│           │               │   ├── ProviderConfigTest.java
│           │               │   ├── ReferenceConfigTest.java
│           │               │   ├── RegistryConfigTest.java
│           │               │   ├── SignatureTest.java
│           │               │   └── spring/
│           │               │       ├── api/
│           │               │       │   ├── Box.java
│           │               │       │   ├── DemoService.java
│           │               │       │   └── HelloService.java
│           │               │       ├── beans/
│           │               │       │   └── factory/
│           │               │       │       └── annotation/
│           │               │       │           └── ServiceAnnotationTestConfiguration.java
│           │               │       ├── context/
│           │               │       │   └── annotation/
│           │               │       │       ├── DubboComponentScanRegistrarTest.java
│           │               │       │       ├── DubboConfigConfigurationTest.java
│           │               │       │       ├── EnableDubboConfigTest.java
│           │               │       │       ├── EnableDubboTest.java
│           │               │       │       ├── consumer/
│           │               │       │       │   ├── ConsumerConfiguration.java
│           │               │       │       │   └── test/
│           │               │       │       │       └── TestConsumerConfiguration.java
│           │               │       │       └── provider/
│           │               │       │           ├── DefaultHelloService.java
│           │               │       │           ├── DemoServiceImpl.java
│           │               │       │           ├── HelloServiceImpl.java
│           │               │       │           └── ProviderConfiguration.java
│           │               │       └── filter/
│           │               │           ├── MockDao.java
│           │               │           ├── MockDaoImpl.java
│           │               │           └── MockFilter.java
│           │               ├── echo/
│           │               │   └── EchoServiceTest.java
│           │               ├── filter/
│           │               │   ├── FilterTest.java
│           │               │   ├── LegacyInvocation.java
│           │               │   ├── LegacyInvoker.java
│           │               │   └── MyFilter.java
│           │               ├── generic/
│           │               │   └── GenericServiceTest.java
│           │               ├── metadata/
│           │               │   ├── annotation/
│           │               │   │   └── processing/
│           │               │   │       ├── AbstractAnnotationProcessingTest.java
│           │               │   │       ├── AnnotationProcessingTestProcessor.java
│           │               │   │       ├── CompilerInvocationInterceptor.java
│           │               │   │       ├── builder/
│           │               │   │       │   ├── ArrayTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── CollectionTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── EnumTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── GeneralTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── MapTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── PrimitiveTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── ServiceDefinitionBuilderTest.java
│           │               │   │       │   └── SimpleTypeDefinitionBuilderTest.java
│           │               │   │       ├── model/
│           │               │   │       │   ├── ArrayTypeModel.java
│           │               │   │       │   ├── CollectionTypeModel.java
│           │               │   │       │   ├── Color.java
│           │               │   │       │   ├── MapTypeModel.java
│           │               │   │       │   ├── Model.java
│           │               │   │       │   ├── PrimitiveTypeModel.java
│           │               │   │       │   └── SimpleTypeModel.java
│           │               │   │       └── util/
│           │               │   │           ├── AnnotationUtilsTest.java
│           │               │   │           ├── FieldUtilsTest.java
│           │               │   │           ├── LoggerUtilsTest.java
│           │               │   │           ├── MemberUtilsTest.java
│           │               │   │           ├── MethodUtilsTest.java
│           │               │   │           ├── ServiceAnnotationUtilsTest.java
│           │               │   │           └── TypeUtilsTest.java
│           │               │   ├── rest/
│           │               │   │   ├── DefaultRestService.java
│           │               │   │   ├── RestService.java
│           │               │   │   ├── SpringRestService.java
│           │               │   │   ├── StandardRestService.java
│           │               │   │   └── User.java
│           │               │   └── tools/
│           │               │       ├── Ancestor.java
│           │               │       ├── Compiler.java
│           │               │       ├── CompilerTest.java
│           │               │       ├── DefaultTestService.java
│           │               │       ├── GenericTestService.java
│           │               │       ├── Parent.java
│           │               │       ├── TestProcessor.java
│           │               │       ├── TestService.java
│           │               │       └── TestServiceImpl.java
│           │               ├── rpc/
│           │               │   ├── RpcContextTest.java
│           │               │   ├── cluster/
│           │               │   │   ├── CompatibleRouter.java
│           │               │   │   ├── CompatibleRouter2.java
│           │               │   │   ├── NewRouter.java
│           │               │   │   └── RouterTest.java
│           │               │   ├── filter/
│           │               │   │   └── GenericImplFilterTest.java
│           │               │   └── support/
│           │               │       ├── DemoService.java
│           │               │       ├── Person.java
│           │               │       └── Type.java
│           │               ├── serialization/
│           │               │   ├── MyObjectInput.java
│           │               │   ├── MyObjectOutput.java
│           │               │   ├── MySerialization.java
│           │               │   └── SerializationTest.java
│           │               └── service/
│           │                   ├── ComplexObject.java
│           │                   ├── CustomArgument.java
│           │                   ├── DemoService.java
│           │                   ├── DemoServiceImpl.java
│           │                   ├── MockInvocation.java
│           │                   ├── Person.java
│           │                   └── Type.java
│           └── resources/
│               ├── META-INF/
│               │   ├── config.properties
│               │   ├── default.properties
│               │   ├── dubbb-consumer.properties
│               │   ├── dubbb-provider.properties
│               │   ├── dubbo/
│               │   │   └── internal/
│               │   │       ├── org.apache.dubbo.common.extension.activate.ActivateExt1
│               │   │       ├── org.apache.dubbo.common.extension.support.Filter0
│               │   │       └── org.apache.dubbo.rpc.Filter
│               │   ├── dubbo-consumer.properties
│               │   ├── dubbo-provider.properties
│               │   └── services/
│               │       ├── com.alibaba.dubbo.common.extension.ExtensionFactory
│               │       └── org.apache.dubbo.remoting.Dispatcher
│               ├── definition/
│               │   ├── com.alibaba.dubbo.config.ApplicationConfig
│               │   ├── com.alibaba.dubbo.config.ArgumentConfig
│               │   ├── com.alibaba.dubbo.config.ConsumerConfig
│               │   ├── com.alibaba.dubbo.config.MethodConfig
│               │   ├── com.alibaba.dubbo.config.ModuleConfig
│               │   ├── com.alibaba.dubbo.config.MonitorConfig
│               │   ├── com.alibaba.dubbo.config.ProtocolConfig
│               │   ├── com.alibaba.dubbo.config.ProviderConfig
│               │   ├── com.alibaba.dubbo.config.ReferenceConfig
│               │   ├── com.alibaba.dubbo.config.RegistryConfig
│               │   └── com.alibaba.dubbo.config.ServiceConfig
│               ├── dubbo.properties
│               └── log4j2-test.xml
├── dubbo-config/
│   ├── dubbo-config-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── config/
│   │       │   │                   ├── ConfigInitializer.java
│   │       │   │                   ├── ConfigPostProcessor.java
│   │       │   │                   ├── ConfigScopeModelInitializer.java
│   │       │   │                   ├── DubboShutdownHook.java
│   │       │   │                   ├── ReferenceConfig.java
│   │       │   │                   ├── ServiceConfig.java
│   │       │   │                   ├── ServiceListener.java
│   │       │   │                   ├── bootstrap/
│   │       │   │                   │   ├── BootstrapTakeoverMode.java
│   │       │   │                   │   ├── DubboBootstrap.java
│   │       │   │                   │   ├── DubboBootstrapStartStopListener.java
│   │       │   │                   │   └── builders/
│   │       │   │                   │       ├── AbstractBuilder.java
│   │       │   │                   │       ├── AbstractInterfaceBuilder.java
│   │       │   │                   │       ├── AbstractMethodBuilder.java
│   │       │   │                   │       ├── AbstractReferenceBuilder.java
│   │       │   │                   │       ├── AbstractServiceBuilder.java
│   │       │   │                   │       ├── ApplicationBuilder.java
│   │       │   │                   │       ├── ArgumentBuilder.java
│   │       │   │                   │       ├── ConfigCenterBuilder.java
│   │       │   │                   │       ├── ConsumerBuilder.java
│   │       │   │                   │       ├── InternalServiceConfigBuilder.java
│   │       │   │                   │       ├── MetadataReportBuilder.java
│   │       │   │                   │       ├── MethodBuilder.java
│   │       │   │                   │       ├── MetricsBuilder.java
│   │       │   │                   │       ├── ModuleBuilder.java
│   │       │   │                   │       ├── MonitorBuilder.java
│   │       │   │                   │       ├── ProtocolBuilder.java
│   │       │   │                   │       ├── ProviderBuilder.java
│   │       │   │                   │       ├── ReferenceBuilder.java
│   │       │   │                   │       ├── RegistryBuilder.java
│   │       │   │                   │       ├── ServiceBuilder.java
│   │       │   │                   │       ├── TripleBuilder.java
│   │       │   │                   │       └── package-info.java
│   │       │   │                   ├── deploy/
│   │       │   │                   │   ├── DefaultApplicationDeployer.java
│   │       │   │                   │   ├── DefaultMetricsServiceExporter.java
│   │       │   │                   │   ├── DefaultModuleDeployer.java
│   │       │   │                   │   └── FrameworkModelCleaner.java
│   │       │   │                   ├── invoker/
│   │       │   │                   │   └── DelegateProviderMetaDataInvoker.java
│   │       │   │                   ├── metadata/
│   │       │   │                   │   ├── ConfigurableMetadataServiceExporter.java
│   │       │   │                   │   ├── ExporterDeployListener.java
│   │       │   │                   │   └── MetadataServiceURLParamsMetadataCustomizer.java
│   │       │   │                   └── utils/
│   │       │   │                       ├── CompositeReferenceCache.java
│   │       │   │                       ├── ConfigValidationUtils.java
│   │       │   │                       ├── DefaultConfigValidator.java
│   │       │   │                       └── SimpleReferenceCache.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   ├── org.apache.dubbo.common.deploy.ApplicationDeployListener
│   │       │                   ├── org.apache.dubbo.metrics.service.MetricsServiceExporter
│   │       │                   ├── org.apache.dubbo.registry.client.ServiceInstanceCustomizer
│   │       │                   └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│   │       └── test/
│   │           ├── java/
│   │           │   ├── demo/
│   │           │   │   ├── MultiClassLoaderService.java
│   │           │   │   ├── MultiClassLoaderServiceImpl.java
│   │           │   │   ├── MultiClassLoaderServiceRequest.java
│   │           │   │   └── MultiClassLoaderServiceResult.java
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── config/
│   │           │                   ├── AbstractConfigTest.java
│   │           │                   ├── AbstractMethodConfigTest.java
│   │           │                   ├── AbstractReferenceConfigTest.java
│   │           │                   ├── AbstractServiceConfigTest.java
│   │           │                   ├── ApplicationConfigTest.java
│   │           │                   ├── ArgumentConfigTest.java
│   │           │                   ├── ConfigCenterConfigTest.java
│   │           │                   ├── ConfigScopeModelInitializerTest.java
│   │           │                   ├── ConsumerConfigTest.java
│   │           │                   ├── DubboShutdownHookTest.java
│   │           │                   ├── MetadataReportConfigTest.java
│   │           │                   ├── MethodConfigTest.java
│   │           │                   ├── MetricsConfigTest.java
│   │           │                   ├── ModuleConfigTest.java
│   │           │                   ├── MonitorConfigTest.java
│   │           │                   ├── ProtocolConfigTest.java
│   │           │                   ├── ProviderConfigTest.java
│   │           │                   ├── ReferenceConfigTest.java
│   │           │                   ├── RegistryConfigTest.java
│   │           │                   ├── ServiceConfigTest.java
│   │           │                   ├── SysProps.java
│   │           │                   ├── api/
│   │           │                   │   ├── Box.java
│   │           │                   │   ├── DemoException.java
│   │           │                   │   ├── DemoService.java
│   │           │                   │   ├── Greeting.java
│   │           │                   │   └── User.java
│   │           │                   ├── bootstrap/
│   │           │                   │   ├── DubboBootstrapTest.java
│   │           │                   │   ├── MultiInstanceTest.java
│   │           │                   │   └── builders/
│   │           │                   │       ├── AbstractBuilderTest.java
│   │           │                   │       ├── AbstractInterfaceBuilderTest.java
│   │           │                   │       ├── AbstractMethodBuilderTest.java
│   │           │                   │       ├── AbstractReferenceBuilderTest.java
│   │           │                   │       ├── AbstractServiceBuilderTest.java
│   │           │                   │       ├── ApplicationBuilderTest.java
│   │           │                   │       ├── ArgumentBuilderTest.java
│   │           │                   │       ├── ConfigCenterBuilderTest.java
│   │           │                   │       ├── ConsumerBuilderTest.java
│   │           │                   │       ├── MetadataReportBuilderTest.java
│   │           │                   │       ├── MethodBuilderTest.java
│   │           │                   │       ├── MetricsBuilderTest.java
│   │           │                   │       ├── ModuleBuilderTest.java
│   │           │                   │       ├── MonitorBuilderTest.java
│   │           │                   │       ├── ProtocolBuilderTest.java
│   │           │                   │       ├── ProviderBuilderTest.java
│   │           │                   │       ├── ReferenceBuilderTest.java
│   │           │                   │       ├── RegistryBuilderTest.java
│   │           │                   │       ├── ServiceBuilderTest.java
│   │           │                   │       └── TripleBuilderTest.java
│   │           │                   ├── cache/
│   │           │                   │   ├── CacheService.java
│   │           │                   │   ├── CacheServiceImpl.java
│   │           │                   │   └── CacheTest.java
│   │           │                   ├── common/
│   │           │                   │   └── Person.java
│   │           │                   ├── deploy/
│   │           │                   │   └── DefaultApplicationDeployerTest.java
│   │           │                   ├── integration/
│   │           │                   │   ├── AbstractRegistryCenterExporterListener.java
│   │           │                   │   ├── AbstractRegistryCenterServiceListener.java
│   │           │                   │   ├── Constants.java
│   │           │                   │   ├── IntegrationTest.java
│   │           │                   │   ├── multiple/
│   │           │                   │   │   ├── AbstractStorage.java
│   │           │                   │   │   ├── Storage.java
│   │           │                   │   │   ├── exportmetadata/
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataExporterListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataIntegrationTest.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataService.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataServiceImpl.java
│   │           │                   │   │   │   └── MultipleRegistryCenterExportMetadataServiceListener.java
│   │           │                   │   │   ├── exportprovider/
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderExporterListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderFilter.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderIntegrationTest.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderRegistryProtocolListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderService.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderServiceImpl.java
│   │           │                   │   │   │   └── MultipleRegistryCenterExportProviderServiceListener.java
│   │           │                   │   │   ├── injvm/
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmExporterListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmFilter.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmIntegrationTest.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmService.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmServiceImpl.java
│   │           │                   │   │   │   └── MultipleRegistryCenterInjvmServiceListener.java
│   │           │                   │   │   ├── package-info.java
│   │           │                   │   │   └── servicediscoveryregistry/
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryService.java
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryServiceImpl.java
│   │           │                   │   │       ├── ServiceDiscoveryRegistryInfoWrapper.java
│   │           │                   │   │       └── ServiceDiscoveryRegistryStorage.java
│   │           │                   │   └── single/
│   │           │                   │       ├── SingleRegistryCenterDubboProtocolIntegrationTest.java
│   │           │                   │       ├── SingleRegistryCenterExportedServiceListener.java
│   │           │                   │       ├── SingleRegistryCenterIntegrationService.java
│   │           │                   │       ├── SingleRegistryCenterIntegrationServiceImpl.java
│   │           │                   │       ├── exportmetadata/
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataExporterListener.java
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataIntegrationTest.java
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataService.java
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataServiceImpl.java
│   │           │                   │       │   └── SingleRegistryCenterExportMetadataServiceListener.java
│   │           │                   │       ├── exportprovider/
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderExporterListener.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderFilter.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderIntegrationTest.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderRegistryProtocolListener.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderService.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderServiceImpl.java
│   │           │                   │       │   └── SingleRegistryCenterExportProviderServiceListener.java
│   │           │                   │       ├── injvm/
│   │           │                   │       │   ├── SingleRegistryCenterInjvmExporterListener.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmFilter.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmIntegrationTest.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmService.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmServiceImpl.java
│   │           │                   │       │   └── SingleRegistryCenterInjvmServiceListener.java
│   │           │                   │       └── package-info.java
│   │           │                   ├── invoker/
│   │           │                   │   └── DelegateProviderMetaDataInvokerTest.java
│   │           │                   ├── metadata/
│   │           │                   │   └── MetadataServiceURLParamsMetadataCustomizerTest.java
│   │           │                   ├── mock/
│   │           │                   │   ├── GreetingLocal1.java
│   │           │                   │   ├── GreetingLocal2.java
│   │           │                   │   ├── GreetingLocal3.java
│   │           │                   │   ├── MockCluster.java
│   │           │                   │   ├── MockCodec.java
│   │           │                   │   ├── MockDispatcher.java
│   │           │                   │   ├── MockExchanger.java
│   │           │                   │   ├── MockExporterListener.java
│   │           │                   │   ├── MockFilter.java
│   │           │                   │   ├── MockInvokerListener.java
│   │           │                   │   ├── MockLoadBalance.java
│   │           │                   │   ├── MockProtocol.java
│   │           │                   │   ├── MockProtocol2.java
│   │           │                   │   ├── MockProxyFactory.java
│   │           │                   │   ├── MockRegistry.java
│   │           │                   │   ├── MockRegistryFactory.java
│   │           │                   │   ├── MockRegistryFactory2.java
│   │           │                   │   ├── MockServiceDiscovery.java
│   │           │                   │   ├── MockServiceListener.java
│   │           │                   │   ├── MockStatusChecker.java
│   │           │                   │   ├── MockTelnetHandler.java
│   │           │                   │   ├── MockThreadPool.java
│   │           │                   │   ├── MockTransporter.java
│   │           │                   │   └── TestProxyFactory.java
│   │           │                   ├── nested/
│   │           │                   │   ├── AggregationConfigTest.java
│   │           │                   │   └── PrometheusConfigTest.java
│   │           │                   ├── provider/
│   │           │                   │   └── impl/
│   │           │                   │       └── DemoServiceImpl.java
│   │           │                   ├── url/
│   │           │                   │   ├── ExporterSideConfigUrlTest.java
│   │           │                   │   ├── InvokerSideConfigUrlTest.java
│   │           │                   │   ├── RpcConfigGetSetProxy.java
│   │           │                   │   └── UrlTestBase.java
│   │           │                   └── utils/
│   │           │                       ├── ConfigValidationUtilsTest.java
│   │           │                       ├── MockReferenceConfig.java
│   │           │                       ├── ReferenceCacheTest.java
│   │           │                       ├── TestPreferSerializationProvider.java
│   │           │                       ├── XxxMockReferenceConfig.java
│   │           │                       └── service/
│   │           │                           ├── FooService.java
│   │           │                           ├── FooServiceImpl.java
│   │           │                           ├── XxxService.java
│   │           │                           └── XxxServiceImpl.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       ├── org.apache.dubbo.common.status.StatusChecker
│   │               │       ├── org.apache.dubbo.common.threadpool.ThreadPool
│   │               │       ├── org.apache.dubbo.config.ServiceListener
│   │               │       ├── org.apache.dubbo.registry.RegistryFactory
│   │               │       ├── org.apache.dubbo.registry.RegistryServiceListener
│   │               │       ├── org.apache.dubbo.registry.integration.RegistryProtocolListener
│   │               │       ├── org.apache.dubbo.remoting.Codec
│   │               │       ├── org.apache.dubbo.remoting.Dispatcher
│   │               │       ├── org.apache.dubbo.remoting.Transporter
│   │               │       ├── org.apache.dubbo.remoting.exchange.Exchanger
│   │               │       ├── org.apache.dubbo.remoting.telnet.TelnetHandler
│   │               │       ├── org.apache.dubbo.rpc.ExporterListener
│   │               │       ├── org.apache.dubbo.rpc.Filter
│   │               │       ├── org.apache.dubbo.rpc.InvokerListener
│   │               │       ├── org.apache.dubbo.rpc.Protocol
│   │               │       ├── org.apache.dubbo.rpc.ProxyFactory
│   │               │       ├── org.apache.dubbo.rpc.cluster.Cluster
│   │               │       └── org.apache.dubbo.rpc.cluster.LoadBalance
│   │               ├── dubbo.properties
│   │               └── security/
│   │                   └── serialize.allowlist
│   ├── dubbo-config-spring/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── config/
│   │       │   │                   └── spring/
│   │       │   │                       ├── ConfigCenterBean.java
│   │       │   │                       ├── Constants.java
│   │       │   │                       ├── ReferenceBean.java
│   │       │   │                       ├── ServiceBean.java
│   │       │   │                       ├── SpringScopeModelInitializer.java
│   │       │   │                       ├── aot/
│   │       │   │                       │   └── AotWithSpringDetector.java
│   │       │   │                       ├── beans/
│   │       │   │                       │   └── factory/
│   │       │   │                       │       ├── annotation/
│   │       │   │                       │       │   ├── AbstractAnnotationBeanPostProcessor.java
│   │       │   │                       │       │   ├── AnnotationPropertyValuesAdapter.java
│   │       │   │                       │       │   ├── DubboConfigAliasPostProcessor.java
│   │       │   │                       │       │   ├── ReferenceAnnotationBeanPostProcessor.java
│   │       │   │                       │       │   ├── ServiceAnnotationPostProcessor.java
│   │       │   │                       │       │   ├── ServiceBeanNameBuilder.java
│   │       │   │                       │       │   └── ServicePackagesHolder.java
│   │       │   │                       │       └── config/
│   │       │   │                       │           ├── ConfigurableSourceBeanMetadataElement.java
│   │       │   │                       │           └── DubboConfigDefaultPropertyValueBeanPostProcessor.java
│   │       │   │                       ├── context/
│   │       │   │                       │   ├── DubboBootstrapApplicationListener.java
│   │       │   │                       │   ├── DubboBootstrapStartStopListenerSpringAdapter.java
│   │       │   │                       │   ├── DubboConfigApplicationListener.java
│   │       │   │                       │   ├── DubboConfigBeanInitializer.java
│   │       │   │                       │   ├── DubboContextPostProcessor.java
│   │       │   │                       │   ├── DubboDeployApplicationListener.java
│   │       │   │                       │   ├── DubboInfraBeanRegisterPostProcessor.java
│   │       │   │                       │   ├── DubboSpringInitContext.java
│   │       │   │                       │   ├── DubboSpringInitCustomizer.java
│   │       │   │                       │   ├── DubboSpringInitCustomizerHolder.java
│   │       │   │                       │   ├── DubboSpringInitializer.java
│   │       │   │                       │   ├── annotation/
│   │       │   │                       │   │   ├── ConfigurationBeanBindingPostProcessor.java
│   │       │   │                       │   │   ├── ConfigurationBeanBindingRegistrar.java
│   │       │   │                       │   │   ├── ConfigurationBeanBindingsRegister.java
│   │       │   │                       │   │   ├── DubboClassPathBeanDefinitionScanner.java
│   │       │   │                       │   │   ├── DubboComponentScan.java
│   │       │   │                       │   │   ├── DubboComponentScanRegistrar.java
│   │       │   │                       │   │   ├── DubboConfigConfiguration.java
│   │       │   │                       │   │   ├── DubboConfigConfigurationRegistrar.java
│   │       │   │                       │   │   ├── EnableConfigurationBeanBinding.java
│   │       │   │                       │   │   ├── EnableConfigurationBeanBindings.java
│   │       │   │                       │   │   ├── EnableDubbo.java
│   │       │   │                       │   │   └── EnableDubboConfig.java
│   │       │   │                       │   ├── config/
│   │       │   │                       │   │   ├── ConfigurationBeanBinder.java
│   │       │   │                       │   │   ├── ConfigurationBeanCustomizer.java
│   │       │   │                       │   │   ├── DefaultConfigurationBeanBinder.java
│   │       │   │                       │   │   ├── DubboConfigBeanCustomizer.java
│   │       │   │                       │   │   └── NamePropertyDefaultValueDubboConfigBeanCustomizer.java
│   │       │   │                       │   ├── event/
│   │       │   │                       │   │   ├── DubboApplicationStateEvent.java
│   │       │   │                       │   │   ├── DubboBootstrapStatedEvent.java
│   │       │   │                       │   │   ├── DubboBootstrapStopedEvent.java
│   │       │   │                       │   │   ├── DubboConfigInitEvent.java
│   │       │   │                       │   │   ├── DubboModuleStateEvent.java
│   │       │   │                       │   │   └── ServiceBeanExportedEvent.java
│   │       │   │                       │   └── properties/
│   │       │   │                       │       ├── AbstractDubboConfigBinder.java
│   │       │   │                       │       ├── DefaultDubboConfigBinder.java
│   │       │   │                       │       └── DubboConfigBinder.java
│   │       │   │                       ├── extension/
│   │       │   │                       │   └── SpringExtensionInjector.java
│   │       │   │                       ├── reference/
│   │       │   │                       │   ├── ReferenceAttributes.java
│   │       │   │                       │   ├── ReferenceBeanBuilder.java
│   │       │   │                       │   ├── ReferenceBeanManager.java
│   │       │   │                       │   ├── ReferenceBeanSupport.java
│   │       │   │                       │   └── ReferenceCreator.java
│   │       │   │                       ├── schema/
│   │       │   │                       │   ├── AnnotationBeanDefinitionParser.java
│   │       │   │                       │   ├── DubboBeanDefinitionParser.java
│   │       │   │                       │   └── DubboNamespaceHandler.java
│   │       │   │                       ├── status/
│   │       │   │                       │   ├── DataSourceStatusChecker.java
│   │       │   │                       │   └── SpringStatusChecker.java
│   │       │   │                       └── util/
│   │       │   │                           ├── AnnotatedBeanDefinitionRegistryUtils.java
│   │       │   │                           ├── AnnotationUtils.java
│   │       │   │                           ├── BeanRegistrar.java
│   │       │   │                           ├── DubboAnnotationUtils.java
│   │       │   │                           ├── DubboBeanUtils.java
│   │       │   │                           ├── EnvironmentUtils.java
│   │       │   │                           ├── GenericBeanPostProcessorAdapter.java
│   │       │   │                           ├── LazyTargetInvocationHandler.java
│   │       │   │                           ├── LazyTargetSource.java
│   │       │   │                           ├── LockUtils.java
│   │       │   │                           ├── ObjectUtils.java
│   │       │   │                           ├── PropertySourcesUtils.java
│   │       │   │                           ├── SpringCompatUtils.java
│   │       │   │                           ├── SpringParameterNameReader.java
│   │       │   │                           └── WrapperUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── compat/
│   │       │           │   └── dubbo.xsd
│   │       │           ├── dubbo/
│   │       │           │   └── internal/
│   │       │           │       ├── org.apache.dubbo.common.extension.ExtensionInjector
│   │       │           │       ├── org.apache.dubbo.common.status.StatusChecker
│   │       │           │       ├── org.apache.dubbo.common.utils.ParameterNameReader
│   │       │           │       ├── org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener
│   │       │           │       └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│   │       │           ├── dubbo.xsd
│   │       │           ├── spring.handlers
│   │       │           └── spring.schemas
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── config/
│   │           │                   └── spring/
│   │           │                       ├── AbstractRegistryService.java
│   │           │                       ├── ConfigTest.java
│   │           │                       ├── ControllerServiceConfigTest.java
│   │           │                       ├── DubboStateListener.java
│   │           │                       ├── EmbeddedZooKeeper.java
│   │           │                       ├── GenericDemoService.java
│   │           │                       ├── JavaConfigBeanTest.java
│   │           │                       ├── ServiceBeanTest.java
│   │           │                       ├── SimpleRegistryExporter.java
│   │           │                       ├── SimpleRegistryService.java
│   │           │                       ├── SysProps.java
│   │           │                       ├── action/
│   │           │                       │   ├── DemoActionByAnnotation.java
│   │           │                       │   ├── DemoActionBySetter.java
│   │           │                       │   └── DemoInterceptor.java
│   │           │                       ├── annotation/
│   │           │                       │   ├── consumer/
│   │           │                       │   │   └── AnnotationAction.java
│   │           │                       │   ├── merged/
│   │           │                       │   │   ├── MergedReference.java
│   │           │                       │   │   └── MergedService.java
│   │           │                       │   └── provider/
│   │           │                       │       └── AnnotationServiceImpl.java
│   │           │                       ├── api/
│   │           │                       │   ├── Box.java
│   │           │                       │   ├── DemoService.java
│   │           │                       │   ├── DemoServiceSon.java
│   │           │                       │   ├── HelloService.java
│   │           │                       │   ├── MethodCallback.java
│   │           │                       │   ├── ProvidedByDemoService1.java
│   │           │                       │   ├── ProvidedByDemoService2.java
│   │           │                       │   ├── ProvidedByDemoService3.java
│   │           │                       │   └── SpringControllerService.java
│   │           │                       ├── beans/
│   │           │                       │   └── factory/
│   │           │                       │       ├── annotation/
│   │           │                       │       │   ├── DubboConfigAliasPostProcessorTest.java
│   │           │                       │       │   ├── MergedAnnotationTest.java
│   │           │                       │       │   ├── MethodConfigCallbackTest.java
│   │           │                       │       │   ├── ParameterConvertTest.java
│   │           │                       │       │   ├── ReferenceAnnotationBeanPostProcessorTest.java
│   │           │                       │       │   ├── ReferenceCreatorTest.java
│   │           │                       │       │   ├── ServiceAnnotationPostProcessorTest.java
│   │           │                       │       │   ├── ServiceAnnotationTestConfiguration.java
│   │           │                       │       │   └── ServiceBeanNameBuilderTest.java
│   │           │                       │       └── config/
│   │           │                       │           ├── DubboConfigDefaultPropertyValueBeanPostProcessorTest.java
│   │           │                       │           ├── MultipleServicesWithMethodConfigsTest.java
│   │           │                       │           ├── YamlPropertySourceFactory.java
│   │           │                       │           └── YamlPropertySourceFactoryTest.java
│   │           │                       ├── boot/
│   │           │                       │   ├── conditional1/
│   │           │                       │   │   ├── XmlReferenceBeanConditionalTest.java
│   │           │                       │   │   └── consumer/
│   │           │                       │   │       └── dubbo-consumer.xml
│   │           │                       │   ├── conditional2/
│   │           │                       │   │   └── JavaConfigAnnotationReferenceBeanConditionalTest.java
│   │           │                       │   ├── conditional3/
│   │           │                       │   │   └── JavaConfigRawReferenceBeanConditionalTest.java
│   │           │                       │   ├── conditional4/
│   │           │                       │   │   └── JavaConfigReferenceBeanConditionalTest4.java
│   │           │                       │   ├── configprops/
│   │           │                       │   │   ├── SpringBootConfigPropsTest.java
│   │           │                       │   │   └── SpringBootMultipleConfigPropsTest.java
│   │           │                       │   ├── importxml/
│   │           │                       │   │   ├── SpringBootImportDubboXmlTest.java
│   │           │                       │   │   └── consumer/
│   │           │                       │   │       └── dubbo-consumer.xml
│   │           │                       │   └── importxml2/
│   │           │                       │       ├── HelloServiceImpl.java
│   │           │                       │       ├── SpringBootImportAndScanTest.java
│   │           │                       │       └── dubbo-provider.xml
│   │           │                       ├── context/
│   │           │                       │   ├── KeepRunningOnSpringClosedTest.java
│   │           │                       │   ├── annotation/
│   │           │                       │   │   ├── DubboComponentScanRegistrarTest.java
│   │           │                       │   │   ├── DubboConfigConfigurationTest.java
│   │           │                       │   │   ├── EnableDubboConfigTest.java
│   │           │                       │   │   ├── EnableDubboTest.java
│   │           │                       │   │   ├── consumer/
│   │           │                       │   │   │   ├── ConsumerConfiguration.java
│   │           │                       │   │   │   └── test/
│   │           │                       │   │   │       └── TestConsumerConfiguration.java
│   │           │                       │   │   └── provider/
│   │           │                       │   │       ├── DefaultHelloService.java
│   │           │                       │   │       ├── DemoServiceImpl.java
│   │           │                       │   │       ├── HelloServiceImpl.java
│   │           │                       │   │       └── ProviderConfiguration.java
│   │           │                       │   ├── customize/
│   │           │                       │   │   ├── DubboSpringInitCustomizerTest.java
│   │           │                       │   │   ├── dubbo-provider-v1.xml
│   │           │                       │   │   └── dubbo-provider-v2.xml
│   │           │                       │   └── properties/
│   │           │                       │       └── DefaultDubboConfigBinderTest.java
│   │           │                       ├── extension/
│   │           │                       │   ├── BeanForContext2.java
│   │           │                       │   └── SpringExtensionInjectorTest.java
│   │           │                       ├── filter/
│   │           │                       │   ├── MockDao.java
│   │           │                       │   ├── MockDaoImpl.java
│   │           │                       │   └── MockFilter.java
│   │           │                       ├── impl/
│   │           │                       │   ├── DemoServiceImpl.java
│   │           │                       │   ├── DemoServiceImpl_LongWaiting.java
│   │           │                       │   ├── DemoServiceSonImpl.java
│   │           │                       │   ├── HelloServiceImpl.java
│   │           │                       │   ├── MethodCallbackImpl.java
│   │           │                       │   ├── NotifyService.java
│   │           │                       │   ├── UnserializableBox.java
│   │           │                       │   └── UnserializableBoxDemoServiceImpl.java
│   │           │                       ├── isolation/
│   │           │                       │   ├── api/
│   │           │                       │   │   └── ApiIsolationTest.java
│   │           │                       │   └── spring/
│   │           │                       │       ├── BaseTest.java
│   │           │                       │       ├── annotation/
│   │           │                       │       │   ├── AnnotationIsolationTest.java
│   │           │                       │       │   ├── consumer/
│   │           │                       │       │   │   ├── dubbo/
│   │           │                       │       │   │   │   ├── DemoServiceV1.java
│   │           │                       │       │   │   │   ├── HelloServiceV2.java
│   │           │                       │       │   │   │   └── HelloServiceV3.java
│   │           │                       │       │   │   └── tri/
│   │           │                       │       │   │       ├── DemoServiceV1.java
│   │           │                       │       │   │       ├── HelloServiceV2.java
│   │           │                       │       │   │       └── HelloServiceV3.java
│   │           │                       │       │   └── provider/
│   │           │                       │       │       ├── DemoServiceImplV1.java
│   │           │                       │       │       ├── HelloServiceImplV2.java
│   │           │                       │       │       └── HelloServiceImplV3.java
│   │           │                       │       ├── support/
│   │           │                       │       │   ├── DemoServiceExecutor.java
│   │           │                       │       │   └── HelloServiceExecutor.java
│   │           │                       │       └── xml/
│   │           │                       │           └── XmlIsolationTest.java
│   │           │                       ├── issues/
│   │           │                       │   ├── issue6000/
│   │           │                       │   │   ├── Issue6000Test.java
│   │           │                       │   │   ├── adubbo/
│   │           │                       │   │   │   └── HelloDubbo.java
│   │           │                       │   │   └── dubbo/
│   │           │                       │   │       └── MyReferenceConfig.java
│   │           │                       │   ├── issue6252/
│   │           │                       │   │   └── Issue6252Test.java
│   │           │                       │   ├── issue7003/
│   │           │                       │   │   └── Issue7003Test.java
│   │           │                       │   ├── issue9172/
│   │           │                       │   │   └── MultipleConsumerAndProviderTest.java
│   │           │                       │   └── issue9207/
│   │           │                       │       └── ConfigCenterBeanTest.java
│   │           │                       ├── metrics/
│   │           │                       │   └── SpringBootConfigMetricsTest.java
│   │           │                       ├── propertyconfigurer/
│   │           │                       │   ├── consumer/
│   │           │                       │   │   ├── DemoBeanFactoryPostProcessor.java
│   │           │                       │   │   ├── PropertyConfigurerTest.java
│   │           │                       │   │   ├── app.properties
│   │           │                       │   │   └── dubbo-consumer.xml
│   │           │                       │   ├── consumer2/
│   │           │                       │   │   ├── PropertySourcesConfigurerTest.java
│   │           │                       │   │   ├── app.properties
│   │           │                       │   │   └── dubbo-consumer.xml
│   │           │                       │   ├── consumer3/
│   │           │                       │   │   ├── PropertySourcesInJavaConfigTest.java
│   │           │                       │   │   ├── app.properties
│   │           │                       │   │   └── dubbo-consumer.xml
│   │           │                       │   └── provider/
│   │           │                       │       ├── HelloServiceImpl.java
│   │           │                       │       ├── app.properties
│   │           │                       │       └── dubbo-provider.xml
│   │           │                       ├── reference/
│   │           │                       │   ├── DubboConfigBeanInitializerTest.java
│   │           │                       │   ├── ReferenceKeyTest.java
│   │           │                       │   ├── javaconfig/
│   │           │                       │   │   ├── JavaConfigReferenceBeanTest.java
│   │           │                       │   │   └── consumer.properties
│   │           │                       │   ├── localcall/
│   │           │                       │   │   ├── LocalCallTest.java
│   │           │                       │   │   ├── LocalCallTest2.java
│   │           │                       │   │   ├── LocalHelloServiceImpl.java
│   │           │                       │   │   ├── local-call-consumer.xml
│   │           │                       │   │   └── local-call-provider.xml
│   │           │                       │   ├── localcalla/
│   │           │                       │   │   ├── LocalCallReferenceAnnotationTest.java
│   │           │                       │   │   └── local-call-config.properties
│   │           │                       │   ├── localcallam/
│   │           │                       │   │   ├── LocalCallMultipleReferenceAnnotationsTest.java
│   │           │                       │   │   └── local-call-config.properties
│   │           │                       │   ├── localcallmix/
│   │           │                       │   │   ├── LocalCallReferenceMixTest.java
│   │           │                       │   │   ├── local-call-config.properties
│   │           │                       │   │   └── local-call-consumer.xml
│   │           │                       │   └── registryNA/
│   │           │                       │       ├── consumer/
│   │           │                       │       │   ├── DubboXmlConsumerTest.java
│   │           │                       │       │   ├── dubbo-consumer.xml
│   │           │                       │       │   └── dubbo-registryNA-consumer.xml
│   │           │                       │       └── provider/
│   │           │                       │           ├── DubboXmlProviderTest.java
│   │           │                       │           └── dubbo-provider.xml
│   │           │                       ├── registry/
│   │           │                       │   ├── MockRegistry.java
│   │           │                       │   ├── MockRegistryFactory.java
│   │           │                       │   ├── MockServiceDiscovery.java
│   │           │                       │   └── nacos/
│   │           │                       │       ├── demo/
│   │           │                       │       │   ├── consumer/
│   │           │                       │       │   │   ├── DemoServiceConsumerBootstrap.java
│   │           │                       │       │   │   └── DemoServiceConsumerXmlBootstrap.java
│   │           │                       │       │   ├── provider/
│   │           │                       │       │   │   ├── DemoServiceProviderBootstrap.java
│   │           │                       │       │   │   └── DemoServiceProviderXmlBootstrap.java
│   │           │                       │       │   └── service/
│   │           │                       │       │       ├── DefaultService.java
│   │           │                       │       │       └── DemoService.java
│   │           │                       │       └── nacos/
│   │           │                       │           └── NacosServiceNameTest.java
│   │           │                       ├── samples/
│   │           │                       │   ├── ZookeeperDubboSpringConsumerBootstrap.java
│   │           │                       │   ├── ZookeeperDubboSpringConsumerXmlBootstrap.java
│   │           │                       │   └── ZookeeperDubboSpringProviderBootstrap.java
│   │           │                       ├── schema/
│   │           │                       │   ├── DubboNamespaceHandlerTest.java
│   │           │                       │   ├── GenericServiceTest.java
│   │           │                       │   ├── GenericServiceWithoutInterfaceTest.java
│   │           │                       │   └── MyGenericService.java
│   │           │                       ├── status/
│   │           │                       │   ├── DataSourceStatusCheckerTest.java
│   │           │                       │   └── SpringStatusCheckerTest.java
│   │           │                       └── util/
│   │           │                           └── EnvironmentUtilsTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   ├── config.properties
│   │               │   ├── default.properties
│   │               │   ├── demo-provider.properties
│   │               │   ├── dubbb-consumer.properties
│   │               │   ├── dubbb-provider.properties
│   │               │   ├── dubbo/
│   │               │   │   └── internal/
│   │               │   │       ├── org.apache.dubbo.common.metrics.service.MetricsService
│   │               │   │       ├── org.apache.dubbo.common.metrics.service.MetricsServiceExporter
│   │               │   │       ├── org.apache.dubbo.registry.RegistryFactory
│   │               │   │       └── org.apache.dubbo.rpc.Filter
│   │               │   ├── dubbo-consumer.properties
│   │               │   ├── dubbo-provider.properties
│   │               │   ├── dubbo.yml
│   │               │   ├── init-reference.properties
│   │               │   ├── isolation/
│   │               │   │   ├── dubbo-consumer.xml
│   │               │   │   └── dubbo-provider.xml
│   │               │   ├── issues/
│   │               │   │   ├── issue6000/
│   │               │   │   │   └── config.properties
│   │               │   │   ├── issue6252/
│   │               │   │   │   └── config.properties
│   │               │   │   ├── issue7003/
│   │               │   │   │   └── config.properties
│   │               │   │   ├── issue9172/
│   │               │   │   │   ├── consumer.properties
│   │               │   │   │   └── provider.properties
│   │               │   │   └── issue9207/
│   │               │   │       └── dubbo-properties-in-configcenter.properties
│   │               │   ├── service-introspection/
│   │               │   │   ├── zookeeper-dubbb-consumer.properties
│   │               │   │   ├── zookeeper-dubbb-provider.properties
│   │               │   │   └── zookeeper-dubbo-consumer.xml
│   │               │   └── spring/
│   │               │       ├── dubbo-annotation-consumer.xml
│   │               │       ├── dubbo-annotation-provider.xml
│   │               │       ├── dubbo-consumer.xml
│   │               │       ├── dubbo-generic-consumer-without-interface.xml
│   │               │       ├── dubbo-generic-consumer.xml
│   │               │       ├── dubbo-nacos-consumer-context.xml
│   │               │       ├── dubbo-nacos-provider-context.xml
│   │               │       ├── dubbo-provider.xml
│   │               │       └── multiple-services-with-methods.xml
│   │               ├── applicationContext.xml
│   │               ├── dubbo-binder.properties
│   │               ├── dubbo.properties
│   │               ├── nacos-consumer-config.properties
│   │               ├── nacos-provider-config.properties
│   │               ├── org/
│   │               │   └── apache/
│   │               │       └── dubbo/
│   │               │           └── config/
│   │               │               └── spring/
│   │               │                   ├── annotation-consumer.xml
│   │               │                   ├── annotation-provider.xml
│   │               │                   ├── annotation-version-consumer.xml
│   │               │                   ├── annotation-version-provider.xml
│   │               │                   ├── aop-autowire-byname.xml
│   │               │                   ├── aop-autowire-bytype.xml
│   │               │                   ├── consumer-notification.xml
│   │               │                   ├── customize-parameter.xml
│   │               │                   ├── delay-fixed-time.xml
│   │               │                   ├── delay-on-initialized.xml
│   │               │                   ├── demo-provider-UnserializableBox.xml
│   │               │                   ├── demo-provider-long-waiting.xml
│   │               │                   ├── demo-provider-no-methods-interface.xml
│   │               │                   ├── demo-provider-properties.xml
│   │               │                   ├── demo-provider.xml
│   │               │                   ├── generic-export.xml
│   │               │                   ├── init-reference-getUrls.xml
│   │               │                   ├── init-reference-keys.xml
│   │               │                   ├── init-reference-properties.xml
│   │               │                   ├── init-reference-retry-false.xml
│   │               │                   ├── init-reference.xml
│   │               │                   ├── metrics-aggregation.xml
│   │               │                   ├── metrics-prometheus.xml
│   │               │                   ├── multi-monitor.xml
│   │               │                   ├── multi-protocol-default.xml
│   │               │                   ├── multi-protocol-error.xml
│   │               │                   ├── multi-protocol-register.xml
│   │               │                   ├── multi-protocol.xml
│   │               │                   ├── multi-registry.xml
│   │               │                   ├── override-multi-protocol.xml
│   │               │                   ├── override-protocol.xml
│   │               │                   ├── provider-multi.xml
│   │               │                   ├── provider-nested-service.xml
│   │               │                   ├── provider-with-module.xml
│   │               │                   ├── provider-with-monitor.xml
│   │               │                   ├── service-class.xml
│   │               │                   ├── spring-extension-inject.xml
│   │               │                   ├── system-properties-override-default.xml
│   │               │                   ├── system-properties-override.xml
│   │               │                   └── xml-override-properties.xml
│   │               └── webapps/
│   │                   ├── test/
│   │                   │   └── WEB-INF/
│   │                   │       └── web.xml
│   │                   ├── test2/
│   │                   │   └── WEB-INF/
│   │                   │       └── web.xml
│   │                   └── test3/
│   │                       └── WEB-INF/
│   │                           └── web.xml
│   ├── dubbo-config-spring6/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── dubbo/
│   │       │                   └── config/
│   │       │                       └── spring6/
│   │       │                           ├── beans/
│   │       │                           │   └── factory/
│   │       │                           │       ├── annotation/
│   │       │                           │       │   ├── ReferenceAnnotationWithAotBeanPostProcessor.java
│   │       │                           │       │   └── ServiceAnnotationWithAotPostProcessor.java
│   │       │                           │       └── aot/
│   │       │                           │           ├── AutowiredElementResolver.java
│   │       │                           │           ├── ReferencedFieldValueResolver.java
│   │       │                           │           └── ReferencedMethodArgumentsResolver.java
│   │       │                           ├── context/
│   │       │                           │   └── DubboInfraBeanRegisterPostProcessor.java
│   │       │                           └── utils/
│   │       │                               └── AotUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── dubbo/
│   │                           └── config/
│   │                               └── spring6/
│   │                                   └── utils/
│   │                                       ├── AotUtilsTest.java
│   │                                       ├── CircularDependencyDemoService.java
│   │                                       ├── DemoA.java
│   │                                       ├── DemoB.java
│   │                                       ├── DemoService.java
│   │                                       ├── HelloRequest.java
│   │                                       ├── HelloRequestSuper.java
│   │                                       ├── HelloResponse.java
│   │                                       ├── Person.java
│   │                                       └── SexEnum.java
│   └── pom.xml
├── dubbo-configcenter/
│   ├── dubbo-configcenter-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── configcenter/
│   │       │   │                   └── support/
│   │       │   │                       └── apollo/
│   │       │   │                           ├── ApolloDynamicConfiguration.java
│   │       │   │                           └── ApolloDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── configcenter/
│   │           │                   └── support/
│   │           │                       └── apollo/
│   │           │                           ├── ApolloDynamicConfigurationTest.java
│   │           │                           └── EmbeddedApolloJunit5.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── app.properties
│   │               ├── log4j2-test.xml
│   │               └── mockdata-dubbo.properties
│   ├── dubbo-configcenter-file/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── common/
│   │       │   │                   └── config/
│   │       │   │                       └── configcenter/
│   │       │   │                           └── file/
│   │       │   │                               ├── FileSystemDynamicConfiguration.java
│   │       │   │                               └── FileSystemDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── common/
│   │           │                   └── config/
│   │           │                       └── configcenter/
│   │           │                           └── file/
│   │           │                               ├── FileSystemDynamicConfigurationFactoryTest.java
│   │           │                               └── FileSystemDynamicConfigurationTest.java
│   │           └── resources/
│   │               └── log4j2-test.xml
│   ├── dubbo-configcenter-nacos/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── configcenter/
│   │       │   │                   └── support/
│   │       │   │                       └── nacos/
│   │       │   │                           ├── NacosConfigServiceWrapper.java
│   │       │   │                           ├── NacosDynamicConfiguration.java
│   │       │   │                           └── NacosDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── configcenter/
│   │           │                   └── support/
│   │           │                       └── nacos/
│   │           │                           ├── MockConfigService.java
│   │           │                           ├── NacosDynamicConfigurationTest.java
│   │           │                           └── RetryTest.java
│   │           └── resources/
│   │               └── log4j2-test.xml
│   ├── dubbo-configcenter-zookeeper/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── configcenter/
│   │       │   │                   └── support/
│   │       │   │                       └── zookeeper/
│   │       │   │                           ├── CacheListener.java
│   │       │   │                           ├── ZookeeperDataListener.java
│   │       │   │                           ├── ZookeeperDynamicConfiguration.java
│   │       │   │                           └── ZookeeperDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── dubbo/
│   │                           └── configcenter/
│   │                               └── support/
│   │                                   └── zookeeper/
│   │                                       └── ZookeeperDynamicConfigurationTest.java
│   └── pom.xml
├── dubbo-demo/
│   ├── README.md
│   ├── dubbo-demo-api/
│   │   ├── dubbo-demo-api-consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── demo/
│   │   │           │                   └── consumer/
│   │   │           │                       └── Application.java
│   │   │           └── resources/
│   │   │               └── log4j2.xml
│   │   ├── dubbo-demo-api-interface/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── dubbo/
│   │   │                           └── api/
│   │   │                               └── demo/
│   │   │                                   └── DemoService.java
│   │   ├── dubbo-demo-api-provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── demo/
│   │   │           │                   └── provider/
│   │   │           │                       ├── Application.java
│   │   │           │                       └── DemoServiceImpl.java
│   │   │           └── resources/
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   ├── dubbo-demo-mcp-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── mcp/
│   │           │                   └── server/
│   │           │                       └── demo/
│   │           │                           ├── McpDemoApplication.java
│   │           │                           └── demo/
│   │           │                               ├── ComplexRequest.java
│   │           │                               ├── ComplexResponse.java
│   │           │                               ├── HelloService.java
│   │           │                               ├── HelloServiceImpl.java
│   │           │                               └── NestedDetail.java
│   │           └── resources/
│   │               ├── application.yml
│   │               └── log4j2.xml
│   ├── dubbo-demo-spring-boot/
│   │   ├── dubbo-demo-spring-boot-consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── springboot/
│   │   │           │                   └── demo/
│   │   │           │                       └── consumer/
│   │   │           │                           └── ConsumerApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── dubbo-demo-spring-boot-interface/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── dubbo/
│   │   │                           └── springboot/
│   │   │                               └── demo/
│   │   │                                   └── DemoService.java
│   │   ├── dubbo-demo-spring-boot-provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── springboot/
│   │   │           │                   └── demo/
│   │   │           │                       └── provider/
│   │   │           │                           ├── DemoServiceImpl.java
│   │   │           │                           └── ProviderApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── dubbo-demo-spring-boot-servlet/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── springboot/
│   │   │           │                   └── demo/
│   │   │           │                       └── servlet/
│   │   │           │                           ├── ApiConsumer.java
│   │   │           │                           ├── GreeterService.java
│   │   │           │                           ├── GreeterServiceImpl.java
│   │   │           │                           ├── HelloReply.java
│   │   │           │                           ├── HelloRequest.java
│   │   │           │                           └── ProviderApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   └── dubbo-demo-spring-boot-idl/
│       ├── dubbo-demo-spring-boot-idl-consumer/
│       │   ├── pom.xml
│       │   └── src/
│       │       └── main/
│       │           ├── java/
│       │           │   └── org/
│       │           │       └── apache/
│       │           │           └── dubbo/
│       │           │               └── springboot/
│       │           │                   └── idl/
│       │           │                       └── demo/
│       │           │                           └── consumer/
│       │           │                               └── ConsumerApplication.java
│       │           ├── proto/
│       │           │   └── helloworld.proto
│       │           └── resources/
│       │               ├── application.yml
│       │               └── log4j2.xml
│       ├── dubbo-demo-spring-boot-idl-provider/
│       │   ├── README.md
│       │   ├── pom.xml
│       │   └── src/
│       │       ├── main/
│       │       │   ├── java/
│       │       │   │   └── org/
│       │       │   │       └── apache/
│       │       │   │           └── dubbo/
│       │       │   │               └── springboot/
│       │       │   │                   └── idl/
│       │       │   │                       └── demo/
│       │       │   │                           └── provider/
│       │       │   │                               ├── GreeterServiceImpl.java
│       │       │   │                               └── ProviderApplication.java
│       │       │   ├── proto/
│       │       │   │   ├── helloworld.proto
│       │       │   │   └── message.proto
│       │       │   └── resources/
│       │       │       ├── application.yml
│       │       │       └── log4j2.xml
│       │       └── test/
│       │           └── java/
│       │               └── org/
│       │                   └── apache/
│       │                       └── dubbo/
│       │                           └── springboot/
│       │                               └── idl/
│       │                                   └── demo/
│       │                                       └── MessageServiceTest.java
│       └── pom.xml
├── dubbo-dependencies-bom/
│   └── pom.xml
├── dubbo-distribution/
│   ├── dubbo-all/
│   │   └── pom.xml
│   ├── dubbo-all-shaded/
│   │   └── pom.xml
│   ├── dubbo-apache-release/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── assembly/
│   │           ├── bin-release.xml
│   │           └── source-release.xml
│   ├── dubbo-bom/
│   │   └── pom.xml
│   └── dubbo-core-spi/
│       └── pom.xml
├── dubbo-maven-plugin/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               └── maven/
│           │                   └── plugin/
│           │                       ├── aot/
│           │                       │   ├── AbstractAotMojo.java
│           │                       │   ├── AbstractDependencyFilterMojo.java
│           │                       │   ├── CommandLineBuilder.java
│           │                       │   ├── DependencyFilter.java
│           │                       │   ├── DubboProcessAotMojo.java
│           │                       │   ├── Exclude.java
│           │                       │   ├── ExcludeFilter.java
│           │                       │   ├── FilterableDependency.java
│           │                       │   ├── Include.java
│           │                       │   ├── IncludeFilter.java
│           │                       │   ├── JavaCompilerPluginConfiguration.java
│           │                       │   ├── JavaExecutable.java
│           │                       │   ├── JavaProcessExecutor.java
│           │                       │   ├── MatchingGroupIdFilter.java
│           │                       │   ├── RunArguments.java
│           │                       │   └── RunProcess.java
│           │                       └── protoc/
│           │                           ├── DubboProtocCompilerMojo.java
│           │                           ├── DubboProtocPlugin.java
│           │                           ├── DubboProtocPluginWrapper.java
│           │                           ├── DubboProtocPluginWrapperFactory.java
│           │                           ├── LinuxDubboProtocPluginWrapper.java
│           │                           ├── ProtocMetaData.java
│           │                           ├── WinDubboProtocPluginWrapper.java
│           │                           ├── command/
│           │                           │   ├── DefaultProtocCommandBuilder.java
│           │                           │   └── ProtocCommandArgsBuilder.java
│           │                           └── enums/
│           │                               └── DubboGenerateTypeEnum.java
│           └── resources/
│               └── version-matrix.properties
├── dubbo-metadata/
│   ├── dubbo-metadata-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── metadata/
│   │       │   │                   ├── AbstractCacheManager.java
│   │       │   │                   ├── AbstractServiceNameMapping.java
│   │       │   │                   ├── DefaultMetadataParamsFilter.java
│   │       │   │                   ├── DubboMetadataServiceV2Triple.java
│   │       │   │                   ├── InstanceMetadataChangedListener.java
│   │       │   │                   ├── MappingCacheManager.java
│   │       │   │                   ├── MappingChangedEvent.java
│   │       │   │                   ├── MappingListener.java
│   │       │   │                   ├── MetadataConstants.java
│   │       │   │                   ├── MetadataInfo.java
│   │       │   │                   ├── MetadataInfoV2.java
│   │       │   │                   ├── MetadataInfoV2OrBuilder.java
│   │       │   │                   ├── MetadataParamsFilter.java
│   │       │   │                   ├── MetadataRequest.java
│   │       │   │                   ├── MetadataRequestOrBuilder.java
│   │       │   │                   ├── MetadataService.java
│   │       │   │                   ├── MetadataServiceDetector.java
│   │       │   │                   ├── MetadataServiceV2.java
│   │       │   │                   ├── MetadataServiceV2Detector.java
│   │       │   │                   ├── MetadataServiceV2OuterClass.java
│   │       │   │                   ├── OpenAPIFormat.java
│   │       │   │                   ├── OpenAPIInfo.java
│   │       │   │                   ├── OpenAPIInfoOrBuilder.java
│   │       │   │                   ├── OpenAPIRequest.java
│   │       │   │                   ├── OpenAPIRequestOrBuilder.java
│   │       │   │                   ├── ParameterTypesComparator.java
│   │       │   │                   ├── RevisionResolver.java
│   │       │   │                   ├── ServiceInfoV2.java
│   │       │   │                   ├── ServiceInfoV2OrBuilder.java
│   │       │   │                   ├── ServiceNameMapping.java
│   │       │   │                   ├── aot/
│   │       │   │                   │   ├── MetadataProxyDescriberRegistrar.java
│   │       │   │                   │   └── MetadataReflectionTypeDescriberRegistrar.java
│   │       │   │                   ├── report/
│   │       │   │                   │   ├── MetadataReport.java
│   │       │   │                   │   ├── MetadataReportFactory.java
│   │       │   │                   │   ├── MetadataReportInstance.java
│   │       │   │                   │   ├── MetadataScopeModelInitializer.java
│   │       │   │                   │   ├── identifier/
│   │       │   │                   │   │   ├── BaseApplicationMetadataIdentifier.java
│   │       │   │                   │   │   ├── BaseMetadataIdentifier.java
│   │       │   │                   │   │   ├── BaseServiceMetadataIdentifier.java
│   │       │   │                   │   │   ├── KeyTypeEnum.java
│   │       │   │                   │   │   ├── MetadataIdentifier.java
│   │       │   │                   │   │   ├── ServiceMetadataIdentifier.java
│   │       │   │                   │   │   └── SubscriberMetadataIdentifier.java
│   │       │   │                   │   └── support/
│   │       │   │                   │       ├── AbstractMetadataReport.java
│   │       │   │                   │       ├── AbstractMetadataReportFactory.java
│   │       │   │                   │       ├── Constants.java
│   │       │   │                   │       └── NopMetadataReport.java
│   │       │   │                   └── util/
│   │       │   │                       └── MetadataServiceVersionUtils.java
│   │       │   ├── proto/
│   │       │   │   └── metadata_service_v2.proto
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   ├── org.apache.dubbo.aot.api.ProxyDescriberRegistrar
│   │       │                   ├── org.apache.dubbo.aot.api.ReflectionTypeDescriberRegistrar
│   │       │                   ├── org.apache.dubbo.metadata.MetadataParamsFilter
│   │       │                   ├── org.apache.dubbo.rpc.model.BuiltinServiceDetector
│   │       │                   └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── metadata/
│   │           │                   ├── AbstractServiceNameMappingTest.java
│   │           │                   ├── MetadataInfoTest.java
│   │           │                   ├── filter/
│   │           │                   │   ├── CustomizedParamsFilter.java
│   │           │                   │   ├── ExcludedParamsFilter.java
│   │           │                   │   └── ExcludedParamsFilter2.java
│   │           │                   ├── report/
│   │           │                   │   ├── MetadataReportInstanceTest.java
│   │           │                   │   ├── identifier/
│   │           │                   │   │   ├── BaseApplicationMetadataIdentifierTest.java
│   │           │                   │   │   ├── BaseServiceMetadataIdentifierTest.java
│   │           │                   │   │   ├── KeyTypeEnumTest.java
│   │           │                   │   │   ├── MetadataIdentifierTest.java
│   │           │                   │   │   ├── ServiceMetadataIdentifierTest.java
│   │           │                   │   │   └── SubscriberMetadataIdentifierTest.java
│   │           │                   │   └── support/
│   │           │                   │       ├── AbstractMetadataReportFactoryTest.java
│   │           │                   │       └── AbstractMetadataReportTest.java
│   │           │                   ├── store/
│   │           │                   │   ├── InterfaceNameTestService.java
│   │           │                   │   ├── InterfaceNameTestService2.java
│   │           │                   │   └── RetryTestService.java
│   │           │                   └── test/
│   │           │                       ├── JTestMetadataReport4Test.java
│   │           │                       └── JTestMetadataReportFactory4Test.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── dubbo/
│   │               │       ├── internal/
│   │               │       │   ├── org.apache.dubbo.metadata.MetadataParamsFilter
│   │               │       │   └── org.apache.dubbo.metadata.report.MetadataReportFactory
│   │               │       └── service-name-mapping.properties
│   │               └── log4j2-test.xml
│   ├── dubbo-metadata-definition-protobuf/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── metadata/
│   │       │   │                   └── definition/
│   │       │   │                       └── protobuf/
│   │       │   │                           └── ProtobufTypeBuilder.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.metadata.definition.builder.TypeBuilder
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── metadata/
│   │           │                   └── definition/
│   │           │                       └── protobuf/
│   │           │                           ├── ProtobufTypeBuilderTest.java
│   │           │                           └── model/
│   │           │                               ├── GooglePB.java
│   │           │                               └── ServiceInterface.java
│   │           └── resources/
│   │               └── log4j2-test.xml
│   ├── dubbo-metadata-processor/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── metadata/
│   │       │   │                   └── annotation/
│   │       │   │                       └── processing/
│   │       │   │                           ├── AbstractServiceAnnotationProcessor.java
│   │       │   │                           ├── ClassPathMetadataStorage.java
│   │       │   │                           ├── ServiceDefinitionMetadataAnnotationProcessor.java
│   │       │   │                           ├── builder/
│   │       │   │                           │   ├── ArrayTypeDefinitionBuilder.java
│   │       │   │                           │   ├── CollectionTypeDefinitionBuilder.java
│   │       │   │                           │   ├── DeclaredTypeDefinitionBuilder.java
│   │       │   │                           │   ├── EnumTypeDefinitionBuilder.java
│   │       │   │                           │   ├── GeneralTypeDefinitionBuilder.java
│   │       │   │                           │   ├── MapTypeDefinitionBuilder.java
│   │       │   │                           │   ├── MethodDefinitionBuilder.java
│   │       │   │                           │   ├── PrimitiveTypeDefinitionBuilder.java
│   │       │   │                           │   ├── ServiceDefinitionBuilder.java
│   │       │   │                           │   ├── SimpleTypeDefinitionBuilder.java
│   │       │   │                           │   ├── TypeBuilder.java
│   │       │   │                           │   └── TypeDefinitionBu

================================================
FILE CONTENTS
================================================

================================================
FILE: .artifacts
================================================
# 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.
#

# Please add new modules to the end of the list.

dubbo
dubbo-auth
dubbo-apache-release
dubbo-all-shaded
dubbo-bom
dubbo-cluster
dubbo-common
dubbo-compatible
dubbo-compiler
dubbo-config
dubbo-config-api
dubbo-config-spring
dubbo-config-spring6
dubbo-configcenter
dubbo-configcenter-file
dubbo-configcenter-apollo
dubbo-configcenter-nacos
dubbo-configcenter-zookeeper
dubbo-core-spi
dubbo-dependencies-all
dubbo-dependencies-bom
dubbo-filter-cache
dubbo-filter-validation
dubbo-kubernetes
dubbo-maven-plugin
dubbo-mcp
dubbo-metadata
dubbo-metadata-api
dubbo-metadata-definition-protobuf
dubbo-metadata-processor
dubbo-metadata-report-nacos
dubbo-metadata-report-zookeeper
dubbo-metrics
dubbo-metrics-api
dubbo-metrics-default
dubbo-metrics-metadata
dubbo-metrics-prometheus
dubbo-metrics-otlp
dubbo-metrics-registry
dubbo-metrics-config-center
dubbo-metrics-netty
dubbo-metrics-event
dubbo-mutiny
dubbo-native
dubbo-parent
dubbo-plugin
dubbo-qos
dubbo-qos-api
dubbo-reactive
dubbo-registry
dubbo-registry-api
dubbo-registry-multicast
dubbo-registry-multiple
dubbo-registry-nacos
dubbo-registry-zookeeper
dubbo-remoting
dubbo-remoting-api
dubbo-remoting-http12
dubbo-remoting-http3
dubbo-remoting-websocket
dubbo-remoting-netty
dubbo-remoting-netty4
dubbo-remoting-zookeeper-curator5
dubbo-rpc
dubbo-rpc-api
dubbo-rpc-dubbo
dubbo-rpc-injvm
dubbo-rpc-triple
dubbo-security
dubbo-serialization
dubbo-serialization-api
dubbo-serialization-fastjson2
dubbo-serialization-hessian2
dubbo-spring-boot
dubbo-spring-boot-actuator
dubbo-spring-boot-actuator-autoconfigure
dubbo-spring-boot-actuator-compatible
dubbo-spring-boot-autoconfigure
dubbo-spring-boot-3-autoconfigure
dubbo-spring-boot-autoconfigure-compatible
dubbo-spring-boot-actuator-autoconfigure-compatible
dubbo-spring-boot-compatible
dubbo-tracing-brave-zipkin-spring-boot-starter
dubbo-tracing-otel-zipkin-spring-boot-starter
dubbo-tracing-otel-otlp-spring-boot-starter
dubbo-observability-spring-boot-starter
dubbo-spring-boot-starter
dubbo-spring-boot-starters
dubbo-spring-boot-interceptor
dubbo-nacos-spring-boot-starter
dubbo-zookeeper-curator5-spring-boot-starter
dubbo-sentinel-spring-boot-starter
dubbo-seata-spring-boot-starter
dubbo-spring-security
dubbo-spring6-security
dubbo-tracing
dubbo-xds
dubbo-plugin-loom
dubbo-rest-jaxrs
dubbo-rest-spring
dubbo-rest-openapi
dubbo-triple-servlet
dubbo-triple-websocket


================================================
FILE: .asf.yaml
================================================
#
#
#   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.
#
#

notifications:
  commits:      commits@dubbo.apache.org
  issues:       notifications@dubbo.apache.org
  pullrequests: notifications@dubbo.apache.org
  jira_options: link label link label
  discussions: notifications@dubbo.apache.org

github:
  homepage: https://dubbo.apache.org/
  description: "The java implementation of Apache Dubbo. An RPC and microservice framework."
  features:
    # Enable wiki for documentation
    wiki: true
    # Enable issue management
    issues: true
    # Enable projects for project management boards
    projects: true
    # Enable GitHub Discussions for community discussions
    discussions: true
  protected_branches:
    master: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    2.5.x: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    2.6.x: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    2.7.x: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    3.0: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    3.1: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    3.2: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    3.3: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
    3.4: 
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        require_last_push_approval: true
        required_approving_review_count: 2
  labels:
    - java
    - rpc
    - microservices
    - framework
    - restful
    - distributed-systems
    - dubbo
    - service-mesh
    - http
    - grpc
    - web


================================================
FILE: .editorconfig
================================================
# 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.
#

# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
tab_width = 4
max_line_length = 120
insert_final_newline = true
trim_trailing_whitespace = true

[*.java]
ij_java_continuation_indent_size = 8
ij_java_keep_control_statement_in_one_line = false
ij_java_for_brace_force = always
ij_java_if_brace_force = always
ij_java_keep_first_column_comment = false
ij_java_keep_line_breaks = false
ij_java_keep_simple_blocks_in_one_line = true
ij_java_keep_simple_classes_in_one_line = true
ij_java_keep_simple_lambdas_in_one_line = true
ij_java_keep_simple_methods_in_one_line = true
ij_java_keep_blank_lines_in_code = 1
ij_java_keep_blank_lines_in_declarations = 1
ij_java_blank_lines_after_class_header = 1
ij_java_class_count_to_use_import_on_demand = 999
ij_java_names_count_to_use_import_on_demand = 999
ij_java_imports_layout = org.apache.dubbo.**, |, javax.**, |, java.**, |, *, |, $*
ij_java_insert_inner_class_imports = true
ij_java_space_before_array_initializer_left_brace = true
ij_java_method_parameters_new_line_after_left_paren = true
ij_java_wrap_comments = false
ij_java_wrap_long_lines = false
ij_java_enum_constants_wrap = split_into_lines
ij_java_method_call_chain_wrap = on_every_item
ij_java_method_parameters_wrap = on_every_item
ij_java_extends_list_wrap = normal
ij_java_extends_keyword_wrap = normal
ij_java_binary_operation_wrap = normal
ij_java_binary_operation_sign_on_next_line = true
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false

[*.groovy]
max_line_length = 180
ij_groovy_label_indent_size = 4
ij_groovy_keep_blank_lines_in_code = 1
ij_groovy_keep_blank_lines_in_declarations = 1
ij_groovy_blank_lines_after_class_header = 1
ij_groovy_class_count_to_use_import_on_demand = 999
ij_groovy_names_count_to_use_import_on_demand = 999
ij_groovy_imports_layout = org.apache.dubbo.**, |, javax.**, |, java.**, |, *, |, $*
ij_groovy_space_after_type_cast = false

[*.json]
tab_width = 2
indent_size = 2

[*.{yml,yaml}]
tab_width = 2
indent_size = 2

[*.xml]
ij_xml_attribute_wrap = off
ij_xml_text_wrap = off
ij_xml_keep_blank_lines = 1

[pom.xml]
indent_size = 2


================================================
FILE: .gitattributes
================================================
# 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.
#

# Auto detect text files and perform LF normalization
*        text=auto

*.java   text eol=lf

================================================
FILE: .github/DISCUSSION_TEMPLATE/general.yml
================================================
#
# 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.
#

title: "[General][Java SDK (Component)] xxx"
body:
- type: markdown
  attributes:
    value: |
      <img src="https://dubbo.apache.org/imgs/nav_logo2.png" alt="Dubbo logo" height="90px" align="right" />

      Thank you for finding the time to share your idea! We really appreciate the community efforts to improve Dubbo.

      If you need to report a security issue, please visit [our security policy](https://github.com/apache/dubbo/security/policy).

      **Dubbo is open for world wide collaboration, please make sure that all the content you provide is in English.**
      Remember that non-English idea is quite not friendly for everyone, and might unable to get the response!

- type: checkboxes
  attributes:
    label: Pre-check
    options:
      - label: >
          I am sure that all the content I provide is in English.
        required: true

- type: dropdown
  attributes:
    label: Apache Dubbo Component
    description: |
      What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
      to choose the component that you want to ask questions about.
    multiple: false
    options:
      - "Java SDK (apache/dubbo)"
      - "Java Samples (apache/dubbo-samples)"
      - "Java Integration Cases (apache/dubbo-integration-cases)"
      - "Java SPI Extensions (apache/dubbo-spi-extensions)"
      - "Java Benchmark (apache/dubbo-benchmark)"
      - "Go SDK (apache/dubbo-go)"
      - "Go Samples (apache/dubbo-go-samples)"
      - "Rust SDK (apache/dubbo-rust)"
      - "Node.js SDK (apache/dubbo-js)"
      - "Python SDK (apache/dubbo-python)"
      - "Kubernetes Integration (apache/dubbo-kubernetes)"
      - "Pixiu Gateway (apache/dubbo-go-pixiu)"
      - "Pixiu Gateway Samples (apache/dubbo-go-pixiu-samples)"
      - "Admin (apache/dubbo-admin)"
      - "Website (apache/dubbo-website)"
      - "Awesome (apache/dubbo-awesome)"
      - "Initializer (apache/dubbo-intializer)"
      - "Others (apache/dubbo-xxx)"
  validations:
    required: true

- type: textarea
  attributes:
    label: Details
    description: Anything you want to ask?
  validations:
    required: true

- type: checkboxes
  attributes:
    label: Code of Conduct
    description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
    options:
      - label: >
          I agree to follow this project's
          [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
        required: true

- type: markdown
  attributes:
    value: "Thanks for completing our form!"


================================================
FILE: .github/DISCUSSION_TEMPLATE/question.yml
================================================
#
# 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.
#

title: "[Q/A][Java SDK (Component)] xxx"
body:
- type: markdown
  attributes:
    value: |
      <img src="https://dubbo.apache.org/imgs/nav_logo2.png" alt="Dubbo logo" height="90px" align="right" />

      Thank you for finding the time to report the question! We really appreciate the community efforts to improve Dubbo.

      If you need to report a security issue, please visit [our security policy](https://github.com/apache/dubbo/security/policy).

      **Dubbo is open for world wide collaboration, please make sure that all the content you provide is in English.**
      Remember that non-English question is quite not friendly for everyone, and might unable to get the response!

- type: checkboxes
  attributes:
    label: Pre-check
    options:
      - label: >
          I am sure that all the content I provide is in English.
        required: true

- type: dropdown
  attributes:
    label: Apache Dubbo Component
    description: |
      What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
      to choose the component that you want to ask questions about.
    multiple: false
    options:
      - "Java SDK (apache/dubbo)"
      - "Java Samples (apache/dubbo-samples)"
      - "Java Integration Cases (apache/dubbo-integration-cases)"
      - "Java SPI Extensions (apache/dubbo-spi-extensions)"
      - "Java Benchmark (apache/dubbo-benchmark)"
      - "Go SDK (apache/dubbo-go)"
      - "Go Samples (apache/dubbo-go-samples)"
      - "Rust SDK (apache/dubbo-rust)"
      - "Node.js SDK (apache/dubbo-js)"
      - "Python SDK (apache/dubbo-python)"
      - "Kubernetes Integration (apache/dubbo-kubernetes)"
      - "Pixiu Gateway (apache/dubbo-go-pixiu)"
      - "Pixiu Gateway Samples (apache/dubbo-go-pixiu-samples)"
      - "Admin (apache/dubbo-admin)"
      - "Website (apache/dubbo-website)"
      - "Awesome (apache/dubbo-awesome)"
      - "Initializer (apache/dubbo-intializer)"
      - "Others (apache/dubbo-xxx)"
  validations:
    required: true

- type: textarea
  attributes:
    label: Details
    description: Anything you want to know?
  validations:
    required: true

- type: checkboxes
  attributes:
    label: Code of Conduct
    description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
    options:
      - label: >
          I agree to follow this project's
          [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
        required: true

- type: markdown
  attributes:
    value: "Thanks for completing our form!"


================================================
FILE: .github/ISSUE_TEMPLATE/1-bug.yml
================================================
#
# 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.
#

name: Bug Report
description: File a bug report
title: "[Bug] "
labels: ["type/need-triage", "component/need-triage"]
projects: ["apache/337"]
body:
- type: markdown
  attributes:
    value: |
      <img src="https://dubbo.apache.org/imgs/nav_logo2.png" alt="Dubbo logo" height="90px" align="right" />

      Thank you for finding the time to report the problem! We really appreciate the community efforts to improve Dubbo.

      Please make sure what you are reporting is indeed a bug with reproducible steps, if you want to ask questions
      or share ideas, please [subscribe to our mailing list](mailto:dev-subscribe@dubbo.apache.org) and sent
      emails to [our mailing list](mailto:dev@dubbo.apache.org), you can also head to our
      [Discussion](https://github.com/apache/dubbo/discussions) tab.

      If you need to report a security issue, please visit [our security policy](https://github.com/apache/dubbo/security/policy).

      **Dubbo is open for world wide collaboration, please make sure that all the content you provide is in English.**
      Remember that non-English issues is quite not friendly for everyone, and might unable to get the response!

- type: checkboxes
  attributes:
    label: Pre-check
    options:
      - label: >
          I am sure that all the content I provide is in English.
        required: true

- type: checkboxes
  attributes:
    label: Search before asking
    description: >
      Please make sure to search in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) first to see
      whether the same issue was reported already.
    options:
      - label: >
          I had searched in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no similar
          issues.
        required: true

- type: dropdown
  attributes:
    label: Apache Dubbo Component
    description: |
      What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
      to choose the component that you want to ask questions about.
    multiple: false
    options:
      - "Java SDK (apache/dubbo)"
      - "Java Samples (apache/dubbo-samples)"
      - "Java Integration Cases (apache/dubbo-integration-cases)"
      - "Java SPI Extensions (apache/dubbo-spi-extensions)"
      - "Java Benchmark (apache/dubbo-benchmark)"
      - "Python SDK (apache/dubbo-python)"
  validations:
    required: true

- type: textarea
  attributes:
    label: Dubbo Version
    description: "Which Dubbo version, JDK version and operating system did you use?"
    placeholder: "Example: Dubbo Java 3.2.12, OpenJDK 1.8, Ubuntu 20.04"
  validations:
    required: true

- type: textarea
  attributes:
    label: Steps to reproduce this issue
    description: >
      Describe how to reproduce this issue.If you are not able to provide a reproducible case,
      please open a [Discussion](https://github.com/apache/dubbo/discussions) instead.
    placeholder: >
      Please provide the context in which the problem occurred and explain what happened.
      A [GitHub address] would be helpful for maintainers to reproduce the problem.
  validations:
    required: true

- type: textarea
  attributes:
    label: What you expected to happen
    description: What do you think went wrong?
    placeholder: >
      Please explain why you think the behaviour is erroneous. It is extremely helpful if you copy and paste
      the fragment of logs showing the exact error messages or wrong behaviour and screenshots for
      UI problems. You can include files by dragging and dropping them here.

      **NOTE**: please copy and paste texts instead of taking screenshots of them for easy future search.
  validations:
    required: true

- type: textarea
  attributes:
    label: Anything else
    description: Anything else we need to know?
    placeholder: >
      How often does this problem occur? (Once? Every time? Only when certain conditions are met?)
      Any relevant logs to include? Put them here inside fenced
      ``` ``` blocks or inside a collapsable details tag if it's too long:
      <details><summary>x.log</summary> lots of stuff </details>

- type: checkboxes
  attributes:
    label: Do you have a (mini) reproduction demo?
    description: >
      This is not strictly required, but if you have one (a minimal reproduction demo), 
      it will greatly help us resolve this issue efficiently. 
      Additionally, the community will prioritize this issue over others.
    options:
      - label: Yes, I have a minimal reproduction demo to help resolve this issue more effectively!

- type: checkboxes
  attributes:
    label: Are you willing to submit a pull request to fix on your own?
    description: >
      This is absolutely not required, but we are happy to guide you in the contribution process
      especially if you already have a good understanding of how to implement the fix.
      Dubbo is a totally community-driven project and we love to bring new contributors in.
    options:
      - label: Yes I am willing to submit a pull request on my own!

- type: checkboxes
  attributes:
    label: Code of Conduct
    description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
    options:
      - label: >
          I agree to follow this project's
          [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
        required: true

- type: markdown
  attributes:
    value: "Thanks for completing our form!"


================================================
FILE: .github/ISSUE_TEMPLATE/2-feature.yml
================================================
#
# 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.
#

name: Feature Request
description: Create a Feature Request for Dubbo
title: "[Feature] "
labels: ["type/need-triage", "component/need-triage"]
projects: ["apache/337"]
body:
- type: markdown
  attributes:
    value: |
      <img src="https://dubbo.apache.org/imgs/nav_logo2.png" alt="Dubbo logo" height="90px" align="right" />

      Thank you for finding the time to propose new feature!

      We really appreciate the community efforts to improve Dubbo.

      **Dubbo is open for world wide collaboration, please make sure that all the content you provide is in English.**
      Remember that non-English issues is quite not friendly for everyone, and might unable to get the response!

- type: checkboxes
  attributes:
    label: Pre-check
    options:
      - label: >
          I am sure that all the content I provide is in English.
        required: true

- type: checkboxes
  attributes:
    label: Search before asking
    description: >
      Please make sure to search in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) first to see
      whether the same feature was requested already.
    options:
      - label: >
          I had searched in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no similar
          feature requirement.
        required: true

- type: dropdown
  attributes:
    label: Apache Dubbo Component
    description: |
      What Apache Dubbo component are you using? Apache Dubbo has many subprojects, please make sure
      to choose the component that you want to ask questions about.
    multiple: false
    options:
      - "Java SDK (apache/dubbo)"
      - "Java Samples (apache/dubbo-samples)"
      - "Java Integration Cases (apache/dubbo-integration-cases)"
      - "Java SPI Extensions (apache/dubbo-spi-extensions)"
      - "Java Benchmark (apache/dubbo-benchmark)"
      - "Python SDK (apache/dubbo-python)"
  validations:
    required: true

- type: textarea
  attributes:
    label: Descriptions
    description: A short description of your feature
  validations:
    required: true

- type: textarea
  attributes:
    label: Related issues
    description: Is there currently another issue associated with this?

- type: checkboxes
  attributes:
    label: Are you willing to submit a pull request to fix on your own?
    description: >
      This is absolutely not required, but we are happy to guide you in the contribution process
      especially if you already have a good understanding of how to implement the feature.
      Dubbo is a totally community-driven project and we love to bring new contributors in.
    options:
      - label: Yes I am willing to submit a pull request on my own!

- type: checkboxes
  attributes:
    label: Code of Conduct
    description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
    options:
      - label: >
          I agree to follow this project's
          [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
        required: true

- type: markdown
  attributes:
    value: "Thanks for completing our form!"


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
#
# 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.
#

blank_issues_enabled: false
contact_links:
  - name: Question & FAQ & Proposal
    url: https://github.com/apache/dubbo/discussions/
    about: Ask a question, request support or submit a proposal for Apache Dubbo.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## What is the purpose of the change?


## Checklist
- [x] Make sure there is a [GitHub_issue](https://github.com/apache/dubbo/issues) field for the change.
- [x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
- [x] Write necessary unit-test to verify your logic correction. If the new feature or significant change is committed, please remember to add sample in [dubbo samples](https://github.com/apache/dubbo-samples) project.
- [x] Make sure gitHub actions can pass. [Why the workflow is failing and how to fix it?](../CONTRIBUTING.md)


================================================
FILE: .github/dependabot.yaml
================================================
version: 2
updates:

  - package-ecosystem: "maven"
    directory: "/"
    open-pull-requests-limit: 20
    # Ignore major version updates
    ignore:
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]
    schedule:
      interval: "weekly"
      day: "monday"
      time: "03:00"
      timezone: "US/Eastern"


================================================
FILE: .github/workflows/build-and-test-pr.yml
================================================
name: "Build and Test For PR"

on: [push, pull_request, workflow_dispatch]

permissions:
  contents: read

env:
  FORK_COUNT: 2
  FAIL_FAST: 0
  SHOW_ERROR_DETAIL: 1
  #multi-version size limit
  VERSIONS_LIMIT: 4
  JACOCO_ENABLE: true
  CANDIDATE_VERSIONS: '
    spring.version:5.3.24,6.1.5;
    spring-boot.version:2.7.6,3.2.3;
    '
  MAVEN_OPTS: >-
    -XX:+UseG1GC
    -XX:InitiatingHeapOccupancyPercent=45
    -XX:+UseStringDeduplication
    -XX:-TieredCompilation
    -XX:TieredStopAtLevel=1
    -Dmaven.javadoc.skip=true
    -Dmaven.wagon.http.retryHandler.count=5
    -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
  MAVEN_ARGS: >-
    -e
    --batch-mode
    --no-snapshot-updates
    --no-transfer-progress
    --fail-fast

jobs:
  check-format:
    name: "Check if code needs formatting"
    runs-on: ubuntu-22.04
    steps:
      - name: "Checkout"
        uses: actions/checkout@v4
      - name: "Setup maven"
        uses: actions/setup-java@v4
        with:
          java-version: 21
          distribution: zulu
      - name: "Check if code aligns with code style"
        id: check
        run: mvn --log-file mvn.log spotless:check
        continue-on-error: true
      - name: "Upload checkstyle result"
        uses: actions/upload-artifact@v4
        with:
          name: checkstyle-result
          path: mvn.log
      - name: "Generate Summary for successful run"
        if: ${{ steps.check.outcome == 'success' }}
        run: |
          echo ":ballot_box_with_check: Kudos! No formatting issues found!" >> $GITHUB_STEP_SUMMARY
      - name: "Generate Summary for failed run"
        if: ${{ steps.check.outcome == 'failure' }}
        run: |
          echo "## :negative_squared_cross_mark: Formatting issues found!" >> $GITHUB_STEP_SUMMARY
          echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
          cat mvn.log | grep "ERROR" | sed 's/Check if code needs formatting    Check if code aligns with code style   [0-9A-Z:.-]\+//' | sed 's/\[ERROR] //' | head -n -11 >> $GITHUB_STEP_SUMMARY
          echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
          echo "Please run \`mvn spotless:apply\` to fix the formatting issues." >> $GITHUB_STEP_SUMMARY
      - name: "Fail if code needs formatting"
        if: ${{ steps.check.outcome == 'failure' }}
        uses: actions/github-script@v7.0.1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            core.setFailed("Formatting issues found! \nRun \`mvn spotless:apply\` to fix.")

  license:
    name: "Check License"
    needs: check-format
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - name: "Check License"
        uses: apache/skywalking-eyes@e1a02359b239bd28de3f6d35fdc870250fa513d5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - name: "Compile Dubbo (Linux)"
        run: |
          ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Pskip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
      - name: "Check Dependencies' License"
        uses: apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          config: .licenserc.yaml
          mode: check

  build-source:
    name: "Build Dubbo"
    needs: check-format
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.dubbo-version.outputs.version }}
    steps:
      - name: "Checkout code"
        uses: actions/checkout@v4
      - name: "Set up JDK"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Restore local maven repository cache"
        uses: actions/cache/restore@v4
        id: cache-maven-repository
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
      - name: "Restore common local maven repository cache"
        uses: actions/cache/restore@v4
        if: steps.cache-maven-repository.outputs.cache-hit != 'true'
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: "Clean dubbo cache"
        run: rm -rf ~/.m2/repository/org/apache/dubbo
      - name: "Build Dubbo with maven"
        run: |
          ./mvnw ${{ env.MAVEN_ARGS }} clean install -Psources,skip-spotless,checkstyle -Dmaven.test.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Save dubbo cache"
        uses: actions/cache/save@v4
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
      - name: "Clean dubbo cache"
        run: rm -rf ~/.m2/repository/org/apache/dubbo
      - name: "Save local maven repository cache"
        uses: actions/cache/save@v4
        if: steps.cache-maven-repository.outputs.cache-hit != 'true'
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
      - name: "Pack class result"
        run: |
          shopt -s globstar
          zip ${{ github.workspace }}/class.zip **/target/classes/* -r
      - name: "Upload class result"
        uses: actions/upload-artifact@v4
        with:
          name: "class-file"
          path: ${{ github.workspace }}/class.zip
      - name: "Pack checkstyle file if failure"
        if: failure()
        run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
      - name: "Upload checkstyle file if failure"
        uses: actions/upload-artifact@v4
        if: failure()
        with:
          name: "checkstyle-file"
          path: ${{ github.workspace }}/checkstyle.zip
      - name: "Calculate Dubbo Version"
        id: dubbo-version
        run: |
          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./pom.xml`
          echo "version=$REVISION" >> $GITHUB_OUTPUT
          echo "dubbo version: $REVISION"

  unit-test-prepare:
    name: "Preparation for Unit Test"
    needs: check-format
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: false
    env:
      ZOOKEEPER_VERSION: 3.7.2
    steps:
      - name: "Cache zookeeper binary archive"
        uses: actions/cache@v3
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
      - name: "Set up msys2 if necessary"
        uses: msys2/setup-msys2@v2
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        with:
          release: false  # support cache, see https://github.com/msys2/setup-msys2#context
      - name: "Download zookeeper binary archive in Linux OS"
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz

  unit-test:
    needs: [check-format, unit-test-prepare]
    name: "Unit Test On ubuntu-22.04 Java: ${{ matrix.java }}"
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: false
      matrix:
        java: [ 8, 11, 17, 21, 25 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
      CURRENT_ROLE: ${{ matrix.case-role }}
      ZOOKEEPER_VERSION: 3.7.2
    steps:
      - name: "Set MAVEN_OPTS for JDK 24+"
        if: ${{ matrix.java >= 24 }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Checkout code"
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: "Set up JDK ${{ matrix.java }}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ matrix.java }}
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Cache local maven repository"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Cache zookeeper binary archive"
        uses: actions/cache@v3
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with maven on Java: 8"
        timeout-minutes: 90
        if: ${{ matrix.java == '8' }}
        run: |
          set -o pipefail
          ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,'!jdk15ge-add-open',skip-spotless -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
      - name: "Test with maven on Java: ${{ matrix.java }}"
        timeout-minutes: 90
        if: ${{ matrix.java != '8' }}
        run: |
          set -o pipefail
          ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge-add-open',skip-spotless -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
      - name: "Print test error log"
        if: failure()
        run: cat test_errors.log
      - name: "Upload coverage to Codecov"
        uses: codecov/codecov-action@v5
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          verbose: true
          flags: unit-tests-java${{ matrix.java }}
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
      - name: "Upload surefire reports"
        uses: actions/upload-artifact@v4
        with:
          name: surefire-reports-java${{ matrix.java }}
          path: "**/target/surefire-reports/**"

  samples-test-prepare:
    needs: check-format
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 3
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Prepare test list"
        run: bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs
  samples-test-job:
    needs: [check-format, build-source, samples-test-prepare]
    name: "Samples Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} Java: ${{matrix.java}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.java}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        java: [ 8, 21 ]
        job_id: [1,2,3]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Restore local maven repository cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.java}}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{matrix.java}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "merge jacoco result"
        run: cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}"
      - name: "Upload jacoco"
        uses: actions/upload-artifact@v4
        with:
          name: samples-jacoco-result-${{matrix.job_id}}-java${{matrix.java}}
          path: target/jacoco*.exec
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-result-${{matrix.job_id}}-java${{matrix.java}}
          path: test/jobs/*-result*
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-logs-${{matrix.job_id}}-java${{matrix.java}}
          path: test/logs/*
  samples-test-result:
    needs: [check-format, samples-test-job]
    name: "Samples Test Result on ubuntu-22.04 (JobId: ${{matrix.job_id}} Java: ${{matrix.java}})"
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.java}}
    strategy:
      matrix:
        java: [ 8, 21 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: samples-test-result-*-java${{matrix.java}}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  integration-test-prepare:
    needs: check-format
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 3
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Prepare test list"
        run: bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: test-list
          path: test/jobs
  integration-test-job:
    needs: [check-format, build-source, integration-test-prepare]
    name: "Integration Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} Java: ${{matrix.java}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.java}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        java: [ 8, 21 ]
        job_id: [1,2,3]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Restore local maven repository cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.java}}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{matrix.java}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "merge jacoco result"
        run: cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}"
      - name: "Upload jacoco"
        uses: actions/upload-artifact@v4
        with:
          name: jacoco-result-${{matrix.job_id}}-java${{matrix.java}}
          path: target/jacoco*.exec
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: test-result-${{matrix.job_id}}-java${{matrix.java}}
          path: test/jobs/*-result*
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-logs-${{matrix.job_id}}-java${{matrix.java}}
          path: test/logs/*
  integration-test-result:
    name: "Integration Test Result on ubuntu-22.04 (JobId: ${{matrix.job_id}} Java: ${{matrix.java}})"
    needs: [check-format, integration-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.java}}
    strategy:
      matrix:
        java: [ 8, 21 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: test-result-*-java${{matrix.java}}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  samples-jacoco-result-merge:
    name: "Samples Jacoco Result on ubuntu-22.04 (JobId: ${{matrix.job_id}} Java: ${{matrix.java}})"
    runs-on: ubuntu-22.04
    needs: [check-format, samples-test-result]
    strategy:
      matrix:
        java: [ 8, 21 ]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          path: "./dubbo-samples"
      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - name: "Restore class result"
        uses: actions/download-artifact@v4
        with:
          name: "class-file"
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: ${{ github.workspace }}
      - name: "Unpack class result"
        run: |
          unzip -o ${{ github.workspace }}/class.zip
      - name: "Restore samples jacoco exec"
        uses: actions/download-artifact@v4
        with:
          pattern: samples-jacoco-result-*-java${{matrix.java}}
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: dubbo-samples/target/
          merge-multiple: true
      - name: "Merge samples jacoco result"
        run: |
          cd ${{ github.workspace }}/dubbo-samples/test/dubbo-test-jacoco-merger
          mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-samples ${{github.workspace}}"
      - name: "Remove old test result"
        run: |
          rm -rf ${{ github.workspace }}/dubbo-samples
      - name: "Upload coverage to Codecov"
        uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          flags: samples-tests-java${{matrix.java}}
          verbose: true
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  integration-jacoco-result-merge:
    name: "Integration Jacoco Result on ubuntu-22.04 (JobId: ${{matrix.job_id}} Java: ${{matrix.java}})"
    runs-on: ubuntu-22.04
    needs: [check-format, integration-test-result, samples-test-result]
    strategy:
      matrix:
        java: [ 8, 21 ]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          path: "./dubbo-integration-cases"
      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - name: "Restore class result"
        uses: actions/download-artifact@v4
        with:
          name: "class-file"
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: ${{ github.workspace }}
      - name: "Unpack class result"
        run: |
          unzip -o ${{ github.workspace }}/class.zip
      - name: "Restore integration test jacoco exec"
        uses: actions/download-artifact@v4
        with:
          pattern: jacoco-result-*-java${{matrix.java}}
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: dubbo-integration-cases/target/
          merge-multiple: true
      - name: "Merge integration test jacoco result"
        run: |
          cd ${{ github.workspace }}/dubbo-integration-cases/test/dubbo-test-jacoco-merger
          mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-integration-cases ${{github.workspace}}"
      - name: "Remove old test result"
        run: |
          rm -rf ${{ github.workspace }}/dubbo-integration-cases
      - name: "Upload coverage to Codecov"
        uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          flags: integration-tests-java${{matrix.java}}
          verbose: true
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}


  error-code-inspecting:
    needs: check-format
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          path: "./dubbo"
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-test-tools'
          ref: main
          path: "./dubbo-test-tools"
      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - name: "Restore local maven repository cache"
        uses: actions/cache/restore@v4
        id: cache-maven-repository
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
      - name: "Run Error Code Inspecting"
        env:
          DUBBO_ECI_REPORT_AS_ERROR: true
        run: |
          cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector
          ../mvnw ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo
      - name: "Upload error code inspection result"
        # always() should not be used here, since we don't need to handle the 'canceled' situation.
        if: ${{ success() || failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: "error-inspection-result"
          path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt

  native-image-inspecting:
    needs: check-format
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          path: "./dubbo"
      - name: "Set up GraalVM environment"
        uses: graalvm/setup-graalvm@v1
        with:
          version: '22.3.0'
          java-version: '17'
          components: 'native-image'
          github-token: ${{ secrets.GITHUB_TOKEN }}
          native-image-job-reports: 'true'
      - name: "Set up Zookeeper environment"
        run: |
          wget -t 1 -T 120 https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
          tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
          mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
          apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
      - name: "Check environment"
        run: |
          java --version
          native-image --version
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Restore local Maven repository cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
      - name: "Checkout dubbo-samples repository"
        uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
          path: "./dubbo-samples"
      - name: "Compile and run Dubbo native image demo"
        run: |
          MVNW="${{ github.workspace }}/dubbo-samples/mvnw ${{ env.MAVEN_ARGS }} -Dmaven.test.skip=true"
          cd ${{ github.workspace }}/dubbo-samples/2-advanced/dubbo-samples-native-image/dubbo-samples-native-image-provider
          $MVNW clean package -P native native:compile
          nohup ./target/dubbo-samples-native-image-provider &
          sleep 10
          curl \
            --header "Content-Type: application/json" \
            --data '{"name":"Dubbo"}' \
            http://localhost:50052/org.apache.dubbo.nativeimage.DemoService/sayHello/



================================================
FILE: .github/workflows/build-and-test-scheduled-3.1.yml
================================================
name: Build and Test Scheduled On 3.1

on:
  schedule:
    - cron: '0 0/6 * * *'
  workflow_dispatch:

permissions:
  contents: read

env:
  FORK_COUNT: 2
  FAIL_FAST: 0
  SHOW_ERROR_DETAIL: 1
  #multi-version size limit
  VERSIONS_LIMIT: 4
  ALL_REMOTE_VERSION: true
  CANDIDATE_VERSIONS: '
    spring.version:5.3.24;
    spring-boot.version:2.7.6;
    '

jobs:
  license:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.1"
      - name: Check License
        uses: apache/skywalking-eyes@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  build-source:
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.dubbo-version.outputs.version }}
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.1"
          path: dubbo
      - uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 8
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
      - name: "Build Dubbo with Maven"
        run: |
          cd ./dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,checkstyle -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Pack checkstyle file if failure"
        if: failure()
        run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
      - name: "Upload checkstyle file if failure"
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: "checkstyle-file"
          path: ${{ github.workspace }}/checkstyle.zip
      - name: "Calculate Dubbo Version"
        id: dubbo-version
        run: |
          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
          echo "version=$REVISION" >> $GITHUB_OUTPUT
          echo "dubbo version: $REVISION"

  unit-test-prepare:
    name: " Preparation for Unit Test On ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
    env:
      ZOOKEEPER_VERSION: 3.7.2
    steps:
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
      - name: "Set up msys2 if necessary"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        uses: msys2/setup-msys2@v2
        with:
          release: false  # support cache, see https://github.com/msys2/setup-msys2#context
      - name: "Download zookeeper binary archive in Linux OS"
        if: ${{ startsWith( matrix.os, 'ubuntu') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
      - name: "Download zookeeper binary archive in Windows OS"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        shell: msys2 {0}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz

  unit-test:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.1"
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  unit-test-fastjson2:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }}, Serialization: fastjson2)"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
      DUBBO_DEFAULT_SERIALIZATION: fastjson2
      MAVEN_SUREFIRE_ADD_OPENS: true
    steps:
      - uses: actions/checkout@v4
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests on JDK 8"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests on JDK 8"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  samples-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs
  samples-test-job:
    needs: [build-source, samples-test-prepare]
    name: "Samples Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-logs-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/logs/*
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  samples-test-result:
    needs: [samples-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: samples-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  integration-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs
  integration-test-job:
    needs: [build-source, integration-test-prepare]
    name: "Integration Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-logs-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/logs/*
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  integration-test-result:
    needs: [integration-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: integration-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  error-code-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.1"
          path: "./dubbo"

      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-test-tools'
          ref: main
          path: "./dubbo-test-tools"

      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21

      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true
      - name: "Run Error Code Inspecting"
        env:
          DUBBO_ECI_REPORT_AS_ERROR: true
        run: |
          cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector
          ../mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo

      - name: "Upload error code inspection result"
        # always() should not be used here, since we don't need to handle the 'canceled' situation.
        if: ${{ success() || failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: "error-inspection-result"
          path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt

  native-image-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.1"
          path: "./dubbo"

      - name: "Setup GraalVM environment"
        uses: graalvm/setup-graalvm@v1
        with:
          version: '22.3.0'
          java-version: '17'
          components: 'native-image'
          github-token: ${{ secrets.GITHUB_TOKEN }}
          native-image-job-reports: 'true'

      - name: "Setup Zookeeper environment"
        run: |
          wget -t 1 -T 120 https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
          tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
          mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
          apache-zookeeper-3.8.4-bin/bin/zkServer.sh start

      - name: "Check environment"
        run: |
          java --version
          native-image --version

      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true

      - name: "Compile and run Dubbo demo for native (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider
          ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile
          nohup ./target/dubbo-demo-native-provider &
          cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer
          ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile
          ./target/dubbo-demo-native-consumer


================================================
FILE: .github/workflows/build-and-test-scheduled-3.2.yml
================================================
name: Build and Test Scheduled On 3.2

on:
  schedule:
    - cron: '0 0/6 * * *'
  workflow_dispatch:

permissions:
  contents: read

env:
  FORK_COUNT: 2
  FAIL_FAST: 0
  SHOW_ERROR_DETAIL: 1
  #multi-version size limit
  VERSIONS_LIMIT: 4
  ALL_REMOTE_VERSION: true
  CANDIDATE_VERSIONS: '
    spring.version:5.3.24;
    spring-boot.version:2.7.6;
    '

jobs:
  license:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.2"
      - name: Check License
        uses: apache/skywalking-eyes@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  build-source:
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.dubbo-version.outputs.version }}
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.2"
          path: dubbo
      - uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 8
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
      - name: "Build Dubbo with Maven"
        run: |
          cd ./dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,checkstyle -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Pack checkstyle file if failure"
        if: failure()
        run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
      - name: "Upload checkstyle file if failure"
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: "checkstyle-file"
          path: ${{ github.workspace }}/checkstyle.zip
      - name: "Calculate Dubbo Version"
        id: dubbo-version
        run: |
          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
          echo "version=$REVISION" >> $GITHUB_OUTPUT
          echo "dubbo version: $REVISION"

  unit-test-prepare:
    name: " Preparation for Unit Test On ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
    env:
      ZOOKEEPER_VERSION: 3.7.2
    steps:
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
      - name: "Set up msys2 if necessary"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        uses: msys2/setup-msys2@v2
        with:
          release: false  # support cache, see https://github.com/msys2/setup-msys2#context
      - name: "Download zookeeper binary archive in Linux OS"
        if: ${{ startsWith( matrix.os, 'ubuntu') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
      - name: "Download zookeeper binary archive in Windows OS"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        shell: msys2 {0}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz

  unit-test:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.2"
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  unit-test-fastjson2:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }}, Serialization: fastjson2)"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
      DUBBO_DEFAULT_SERIALIZATION: fastjson2
      MAVEN_SUREFIRE_ADD_OPENS: true
    steps:
      - uses: actions/checkout@v4
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests on JDK 8"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge-add-open' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests on JDK 8"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge-add-open'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge-add-open' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge-add-open'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  samples-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs
  samples-test-job:
    needs: [build-source, samples-test-prepare]
    name: "Samples Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11, 17, 21 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-logs-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/logs/*
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  samples-test-result:
    needs: [samples-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11, 17, 21 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: samples-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  integration-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs
  integration-test-job:
    needs: [build-source, integration-test-prepare]
    name: "Integration Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11, 17, 21 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-logs-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/logs/*
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  integration-test-result:
    needs: [integration-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11, 17, 21 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: integration-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  error-code-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.2"
          path: "./dubbo"

      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-test-tools'
          ref: main
          path: "./dubbo-test-tools"

      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21

      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true
      - name: "Run Error Code Inspecting"
        env:
          DUBBO_ECI_REPORT_AS_ERROR: true
        run: |
          cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector
          ../mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo

      - name: "Upload error code inspection result"
        # always() should not be used here, since we don't need to handle the 'canceled' situation.
        if: ${{ success() || failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: "error-inspection-result"
          path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt

  native-image-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.2"
          path: "./dubbo"

      - name: "Setup GraalVM environment"
        uses: graalvm/setup-graalvm@v1
        with:
          version: '22.3.0'
          java-version: '17'
          components: 'native-image'
          github-token: ${{ secrets.GITHUB_TOKEN }}
          native-image-job-reports: 'true'

      - name: "Setup Zookeeper environment"
        run: |
          wget -t 1 -T 120 https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
          tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
          mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
          apache-zookeeper-3.8.4-bin/bin/zkServer.sh start

      - name: "Check environment"
        run: |
          java --version
          native-image --version

      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true

      - name: "Compile and run Dubbo demo for native (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider
          ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile
          nohup ./target/dubbo-demo-native-provider &
          cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer
          ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile
          ./target/dubbo-demo-native-consumer


================================================
FILE: .github/workflows/build-and-test-scheduled-3.3.yml
================================================
name: Build and Test Scheduled On 3.3

on:
  schedule:
    - cron: '0 0/6 * * *'
  workflow_dispatch:

permissions:
  contents: read

env:
  FORK_COUNT: 2
  FAIL_FAST: 0
  SHOW_ERROR_DETAIL: 1
  #multi-version size limit
  VERSIONS_LIMIT: 4
  ALL_REMOTE_VERSION: true
  CANDIDATE_VERSIONS: '
    spring.version:5.3.24,6.1.5;
    spring-boot.version:2.7.6,3.2.3;
    '

jobs:
  license:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.3"
      - name: Check License
        uses: apache/skywalking-eyes@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  build-source:
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.dubbo-version.outputs.version }}
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.3"
          path: dubbo
      - uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
      - name: "Build Dubbo with Maven"
        run: |
          cd ./dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,checkstyle -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Pack checkstyle file if failure"
        if: failure()
        run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
      - name: "Upload checkstyle file if failure"
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: "checkstyle-file"
          path: ${{ github.workspace }}/checkstyle.zip
      - name: "Calculate Dubbo Version"
        id: dubbo-version
        run: |
          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
          echo "version=$REVISION" >> $GITHUB_OUTPUT
          echo "dubbo version: $REVISION"

  unit-test-prepare:
    name: " Preparation for Unit Test On ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
    env:
      ZOOKEEPER_VERSION: 3.7.2
    steps:
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
      - name: "Set up msys2 if necessary"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        uses: msys2/setup-msys2@v2
        with:
          release: false  # support cache, see https://github.com/msys2/setup-msys2#context
      - name: "Download zookeeper binary archive in Linux OS"
        if: ${{ startsWith( matrix.os, 'ubuntu') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
      - name: "Download zookeeper binary archive in Windows OS"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        shell: msys2 {0}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120-c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz

  unit-test:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21, 25 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
    steps:
      - name: "Set MAVEN_OPTS for JDK 24+ on Linux"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'ubuntu') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Set MAVEN_OPTS for JDK 24+ on Windows"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'windows') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $env:GITHUB_ENV
      - uses: actions/checkout@v4
        with:
          ref: "3.3"
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  unit-test-fastjson2:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }}, Serialization: fastjson2)"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21, 25 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
      DUBBO_DEFAULT_SERIALIZATION: fastjson2
      MAVEN_SUREFIRE_ADD_OPENS: true
    steps:
      - name: "Set MAVEN_OPTS for JDK 24+ on Linux"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'ubuntu') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Set MAVEN_OPTS for JDK 24+ on Windows"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'windows') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $env:GITHUB_ENV
      - uses: actions/checkout@v4
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests on JDK 8"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge-add-open' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests on JDK 8"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge-add-open'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge-add-open' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge-add-open'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  samples-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs
  samples-test-job:
    needs: [build-source, samples-test-prepare]
    name: "Samples Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - name: "Set MAVEN_OPTS for JDK 24+"
        if: ${{ matrix.jdk >= 24 }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-logs-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/logs/*
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  samples-test-result:
    needs: [samples-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: samples-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  integration-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs
  integration-test-job:
    needs: [build-source, integration-test-prepare]
    name: "Integration Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - name: "Set MAVEN_OPTS for JDK 24+"
        if: ${{ matrix.jdk >= 24 }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test logs"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-logs-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/logs/*
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  integration-test-result:
    needs: [integration-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: integration-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  error-code-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: "3.3"
          path: "./dubbo"

      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-test-tools'
          ref: main
          path: "./dubbo-test-tools"

      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21

      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true
      - name: "Run Error Code Inspecting"
        env:
          DUBBO_ECI_REPORT_AS_ERROR: true
        run: |
          cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector
          ../mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo

      - name: "Upload error code inspection result"
        # always() should not be used here, since we don't need to handle the 'canceled' situation.
        if: ${{ success() || failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: "error-inspection-result"
          path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt

  native-image-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          path: "./dubbo"
      - name: "Set up GraalVM environment"
        uses: graalvm/setup-graalvm@v1
        with:
          version: '22.3.0'
          java-version: '17'
          components: 'native-image'
          github-token: ${{ secrets.GITHUB_TOKEN }}
          native-image-job-reports: 'true'
      - name: "Set up Zookeeper environment"
        run: |
          wget -t 1 -T 120 https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
          tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
          mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
          apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
      - name: "Check environment"
        run: |
          java --version
          native-image --version
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Restore local Maven repository cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
      - name: "Checkout dubbo-samples repository"
        uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
          path: "./dubbo-samples"
      - name: "Compile and run Dubbo native image demo"
        run: |
          MVNW="${{ github.workspace }}/dubbo-samples/mvnw ${{ env.MAVEN_ARGS }} -Dmaven.test.skip=true"
          cd ${{ github.workspace }}/dubbo-samples/2-advanced/dubbo-samples-native-image/dubbo-samples-native-image-provider
          $MVNW clean package -P native native:compile
          nohup ./target/dubbo-samples-native-image-provider &
          sleep 10
          curl \
            --header "Content-Type: application/json" \
            --data '{"name":"Dubbo"}' \
            http://localhost:50052/org.apache.dubbo.nativeimage.DemoService/sayHello/


================================================
FILE: .github/workflows/release-test.yml
================================================
name: Release Test

on:
  push:
    branches:
      - '**-release'
  workflow_dispatch:

permissions:
  contents: read

env:
  FORK_COUNT: 2
  FAIL_FAST: 0
  SHOW_ERROR_DETAIL: 1
  #multi-version size limit
  VERSIONS_LIMIT: 4
  ALL_REMOTE_VERSION: true
  CANDIDATE_VERSIONS: '
    spring.version:5.3.24,6.1.5;
    spring-boot.version:2.7.6,3.2.3;
    '

jobs:
  license:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - name: Check License
        uses: apache/skywalking-eyes@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  build-source:
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.dubbo-version.outputs.version }}
    steps:
      - uses: actions/checkout@v4
        with:
          path: dubbo
      - uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 21
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
      - name: "Build Dubbo with Maven"
        run: |
          cd ./dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,checkstyle -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Pack checkstyle file if failure"
        if: failure()
        run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
      - name: "Upload checkstyle file if failure"
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: "checkstyle-file"
          path: ${{ github.workspace }}/checkstyle.zip
      - name: "Calculate Dubbo Version"
        id: dubbo-version
        run: |
          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
          echo "version=$REVISION" >> $GITHUB_OUTPUT
          echo "dubbo version: $REVISION"
  unit-test-prepare:
    name: " Preparation for Unit Test On ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
    env:
      ZOOKEEPER_VERSION: 3.7.2
    steps:
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
      - name: "Set up msys2 if necessary"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        uses: msys2/setup-msys2@v2
        with:
          release: false  # support cache, see https://github.com/msys2/setup-msys2#context
      - name: "Download zookeeper binary archive in Linux OS"
        if: ${{ startsWith( matrix.os, 'ubuntu') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120-c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
      - name: "Download zookeeper binary archive in Windows OS"
        if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
        shell: msys2 {0}
        run: |
          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
          wget -t 1 -T 120 -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
          wget -t 1 -T 120 -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
          echo "list the downloaded zookeeper binary archive"
          ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
  unit-test:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21, 25 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
    steps:
      - uses: actions/checkout@v4
      - name: "Set MAVEN_OPTS for JDK 24+ on Linux"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'ubuntu') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Set MAVEN_OPTS for JDK 24+ on Windows"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'windows') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $env:GITHUB_ENV
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v4
        with:
          java-version: ${{ matrix.jdk }}
          distribution: 'zulu'
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  unit-test-fastjson2:
    needs: [build-source, unit-test-prepare]
    name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }}, Serialization: fastjson2)"
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-22.04, windows-latest ]
        jdk: [ 8, 11, 17, 21, 25 ]
    env:
      DISABLE_FILE_SYSTEM_TEST: true
      DUBBO_DEFAULT_SERIALIZATION: fastjson2
      MAVEN_SUREFIRE_ADD_OPENS: true
    steps:
      - uses: actions/checkout@v4
      - name: "Set MAVEN_OPTS for JDK 24+ on Linux"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'ubuntu') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Set MAVEN_OPTS for JDK 24+ on Windows"
        if: ${{ matrix.jdk >= 24 && startsWith(matrix.os, 'windows') }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $env:GITHUB_ENV
      - name: "Set up JDK ${{ matrix.jdk }}"
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ matrix.jdk }}
      - uses: actions/cache@v3
        name: "Cache local Maven repository"
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - uses: actions/cache@v3
        name: "Cache zookeeper binary archive"
        id: "cache-zookeeper"
        with:
          path: ${{ github.workspace }}/.tmp/zookeeper
          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
          restore-keys: |
            zookeeper-${{ runner.os }}-
      - name: "Test with Maven with Integration Tests on JDK 8"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge-add-open' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests on JDK 8"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk == '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge-add-open'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
      - name: "Test with Maven with Integration Tests"
        timeout-minutes: 70
        if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge-add-open' -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
      - name: "Test with Maven without Integration Tests"
        timeout-minutes: 90
        if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }}
        run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge-add-open'" -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"

  samples-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs
  samples-test-job:
    needs: [build-source, samples-test-prepare]
    name: "Samples Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Set MAVEN_OPTS for JDK 24+"
        if: ${{ matrix.jdk >= 24 }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: samples-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: samples-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  samples-test-result:
    needs: [samples-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: samples-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  integration-test-prepare:
    runs-on: ubuntu-22.04
    env:
      JOB_COUNT: 5
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Prepare test list"
        run: |
          bash ./test/scripts/prepare-test.sh
      - name: "Upload test list"
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs
  integration-test-job:
    needs: [build-source, integration-test-prepare]
    name: "Integration Test on ubuntu-22.04 (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})"
    runs-on: ubuntu-22.04
    timeout-minutes: 90
    env:
      JAVA_VER: ${{matrix.jdk}}
      TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
    strategy:
      fail-fast: false
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
        job_id: [1, 2, 3, 4, 5]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Set MAVEN_OPTS for JDK 24+"
        if: ${{ matrix.jdk >= 24 }}
        run: echo "MAVEN_OPTS=--sun-misc-unsafe-memory-access=allow" >> $GITHUB_ENV
      - name: "Cache local Maven repository"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Restore Dubbo cache"
        uses: actions/cache@v3
        with:
          path: ~/.m2/repository/org/apache/dubbo
          key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
          restore-keys: |
            ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
            ${{ runner.os }}-dubbo-snapshot-
      - name: "Download test list"
        uses: actions/download-artifact@v4
        with:
          name: integration-test-list
          path: test/jobs/
      - name: "Set up JDK ${{matrix.jdk}}"
        uses: actions/setup-java@v1
        with:
          java-version: ${{matrix.jdk}}
      - name: "Init Candidate Versions"
        run: |
          DUBBO_VERSION="${{needs.build-source.outputs.version}}"
          CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION"
          echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
      - name: "Build test image"
        run: |
          cd test && bash -c ./build-test-image.sh
      - name: "Run tests"
        run: cd test && bash ./run-tests.sh
      - name: "Upload test result"
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: integration-test-result-${{matrix.jdk}}-${{matrix.job_id}}
          path: test/jobs/*-result*
  integration-test-result:
    needs: [integration-test-job]
    if: always()
    runs-on: ubuntu-22.04
    env:
      JAVA_VER: ${{matrix.jdk}}
    strategy:
      matrix:
        jdk: [ 8, 11, 17, 21, 25 ]
    steps:
      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-integration-cases'
          ref: main
      - name: "Download test result"
        uses: actions/download-artifact@v4
        with:
          pattern: integration-test-result-${{matrix.jdk}}-*
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: test/jobs/
          merge-multiple: true
      - name: "Merge test result"
        run: ./test/scripts/merge-test-results.sh

  error-code-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          path: "./dubbo"

      - uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-test-tools'
          ref: main
          path: "./dubbo-test-tools"

      - name: "Set up JDK 21"
        uses: actions/setup-java@v4
        with:
          java-version: 21
          distribution: 'zulu'

      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true
      - name: "Run Error Code Inspecting"
        env:
          DUBBO_ECI_REPORT_AS_ERROR: true
        run: |
          cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector
          ../mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo
      - name: "Upload error code inspection result"
        # always() should not be used here, since we don't need to handle the 'canceled' situation.
        if: ${{ success() || failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: "error-inspection-result"
          path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt

  native-image-inspecting:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          path: "./dubbo"
      - name: "Set up GraalVM environment"
        uses: graalvm/setup-graalvm@v1
        with:
          version: '22.3.0'
          java-version: '17'
          components: 'native-image'
          github-token: ${{ secrets.GITHUB_TOKEN }}
          native-image-job-reports: 'true'
      - name: "Set up Zookeeper environment"
        run: |
          wget -t 1 -T 120 https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
          tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
          mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
          apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
      - name: "Check environment"
        run: |
          java --version
          native-image --version
      - name: "Set current date as env variable"
        run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: "Restore local Maven repository cache"
        uses: actions/cache/restore@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
          restore-keys: |
            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
            ${{ runner.os }}-maven-
      - name: "Compile Dubbo (Linux)"
        run: |
          cd ${{ github.workspace }}/dubbo
          ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
      - name: "Checkout dubbo-samples repository"
        uses: actions/checkout@v4
        with:
          repository: 'apache/dubbo-samples'
          ref: master
          path: "./dubbo-samples"
      - name: "Compile and run Dubbo native image demo"
        run: |
          MVNW="${{ github.workspace }}/dubbo-samples/mvnw ${{ env.MAVEN_ARGS }} -Dmaven.test.skip=true"
          cd ${{ github.workspace }}/dubbo-samples/2-advanced/dubbo-samples-native-image/dubbo-samples-native-image-provider
          $MVNW clean package -P native native:compile
          nohup ./target/dubbo-samples-native-image-provider &
          sleep 10
          curl \
            --header "Content-Type: application/json" \
            --data '{"name":"Dubbo"}' \
            http://localhost:50052/org.apache.dubbo.nativeimage.DemoService/sayHello/


================================================
FILE: .gitignore
================================================
# maven ignore
target/
*.jar
*.war
*.zip
*.tar
*.tar.gz
.flattened-pom.xml

# eclipse ignore
.settings/
.project
.classpath
.externalToolBuilders
maven-eclipse.xml

# idea ignore
.idea/
*.ipr
*.iml
*.iws

# visual-studio-code ignore
.vscode/

# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp

# system ignore
.DS_Store
Thumbs.db
*.orig

# license check result
license-list

# grpc compiler
compiler/gradle.properties
compiler/build/*
compiler/.gradle/*

# protobuf
dubbo-serialization/dubbo-serialization-protobuf/build/*
dubbo-demo/dubbo-demo-triple/build/*

# global registry center
.tmp

.git.exec.error

# log files generated by testcase.
dubbo-rpc/dubbo-rpc-api/custom-access.log*



================================================
FILE: .licenserc.yaml
================================================
header:
  license:
    spdx-id: Apache-2.0
    content: |
      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.

  paths-ignore:
    - '**/*.versionsBackup'
    - '**/.idea/'
    - '**/*.iml'
    - '**/.settings/*'
    - '**/.classpath'
    - '**/.project'
    - '**/target/**'
    - '**/generated/**'
    - '**/*.log'
    - '**/codestyle/*'
    - '**/resources/META-INF/**'
    - '**/resources/mockito-extensions/**'
    - '**/*.proto'
    - '**/*.cache'
    - '**/*.txt'
    - '**/*.load'
    - '**/*.flex'
    - '**/*.fc'
    - '**/*.javascript'
    - '**/*.properties'
    - '**/*.sh'
    - '**/*.bat'
    - '**/*.md'
    - '**/*.svg'
    - '**/*.png'
    - '**/*.json'
    - '**/*.conf'
    - '**/*.ftl'
    - '**/*.tpl'
    - '**/*.factories'
    - '**/*.handlers'
    - '**/*.schemas'
    - '**/*.nojekyll'
    - '.git/'
    - '.github/**'
    - '**/.gitignore'
    - '**/.helmignore'
    - '.repository/'
    - 'compiler/**'
    - '.gitmodules'
    - '.mvn'
    - 'mvnw'
    - 'mvnw.cmd'
    - 'LICENSE'
    - 'NOTICE'
    - 'CNAME'
    - 'Jenkinsfile'
    - '**/vendor/**'
    - '**/src/test/resources/certs/**'
    - '**/src/test/resources/definition/**'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/threadlocal/InternalThreadLocal.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/timer/HashedWheelTimer.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/timer/Timeout.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/timer/Timer.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/timer/TimerTask.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/utils/CIDRUtils.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/utils/Utf8Utils.java'
    - 'dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/EmbeddedZooKeeper.java'
    - 'dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/utils/TestSocketUtils.java'
    - 'dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriHttp2RemoteFlowController.java'
    - 'dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/cors/CorsHeaderFilter.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/serial/SerializingExecutor.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/AbstractAotMojo.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/AbstractDependencyFilterMojo.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/CommandLineBuilder.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/DependencyFilter.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/Exclude.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/ExcludeFilter.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/FilterableDependency.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/Include.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/IncludeFilter.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/JavaCompilerPluginConfiguration.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/JavaExecutable.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/JavaProcessExecutor.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/MatchingGroupIdFilter.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/RunArguments.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/aot/RunProcess.java'
    - 'dubbo-plugin/dubbo-native/src/main/java/org/apache/dubbo/aot/generate/BasicJsonWriter.java'
    - 'dubbo-plugin/dubbo-native/src/main/java/org/apache/dubbo/aot/api/ExecutableMode.java'
    - 'dubbo-plugin/dubbo-native/src/main/java/org/apache/dubbo/aot/api/MemberCategory.java'
    - 'dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/aggregate/DubboMergingDigest.java'
    - 'dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/aggregate/DubboAbstractTDigest.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/logger/helpers/FormattingTuple.java'
    - 'dubbo-common/src/main/java/org/apache/dubbo/common/logger/helpers/MessageFormatter.java'
    - 'dubbo-maven-plugin/src/main/java/org/apache/dubbo/maven/plugin/protoc/DubboProtocCompilerMojo.java'
    - 'dubbo-plugin/dubbo-compiler/src/main/java/org/apache/dubbo/gen/utils/ProtoTypeMap.java'

  comment: on-failure

  license-location-threshold: 130

dependency:
  files:
    - pom.xml
    - dubbo-dependencies-bom/pom.xml
  licenses:
    - name: com.fasterxml.jackson.core:jackson-annotations
      license: Apache-2.0
    - name: com.fasterxml.jackson.core:jackson-core
      license: Apache-2.0
    - name: com.fasterxml.jackson.core:jackson-databind
      license: Apache-2.0
    - name: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
      license: Apache-2.0
    - name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
      license: Apache-2.0
    - name: com.google.code.gson:gson
      license: Apache-2.0
    - name: com.google.guava:listenablefuture
      license: Apache-2.0
    - name: com.salesforce.servicelibs:grpc-contrib
      license: BSD 3-clause
    - name: com.squareup.okhttp3:logging-interceptor
      license: Apache-2.0
    - name: com.squareup.okhttp3:okhttp
      license: Apache-2.0
    - name: com.squareup.okio:okio
      license: Apache-2.0
    - name: com.sun.xml.fastinfoset:FastInfoset
      license: Apache-2.0
    - name: io.envoyproxy.controlplane:api
      license: Apache-2.0
    - name: io.swagger:swagger-annotations
      license: Apache-2.0
    - name: io.swagger:swagger-models
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-actuator
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-autoconfigure
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-configuration-processor
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-starter
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-starter-actuator
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-starter-logging
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-starter-tomcat
      license: Apache-2.0
    - name: org.springframework.boot:spring-boot-starter-web
      license: Apache-2.0
    - name: org.slf4j:slf4j-api
      license: MIT
    - name: org.slf4j:slf4j-log4j12
      license: MIT
    - name: org.jboss.resteasy:resteasy-jaxrs
      license: Apache-2.0
    - name: org.jboss.resteasy:resteasy-client
      license: Apache-2.0
    - name: org.jboss.resteasy:resteasy-netty4
      license: Apache-2.0
    - name: org.jboss.resteasy:resteasy-jdk-http
      license: Apache-2.0
    - name: org.jboss.resteasy:resteasy-jackson-provider
      license: Apache-2.0
    - name: org.jboss.resteasy:resteasy-jaxb-provider
      license: Apache-2.0
    - name: net.jcip:jcip-annotations
      license: Apache-2.0
    - name: org.apache.zookeeper:zookeeper
      license: Apache-2.0
    - name: org.apache.zookeeper:zookeeper-jute
      license: Apache-2.0
    - name: net.bytebuddy:byte-buddy
      license: Apache-2.0
    - name: javax.enterprise:cdi-api
      license: Apache-2.0
    - name: org.codehaus.plexus:plexus-component-annotations
      license: Apache-2.0
    - name: org.slf4j:jcl-over-slf4j
      license: Apache-2.0
    - name: org.slf4j:jul-to-slf4j
      license: Apache-2.0
    - name: org.codehaus.plexus:plexus-interpolation
      license: Apache-2.0
    - name: org.sonatype.plexus:plexus-sec-dispatcher
      license: Apache-2.0
    - name: org.sonatype.plexus:plexus-cipher
      license: Apache-2.0
    - name: com.alibaba.csp:sentinel-apache-dubbo3-adapter
      license: Apache-2.0
    - name: com.alibaba.csp:sentinel-transport-simple-http
      license: Apache-2.0
    - name: com.alibaba.csp:sentinel-transport-common
      license: Apache-2.0
    - name: com.alibaba.csp:sentinel-datasource-extension
      license: Apache-2.0
    - name: com.alibaba.csp:sentinel-core
      license: Apache-2.0
    - name: com.google.protobuf:protobuf-java
      license: BSD 3-clause
    - name: com.google.protobuf:protobuf-java-util
      license: BSD 3-clause
    - name: org.antlr:antlr4
      license: BSD 3-clause
    - name: org.antlr:antlr-runtime
      license: BSD 3-clause
    - name: org.antlr:ST4
      license: BSD 3-clause
    # multi license
    - name: org.javassist:javassist
      license: Apache-2.0
    - name: javax.annotation:javax.annotation-api
      license: CDDL-1.0
    - name: com.salesforce.servicelibs:jprotoc
      license: CDDL-1.0
    - name: org.checkerframework:checker-compat-qual
      license: MIT
    - name: ch.qos.logback:logback-classic
      license: EPL-1.0
    - name: ch.qos.logback:logback-core
      license: EPL-1.0
    - name: javax.servlet:javax.servlet-api
      license: CDDL-1.1
    - name: com.sun.activation:javax.activation
      license: CDDL-1.1
    - name: javax.activation:activation
      license: CDDL-1.1
    - name: jakarta.annotation:jakarta.annotation-api
      license: EPL-2.0
    - name: org.glassfish:jakarta.el
      license: EPL-2.0
    - name: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec
      license: CDDL-1.1
    - name: org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec
      license: EPL-2.0
    - name: org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec
      license: EPL-2.0
  excludes:
    - name: javax.xml.bind:jsr173_api


================================================
FILE: .mvn/jvm.config
================================================
-Dfile.encoding=UTF-8
-Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8
-Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8

================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# 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
#
#   https://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.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar


================================================
FILE: CHANGES.md
================================================
# Release Notes

Please refer to https://github.com/apache/dubbo/releases for notes of future releases.

## 2.7.6 

### Features
* Support Service Authentication https://github.com/apache/dubbo/issues/5461

### Enhancement
* Removing the internal JDK API from FileSystemDynamicConfiguration
* Refactor the APT test-cases implementation of dubbo-metadata-processor in Java 9+
* Remove feature envy
* JsonRpcProtocol support Generalization 
* Reduce object allocation for ProtocolUtils.serviceKey
* Reduce object allocation for ContextFilter.invoke

### Bugfixes
* Fixed bugs reported from 2.7.5 or lower versions, check [2.7.6 milestone](https://github.com/apache/dubbo/milestone/30) for details.

### Compatibility
1. Filter refactor, the callback method `onResponse` annotated as @Deprecated has been removed, users of lower versions that 
have extended Filter implementations and enabled Filter callbacks should be careful of this change.
2. RpcContext added some experimental APIs to support generic Object transmission.

## 2.7.5

### Features
* Support HTTP/2 through gRPC, offers all features supported by HTTP/2 and gRPC
    * Stream communication: client stream, server stream and bi-stream.
    * Reactive stream style RPC call.
    * Back pressure based on HTTP/2 flow-control mechanism.
    * TLS secure transport layer.
    * Define service using IDL
* Protobuf support for native Dubbo
    * Define service using IDL
    * Protobuf serialization
* TLS for netty4 server
* New SPI for dynamically adding extra parameters into provider URL, especially env parameters.
* **[BETA]** Brand new Service Discovery mechanism: Service Reflection - instance (application) level service discovery.
* **[BETA]** Brand new API for bootstraping Dubbo projects

### Performance Tuning
* Overall performance improved by nearly 30% compared to v2.7.3 (by QPS in certain circumstances)
* Improved consumer side thread model to avoid thread allocation and context switch, especially useful for services serving big traffic.

### Enhancement
* Load balance strategy among multiple registries:
    * Preferred
    * Same zone first
    * Weighted LB
    * The first one available
* New callback SPI for receiving address change notifications
* Refactoring of config module

### Bugfixes
check 2.7.5 milestone for details.

## 2.7.4.1

### Enhancement

* Enhance ProtobufTypeBuilder support generate type definition which contains Bytes List or Bytes Map. #5083
* Using the ID of Dubbo Config as the alias of Bean. #5094
* tag router supports anyhost. #4431
* optimize generic invoke. #4076
* dubbo zookeeper registry too slow #4828
* use consul with group and version. #4755
* qos support host config. #4720
* migrate http protocol #4781
* Some unit test optimization. #5026 #4803 #4687

### Bugfixes

* Apollo namespace optimization.  #5105
* Simplify dubbo-common transitive dependencies. #5107 
* Delete 'config.' prefix for url generated from ConfigCenterConfig. #5001
* fix set generic method error. #5079
* Add support for overriding Map properties in AbstractConfig.refresh. #4882
* Fix travis javax.ex dependency issue. (unit test)
* Fix: ExtensionLoader load duplicate filter,no log or exception. #4340 
* When the provider interrupts abnormally, the consumer cannot return quickly and still waits for the timeout to end. #4694
* Fix register config not take effect because of url simplified。 #4397
* Don't support metadata for generic service. #4641 
* Avoid resize in ClassUtils.java. #5009 
* default attribute in <dubbo:registry> doesn't work as expected. #4412
* make RegistryDirectory can refresh the invokers when providers number become 0 when using nacos registry. #4793
* Multiple @Reference annotations only have one effect #4674
* Fix RpcContext.getContext().getRemoteApplicationName() returns null #4351
* Security issue: upgrade fastjson version to 1.2.60. #5018
* nacos-registry:serviceName split error #4974
* AbstractConfig.java-getMetaData set default depend on getmethod sequence #4678
* fix protocol register set false not work. #4776 
* Fix: In Rest protocol, the limitation of Dubbo-Attachments. #4898
* The logic of org.apache.dubbo.config.MonitorConfig#isValid is incorrect #4892
* protostuff return stackoverflow and other error msg #4861
* fix method parameter bean generation. #3796 
* replace hardcode with regex pattern #4810
* Fix warm up issue when provider's timestamp is bigger than local machine's timestamp. #4870
* Fix use generic invocation via API , lost #4238 ion" value #4784
* In consumer side the app cannot catch the exception from provider that is configured serialization="kryo". #4238
* fix StringUtils#isBlank #4725
* when the interfaceName of the Reference annotation has duplicated,the exception is puzzled #4160
* when anonymity  bean is defined in spring context,dubbo throw npe #
* add Thread ContextClassLoader #4712
* Fix judgment ipv4 address #4729
* The compilation of static methods should be excluded when generating the proxy. #4647
* check EOF of inputstream in IOUtils.write #4648


## 2.7.3

### Change List

1. Asynchronous support
    * Unified asynchronous and synchronous callback process, exception scenario triggers onError callback, #4401
    * Performance degradation caused by CompletableFuture.get() in JDK1.8 environment, #4279

2. Configuration Center
    * ConfigCenter custom namespace does not take effect, #4411
    * Unify the models implemented by several configuration centers such as Zookeeper, Nacos, and Etcd. Please refer to the description for possible incompatibility issues, #4388
    * Adjust Override Coverage Rule Center Priority: Service Level > Application Level, #4175

3. 2.6.x compatibility
    * Support Zipkin tracing feature provided by Zipkin officially, #3728, #4471
    * DubboComponentScan supports simultaneous scanning of annotations under the `com.alibaba.*` and `org.apache.*` packages, #4330

4. The Nacos Registration Center only subscribes to the address list and no longer subscribes to configuration information, #4454.

5. Support to read the environment configuration from the specified location, which can be specified by -D or OS VARIABLE. Please refer to [automatically loading environment variables](http://dubbo.apache.org/en-us/docs/user/configuration/environment-variables.html)

6. Fix consumer cannot downgrade to providers with no tags when there's no tagged providers can match, #4525

7. Some other bugfixes, #4346 #4338 #4349 #4377

### Change List

1. 异步支持相关

    - 统一异步和同步的回调流程,异常场景触发onError回调 #4401
    - CompletableFuture.get()在JDK1.8环境下带来的性能下降问题 #4279

2. 配置中心相关

    - ConfigCenter自定义namespace不生效的问题 #4411
    - 统一Zookeeper、Nacos、Etcd等几个配置中心实现的模型,可能带来的不兼容性问题请参见说明。相关修改:#4388
    - 调整Override覆盖规则中心优先级:服务级别 > 应用级别 #4175

3. 2.6.x兼容性

    - 兼容zipkin官方提供的基于Dubbo-2.6 API的集成 #3728, #4471
    - DubboComponentScan支持同时扫描 `com.alibaba.*` 和 `org.apache.*` 两个包下的注解 #4330

4. Nacos注册中心只订阅地址列表,不再订阅配置信息 #4454

5. 支持从指定位置读取环境配置,可通过-D或OS VARIABLE指定,具体请参见[使用说明](http://dubbo.apache.org/zh-cn/docs/user/configuration/environment-variables.html)

6. 标签路由在消费端使用静态打标方式时,无法实现自动降级以消费无标签提供者 #4525

7. 其他一些bugfix,#4346 #4338 #4349 #4377 

## 2.7.2

### New Features

- nacos config center / metadata center support. [#3846](https://github.com/apache/dubbo/issues/3846)
- Etcd support as config center and metadata center [#3653](https://github.com/apache/dubbo/issues/3653)
- Support Redis cluster in Metadata Report. [#3817](https://github.com/apache/dubbo/issues/3817)
- add new module for Dubbo Event. [#4096](https://github.com/apache/dubbo/issues/4096)
- Support multiple registry that including some effective registry, such as zk, redis [#3599](https://github.com/apache/dubbo/issues/3599)
- support nacos metadata [#4025](https://github.com/apache/dubbo/issues/4025)
- Dubbo support Google Protobuf generic reference [#3829](https://github.com/apache/dubbo/issues/3829)
- Merge serialization-native-hessian-for-apache-dubbo into incubator-dubbo [#3961](https://github.com/apache/dubbo/issues/3961)
- Merge rpc-native-thrift-for-apache-dubbo into incubator-dubbo [#3960](https://github.com/apache/dubbo/issues/3960)
- add socks5 proxy support [#3624](https://github.com/apache/dubbo/issues/3624)
- Integrate with SOFARegistry [#3874](https://github.com/apache/dubbo/issues/3874)
- Introduce CompletableFuture $invokeAsync for GenericService, now, for generic call, you can use:  
  $invoke for sync method call with normal return type.
  $invokeAsync for async method call with CompletableFuture<T> signature. [#3163](https://github.com/apache/dubbo/issues/3163)

### Enhancement

- Performance tuning for TimeoutTask in DefaultFuture. [#4129](https://github.com/apache/dubbo/issues/4129)
- Add a script to check dependencies license. [#3840](https://github.com/apache/dubbo/issues/3840)
- Change DynamicConfiguration definition to better adapt to Apollo's namespace storage model.[#3266](https://github.com/apache/dubbo/issues/3266)
- use equal explicit class to replace anonymous class [#4027](https://github.com/apache/dubbo/issues/4027)
- Separate Constants.java into some SubConstants Class [#3137](https://github.com/apache/dubbo/issues/3137)
- Need to enhance DecodeableRpcResult error message [#3994](https://github.com/apache/dubbo/issues/3994)
- Provide more meaningful binary releases. [#2491](https://github.com/apache/dubbo/issues/2491)
- remove useless module-dubbo-test-integration [#3573](https://github.com/apache/dubbo/issues/3573)
- complete lookup method of consul registry and add integration test [#3890](https://github.com/apache/dubbo/issues/3890)
- Metrics Service [#3702](https://github.com/apache/dubbo/issues/3702)
- Update nacos-client to 1.0.0 [#3804](https://github.com/apache/dubbo/issues/3804)
- Fluent style builder API support [#3431](https://github.com/apache/dubbo/issues/3431)
- Update readme to remove the incubator prefix [#4159](https://github.com/apache/dubbo/issues/4159)
- update erlang link [#4100](https://github.com/apache/dubbo/issues/4100)
- optimize array code style [#4031](https://github.com/apache/dubbo/issues/4031)
- optimize some code style [#4006](https://github.com/apache/dubbo/issues/4006)
- remove useless module-dubbo-test-integration [#3989](https://github.com/apache/dubbo/issues/3989)
- optimize constant naming style [#3970](https://github.com/apache/dubbo/issues/3970)
- Use maven CI friendly versions: revision. [#3851](https://github.com/apache/dubbo/issues/3851)
- remove-parse-error-log [#3862](https://github.com/apache/dubbo/issues/3862)
- Complete xsd definition for ConfigCenterConfig. [#3854](https://github.com/apache/dubbo/issues/3854)
- add remoteApplicationName field in RpcContext [#3816](https://github.com/apache/dubbo/issues/3816)

### Bugfixes

- @Reference can't match the local @Service beans. [#4071](https://github.com/apache/dubbo/issues/4071)
- remove some illegal licence: jcip-annotations, jsr173_api. [#3790](https://github.com/apache/dubbo/issues/3790)
- Qos port can't be disabled by externalized property. [#3958](https://github.com/apache/dubbo/issues/3958)
- Fix consumer will generate wrong stackTrace. [#4137](https://github.com/apache/dubbo/issues/4137)
- nacos registry serviceName may conflict. [#4111](https://github.com/apache/dubbo/issues/4111)
- The client loses the listener when the network is reconnected. [#4115](https://github.com/apache/dubbo/issues/4115)
- fix registry urls increase forever when recreate reference proxy. [#4109](https://github.com/apache/dubbo/issues/4109)
- In dubbo 2.7.1,the watcher processor of zookeeper client throw Nullpointexception. [#3866](https://github.com/apache/dubbo/issues/3866)
- ReferenceConfig initialized not changed to false once subscribe throws exception [#4068](https://github.com/apache/dubbo/issues/4068)
- dubbo registry extension compatibility with dubbo 2.6.x. [#3882](https://github.com/apache/dubbo/issues/3882)
- Annotation mode cannot set service parameters in 2.7.0. [#3778](https://github.com/apache/dubbo/issues/3778)
- compatibility with Zipkin. [#3728](https://github.com/apache/dubbo/issues/3728)
- do local export before register any listener. [#3669](https://github.com/apache/dubbo/issues/3669)
- Cannot recognize 2.6.x compatible rules from dubbo-admin. [#4059](https://github.com/apache/dubbo/issues/4059)
- In Dubbo 2.7.0, the provider can't be configured to async [#3650](https://github.com/apache/dubbo/issues/3650)
- dubbox compatibility [#3991](https://github.com/apache/dubbo/issues/3991)
- dubbo-2.7.1 providers repeat register [#3785](https://github.com/apache/dubbo/issues/3785)
- consul registry: NullPointerException [#3923](https://github.com/apache/dubbo/issues/3923)
- cannot publish local ip address when local ip and public ip exist at the same time [#3802](https://github.com/apache/dubbo/issues/3802)
- roll back change made by 3520. [#3935](https://github.com/apache/dubbo/issues/3935)
- dubbo-registry-nacos module is not bundled into Apache Dubbo 2.7.1 [#3797](https://github.com/apache/dubbo/issues/3797)
- switch from CopyOnWriteArrayList to regular list in order to avoid potential UnsupportedOperationException [#3242](https://github.com/apache/dubbo/issues/3242)
- Serialization ContentTypeId conflict between avro protocol and protocoluff protocol [#3926](https://github.com/apache/dubbo/issues/3926)
- delay export function doesn't work. [#3952](https://github.com/apache/dubbo/issues/3952)
- org.apache.dubbo.rpc.support.MockInvoker#getInterface should not return null [#3713](https://github.com/apache/dubbo/issues/3713)
- dubbo TagRouter does not work with dubbo:parameter [#3875](https://github.com/apache/dubbo/issues/3875)
- make protocols a mutable list (a concrete ArrayList) [#3841](https://github.com/apache/dubbo/issues/3841)
- javadoc lint issue [#3646](https://github.com/apache/dubbo/issues/3646)
- The etcd3 lease should be recycled correctly [#3684](https://github.com/apache/dubbo/issues/3684)
- telnet can't work when parameter has no nullary constructor and some fields is primitive [#4007](https://github.com/apache/dubbo/issues/4007)
- Sort added router list before set the 'routers' field of the RouterChain [#3969](https://github.com/apache/dubbo/issues/3969)
- fix injvm and local call [#3638](https://github.com/apache/dubbo/issues/3638)
- spelling error in org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator#generateReturnAndInovation [#3933](https://github.com/apache/dubbo/issues/3933)
- metadata report doesn't support redis with password [#3826](https://github.com/apache/dubbo/issues/3826)
- The dubbo protostuff protocol serializes the bug of java.sql.Timestamp [#3914](https://github.com/apache/dubbo/issues/3914)
- do not filter thread pool by port [#3919](https://github.com/apache/dubbo/issues/3919)
- 'dubbo-serialization-gson' maven package error [#3903](https://github.com/apache/dubbo/issues/3903)
- AbstractRegistry will be endless loop, when doSaveProperties method have no permission to save the file [#3746](https://github.com/apache/dubbo/issues/3746)
- fix fastjson serialization with generic return type [#3771](https://github.com/apache/dubbo/issues/3771)
- The dubbo-serialization -api modules should not dependency on third-party jar packages [#3762](https://github.com/apache/dubbo/issues/3762)
- when using protostuff to serialize, there is not to check whether the data is null [#3727](https://github.com/apache/dubbo/issues/3727)
- bugfix and enhancement for async [#3287](https://github.com/apache/dubbo/issues/3287)

## 2.7.1

### Notice

'zkclient' extension for 'org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter' is removed from Dubbo 2.7.1, and 'curator' extension becomes the default extension. If you happen to config your application to use 'zkclient' explicitly, pls. switch to use 'curator' instead.

### New Features

- service register support on nacos [#3582](https://github.com/apache/dubbo/issues/3582)
- support consul as registry center, config center and metadata center [#983](https://github.com/apache/dubbo/issues/983)
- service registry support/config center support on etcd [#808](https://github.com/apache/dubbo/issues/808)
- metrics support in dubbo 2.7.1 [#3598](https://github.com/apache/dubbo/issues/3598)
- @Argument @Method support [#2405](https://github.com/apache/dubbo/issues/2045)

### Enhancement

- [Enhancement] @EnableDubboConfigBinding annotates @Repeatable [#1770](https://github.com/apache/dubbo/issues/1770)
- [Enhancement] Change the default behavior of @EnableDubboConfig.multiple() [#3193](https://github.com/apache/dubbo/issues/3193)
- Should make annotation easier to use in multiple items circumstance [#3039](https://github.com/apache/dubbo/issues/3039)
- NoSuchMethodError are thrown when add custom Filter using dubbo2.6.5 and JDK1.6 and upgrade to dubbo2.7.0 [#3570](https://github.com/apache/dubbo/issues/3570)
- introduce dubbo-dependencies-zookeeper [#3607](https://github.com/apache/dubbo/pull/3607)
- Zookeeper ConfigCenter reuse the client abstraction and connection session [#3288](https://github.com/apache/dubbo/issues/3288)
- [Survey] Is it necessary to continue to maintain zkclient in dubbo project? [#3569](https://github.com/apache/dubbo/issues/3569)
- Start to use IdleStateHandler in Netty4 [#3341](https://github.com/apache/dubbo/pull/3341)
- Support multiple shared links [#2457](https://github.com/apache/dubbo/pull/2457)
- Optimize heartbeat [#3299](https://github.com/apache/dubbo/pull/3299)
- AccessLogFilter simple date format reduce instance creation [#3026](https://github.com/apache/dubbo/issues/3026)
- Support wildcard ip for tag router rule. [#3289](https://github.com/apache/dubbo/issues/3289)
- ScriptRouter should cache CompiledScript [#390](https://github.com/apache/dubbo/issues/390)
- Optimize compareTo in Router to guarantee consistent behaviour. [#3302](https://github.com/apache/dubbo/issues/3302)
- RMI protocol doesn't support generic invocation [#2779](https://github.com/apache/dubbo/issues/2779)
- a more elegant way to enhance HashedWheelTimer [#3567](https://github.com/apache/dubbo/pull/3567)
- obtain local address incorrectly sometimes in dubbo [#538](https://github.com/apache/dubbo/issues/538)
- implement pull request #3412 on master branch [#3418](https://github.com/apache/dubbo/pull/3418)
- enhancement for event of response (follow up for pull request #3043) [#3244](https://github.com/apache/dubbo/issues/3244)
- bump up hessian-lite version #3423 [#3513](https://github.com/apache/dubbo/pull/3513)
- [Dubbo-3610]make snakeyaml transitive, should we do this? [#3659](https://github.com/apache/dubbo/pull/3659)

### Bugfixes

- cannot register REST service in 2.7 due to the changes in RestProtoco#getContextPath [#3445](https://github.com/apache/dubbo/issues/3445)
- Conflict between curator client and dubbo [#3574](https://github.com/apache/dubbo/issues/3574)
- is there a problem in NettyBackedChannelBuffer.setBytes(...)? [#2619](https://github.com/apache/dubbo/issues/2619)
- [Dubbo - client always reconnect offline provider] Dubbo client bug [#3158](https://github.com/apache/dubbo/issues/3158)
- fix heartbeat internal [#3579](https://github.com/apache/dubbo/pull/3579)
- logic issue in RedisRegistry leads to services cannot be discovered. [#3291](https://github.com/apache/dubbo/pull/3291)
- Multicast demo fails with message "Can't assign requested address" [#2423](https://github.com/apache/dubbo/issues/2423)
- Fix thrift protocol, use path to locate exporter. [#3331](https://github.com/apache/dubbo/pull/3331)
- cannot use override to modify provider's configuration when hessian protocol is used [#900](https://github.com/apache/dubbo/issues/900)
- Condition is not properly used ? [#1917](https://github.com/apache/dubbo/issues/1917)
- connectionMonitor in RestProtocol seems not work [#3237](https://github.com/apache/dubbo/issues/3237)
- fail to parse config text with white space [#3367](https://github.com/apache/dubbo/issues/3367)
- @Reference check=false doesn't take effect [#195](https://github.com/apache/dubbo/issues/195)
- [Issue] SpringStatusChecker execute errors on non-XML Spring configuration [#3615](https://github.com/apache/dubbo/issues/3615)
- monitor's cluster config is set to failsafe and set to failsafe only [#274](https://github.com/apache/dubbo/issues/274)
- A question for ReferenceConfigCache. [#1293](https://github.com/apache/dubbo/issues/1293)
- referenceconfig#destroy never invoke unregister [#3294](https://github.com/apache/dubbo/issues/3294)
- Fix when qos is disable,log will print every time [#3397](https://github.com/apache/dubbo/pull/3397)
- service group is not supported in generic direct invocation [#3555](https://github.com/apache/dubbo/issues/3555)
- setOnreturn doesn't take effect in async generic invocation [#208](https://github.com/apache/dubbo/issues/208)
- Fix timeout filter not work in async way [#3174](https://github.com/apache/dubbo/pull/3174)
- java.lang.NumberFormatException: For input string: "" [#3069](https://github.com/apache/dubbo/issues/3069)
- NPE occurred when the configuration was deleted [#3533](https://github.com/apache/dubbo/issues/3533)
- NPE when package of interface is empty [#3556](https://github.com/apache/dubbo/issues/3556)
- NPE when exporting rest service using a given path. [#3477](https://github.com/apache/dubbo/issues/3477)
- NullPointerException happened when using SpringContainer.getContext() [#3476](https://github.com/apache/dubbo/issues/3476)
- Why does not tomcat throw an exception when `server.start` failed with a socket binding error.  [#3236](https://github.com/apache/dubbo/issues/3236)
- No such extension org.apache.dubbo.metadata.store.MetadataReportFactory by name redis [#3514](https://github.com/apache/dubbo/issues/3514)
- dubbo 2.7.1-SNAPSHOT NoClassDefFoundError when use springboot [#3426](https://github.com/apache/dubbo/issues/3426)
- NPE occurs when use @Reference in junit in spring boot application [#3429](https://github.com/apache/dubbo/issues/3429)
- When refer the same service with more than one @References(with different configs) on consumer side, only one take effect [#1306](https://github.com/apache/dubbo/issues/1306)
- consumer always catch java.lang.reflect.UndeclaredThrowableException for the exception thrown from provider [#3386](https://github.com/apache/dubbo/issues/3386)
- dubbo2.7.0 com.alibaba.com.caucho.hessian.io.HessianProtocolException: 'com.alibaba.dubbo.common.URL' could not be instantiated [#3342](https://github.com/apache/dubbo/issues/3342)
- Close Resources Properly [#3473](https://github.com/apache/dubbo/issues/3473)
- SPI entires dup by 3 times. [#2842](https://github.com/apache/dubbo/issues/2842)
- provider gets wrong interface name from attachment when use generic invocation in 2.6.3 [#2981](https://github.com/apache/dubbo/issues/2981)
- HashedWheelTimer's queue gets full [#3449](https://github.com/apache/dubbo/issues/3449)
- Modify MetadataReportRetry ThreadName [#3550](https://github.com/apache/dubbo/pull/3550)
- Keep interface key in the URL in simplify mode when it's different from path. [#3478](https://github.com/apache/dubbo/issues/3478)
- nc is not stable in dubbo's bootstrap script [#936](https://github.com/apache/dubbo/issues/936)

## 2.7.0

Requirements: **Java 8+** required

Please check [here](https://github.com/apache/dubbo/blob/2.7.0-release/CHANGES.md#upgrading-and-compatibility-notifications) for notes and possible compatibility issues for upgrading from 2.6.x or lower to 2.7.0.

### New Features

- Enhancement of service governance rules.
  - Enriched Routing Rules.
    1. Conditional Routing. Supports both application-level and service-level conditions.
    2. Tag Routing. Newly introduced to better support traffic isolation, such as grey deployment.
  - Decoupling governance rules with the registry, making it easier to extend. Apollo and Zookeeper are available in this version. Nacos support is on the way...
  - Application-level Dynamic Configuration support.
  - Use YAML as the configuration language, which is more friendly to read and use.

- Externalized Configuration. Supports reading `dubbo.properties` hosted in remote centralized configuration center - centralized configuration.

- Simplified registry URL. With lower Registry memory use and less notification pressure from Service Directory, separates Configuration notification from Service Discovery.

- Metadata Center. A totally new concept since 2.7.0,  used to store service metadata including static configuration, service definition, method signature, etc.. By default, Zookeeper and Redis are supported as the backend storage. Will work as the basis of service testing, mock and other service governance features going to be supported in [Dubbo-Admin](https://github.com/apache/dubbo-admin).

- Asynchronous Programming Model (only works for Dubbo protocol now)
  - Built-in support for the method with CompletableFuture<T> signature.
  - Server-side asynchronous support, with an AsyncContext API works like Servlet 3.0.
  - Asynchronous filter chain callback.

- Serialization Extension: Protobuf.

- Caching Policy Extension: Expiring Cache.

### Enhancements / Bugfixes

- Load Balancing strategy enhancement: ConsitentHash #2190, LeastActive #2171, Random #2597, RoundRobin #2650.

- Third-party dependency upgrading.
  - Switch default remoting to Netty 4.
  - Switch default Zookeeper client to Curator.
  - Upgrade Jetty to 9.x.

- IPV6 support #2079.

- Performance tuning, check hanging requests on a closed channel, make them return directly #2185.

- Fixed the serialization problem of JDK primitive types in Kryo #2178.

- Fixed the problem of failing to notify Consumer as early as possible after the Provider side deserialization failed #1903.

### Upgrading and Compatibility Notifications

We have always keep compatibility in mind during the whole process of 2.7.0. We even want old users to upgrade with only on pom version upgrade, but it's hard to achieve that, especially when considering that we have the package renamed in this version, so we had some tradeoffs. If you only used the Dubbo's most basic features, you may have little problems of upgrading, but if you have used some advanced features or have some SPI extensions inside, you'd better read the upgrade notifications carefully. The compatibility issues can be classified into the following 5 categories, for each part, there will have detailed dos and don'ts published later in the official website.

1. Interoperability between 2.7.0 and lower versions

2. Package renaming

   com.alibaba.dubbo -> org.apache.dubbo

3. Simplification of registered URLs

4. Service Governance Rules

5. Configuration

## 2.6.6

Enhancement / New feature:

* tag route.  #3065 
* Use Netty4 as default Netty version. #3029 
* upporting Java 8 Date/Time type when serializing with Kryo #3519 
* support config telnet  #3511
* add annotation driven in MethodConfig and ArgumentConfig #2603
* add nacos-registry module #3296  
* add `protocol` attribute in `@Rerefence` #3555 
*support the hierarchical interface in @Service  #3251  
* change the default behavior in `@EnableDubboConfig.multiple()` #3193 
* inline source code of `spring-context-support` #3192 
* Simplify externalized configuration of Dubbo Protocol name  #3189 

BugFix:
 
* update hessian-lite to 2.3.5, fix unnecessary class load #3538 
* Fix unregister when client destroyed(referenceconfig#destroy) #3502 
* SPI entires dup by 3 times #3315 
* fix Consumer throws RpcException after RegistryDirectory notify in high QPS #2016 
* fix NPE in @Reference when using Junit to test dubbo service #3429 
* fix consumer always catch java.lang.reflect.UndeclaredThrowableException for any exception throws in provider  #3386 
* fix the priority of `DubboConfigConfigurationSelector ` #2897 
* fix `@Rerefence#parameters()` not work #2301 

## 2.6.5

Enhancements / Features:    

- Reactor the generation rule for @Service Bean name [#2235](https://github.com/apache/dubbo/issues/2235) 
- Introduce a new Spring ApplicationEvent for ServiceBean exporting [#2251](https://github.com/apache/dubbo/issues/2251) 
- [Enhancement] the algorithm of load issue on Windows. [#1641](https://github.com/apache/dubbo/issues/1641)
- add javadoc to dubbo-all module good first issue. [#2600](https://github.com/apache/dubbo/issues/2600) 
- [Enhancement] Reactor the generation rule for @Service Bean name type/enhancement [#2235](https://github.com/apache/dubbo/issues/2235) 
- Optimize LeastActiveLoadBalance and add weight test case. [#2540](https://github.com/apache/dubbo/issues/2540) 
- Smooth Round Robin selection. [#2578](https://github.com/apache/dubbo/issues/2578) [#2647](https://github.com/apache/dubbo/pull/2647) 
- [E
Download .txt
Showing preview only (441K chars total). Download the full file or copy to clipboard to get everything.
gitextract_qgs740n0/

├── .artifacts
├── .asf.yaml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── DISCUSSION_TEMPLATE/
│   │   ├── general.yml
│   │   └── question.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug.yml
│   │   ├── 2-feature.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yaml
│   └── workflows/
│       ├── build-and-test-pr.yml
│       ├── build-and-test-scheduled-3.1.yml
│       ├── build-and-test-scheduled-3.2.yml
│       ├── build-and-test-scheduled-3.3.yml
│       └── release-test.yml
├── .gitignore
├── .licenserc.yaml
├── .mvn/
│   ├── jvm.config
│   └── wrapper/
│       └── maven-wrapper.properties
├── CHANGES.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Jenkinsfile
├── Jenkinsfile.sonar
├── LICENSE
├── NOTICE
├── README.md
├── SECURITY.md
├── build
├── build.cmd
├── codecov.yml
├── codestyle/
│   ├── checkstyle-suppressions.xml
│   ├── checkstyle.xml
│   ├── checkstyle_unix.xml
│   └── dubbo_codestyle_for_idea.xml
├── dubbo-cluster/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── dubbo/
│       │   │               ├── registry/
│       │   │               │   └── AddressListener.java
│       │   │               └── rpc/
│       │   │                   └── cluster/
│       │   │                       ├── CacheableRouterFactory.java
│       │   │                       ├── Cluster.java
│       │   │                       ├── ClusterInvoker.java
│       │   │                       ├── ClusterScopeModelInitializer.java
│       │   │                       ├── Configurator.java
│       │   │                       ├── ConfiguratorFactory.java
│       │   │                       ├── Constants.java
│       │   │                       ├── Directory.java
│       │   │                       ├── LoadBalance.java
│       │   │                       ├── MergeableClusterScopeModelInitializer.java
│       │   │                       ├── Merger.java
│       │   │                       ├── ProviderURLMergeProcessor.java
│       │   │                       ├── Router.java
│       │   │                       ├── RouterChain.java
│       │   │                       ├── RouterFactory.java
│       │   │                       ├── RuleConverter.java
│       │   │                       ├── SingleRouterChain.java
│       │   │                       ├── configurator/
│       │   │                       │   ├── AbstractConfigurator.java
│       │   │                       │   ├── absent/
│       │   │                       │   │   ├── AbsentConfigurator.java
│       │   │                       │   │   └── AbsentConfiguratorFactory.java
│       │   │                       │   ├── override/
│       │   │                       │   │   ├── OverrideConfigurator.java
│       │   │                       │   │   └── OverrideConfiguratorFactory.java
│       │   │                       │   └── parser/
│       │   │                       │       ├── ConfigParser.java
│       │   │                       │       └── model/
│       │   │                       │           ├── ConditionMatch.java
│       │   │                       │           ├── ConfigItem.java
│       │   │                       │           ├── ConfiguratorConfig.java
│       │   │                       │           └── ParamMatch.java
│       │   │                       ├── directory/
│       │   │                       │   ├── AbstractDirectory.java
│       │   │                       │   └── StaticDirectory.java
│       │   │                       ├── filter/
│       │   │                       │   ├── DefaultFilterChainBuilder.java
│       │   │                       │   ├── FilterChainBuilder.java
│       │   │                       │   ├── InvocationInterceptorBuilder.java
│       │   │                       │   ├── ProtocolFilterWrapper.java
│       │   │                       │   └── support/
│       │   │                       │       ├── CallbackConsumerContextFilter.java
│       │   │                       │       ├── ConsumerClassLoaderFilter.java
│       │   │                       │       ├── ConsumerContextFilter.java
│       │   │                       │       └── MetricsConsumerFilter.java
│       │   │                       ├── governance/
│       │   │                       │   ├── DefaultGovernanceRuleRepositoryImpl.java
│       │   │                       │   └── GovernanceRuleRepository.java
│       │   │                       ├── interceptor/
│       │   │                       │   └── ClusterInterceptor.java
│       │   │                       ├── loadbalance/
│       │   │                       │   ├── AbstractLoadBalance.java
│       │   │                       │   ├── AdaptiveLoadBalance.java
│       │   │                       │   ├── ConsistentHashLoadBalance.java
│       │   │                       │   ├── LeastActiveLoadBalance.java
│       │   │                       │   ├── RandomLoadBalance.java
│       │   │                       │   ├── RoundRobinLoadBalance.java
│       │   │                       │   └── ShortestResponseLoadBalance.java
│       │   │                       ├── merger/
│       │   │                       │   ├── ArrayMerger.java
│       │   │                       │   ├── BooleanArrayMerger.java
│       │   │                       │   ├── ByteArrayMerger.java
│       │   │                       │   ├── CharArrayMerger.java
│       │   │                       │   ├── DoubleArrayMerger.java
│       │   │                       │   ├── FloatArrayMerger.java
│       │   │                       │   ├── IntArrayMerger.java
│       │   │                       │   ├── ListMerger.java
│       │   │                       │   ├── LongArrayMerger.java
│       │   │                       │   ├── MapMerger.java
│       │   │                       │   ├── MergerFactory.java
│       │   │                       │   ├── SetMerger.java
│       │   │                       │   └── ShortArrayMerger.java
│       │   │                       ├── router/
│       │   │                       │   ├── AbstractRouter.java
│       │   │                       │   ├── AbstractRouterRule.java
│       │   │                       │   ├── RouterResult.java
│       │   │                       │   ├── RouterSnapshotFilter.java
│       │   │                       │   ├── RouterSnapshotNode.java
│       │   │                       │   ├── RouterSnapshotSwitcher.java
│       │   │                       │   ├── affinity/
│       │   │                       │   │   ├── AffinityStateRouter.java
│       │   │                       │   │   ├── AffinityStateRouterFactory.java
│       │   │                       │   │   └── config/
│       │   │                       │   │       ├── AffinityListenableStateRouter.java
│       │   │                       │   │       ├── AffinityProviderAppStateRouter.java
│       │   │                       │   │       ├── AffinityProviderAppStateRouterFactory.java
│       │   │                       │   │       ├── AffinityServiceStateRouter.java
│       │   │                       │   │       ├── AffinityServiceStateRouterFactory.java
│       │   │                       │   │       └── model/
│       │   │                       │   │           ├── AffinityRouterRule.java
│       │   │                       │   │           └── AffinityRuleParser.java
│       │   │                       │   ├── condition/
│       │   │                       │   │   ├── ConditionStateRouter.java
│       │   │                       │   │   ├── ConditionStateRouterFactory.java
│       │   │                       │   │   ├── MultiDestConditionRouter.java
│       │   │                       │   │   ├── config/
│       │   │                       │   │   │   ├── AppStateRouter.java
│       │   │                       │   │   │   ├── AppStateRouterFactory.java
│       │   │                       │   │   │   ├── ListenableStateRouter.java
│       │   │                       │   │   │   ├── ProviderAppStateRouter.java
│       │   │                       │   │   │   ├── ProviderAppStateRouterFactory.java
│       │   │                       │   │   │   ├── ServiceStateRouter.java
│       │   │                       │   │   │   ├── ServiceStateRouterFactory.java
│       │   │                       │   │   │   └── model/
│       │   │                       │   │   │       ├── ConditionRouterRule.java
│       │   │                       │   │   │       ├── ConditionRuleParser.java
│       │   │                       │   │   │       ├── ConditionSubSet.java
│       │   │                       │   │   │       ├── Destination.java
│       │   │                       │   │   │       ├── DestinationSet.java
│       │   │                       │   │   │       ├── MultiDestCondition.java
│       │   │                       │   │   │       └── MultiDestConditionRouterRule.java
│       │   │                       │   │   └── matcher/
│       │   │                       │   │       ├── AbstractConditionMatcher.java
│       │   │                       │   │       ├── ConditionMatcher.java
│       │   │                       │   │       ├── ConditionMatcherFactory.java
│       │   │                       │   │       ├── argument/
│       │   │                       │   │       │   ├── ArgumentConditionMatcher.java
│       │   │                       │   │       │   └── ArgumentConditionMatcherFactory.java
│       │   │                       │   │       ├── attachment/
│       │   │                       │   │       │   ├── AttachmentConditionMatcher.java
│       │   │                       │   │       │   └── AttachmentConditionMatcherFactory.java
│       │   │                       │   │       ├── param/
│       │   │                       │   │       │   ├── UrlParamConditionMatcher.java
│       │   │                       │   │       │   └── UrlParamConditionMatcherFactory.java
│       │   │                       │   │       └── pattern/
│       │   │                       │   │           ├── ValuePattern.java
│       │   │                       │   │           ├── range/
│       │   │                       │   │           │   └── RangeValuePattern.java
│       │   │                       │   │           └── wildcard/
│       │   │                       │   │               └── WildcardValuePattern.java
│       │   │                       │   ├── file/
│       │   │                       │   │   └── FileStateRouterFactory.java
│       │   │                       │   ├── mesh/
│       │   │                       │   │   ├── MeshScopeModelInitializer.java
│       │   │                       │   │   ├── route/
│       │   │                       │   │   │   ├── MeshAppRuleListener.java
│       │   │                       │   │   │   ├── MeshEnvListener.java
│       │   │                       │   │   │   ├── MeshEnvListenerFactory.java
│       │   │                       │   │   │   ├── MeshRuleCache.java
│       │   │                       │   │   │   ├── MeshRuleConstants.java
│       │   │                       │   │   │   ├── MeshRuleManager.java
│       │   │                       │   │   │   ├── MeshRuleRouter.java
│       │   │                       │   │   │   ├── StandardMeshRuleRouter.java
│       │   │                       │   │   │   └── StandardMeshRuleRouterFactory.java
│       │   │                       │   │   ├── rule/
│       │   │                       │   │   │   ├── BaseRule.java
│       │   │                       │   │   │   ├── VsDestinationGroup.java
│       │   │                       │   │   │   ├── destination/
│       │   │                       │   │   │   │   ├── ConnectionPoolSettings.java
│       │   │                       │   │   │   │   ├── DestinationRule.java
│       │   │                       │   │   │   │   ├── DestinationRuleSpec.java
│       │   │                       │   │   │   │   ├── Subset.java
│       │   │                       │   │   │   │   ├── TCPSettings.java
│       │   │                       │   │   │   │   ├── TcpKeepalive.java
│       │   │                       │   │   │   │   ├── TrafficPolicy.java
│       │   │                       │   │   │   │   └── loadbalance/
│       │   │                       │   │   │   │       ├── ConsistentHashLB.java
│       │   │                       │   │   │   │       ├── LoadBalancerSettings.java
│       │   │                       │   │   │   │       └── SimpleLB.java
│       │   │                       │   │   │   └── virtualservice/
│       │   │                       │   │   │       ├── DubboMatchRequest.java
│       │   │                       │   │   │       ├── DubboRoute.java
│       │   │                       │   │   │       ├── DubboRouteDetail.java
│       │   │                       │   │   │       ├── VirtualServiceRule.java
│       │   │                       │   │   │       ├── VirtualServiceSpec.java
│       │   │                       │   │   │       ├── destination/
│       │   │                       │   │   │       │   ├── DubboDestination.java
│       │   │                       │   │   │       │   └── DubboRouteDestination.java
│       │   │                       │   │   │       └── match/
│       │   │                       │   │   │           ├── AddressMatch.java
│       │   │                       │   │   │           ├── BoolMatch.java
│       │   │                       │   │   │           ├── DoubleMatch.java
│       │   │                       │   │   │           ├── DoubleRangeMatch.java
│       │   │                       │   │   │           ├── DubboAttachmentMatch.java
│       │   │                       │   │   │           ├── DubboMethodArg.java
│       │   │                       │   │   │           ├── DubboMethodMatch.java
│       │   │                       │   │   │           ├── ListBoolMatch.java
│       │   │                       │   │   │           ├── ListDoubleMatch.java
│       │   │                       │   │   │           ├── ListStringMatch.java
│       │   │                       │   │   │           └── StringMatch.java
│       │   │                       │   │   └── util/
│       │   │                       │   │       ├── MeshRuleDispatcher.java
│       │   │                       │   │       ├── MeshRuleListener.java
│       │   │                       │   │       └── TracingContextProvider.java
│       │   │                       │   ├── mock/
│       │   │                       │   │   ├── MockInvokersSelector.java
│       │   │                       │   │   └── MockStateRouterFactory.java
│       │   │                       │   ├── script/
│       │   │                       │   │   ├── ScriptStateRouter.java
│       │   │                       │   │   ├── ScriptStateRouterFactory.java
│       │   │                       │   │   └── config/
│       │   │                       │   │       ├── AppScriptRouterFactory.java
│       │   │                       │   │       ├── AppScriptStateRouter.java
│       │   │                       │   │       └── model/
│       │   │                       │   │           └── ScriptRule.java
│       │   │                       │   ├── state/
│       │   │                       │   │   ├── AbstractStateRouter.java
│       │   │                       │   │   ├── BitList.java
│       │   │                       │   │   ├── CacheableStateRouterFactory.java
│       │   │                       │   │   ├── RouterGroupingState.java
│       │   │                       │   │   ├── StateRouter.java
│       │   │                       │   │   ├── StateRouterFactory.java
│       │   │                       │   │   └── TailStateRouter.java
│       │   │                       │   └── tag/
│       │   │                       │       ├── TagStateRouter.java
│       │   │                       │       ├── TagStateRouterFactory.java
│       │   │                       │       └── model/
│       │   │                       │           ├── ParamMatch.java
│       │   │                       │           ├── Tag.java
│       │   │                       │           ├── TagRouterRule.java
│       │   │                       │           └── TagRuleParser.java
│       │   │                       └── support/
│       │   │                           ├── AbstractClusterInvoker.java
│       │   │                           ├── AvailableCluster.java
│       │   │                           ├── AvailableClusterInvoker.java
│       │   │                           ├── BroadcastCluster.java
│       │   │                           ├── BroadcastClusterInvoker.java
│       │   │                           ├── ClusterUtils.java
│       │   │                           ├── FailbackCluster.java
│       │   │                           ├── FailbackClusterInvoker.java
│       │   │                           ├── FailfastCluster.java
│       │   │                           ├── FailfastClusterInvoker.java
│       │   │                           ├── FailoverCluster.java
│       │   │                           ├── FailoverClusterInvoker.java
│       │   │                           ├── FailsafeCluster.java
│       │   │                           ├── FailsafeClusterInvoker.java
│       │   │                           ├── ForkingCluster.java
│       │   │                           ├── ForkingClusterInvoker.java
│       │   │                           ├── MergeableCluster.java
│       │   │                           ├── MergeableClusterInvoker.java
│       │   │                           ├── merger/
│       │   │                           │   └── DefaultProviderURLMergeProcessor.java
│       │   │                           ├── registry/
│       │   │                           │   ├── ZoneAwareCluster.java
│       │   │                           │   └── ZoneAwareClusterInvoker.java
│       │   │                           └── wrapper/
│       │   │                               ├── AbstractCluster.java
│       │   │                               ├── MockClusterInvoker.java
│       │   │                               ├── MockClusterWrapper.java
│       │   │                               ├── ScopeClusterInvoker.java
│       │   │                               └── ScopeClusterWrapper.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── dubbo/
│       │               └── internal/
│       │                   ├── org.apache.dubbo.rpc.Filter
│       │                   ├── org.apache.dubbo.rpc.Protocol
│       │                   ├── org.apache.dubbo.rpc.cluster.Cluster
│       │                   ├── org.apache.dubbo.rpc.cluster.ConfiguratorFactory
│       │                   ├── org.apache.dubbo.rpc.cluster.LoadBalance
│       │                   ├── org.apache.dubbo.rpc.cluster.Merger
│       │                   ├── org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor
│       │                   ├── org.apache.dubbo.rpc.cluster.filter.ClusterFilter
│       │                   ├── org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder
│       │                   ├── org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository
│       │                   ├── org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
│       │                   ├── org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern
│       │                   ├── org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
│       │                   └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               └── rpc/
│           │                   └── cluster/
│           │                       ├── ConfiguratorTest.java
│           │                       ├── StickyTest.java
│           │                       ├── configurator/
│           │                       │   ├── absent/
│           │                       │   │   └── AbsentConfiguratorTest.java
│           │                       │   ├── consts/
│           │                       │   │   └── UrlConstant.java
│           │                       │   ├── override/
│           │                       │   │   └── OverrideConfiguratorTest.java
│           │                       │   └── parser/
│           │                       │       └── ConfigParserTest.java
│           │                       ├── directory/
│           │                       │   ├── AbstractDirectoryConcurrencyTest.java
│           │                       │   ├── MockDirInvocation.java
│           │                       │   └── StaticDirectoryTest.java
│           │                       ├── filter/
│           │                       │   ├── DefaultFilterChainBuilderTest.java
│           │                       │   ├── DemoService.java
│           │                       │   ├── DemoServiceImpl.java
│           │                       │   ├── DemoServiceLocal.java
│           │                       │   ├── DemoServiceMock.java
│           │                       │   ├── DemoServiceStub.java
│           │                       │   ├── LogFilter.java
│           │                       │   └── MockService.java
│           │                       ├── loadbalance/
│           │                       │   ├── AbstractLoadBalanceTest.java
│           │                       │   ├── AdaptiveLoadBalanceTest.java
│           │                       │   ├── ConsistentHashLoadBalanceTest.java
│           │                       │   ├── LeastActiveBalanceTest.java
│           │                       │   ├── LoadBalanceBaseTest.java
│           │                       │   ├── RandomLoadBalanceTest.java
│           │                       │   ├── RoundRobinLoadBalanceTest.java
│           │                       │   └── ShortestResponseLoadBalanceTest.java
│           │                       ├── merger/
│           │                       │   ├── DoubleSumMerger.java
│           │                       │   ├── FloatSumMerger.java
│           │                       │   ├── IntFindAnyMerger.java
│           │                       │   ├── IntFindFirstMerger.java
│           │                       │   ├── IntSumMerger.java
│           │                       │   ├── LongSumMerger.java
│           │                       │   └── ResultMergerTest.java
│           │                       ├── router/
│           │                       │   ├── MockInvoker.java
│           │                       │   ├── RouterSnapshotFilterTest.java
│           │                       │   ├── affinity/
│           │                       │   │   └── AffinityRouteTest.java
│           │                       │   ├── condition/
│           │                       │   │   ├── ConditionStateRouterTest.java
│           │                       │   │   └── config/
│           │                       │   │       ├── ConditionStateRouterTestV31.java
│           │                       │   │       └── ProviderAppConditionStateRouterTest.java
│           │                       │   ├── file/
│           │                       │   │   └── FileRouterEngineTest.java
│           │                       │   ├── mesh/
│           │                       │   │   ├── route/
│           │                       │   │   │   ├── MeshAppRuleListenerTest.java
│           │                       │   │   │   ├── MeshRuleCacheTest.java
│           │                       │   │   │   ├── MeshRuleManagerTest.java
│           │                       │   │   │   ├── MeshRuleRouterTest.java
│           │                       │   │   │   └── StandardMeshRuleRouterFactoryTest.java
│           │                       │   │   ├── rule/
│           │                       │   │   │   ├── DestinationRuleTest.java
│           │                       │   │   │   ├── VirtualServiceRuleTest.java
│           │                       │   │   │   └── virtualservice/
│           │                       │   │   │       ├── DubboMatchRequestTest.java
│           │                       │   │   │       └── match/
│           │                       │   │   │           ├── BoolMatchTest.java
│           │                       │   │   │           ├── DoubleMatchTest.java
│           │                       │   │   │           ├── DubboAttachmentMatchTest.java
│           │                       │   │   │           ├── DubboMethodMatchTest.java
│           │                       │   │   │           ├── ListBoolMatchTest.java
│           │                       │   │   │           ├── ListDoubleMatchTest.java
│           │                       │   │   │           ├── ListStringMatchTest.java
│           │                       │   │   │           └── StringMatchTest.java
│           │                       │   │   └── util/
│           │                       │   │       └── MeshRuleDispatcherTest.java
│           │                       │   ├── mock/
│           │                       │   │   └── MockInvokersSelectorTest.java
│           │                       │   ├── script/
│           │                       │   │   ├── ScriptStateRouterTest.java
│           │                       │   │   └── config/
│           │                       │   │       └── AppScriptStateRouterTest.java
│           │                       │   ├── state/
│           │                       │   │   └── BitListTest.java
│           │                       │   └── tag/
│           │                       │       └── TagStateRouterTest.java
│           │                       └── support/
│           │                           ├── AbstractClusterInvokerTest.java
│           │                           ├── AvailableClusterInvokerTest.java
│           │                           ├── BroadCastClusterInvokerTest.java
│           │                           ├── ClusterUtilsTest.java
│           │                           ├── ConnectivityValidationTest.java
│           │                           ├── DemoServiceA.java
│           │                           ├── DemoServiceAMock.java
│           │                           ├── DemoServiceB.java
│           │                           ├── DemoServiceBMock.java
│           │                           ├── FailSafeClusterInvokerTest.java
│           │                           ├── FailbackClusterInvokerTest.java
│           │                           ├── FailfastClusterInvokerTest.java
│           │                           ├── FailoverClusterInvokerTest.java
│           │                           ├── ForkingClusterInvokerTest.java
│           │                           ├── Greeting.java
│           │                           ├── GreetingMock1.java
│           │                           ├── GreetingMock2.java
│           │                           ├── Menu.java
│           │                           ├── MenuService.java
│           │                           ├── MergeableClusterInvokerTest.java
│           │                           ├── MockAbstractClusterInvokerTest.java
│           │                           ├── MockInvokerTest.java
│           │                           ├── TagProviderURLMergeProcessor.java
│           │                           ├── merger/
│           │                           │   └── DefaultProviderURLMergeProcessorTest.java
│           │                           ├── registry/
│           │                           │   └── ZoneAwareClusterInvokerTest.java
│           │                           └── wrapper/
│           │                               ├── AbstractClusterTest.java
│           │                               ├── DemoClusterFilter.java
│           │                               ├── MockClusterInvokerTest.java
│           │                               ├── MockProviderRpcExceptionTest.java
│           │                               ├── MyMockException.java
│           │                               └── ScopeClusterInvokerTest.java
│           └── resources/
│               ├── AppAnyServices.yml
│               ├── AppMultiServices.yml
│               ├── AppNoService.yml
│               ├── ConditionRule.yml
│               ├── ConfiguratorV3.yml
│               ├── ConfiguratorV3Compatibility.yml
│               ├── ConfiguratorV3Duplicate.yml
│               ├── ConsumerSpecificProviders.yml
│               ├── DestinationRuleTest.yaml
│               ├── DestinationRuleTest2.yaml
│               ├── META-INF/
│               │   └── dubbo/
│               │       └── internal/
│               │           ├── org.apache.dubbo.rpc.Filter
│               │           ├── org.apache.dubbo.rpc.cluster.Merger
│               │           ├── org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor
│               │           ├── org.apache.dubbo.rpc.cluster.filter.ClusterFilter
│               │           └── org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
│               ├── ScriptRule.yaml
│               ├── ServiceGroupVersion.yml
│               ├── ServiceMultiApps.yml
│               ├── ServiceNoApp.yml
│               ├── ServiceNoRule.yml
│               ├── TagRule.yml
│               ├── VirtualServiceTest.yaml
│               ├── dubbo.properties
│               ├── log4j2-test.xml
│               └── org/
│                   └── apache/
│                       └── dubbo/
│                           └── rpc/
│                               └── cluster/
│                                   └── router/
│                                       └── file/
│                                           ├── availablerule.javascript
│                                           ├── methodrule.javascript
│                                           └── notAvailablerule.javascript
├── dubbo-common/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── dubbo/
│       │   │               ├── common/
│       │   │               │   ├── BaseServiceMetadata.java
│       │   │               │   ├── BatchExecutorQueue.java
│       │   │               │   ├── CommonScopeModelInitializer.java
│       │   │               │   ├── Experimental.java
│       │   │               │   ├── Extension.java
│       │   │               │   ├── Node.java
│       │   │               │   ├── Parameters.java
│       │   │               │   ├── ProtocolServiceKey.java
│       │   │               │   ├── Resetable.java
│       │   │               │   ├── ServiceKey.java
│       │   │               │   ├── URL.java
│       │   │               │   ├── URLBuilder.java
│       │   │               │   ├── URLStrParser.java
│       │   │               │   ├── Version.java
│       │   │               │   ├── aot/
│       │   │               │   │   └── NativeDetector.java
│       │   │               │   ├── beans/
│       │   │               │   │   ├── ScopeBeanException.java
│       │   │               │   │   ├── ScopeBeanExtensionInjector.java
│       │   │               │   │   ├── factory/
│       │   │               │   │   │   └── ScopeBeanFactory.java
│       │   │               │   │   └── support/
│       │   │               │   │       └── InstantiationStrategy.java
│       │   │               │   ├── beanutil/
│       │   │               │   │   ├── JavaBeanAccessor.java
│       │   │               │   │   ├── JavaBeanDescriptor.java
│       │   │               │   │   └── JavaBeanSerializeUtil.java
│       │   │               │   ├── bytecode/
│       │   │               │   │   ├── ClassGenerator.java
│       │   │               │   │   ├── DubboLoaderClassPath.java
│       │   │               │   │   ├── Mixin.java
│       │   │               │   │   ├── NoSuchMethodException.java
│       │   │               │   │   ├── NoSuchPropertyException.java
│       │   │               │   │   ├── Proxy.java
│       │   │               │   │   └── Wrapper.java
│       │   │               │   ├── cache/
│       │   │               │   │   ├── FileCacheStore.java
│       │   │               │   │   └── FileCacheStoreFactory.java
│       │   │               │   ├── compact/
│       │   │               │   │   ├── Dubbo2ActivateUtils.java
│       │   │               │   │   ├── Dubbo2CompactUtils.java
│       │   │               │   │   └── Dubbo2GenericExceptionUtils.java
│       │   │               │   ├── compiler/
│       │   │               │   │   ├── Compiler.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── AbstractCompiler.java
│       │   │               │   │       ├── AdaptiveCompiler.java
│       │   │               │   │       ├── ClassUtils.java
│       │   │               │   │       ├── CtClassBuilder.java
│       │   │               │   │       ├── JavassistCompiler.java
│       │   │               │   │       └── JdkCompiler.java
│       │   │               │   ├── concurrent/
│       │   │               │   │   ├── AbortPolicy.java
│       │   │               │   │   ├── CallableSafeInitializer.java
│       │   │               │   │   ├── DiscardOldestPolicy.java
│       │   │               │   │   ├── DiscardPolicy.java
│       │   │               │   │   ├── RejectException.java
│       │   │               │   │   └── Rejector.java
│       │   │               │   ├── config/
│       │   │               │   │   ├── CompositeConfiguration.java
│       │   │               │   │   ├── Configuration.java
│       │   │               │   │   ├── ConfigurationCache.java
│       │   │               │   │   ├── ConfigurationUtils.java
│       │   │               │   │   ├── Environment.java
│       │   │               │   │   ├── EnvironmentConfiguration.java
│       │   │               │   │   ├── InmemoryConfiguration.java
│       │   │               │   │   ├── ModuleEnvironment.java
│       │   │               │   │   ├── OrderedPropertiesConfiguration.java
│       │   │               │   │   ├── OrderedPropertiesProvider.java
│       │   │               │   │   ├── PrefixedConfiguration.java
│       │   │               │   │   ├── PropertiesConfiguration.java
│       │   │               │   │   ├── ReferenceCache.java
│       │   │               │   │   ├── SystemConfiguration.java
│       │   │               │   │   └── configcenter/
│       │   │               │   │       ├── AbstractDynamicConfiguration.java
│       │   │               │   │       ├── AbstractDynamicConfigurationFactory.java
│       │   │               │   │       ├── ConfigChangeType.java
│       │   │               │   │       ├── ConfigChangedEvent.java
│       │   │               │   │       ├── ConfigItem.java
│       │   │               │   │       ├── ConfigurationListener.java
│       │   │               │   │       ├── Constants.java
│       │   │               │   │       ├── DynamicConfiguration.java
│       │   │               │   │       ├── DynamicConfigurationFactory.java
│       │   │               │   │       ├── TreePathDynamicConfiguration.java
│       │   │               │   │       ├── nop/
│       │   │               │   │       │   ├── NopDynamicConfiguration.java
│       │   │               │   │       │   └── NopDynamicConfigurationFactory.java
│       │   │               │   │       └── wrapper/
│       │   │               │   │           └── CompositeDynamicConfiguration.java
│       │   │               │   ├── constants/
│       │   │               │   │   ├── ClusterRules.java
│       │   │               │   │   ├── CommonConstants.java
│       │   │               │   │   ├── FilterConstants.java
│       │   │               │   │   ├── LoadbalanceRules.java
│       │   │               │   │   ├── LoggerCodeConstants.java
│       │   │               │   │   ├── MetricsConstants.java
│       │   │               │   │   ├── QosConstants.java
│       │   │               │   │   ├── RegisterTypeEnum.java
│       │   │               │   │   ├── RegistryConstants.java
│       │   │               │   │   └── RemotingConstants.java
│       │   │               │   ├── context/
│       │   │               │   │   ├── ApplicationExt.java
│       │   │               │   │   ├── Lifecycle.java
│       │   │               │   │   ├── LifecycleAdapter.java
│       │   │               │   │   └── ModuleExt.java
│       │   │               │   ├── convert/
│       │   │               │   │   ├── Converter.java
│       │   │               │   │   ├── ConverterUtil.java
│       │   │               │   │   ├── StringConverter.java
│       │   │               │   │   ├── StringToBooleanConverter.java
│       │   │               │   │   ├── StringToByteConverter.java
│       │   │               │   │   ├── StringToCharArrayConverter.java
│       │   │               │   │   ├── StringToCharacterConverter.java
│       │   │               │   │   ├── StringToDoubleConverter.java
│       │   │               │   │   ├── StringToDurationConverter.java
│       │   │               │   │   ├── StringToFloatConverter.java
│       │   │               │   │   ├── StringToIntegerConverter.java
│       │   │               │   │   ├── StringToLongConverter.java
│       │   │               │   │   ├── StringToOptionalConverter.java
│       │   │               │   │   ├── StringToShortConverter.java
│       │   │               │   │   ├── StringToStringConverter.java
│       │   │               │   │   └── multiple/
│       │   │               │   │       ├── MultiValueConverter.java
│       │   │               │   │       ├── StringToArrayConverter.java
│       │   │               │   │       ├── StringToBlockingDequeConverter.java
│       │   │               │   │       ├── StringToBlockingQueueConverter.java
│       │   │               │   │       ├── StringToCollectionConverter.java
│       │   │               │   │       ├── StringToDequeConverter.java
│       │   │               │   │       ├── StringToIterableConverter.java
│       │   │               │   │       ├── StringToListConverter.java
│       │   │               │   │       ├── StringToMultiValueConverter.java
│       │   │               │   │       ├── StringToNavigableSetConverter.java
│       │   │               │   │       ├── StringToQueueConverter.java
│       │   │               │   │       ├── StringToSetConverter.java
│       │   │               │   │       ├── StringToSortedSetConverter.java
│       │   │               │   │       └── StringToTransferQueueConverter.java
│       │   │               │   ├── deploy/
│       │   │               │   │   ├── AbstractDeployer.java
│       │   │               │   │   ├── ApplicationDeployListener.java
│       │   │               │   │   ├── ApplicationDeployer.java
│       │   │               │   │   ├── DeployListener.java
│       │   │               │   │   ├── DeployListenerAdapter.java
│       │   │               │   │   ├── DeployState.java
│       │   │               │   │   ├── Deployer.java
│       │   │               │   │   ├── ModuleDeployListener.java
│       │   │               │   │   └── ModuleDeployer.java
│       │   │               │   ├── extension/
│       │   │               │   │   ├── Activate.java
│       │   │               │   │   ├── Adaptive.java
│       │   │               │   │   ├── AdaptiveClassCodeGenerator.java
│       │   │               │   │   ├── DisableInject.java
│       │   │               │   │   ├── DubboInternalLoadingStrategy.java
│       │   │               │   │   ├── DubboLoadingStrategy.java
│       │   │               │   │   ├── ExtensionAccessor.java
│       │   │               │   │   ├── ExtensionAccessorAware.java
│       │   │               │   │   ├── ExtensionDirector.java
│       │   │               │   │   ├── ExtensionFactory.java
│       │   │               │   │   ├── ExtensionInjector.java
│       │   │               │   │   ├── ExtensionLoader.java
│       │   │               │   │   ├── ExtensionPostProcessor.java
│       │   │               │   │   ├── ExtensionScope.java
│       │   │               │   │   ├── LoadingStrategy.java
│       │   │               │   │   ├── SPI.java
│       │   │               │   │   ├── ServicesLoadingStrategy.java
│       │   │               │   │   ├── Wrapper.java
│       │   │               │   │   ├── inject/
│       │   │               │   │   │   ├── AdaptiveExtensionInjector.java
│       │   │               │   │   │   └── SpiExtensionInjector.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── ActivateComparator.java
│       │   │               │   │       └── WrapperComparator.java
│       │   │               │   ├── function/
│       │   │               │   │   ├── Predicates.java
│       │   │               │   │   ├── Streams.java
│       │   │               │   │   ├── ThrowableAction.java
│       │   │               │   │   ├── ThrowableConsumer.java
│       │   │               │   │   └── ThrowableFunction.java
│       │   │               │   ├── infra/
│       │   │               │   │   ├── InfraAdapter.java
│       │   │               │   │   └── support/
│       │   │               │   │       └── EnvironmentAdapter.java
│       │   │               │   ├── io/
│       │   │               │   │   ├── Bytes.java
│       │   │               │   │   ├── StreamUtils.java
│       │   │               │   │   ├── UnsafeByteArrayInputStream.java
│       │   │               │   │   ├── UnsafeByteArrayOutputStream.java
│       │   │               │   │   ├── UnsafeStringReader.java
│       │   │               │   │   └── UnsafeStringWriter.java
│       │   │               │   ├── json/
│       │   │               │   │   ├── GsonUtils.java
│       │   │               │   │   ├── JsonUtil.java
│       │   │               │   │   └── impl/
│       │   │               │   │       ├── AbstractJsonUtilImpl.java
│       │   │               │   │       ├── FastJson2Impl.java
│       │   │               │   │       ├── FastJsonImpl.java
│       │   │               │   │       ├── GsonImpl.java
│       │   │               │   │       └── JacksonImpl.java
│       │   │               │   ├── lang/
│       │   │               │   │   ├── Nullable.java
│       │   │               │   │   ├── Prioritized.java
│       │   │               │   │   ├── ShutdownHookCallback.java
│       │   │               │   │   └── ShutdownHookCallbacks.java
│       │   │               │   ├── logger/
│       │   │               │   │   ├── ErrorTypeAwareLogger.java
│       │   │               │   │   ├── FluentLogger.java
│       │   │               │   │   ├── FluentLoggerImpl.java
│       │   │               │   │   ├── Level.java
│       │   │               │   │   ├── ListenableLogger.java
│       │   │               │   │   ├── LogListener.java
│       │   │               │   │   ├── Logger.java
│       │   │               │   │   ├── LoggerAdapter.java
│       │   │               │   │   ├── LoggerFactory.java
│       │   │               │   │   ├── helpers/
│       │   │               │   │   │   ├── FormattingTuple.java
│       │   │               │   │   │   └── MessageFormatter.java
│       │   │               │   │   ├── jcl/
│       │   │               │   │   │   ├── JclLogger.java
│       │   │               │   │   │   └── JclLoggerAdapter.java
│       │   │               │   │   ├── jdk/
│       │   │               │   │   │   ├── JdkLogger.java
│       │   │               │   │   │   └── JdkLoggerAdapter.java
│       │   │               │   │   ├── log4j/
│       │   │               │   │   │   ├── Log4jLogger.java
│       │   │               │   │   │   └── Log4jLoggerAdapter.java
│       │   │               │   │   ├── log4j2/
│       │   │               │   │   │   ├── Log4j2Logger.java
│       │   │               │   │   │   └── Log4j2LoggerAdapter.java
│       │   │               │   │   ├── slf4j/
│       │   │               │   │   │   ├── Slf4jLogger.java
│       │   │               │   │   │   └── Slf4jLoggerAdapter.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── FailsafeErrorTypeAwareLogger.java
│       │   │               │   │       └── FailsafeLogger.java
│       │   │               │   ├── profiler/
│       │   │               │   │   ├── Profiler.java
│       │   │               │   │   ├── ProfilerEntry.java
│       │   │               │   │   └── ProfilerSwitch.java
│       │   │               │   ├── reference/
│       │   │               │   │   └── ReferenceCountedResource.java
│       │   │               │   ├── resource/
│       │   │               │   │   ├── Disposable.java
│       │   │               │   │   ├── GlobalResourceInitializer.java
│       │   │               │   │   ├── GlobalResourcesRepository.java
│       │   │               │   │   └── Initializable.java
│       │   │               │   ├── serialization/
│       │   │               │   │   ├── ClassHolder.java
│       │   │               │   │   └── PreferSerializationProvider.java
│       │   │               │   ├── ssl/
│       │   │               │   │   ├── AuthPolicy.java
│       │   │               │   │   ├── Cert.java
│       │   │               │   │   ├── CertManager.java
│       │   │               │   │   ├── CertProvider.java
│       │   │               │   │   ├── ProviderCert.java
│       │   │               │   │   └── impl/
│       │   │               │   │       └── SSLConfigCertProvider.java
│       │   │               │   ├── status/
│       │   │               │   │   ├── Status.java
│       │   │               │   │   ├── StatusChecker.java
│       │   │               │   │   ├── reporter/
│       │   │               │   │   │   ├── FrameworkStatusReportService.java
│       │   │               │   │   │   └── FrameworkStatusReporter.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── LoadStatusChecker.java
│       │   │               │   │       ├── MemoryStatusChecker.java
│       │   │               │   │       └── StatusUtils.java
│       │   │               │   ├── store/
│       │   │               │   │   ├── DataStore.java
│       │   │               │   │   ├── DataStoreUpdateListener.java
│       │   │               │   │   └── support/
│       │   │               │   │       └── SimpleDataStore.java
│       │   │               │   ├── stream/
│       │   │               │   │   ├── CallStreamObserver.java
│       │   │               │   │   ├── ClientCallStreamObserver.java
│       │   │               │   │   ├── ClientResponseObserver.java
│       │   │               │   │   ├── ServerCallStreamObserver.java
│       │   │               │   │   └── StreamObserver.java
│       │   │               │   ├── system/
│       │   │               │   │   └── OperatingSystemBeanManager.java
│       │   │               │   ├── threadlocal/
│       │   │               │   │   ├── InternalRunnable.java
│       │   │               │   │   ├── InternalThread.java
│       │   │               │   │   ├── InternalThreadLocal.java
│       │   │               │   │   ├── InternalThreadLocalMap.java
│       │   │               │   │   └── NamedInternalThreadFactory.java
│       │   │               │   ├── threadpool/
│       │   │               │   │   ├── MemoryLimitCalculator.java
│       │   │               │   │   ├── MemoryLimitedLinkedBlockingQueue.java
│       │   │               │   │   ├── MemoryLimiter.java
│       │   │               │   │   ├── MemorySafeLinkedBlockingQueue.java
│       │   │               │   │   ├── ThreadPool.java
│       │   │               │   │   ├── ThreadlessExecutor.java
│       │   │               │   │   ├── concurrent/
│       │   │               │   │   │   └── ScheduledCompletableFuture.java
│       │   │               │   │   ├── event/
│       │   │               │   │   │   ├── ThreadPoolExhaustedEvent.java
│       │   │               │   │   │   └── ThreadPoolExhaustedListener.java
│       │   │               │   │   ├── manager/
│       │   │               │   │   │   ├── DefaultExecutorRepository.java
│       │   │               │   │   │   ├── ExecutorRepository.java
│       │   │               │   │   │   ├── FrameworkExecutorRepository.java
│       │   │               │   │   │   ├── IsolationExecutorRepository.java
│       │   │               │   │   │   └── Ring.java
│       │   │               │   │   ├── serial/
│       │   │               │   │   │   └── SerializingExecutor.java
│       │   │               │   │   └── support/
│       │   │               │   │       ├── AbortPolicyWithReport.java
│       │   │               │   │       ├── cached/
│       │   │               │   │       │   └── CachedThreadPool.java
│       │   │               │   │       ├── eager/
│       │   │               │   │       │   ├── EagerThreadPool.java
│       │   │               │   │       │   ├── EagerThreadPoolExecutor.java
│       │   │               │   │       │   └── TaskQueue.java
│       │   │               │   │       ├── fixed/
│       │   │               │   │       │   └── FixedThreadPool.java
│       │   │               │   │       └── limited/
│       │   │               │   │           └── LimitedThreadPool.java
│       │   │               │   ├── timer/
│       │   │               │   │   ├── HashedWheelTimer.java
│       │   │               │   │   ├── Timeout.java
│       │   │               │   │   ├── Timer.java
│       │   │               │   │   └── TimerTask.java
│       │   │               │   ├── url/
│       │   │               │   │   └── component/
│       │   │               │   │       ├── DubboServiceAddressURL.java
│       │   │               │   │       ├── PathURLAddress.java
│       │   │               │   │       ├── ServiceAddressURL.java
│       │   │               │   │       ├── ServiceConfigURL.java
│       │   │               │   │       ├── URLAddress.java
│       │   │               │   │       ├── URLItemCache.java
│       │   │               │   │       ├── URLParam.java
│       │   │               │   │       ├── URLPlainParam.java
│       │   │               │   │       └── param/
│       │   │               │   │           ├── DefaultDynamicParamSource.java
│       │   │               │   │           ├── DynamicParamSource.java
│       │   │               │   │           ├── DynamicParamTable.java
│       │   │               │   │           ├── DynamicValues.java
│       │   │               │   │           ├── FixedParamValue.java
│       │   │               │   │           ├── IgnoredParam.java
│       │   │               │   │           └── ParamValue.java
│       │   │               │   └── utils/
│       │   │               │       ├── AllowClassNotifyListener.java
│       │   │               │       ├── AnnotationUtils.java
│       │   │               │       ├── ArrayUtils.java
│       │   │               │       ├── Assert.java
│       │   │               │       ├── AtomicPositiveInteger.java
│       │   │               │       ├── CIDRUtils.java
│       │   │               │       ├── CacheableSupplier.java
│       │   │               │       ├── CharSequenceComparator.java
│       │   │               │       ├── ClassHelper.java
│       │   │               │       ├── ClassLoaderResourceLoader.java
│       │   │               │       ├── ClassUtils.java
│       │   │               │       ├── CollectionUtils.java
│       │   │               │       ├── CompatibleTypeUtils.java
│       │   │               │       ├── ConcurrentHashMapUtils.java
│       │   │               │       ├── ConcurrentHashSet.java
│       │   │               │       ├── ConfigUtils.java
│       │   │               │       ├── DateUtils.java
│       │   │               │       ├── DefaultPage.java
│       │   │               │       ├── DefaultParameterNameReader.java
│       │   │               │       ├── DefaultSerializeClassChecker.java
│       │   │               │       ├── DubboAppender.java
│       │   │               │       ├── ExecutorUtil.java
│       │   │               │       ├── FieldUtils.java
│       │   │               │       ├── Holder.java
│       │   │               │       ├── IOUtils.java
│       │   │               │       ├── JRE.java
│       │   │               │       ├── JVMUtil.java
│       │   │               │       ├── JavassistParameterNameReader.java
│       │   │               │       ├── JsonCompatibilityUtil.java
│       │   │               │       ├── JsonUtils.java
│       │   │               │       ├── LFUCache.java
│       │   │               │       ├── LRU2Cache.java
│       │   │               │       ├── LRUCache.java
│       │   │               │       ├── LockUtils.java
│       │   │               │       ├── Log.java
│       │   │               │       ├── LogHelper.java
│       │   │               │       ├── LogUtil.java
│       │   │               │       ├── MD5Utils.java
│       │   │               │       ├── MemberUtils.java
│       │   │               │       ├── MethodComparator.java
│       │   │               │       ├── MethodUtils.java
│       │   │               │       ├── NamedThreadFactory.java
│       │   │               │       ├── NetUtils.java
│       │   │               │       ├── Page.java
│       │   │               │       ├── Pair.java
│       │   │               │       ├── ParameterNameReader.java
│       │   │               │       ├── PathUtils.java
│       │   │               │       ├── PojoUtils.java
│       │   │               │       ├── ProtobufUtils.java
│       │   │               │       ├── ReflectUtils.java
│       │   │               │       ├── ReflectionUtils.java
│       │   │               │       ├── RegexProperties.java
│       │   │               │       ├── SerializeCheckStatus.java
│       │   │               │       ├── SerializeSecurityConfigurator.java
│       │   │               │       ├── SerializeSecurityManager.java
│       │   │               │       ├── ServiceAnnotationResolver.java
│       │   │               │       ├── Stack.java
│       │   │               │       ├── StringConstantFieldValuePredicate.java
│       │   │               │       ├── StringUtils.java
│       │   │               │       ├── SystemPropertyConfigUtils.java
│       │   │               │       ├── TimeUtils.java
│       │   │               │       ├── ToStringUtils.java
│       │   │               │       ├── TypeUtils.java
│       │   │               │       ├── UrlUtils.java
│       │   │               │       └── Utf8Utils.java
│       │   │               ├── config/
│       │   │               │   ├── AbstractConfig.java
│       │   │               │   ├── AbstractInterfaceConfig.java
│       │   │               │   ├── AbstractMethodConfig.java
│       │   │               │   ├── AbstractReferenceConfig.java
│       │   │               │   ├── AbstractServiceConfig.java
│       │   │               │   ├── ApplicationConfig.java
│       │   │               │   ├── ArgumentConfig.java
│       │   │               │   ├── ConfigCenterConfig.java
│       │   │               │   ├── ConfigKeys.java
│       │   │               │   ├── Constants.java
│       │   │               │   ├── ConsumerConfig.java
│       │   │               │   ├── MetadataReportConfig.java
│       │   │               │   ├── MethodConfig.java
│       │   │               │   ├── MetricsConfig.java
│       │   │               │   ├── ModuleConfig.java
│       │   │               │   ├── MonitorConfig.java
│       │   │               │   ├── ProtocolConfig.java
│       │   │               │   ├── ProviderConfig.java
│       │   │               │   ├── ReferenceConfigBase.java
│       │   │               │   ├── RegistryConfig.java
│       │   │               │   ├── ServiceConfigBase.java
│       │   │               │   ├── SslConfig.java
│       │   │               │   ├── TracingConfig.java
│       │   │               │   ├── annotation/
│       │   │               │   │   ├── Argument.java
│       │   │               │   │   ├── DubboReference.java
│       │   │               │   │   ├── DubboService.java
│       │   │               │   │   ├── Method.java
│       │   │               │   │   ├── ProvidedBy.java
│       │   │               │   │   ├── Reference.java
│       │   │               │   │   └── Service.java
│       │   │               │   ├── context/
│       │   │               │   │   ├── AbstractConfigManager.java
│       │   │               │   │   ├── ConfigConfigurationAdapter.java
│       │   │               │   │   ├── ConfigManager.java
│       │   │               │   │   ├── ConfigMode.java
│       │   │               │   │   ├── ConfigValidator.java
│       │   │               │   │   └── ModuleConfigManager.java
│       │   │               │   ├── nested/
│       │   │               │   │   ├── AggregationConfig.java
│       │   │               │   │   ├── BaggageConfig.java
│       │   │               │   │   ├── CorsConfig.java
│       │   │               │   │   ├── ExporterConfig.java
│       │   │               │   │   ├── HistogramConfig.java
│       │   │               │   │   ├── Http3Config.java
│       │   │               │   │   ├── McpConfig.java
│       │   │               │   │   ├── OpenAPIConfig.java
│       │   │               │   │   ├── OtlpMetricConfig.java
│       │   │               │   │   ├── PrometheusConfig.java
│       │   │               │   │   ├── PropagationConfig.java
│       │   │               │   │   ├── RestConfig.java
│       │   │               │   │   ├── SamplingConfig.java
│       │   │               │   │   ├── ServletConfig.java
│       │   │               │   │   ├── TripleConfig.java
│       │   │               │   │   └── WebSocketConfig.java
│       │   │               │   └── support/
│       │   │               │       ├── Nested.java
│       │   │               │       └── Parameter.java
│       │   │               ├── metadata/
│       │   │               │   └── definition/
│       │   │               │       ├── MethodDefinitionBuilder.java
│       │   │               │       ├── ServiceDefinitionBuilder.java
│       │   │               │       ├── TypeDefinitionBuilder.java
│       │   │               │       ├── builder/
│       │   │               │       │   ├── ArrayTypeBuilder.java
│       │   │               │       │   ├── CollectionTypeBuilder.java
│       │   │               │       │   ├── DefaultTypeBuilder.java
│       │   │               │       │   ├── EnumTypeBuilder.java
│       │   │               │       │   ├── MapTypeBuilder.java
│       │   │               │       │   └── TypeBuilder.java
│       │   │               │       ├── model/
│       │   │               │       │   ├── FullServiceDefinition.java
│       │   │               │       │   ├── MethodDefinition.java
│       │   │               │       │   ├── ServiceDefinition.java
│       │   │               │       │   └── TypeDefinition.java
│       │   │               │       └── util/
│       │   │               │           ├── ClassUtils.java
│       │   │               │           └── JaketConfigurationUtils.java
│       │   │               └── rpc/
│       │   │                   ├── executor/
│       │   │                   │   ├── AbstractIsolationExecutorSupport.java
│       │   │                   │   ├── DefaultExecutorSupport.java
│       │   │                   │   ├── DefaultIsolationExecutorSupportFactory.java
│       │   │                   │   ├── ExecutorSupport.java
│       │   │                   │   └── IsolationExecutorSupportFactory.java
│       │   │                   ├── model/
│       │   │                   │   ├── ApplicationInitListener.java
│       │   │                   │   ├── ApplicationModel.java
│       │   │                   │   ├── AsyncMethodInfo.java
│       │   │                   │   ├── BuiltinServiceDetector.java
│       │   │                   │   ├── ConsumerMethodModel.java
│       │   │                   │   ├── ConsumerModel.java
│       │   │                   │   ├── DubboStub.java
│       │   │                   │   ├── FrameworkModel.java
│       │   │                   │   ├── FrameworkServiceRepository.java
│       │   │                   │   ├── MethodDescriptor.java
│       │   │                   │   ├── ModelConstants.java
│       │   │                   │   ├── ModuleModel.java
│       │   │                   │   ├── ModuleServiceRepository.java
│       │   │                   │   ├── Pack.java
│       │   │                   │   ├── PackableMethod.java
│       │   │                   │   ├── PackableMethodFactory.java
│       │   │                   │   ├── ProviderMethodModel.java
│       │   │                   │   ├── ProviderModel.java
│       │   │                   │   ├── ReflectionMethodDescriptor.java
│       │   │                   │   ├── ReflectionServiceDescriptor.java
│       │   │                   │   ├── ScopeClassLoaderListener.java
│       │   │                   │   ├── ScopeModel.java
│       │   │                   │   ├── ScopeModelAccessor.java
│       │   │                   │   ├── ScopeModelAware.java
│       │   │                   │   ├── ScopeModelAwareExtensionProcessor.java
│       │   │                   │   ├── ScopeModelDestroyListener.java
│       │   │                   │   ├── ScopeModelInitializer.java
│       │   │                   │   ├── ScopeModelUtil.java
│       │   │                   │   ├── ServiceDescriptor.java
│       │   │                   │   ├── ServiceMetadata.java
│       │   │                   │   ├── ServiceModel.java
│       │   │                   │   ├── ServiceRepository.java
│       │   │                   │   ├── StubMethodDescriptor.java
│       │   │                   │   ├── StubServiceDescriptor.java
│       │   │                   │   ├── UnPack.java
│       │   │                   │   └── WrapperUnPack.java
│       │   │                   ├── service/
│       │   │                   │   ├── Destroyable.java
│       │   │                   │   ├── EchoService.java
│       │   │                   │   ├── EchoServiceDetector.java
│       │   │                   │   ├── GenericException.java
│       │   │                   │   ├── GenericService.java
│       │   │                   │   ├── GenericServiceDetector.java
│       │   │                   │   └── ServiceDescriptorInternalCache.java
│       │   │                   └── support/
│       │   │                       ├── GroupServiceKeyCache.java
│       │   │                       └── ProtocolUtils.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── dubbo/
│       │       │   │   └── internal/
│       │       │   │       ├── org.apache.dubbo.common.compiler.Compiler
│       │       │   │       ├── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│       │       │   │       ├── org.apache.dubbo.common.context.ApplicationExt
│       │       │   │       ├── org.apache.dubbo.common.context.ModuleExt
│       │       │   │       ├── org.apache.dubbo.common.convert.Converter
│       │       │   │       ├── org.apache.dubbo.common.convert.multiple.MultiValueConverter
│       │       │   │       ├── org.apache.dubbo.common.extension.ExtensionInjector
│       │       │   │       ├── org.apache.dubbo.common.infra.InfraAdapter
│       │       │   │       ├── org.apache.dubbo.common.json.JsonUtil
│       │       │   │       ├── org.apache.dubbo.common.logger.LoggerAdapter
│       │       │   │       ├── org.apache.dubbo.common.ssl.CertProvider
│       │       │   │       ├── org.apache.dubbo.common.status.StatusChecker
│       │       │   │       ├── org.apache.dubbo.common.store.DataStore
│       │       │   │       ├── org.apache.dubbo.common.threadpool.ThreadPool
│       │       │   │       ├── org.apache.dubbo.common.threadpool.manager.ExecutorRepository
│       │       │   │       ├── org.apache.dubbo.common.url.component.param.DynamicParamSource
│       │       │   │       ├── org.apache.dubbo.common.utils.ParameterNameReader
│       │       │   │       ├── org.apache.dubbo.metadata.definition.builder.TypeBuilder
│       │       │   │       ├── org.apache.dubbo.rpc.executor.IsolationExecutorSupportFactory
│       │       │   │       ├── org.apache.dubbo.rpc.model.BuiltinServiceDetector
│       │       │   │       └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│       │       │   ├── services/
│       │       │   │   ├── org.apache.dubbo.common.extension.LoadingStrategy
│       │       │   │   └── org.apache.dubbo.common.json.JsonUtil
│       │       │   └── version
│       │       └── security/
│       │           ├── serialize.allowlist
│       │           └── serialize.blockedlist
│       └── test/
│           ├── java/
│           │   ├── com/
│           │   │   ├── pojo/
│           │   │   │   ├── Demo1.java
│           │   │   │   ├── Demo2.java
│           │   │   │   ├── Demo3.java
│           │   │   │   ├── Demo4.java
│           │   │   │   ├── Demo5.java
│           │   │   │   ├── Demo6.java
│           │   │   │   ├── Demo7.java
│           │   │   │   ├── Demo8.java
│           │   │   │   ├── DemoException1.java
│           │   │   │   ├── DemoException2.java
│           │   │   │   ├── DemoException3.java
│           │   │   │   └── Simple.java
│           │   │   └── service/
│           │   │       ├── DemoService1.java
│           │   │       ├── DemoService2.java
│           │   │       ├── DemoService4.java
│           │   │       ├── DemoService5.java
│           │   │       ├── Params.java
│           │   │       ├── Service.java
│           │   │       ├── User.java
│           │   │       ├── UserService.java
│           │   │       └── deep1/
│           │   │           └── deep2/
│           │   │               └── deep3/
│           │   │                   └── DemoService3.java
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               ├── common/
│           │               │   ├── BaseServiceMetadataTest.java
│           │               │   ├── CommonScopeModelInitializerTest.java
│           │               │   ├── InterfaceAddressURLTest.java
│           │               │   ├── PojoUtilsForNonPublicStaticTest.java
│           │               │   ├── ProtocolServiceKeyMatcherTest.java
│           │               │   ├── ProtocolServiceKeyTest.java
│           │               │   ├── ServiceKeyMatcherTest.java
│           │               │   ├── ServiceKeyTest.java
│           │               │   ├── URLBuilderTest.java
│           │               │   ├── URLStrParserTest.java
│           │               │   ├── URLTest.java
│           │               │   ├── beans/
│           │               │   │   ├── InstantiationStrategyTest.java
│           │               │   │   ├── ScopeBeanFactoryTest.java
│           │               │   │   └── model/
│           │               │   │       ├── FooBeanWithApplicationModel.java
│           │               │   │       ├── FooBeanWithFrameworkModel.java
│           │               │   │       ├── FooBeanWithModuleModel.java
│           │               │   │       ├── FooBeanWithScopeModel.java
│           │               │   │       └── FooBeanWithoutUniqueConstructors.java
│           │               │   ├── beanutil/
│           │               │   │   ├── Bean.java
│           │               │   │   ├── JavaBeanAccessorTest.java
│           │               │   │   └── JavaBeanSerializeUtilTest.java
│           │               │   ├── bytecode/
│           │               │   │   ├── ClassGeneratorTest.java
│           │               │   │   ├── MixinTest.java
│           │               │   │   ├── ProxyTest.java
│           │               │   │   └── WrapperTest.java
│           │               │   ├── cache/
│           │               │   │   ├── FileCacheStoreFactoryTest.java
│           │               │   │   └── FileCacheStoreTest.java
│           │               │   ├── compiler/
│           │               │   │   └── support/
│           │               │   │       ├── AdaptiveCompilerTest.java
│           │               │   │       ├── ClassUtilsTest.java
│           │               │   │       ├── HelloService.java
│           │               │   │       ├── HelloServiceImpl0.java
│           │               │   │       ├── JavaCodeTest.java
│           │               │   │       ├── JavassistCompilerTest.java
│           │               │   │       ├── JdkCompilerTest.java
│           │               │   │       └── internal/
│           │               │   │           └── HelloServiceInternalImpl.java
│           │               │   ├── concurrent/
│           │               │   │   └── CompletableFutureTaskTest.java
│           │               │   ├── config/
│           │               │   │   ├── CompositeConfigurationTest.java
│           │               │   │   ├── ConfigurationCacheTest.java
│           │               │   │   ├── ConfigurationUtilsTest.java
│           │               │   │   ├── EnvironmentConfigurationTest.java
│           │               │   │   ├── EnvironmentTest.java
│           │               │   │   ├── InmemoryConfigurationTest.java
│           │               │   │   ├── MockOrderedPropertiesProvider1.java
│           │               │   │   ├── MockOrderedPropertiesProvider2.java
│           │               │   │   ├── OrderedPropertiesConfigurationTest.java
│           │               │   │   ├── PrefixedConfigurationTest.java
│           │               │   │   ├── PropertiesConfigurationTest.java
│           │               │   │   ├── SystemConfigurationTest.java
│           │               │   │   └── configcenter/
│           │               │   │       ├── AbstractDynamicConfigurationFactoryTest.java
│           │               │   │       ├── AbstractDynamicConfigurationTest.java
│           │               │   │       ├── ConfigChangeTypeTest.java
│           │               │   │       ├── ConfigChangedEventTest.java
│           │               │   │       └── DynamicConfigurationFactoryTest.java
│           │               │   ├── constants/
│           │               │   │   └── CommonConstantsTest.java
│           │               │   ├── convert/
│           │               │   │   ├── ConverterTest.java
│           │               │   │   ├── StringToBooleanConverterTest.java
│           │               │   │   ├── StringToCharArrayConverterTest.java
│           │               │   │   ├── StringToCharacterConverterTest.java
│           │               │   │   ├── StringToDoubleConverterTest.java
│           │               │   │   ├── StringToDurationConverterTest.java
│           │               │   │   ├── StringToFloatConverterTest.java
│           │               │   │   ├── StringToIntegerConverterTest.java
│           │               │   │   ├── StringToLongConverterTest.java
│           │               │   │   ├── StringToOptionalConverterTest.java
│           │               │   │   ├── StringToShortConverterTest.java
│           │               │   │   ├── StringToStringConverterTest.java
│           │               │   │   └── multiple/
│           │               │   │       ├── MultiValueConverterTest.java
│           │               │   │       ├── StringToArrayConverterTest.java
│           │               │   │       ├── StringToBlockingDequeConverterTest.java
│           │               │   │       ├── StringToBlockingQueueConverterTest.java
│           │               │   │       ├── StringToCollectionConverterTest.java
│           │               │   │       ├── StringToDequeConverterTest.java
│           │               │   │       ├── StringToListConverterTest.java
│           │               │   │       ├── StringToNavigableSetConverterTest.java
│           │               │   │       ├── StringToQueueConverterTest.java
│           │               │   │       ├── StringToSetConverterTest.java
│           │               │   │       ├── StringToSortedSetConverterTest.java
│           │               │   │       └── StringToTransferQueueConverterTest.java
│           │               │   ├── extension/
│           │               │   │   ├── AdaptiveClassCodeGeneratorTest.java
│           │               │   │   ├── DubboExternalLoadingStrategy.java
│           │               │   │   ├── ExtensionDirectorTest.java
│           │               │   │   ├── ExtensionLoaderTest.java
│           │               │   │   ├── ExtensionLoader_Activate_Test.java
│           │               │   │   ├── ExtensionLoader_Adaptive_Test.java
│           │               │   │   ├── ExtensionLoader_Adaptive_UseJdkCompiler_Test.java
│           │               │   │   ├── ExtensionLoader_Compatible_Test.java
│           │               │   │   ├── NoSpiExt.java
│           │               │   │   ├── SPI1.java
│           │               │   │   ├── SPI1Impl.java
│           │               │   │   ├── SPI2.java
│           │               │   │   ├── SPI2Impl.java
│           │               │   │   ├── SPI3.java
│           │               │   │   ├── SPI3Impl.java
│           │               │   │   ├── SPI4.java
│           │               │   │   ├── SPI4Impl.java
│           │               │   │   ├── activate/
│           │               │   │   │   ├── ActivateExt1.java
│           │               │   │   │   ├── ActivateWrapperExt1.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── ActivateExt1Impl1.java
│           │               │   │   │       ├── ActivateOnClassExt1Impl.java
│           │               │   │   │       ├── ActivateWrapperExt1Impl1.java
│           │               │   │   │       ├── ActivateWrapperExt1Impl2.java
│           │               │   │   │       ├── ActivateWrapperExt1Wrapper.java
│           │               │   │   │       ├── GroupActivateExtImpl.java
│           │               │   │   │       ├── OrderActivateExtImpl1.java
│           │               │   │   │       ├── OrderActivateExtImpl2.java
│           │               │   │   │       └── ValueActivateExtImpl.java
│           │               │   │   ├── adaptive/
│           │               │   │   │   ├── HasAdaptiveExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── HasAdaptiveExtImpl1.java
│           │               │   │   │       └── HasAdaptiveExt_ManualAdaptive.java
│           │               │   │   ├── compatible/
│           │               │   │   │   ├── CompatibleExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── CompatibleExtImpl1.java
│           │               │   │   │       └── CompatibleExtImpl2.java
│           │               │   │   ├── convert/
│           │               │   │   │   ├── String2BooleanConverter.java
│           │               │   │   │   ├── String2DoubleConverter.java
│           │               │   │   │   └── String2IntegerConverter.java
│           │               │   │   ├── director/
│           │               │   │   │   ├── FooAppProvider.java
│           │               │   │   │   ├── FooAppService.java
│           │               │   │   │   ├── FooFrameworkProvider.java
│           │               │   │   │   ├── FooFrameworkService.java
│           │               │   │   │   ├── FooModuleProvider.java
│           │               │   │   │   ├── FooModuleService.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── BaseTestService.java
│           │               │   │   │       ├── TestAppProvider.java
│           │               │   │   │       ├── TestAppService.java
│           │               │   │   │       ├── TestFrameworkProvider.java
│           │               │   │   │       ├── TestFrameworkService.java
│           │               │   │   │       ├── TestModuleProvider.java
│           │               │   │   │       └── TestModuleService.java
│           │               │   │   ├── duplicated/
│           │               │   │   │   ├── DuplicatedOverriddenExt.java
│           │               │   │   │   ├── DuplicatedWithoutOverriddenExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── DuplicatedOverriddenExt1.java
│           │               │   │   │       ├── DuplicatedOverriddenExt2.java
│           │               │   │   │       ├── DuplicatedWithoutOverriddenExt1.java
│           │               │   │   │       └── DuplicatedWithoutOverriddenExt2.java
│           │               │   │   ├── ext1/
│           │               │   │   │   ├── SimpleExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── SimpleExtImpl1.java
│           │               │   │   │       ├── SimpleExtImpl2.java
│           │               │   │   │       └── SimpleExtImpl3.java
│           │               │   │   ├── ext10_multi_names/
│           │               │   │   │   ├── Ext10MultiNames.java
│           │               │   │   │   └── impl/
│           │               │   │   │       └── Ext10MultiNamesImpl.java
│           │               │   │   ├── ext11_no_adaptive/
│           │               │   │   │   ├── NoAdaptiveExt.java
│           │               │   │   │   └── NoAdaptiveExtImpl.java
│           │               │   │   ├── ext2/
│           │               │   │   │   ├── Ext2.java
│           │               │   │   │   ├── UrlHolder.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext2Impl1.java
│           │               │   │   │       ├── Ext2Impl2.java
│           │               │   │   │       └── Ext2Impl3.java
│           │               │   │   ├── ext3/
│           │               │   │   │   ├── UseProtocolKeyExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── UseProtocolKeyExtImpl1.java
│           │               │   │   │       ├── UseProtocolKeyExtImpl2.java
│           │               │   │   │       └── UseProtocolKeyExtImpl3.java
│           │               │   │   ├── ext4/
│           │               │   │   │   ├── NoUrlParamExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext4Impl1.java
│           │               │   │   │       └── Ext4Impl2.java
│           │               │   │   ├── ext5/
│           │               │   │   │   ├── NoAdaptiveMethodExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext5Impl1.java
│           │               │   │   │       └── Ext5Impl2.java
│           │               │   │   ├── ext6_inject/
│           │               │   │   │   ├── Dao.java
│           │               │   │   │   ├── Ext6.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── DaoImpl.java
│           │               │   │   │       ├── Ext6Impl1.java
│           │               │   │   │       └── Ext6Impl2.java
│           │               │   │   ├── ext6_wrap/
│           │               │   │   │   ├── WrappedExt.java
│           │               │   │   │   ├── WrappedExtWrapper.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext6Impl1.java
│           │               │   │   │       ├── Ext6Impl2.java
│           │               │   │   │       ├── Ext6Impl3.java
│           │               │   │   │       ├── Ext6Impl4.java
│           │               │   │   │       ├── Ext6Wrapper1.java
│           │               │   │   │       ├── Ext6Wrapper2.java
│           │               │   │   │       ├── Ext6Wrapper3.java
│           │               │   │   │       └── Ext6Wrapper4.java
│           │               │   │   ├── ext7/
│           │               │   │   │   ├── InitErrorExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── Ext7Impl.java
│           │               │   │   │       └── Ext7InitErrorImpl.java
│           │               │   │   ├── ext8_add/
│           │               │   │   │   ├── AddExt1.java
│           │               │   │   │   ├── AddExt2.java
│           │               │   │   │   ├── AddExt3.java
│           │               │   │   │   ├── AddExt4.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── AddExt1Impl1.java
│           │               │   │   │       ├── AddExt1_ManualAdaptive.java
│           │               │   │   │       ├── AddExt1_ManualAdd1.java
│           │               │   │   │       ├── AddExt1_ManualAdd2.java
│           │               │   │   │       ├── AddExt2Impl1.java
│           │               │   │   │       ├── AddExt2_ManualAdaptive.java
│           │               │   │   │       ├── AddExt3_ManualAdaptive.java
│           │               │   │   │       └── AddExt4_ManualAdaptive.java
│           │               │   │   ├── ext9_empty/
│           │               │   │   │   ├── Ext9Empty.java
│           │               │   │   │   └── impl/
│           │               │   │   │       └── Ext9EmptyImpl.java
│           │               │   │   ├── inject/
│           │               │   │   │   └── AdaptiveExtensionInjectorTest.java
│           │               │   │   ├── injection/
│           │               │   │   │   ├── InjectExt.java
│           │               │   │   │   └── impl/
│           │               │   │   │       └── InjectExtImpl.java
│           │               │   │   ├── support/
│           │               │   │   │   ├── ActivateComparatorTest.java
│           │               │   │   │   ├── Filter0.java
│           │               │   │   │   ├── Filter1.java
│           │               │   │   │   ├── Filter2.java
│           │               │   │   │   ├── Filter3.java
│           │               │   │   │   ├── Filter4.java
│           │               │   │   │   ├── Order0Filter0.java
│           │               │   │   │   ├── Order0Filter1.java
│           │               │   │   │   └── Order0Filter2.java
│           │               │   │   └── wrapper/
│           │               │   │       ├── Demo.java
│           │               │   │       ├── WrapperTest.java
│           │               │   │       └── impl/
│           │               │   │           ├── DemoImpl.java
│           │               │   │           ├── DemoWrapper.java
│           │               │   │           └── DemoWrapper2.java
│           │               │   ├── function/
│           │               │   │   ├── PredicatesTest.java
│           │               │   │   ├── StreamsTest.java
│           │               │   │   ├── ThrowableActionTest.java
│           │               │   │   ├── ThrowableConsumerTest.java
│           │               │   │   └── ThrowableFunctionTest.java
│           │               │   ├── io/
│           │               │   │   ├── BytesTest.java
│           │               │   │   ├── StreamUtilsTest.java
│           │               │   │   ├── UnsafeByteArrayInputStreamTest.java
│           │               │   │   ├── UnsafeByteArrayOutputStreamTest.java
│           │               │   │   ├── UnsafeStringReaderTest.java
│           │               │   │   └── UnsafeStringWriterTest.java
│           │               │   ├── json/
│           │               │   │   ├── GsonUtilsTest.java
│           │               │   │   └── impl/
│           │               │   │       ├── FastJson2ImplTest.java
│           │               │   │       ├── FastJsonImplTest.java
│           │               │   │       └── GsonImplTest.java
│           │               │   ├── lang/
│           │               │   │   ├── DefaultShutdownHookCallback.java
│           │               │   │   ├── PrioritizedTest.java
│           │               │   │   └── ShutdownHookCallbacksTest.java
│           │               │   ├── logger/
│           │               │   │   ├── LoggerAdapterTest.java
│           │               │   │   ├── LoggerFactoryTest.java
│           │               │   │   ├── LoggerTest.java
│           │               │   │   ├── slf4j/
│           │               │   │   │   └── Slf4jLoggerTest.java
│           │               │   │   └── support/
│           │               │   │       ├── FailsafeErrorTypeAwareLoggerTest.java
│           │               │   │       └── FailsafeLoggerTest.java
│           │               │   ├── model/
│           │               │   │   ├── Person.java
│           │               │   │   ├── SerializablePerson.java
│           │               │   │   ├── User.java
│           │               │   │   ├── media/
│           │               │   │   │   ├── Image.java
│           │               │   │   │   └── Media.java
│           │               │   │   └── person/
│           │               │   │       ├── Ageneric.java
│           │               │   │       ├── Bgeneric.java
│           │               │   │       ├── BigPerson.java
│           │               │   │       ├── Cgeneric.java
│           │               │   │       ├── Dgeneric.java
│           │               │   │       ├── FullAddress.java
│           │               │   │       ├── PersonInfo.java
│           │               │   │       ├── PersonMap.java
│           │               │   │       ├── PersonStatus.java
│           │               │   │       └── Phone.java
│           │               │   ├── profiler/
│           │               │   │   └── ProfilerTest.java
│           │               │   ├── resource/
│           │               │   │   └── GlobalResourcesRepositoryTest.java
│           │               │   ├── ssl/
│           │               │   │   ├── CertManagerTest.java
│           │               │   │   ├── FirstCertProvider.java
│           │               │   │   ├── SSLConfigCertProviderTest.java
│           │               │   │   └── SecondCertProvider.java
│           │               │   ├── status/
│           │               │   │   ├── StatusTest.java
│           │               │   │   ├── reporter/
│           │               │   │   │   ├── FrameworkStatusReportServiceTest.java
│           │               │   │   │   └── MockFrameworkStatusReporter.java
│           │               │   │   └── support/
│           │               │   │       ├── LoadStatusCheckerTest.java
│           │               │   │       ├── MemoryStatusCheckerTest.java
│           │               │   │       └── StatusUtilsTest.java
│           │               │   ├── store/
│           │               │   │   └── support/
│           │               │   │       └── SimpleDataStoreTest.java
│           │               │   ├── threadlocal/
│           │               │   │   ├── InternalThreadLocalTest.java
│           │               │   │   └── NamedInternalThreadFactoryTest.java
│           │               │   ├── threadpool/
│           │               │   │   ├── MemoryLimitedLinkedBlockingQueueTest.java
│           │               │   │   ├── MemorySafeLinkedBlockingQueueTest.java
│           │               │   │   ├── ThreadlessExecutorTest.java
│           │               │   │   ├── event/
│           │               │   │   │   ├── ThreadPoolExhaustedEventListenerTest.java
│           │               │   │   │   └── ThreadPoolExhaustedEventTest.java
│           │               │   │   ├── manager/
│           │               │   │   │   ├── ExecutorRepositoryTest.java
│           │               │   │   │   └── FrameworkExecutorRepositoryTest.java
│           │               │   │   ├── serial/
│           │               │   │   │   └── SerializingExecutorTest.java
│           │               │   │   └── support/
│           │               │   │       ├── AbortPolicyWithReportTest.java
│           │               │   │       ├── cached/
│           │               │   │       │   └── CachedThreadPoolTest.java
│           │               │   │       ├── eager/
│           │               │   │       │   ├── EagerThreadPoolExecutorTest.java
│           │               │   │       │   ├── EagerThreadPoolTest.java
│           │               │   │       │   └── TaskQueueTest.java
│           │               │   │       ├── fixed/
│           │               │   │       │   └── FixedThreadPoolTest.java
│           │               │   │       └── limited/
│           │               │   │           └── LimitedThreadPoolTest.java
│           │               │   ├── timer/
│           │               │   │   └── HashedWheelTimerTest.java
│           │               │   ├── url/
│           │               │   │   └── URLParamTest.java
│           │               │   ├── utils/
│           │               │   │   ├── AnnotationUtilsTest.java
│           │               │   │   ├── ArrayUtilsTest.java
│           │               │   │   ├── AssertTest.java
│           │               │   │   ├── AtomicPositiveIntegerTest.java
│           │               │   │   ├── CIDRUtilsTest.java
│           │               │   │   ├── ClassLoaderResourceLoaderTest.java
│           │               │   │   ├── ClassUtilsTest.java
│           │               │   │   ├── CollectionUtilsTest.java
│           │               │   │   ├── CompatibleTypeUtilsTest.java
│           │               │   │   ├── ConcurrentHashMapUtilsTest.java
│           │               │   │   ├── ConfigUtilsTest.java
│           │               │   │   ├── DefaultCharSequence.java
│           │               │   │   ├── DefaultPageTest.java
│           │               │   │   ├── DefaultSerializeClassCheckerTest.java
│           │               │   │   ├── DubboAppenderTest.java
│           │               │   │   ├── ExecutorUtilTest.java
│           │               │   │   ├── FieldUtilsTest.java
│           │               │   │   ├── HolderTest.java
│           │               │   │   ├── IOUtilsTest.java
│           │               │   │   ├── JRETest.java
│           │               │   │   ├── JVMUtilTest.java
│           │               │   │   ├── JavassistParameterNameReaderTest.java
│           │               │   │   ├── JsonCompatibilityUtilTest.java
│           │               │   │   ├── JsonUtilsTest.java
│           │               │   │   ├── LFUCacheTest.java
│           │               │   │   ├── LRU2CacheTest.java
│           │               │   │   ├── LRUCacheTest.java
│           │               │   │   ├── LockUtilsTest.java
│           │               │   │   ├── LogHelperTest.java
│           │               │   │   ├── LogTest.java
│           │               │   │   ├── LogUtilTest.java
│           │               │   │   ├── MD5UtilsTest.java
│           │               │   │   ├── MemberUtilsTest.java
│           │               │   │   ├── MethodComparatorTest.java
│           │               │   │   ├── MethodUtilsTest.java
│           │               │   │   ├── MyEnum.java
│           │               │   │   ├── NamedThreadFactoryTest.java
│           │               │   │   ├── NetUtilsInterfaceDisplayNameHasMetaCharactersTest.java
│           │               │   │   ├── NetUtilsTest.java
│           │               │   │   ├── ParametersTest.java
│           │               │   │   ├── PathUtilsTest.java
│           │               │   │   ├── PojoUtilsTest.java
│           │               │   │   ├── ProtobufUtilsTest.java
│           │               │   │   ├── ReflectUtilsTest.java
│           │               │   │   ├── RegexPropertiesTest.java
│           │               │   │   ├── SerializeSecurityConfiguratorTest.java
│           │               │   │   ├── SerializeSecurityManagerTest.java
│           │               │   │   ├── StackTest.java
│           │               │   │   ├── StringConstantFieldValuePredicateTest.java
│           │               │   │   ├── StringUtilsTest.java
│           │               │   │   ├── SystemPropertyConfigUtilsTest.java
│           │               │   │   ├── TestAllowClassNotifyListener.java
│           │               │   │   ├── TimeUtilsTest.java
│           │               │   │   ├── UrlUtilsTest.java
│           │               │   │   └── json/
│           │               │   │       ├── AbstractObject.java
│           │               │   │       ├── Color.java
│           │               │   │       ├── Printer.java
│           │               │   │       ├── Range.java
│           │               │   │       ├── Service.java
│           │               │   │       ├── Student.java
│           │               │   │       ├── Teacher.java
│           │               │   │       ├── TestEnum.java
│           │               │   │       ├── TestObjectA.java
│           │               │   │       └── TestObjectB.java
│           │               │   ├── version/
│           │               │   │   └── VersionTest.java
│           │               │   └── vo/
│           │               │       └── UserVo.java
│           │               ├── config/
│           │               │   ├── AbstractInterfaceConfigTest.java
│           │               │   ├── Greeting.java
│           │               │   ├── GreetingLocal1.java
│           │               │   ├── GreetingLocal2.java
│           │               │   ├── GreetingLocal3.java
│           │               │   └── context/
│           │               │       ├── ConfigConfigurationAdapterTest.java
│           │               │       └── ConfigManagerTest.java
│           │               ├── metadata/
│           │               │   └── definition/
│           │               │       ├── DefaultTypeBuilderTest.java
│           │               │       ├── MetadataTest.java
│           │               │       ├── MetadataUtils.java
│           │               │       ├── ServiceDefinitionBuilderTest.java
│           │               │       ├── Test3TypeBuilder.java
│           │               │       ├── TestTypeBuilder.java
│           │               │       ├── TypeDefinitionBuilderTest.java
│           │               │       ├── common/
│           │               │       │   ├── ClassExtendsMap.java
│           │               │       │   ├── ColorEnum.java
│           │               │       │   ├── OuterClass.java
│           │               │       │   ├── ResultWithRawCollections.java
│           │               │       │   └── TestService.java
│           │               │       └── service/
│           │               │           ├── ComplexObject.java
│           │               │           ├── DemoService.java
│           │               │           └── annotation/
│           │               │               ├── MockMethodAnnotation.java
│           │               │               ├── MockMethodAnnotation2.java
│           │               │               └── MockTypeAnnotation.java
│           │               └── rpc/
│           │                   ├── executor/
│           │                   │   ├── IsolationExecutorSupportFactoryTest.java
│           │                   │   ├── Mock1ExecutorSupport.java
│           │                   │   ├── Mock1IsolationExecutorSupportFactory.java
│           │                   │   ├── Mock2ExecutorSupport.java
│           │                   │   └── Mock2IsolationExecutorSupportFactory.java
│           │                   ├── model/
│           │                   │   ├── ApplicationModelTest.java
│           │                   │   ├── FrameworkModelTest.java
│           │                   │   ├── FrameworkServiceRepositoryTest.java
│           │                   │   ├── HelloReply.java
│           │                   │   ├── HelloRequest.java
│           │                   │   ├── ModuleModelTest.java
│           │                   │   ├── ModuleServiceRepositoryTest.java
│           │                   │   ├── Person.java
│           │                   │   ├── ReflectionMethodDescriptorTest.java
│           │                   │   ├── ReflectionServiceDescriptorTest.java
│           │                   │   ├── ScopeModelAwareExtensionProcessorTest.java
│           │                   │   ├── ScopeModelTest.java
│           │                   │   ├── ScopeModelUtilTest.java
│           │                   │   ├── SerializablePerson.java
│           │                   │   ├── ServiceRepositoryTest.java
│           │                   │   ├── User.java
│           │                   │   ├── media/
│           │                   │   │   ├── Image.java
│           │                   │   │   └── Media.java
│           │                   │   └── person/
│           │                   │       ├── BigPerson.java
│           │                   │       ├── FullAddress.java
│           │                   │       ├── PersonInfo.java
│           │                   │       ├── PersonStatus.java
│           │                   │       └── Phone.java
│           │                   ├── service/
│           │                   │   ├── GenericExceptionTest.java
│           │                   │   └── ServiceDescriptorInternalCacheTest.java
│           │                   └── support/
│           │                       ├── DemoService.java
│           │                       ├── DemoService1.java
│           │                       ├── DemoService1Impl.java
│           │                       ├── DemoServiceImpl.java
│           │                       ├── MockScopeModelAware.java
│           │                       ├── MockScopeModelDestroyListener.java
│           │                       └── ProtocolUtilsTest.java
│           └── resources/
│               ├── META-INF/
│               │   ├── dubbo/
│               │   │   ├── external/
│               │   │   │   ├── org.apache.dubbo.common.convert.Converter
│               │   │   │   ├── org.apache.dubbo.common.extension.duplicated.DuplicatedOverriddenExt
│               │   │   │   └── org.apache.dubbo.common.extension.duplicated.DuplicatedWithoutOverriddenExt
│               │   │   ├── internal/
│               │   │   │   ├── org.apache.dubbo.common.config.OrderedPropertiesProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.SPI2
│               │   │   │   ├── org.apache.dubbo.common.extension.activate.ActivateExt1
│               │   │   │   ├── org.apache.dubbo.common.extension.activate.ActivateWrapperExt1
│               │   │   │   ├── org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt
│               │   │   │   ├── org.apache.dubbo.common.extension.compatible.CompatibleExt
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooAppProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooAppService
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooFrameworkProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooFrameworkService
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooModuleProvider
│               │   │   │   ├── org.apache.dubbo.common.extension.director.FooModuleService
│               │   │   │   ├── org.apache.dubbo.common.extension.duplicated.DuplicatedOverriddenExt
│               │   │   │   ├── org.apache.dubbo.common.extension.duplicated.DuplicatedWithoutOverriddenExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext1.SimpleExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext10_multi_names.Ext10MultiNames
│               │   │   │   ├── org.apache.dubbo.common.extension.ext11_no_adaptive.NoAdaptiveExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext2.Ext2
│               │   │   │   ├── org.apache.dubbo.common.extension.ext3.UseProtocolKeyExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext4.NoUrlParamExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext5.NoAdaptiveMethodExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext6_inject.Ext6
│               │   │   │   ├── org.apache.dubbo.common.extension.ext6_wrap.WrappedExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext7.InitErrorExt
│               │   │   │   ├── org.apache.dubbo.common.extension.ext8_add.AddExt1
│               │   │   │   ├── org.apache.dubbo.common.extension.ext9_empty.Ext9Empty
│               │   │   │   ├── org.apache.dubbo.common.extension.injection.InjectExt
│               │   │   │   ├── org.apache.dubbo.common.extension.support.Filter0
│               │   │   │   ├── org.apache.dubbo.common.extension.wrapper.Demo
│               │   │   │   ├── org.apache.dubbo.common.lang.ShutdownHookCallback
│               │   │   │   ├── org.apache.dubbo.common.logger.LoggerAdapter
│               │   │   │   ├── org.apache.dubbo.common.ssl.CertProvider
│               │   │   │   ├── org.apache.dubbo.common.status.StatusChecker
│               │   │   │   ├── org.apache.dubbo.common.status.reporter.FrameworkStatusReporter
│               │   │   │   ├── org.apache.dubbo.event.EventListener
│               │   │   │   ├── org.apache.dubbo.metadata.definition.builder.TypeBuilder
│               │   │   │   └── org.apache.dubbo.rpc.executor.IsolationExecutorSupportFactory
│               │   │   ├── org.apache.dubbo.common.convert.Converter
│               │   │   └── org.apache.dubbo.common.extension.SPI1
│               │   ├── services/
│               │   │   ├── java.lang.CharSequence
│               │   │   ├── org.apache.dubbo.common.extension.LoadingStrategy
│               │   │   ├── org.apache.dubbo.common.extension.SPI3
│               │   │   ├── org.apache.dubbo.common.extension.SPI4
│               │   │   └── org.apache.dubbo.common.extension.activate.ActivateExt1
│               │   └── test-versions/
│               │       └── dubbo-common
│               ├── StreamUtilsTest.txt
│               ├── certs/
│               │   ├── ca.pem
│               │   ├── cert.pem
│               │   └── key.pem
│               ├── dubbo-migration.yaml
│               ├── dubbo.properties
│               ├── json.flex
│               ├── log4j2-test.xml
│               ├── md5.testfile.txt
│               ├── org/
│               │   └── apache/
│               │       └── dubbo/
│               │           └── common/
│               │               ├── bytecode/
│               │               │   └── TestClass
│               │               ├── extension/
│               │               │   └── adaptive/
│               │               │       └── HasAdaptiveExt$Adaptive
│               │               └── serialize/
│               │                   └── dubbo/
│               │                       └── SimpleDO.fc
│               ├── parameters.properties
│               ├── properties.load
│               ├── security/
│               │   ├── serialize.allowlist
│               │   └── serialize.blockedlist
│               └── special_spi.properties
├── dubbo-compatible/
│   ├── README.md
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── alibaba/
│       │               └── dubbo/
│       │                   ├── cache/
│       │                   │   ├── Cache.java
│       │                   │   ├── CacheFactory.java
│       │                   │   └── support/
│       │                   │       └── AbstractCacheFactory.java
│       │                   ├── common/
│       │                   │   ├── Constants.java
│       │                   │   ├── DelegateURL.java
│       │                   │   ├── URL.java
│       │                   │   ├── compiler/
│       │                   │   │   └── Compiler.java
│       │                   │   ├── extension/
│       │                   │   │   ├── Activate.java
│       │                   │   │   └── ExtensionFactory.java
│       │                   │   ├── logger/
│       │                   │   │   └── LoggerAdapter.java
│       │                   │   ├── serialize/
│       │                   │   │   ├── ObjectInput.java
│       │                   │   │   ├── ObjectOutput.java
│       │                   │   │   └── Serialization.java
│       │                   │   ├── status/
│       │                   │   │   ├── Status.java
│       │                   │   │   └── StatusChecker.java
│       │                   │   ├── store/
│       │                   │   │   └── DataStore.java
│       │                   │   ├── threadpool/
│       │                   │   │   └── ThreadPool.java
│       │                   │   └── utils/
│       │                   │       └── UrlUtils.java
│       │                   ├── config/
│       │                   │   ├── ApplicationConfig.java
│       │                   │   ├── ArgumentConfig.java
│       │                   │   ├── ConsumerConfig.java
│       │                   │   ├── MethodConfig.java
│       │                   │   ├── ModuleConfig.java
│       │                   │   ├── MonitorConfig.java
│       │                   │   ├── ProtocolConfig.java
│       │                   │   ├── ProviderConfig.java
│       │                   │   ├── ReferenceConfig.java
│       │                   │   ├── RegistryConfig.java
│       │                   │   ├── ServiceConfig.java
│       │                   │   ├── annotation/
│       │                   │   │   ├── Reference.java
│       │                   │   │   └── Service.java
│       │                   │   └── spring/
│       │                   │       └── context/
│       │                   │           └── annotation/
│       │                   │               └── EnableDubbo.java
│       │                   ├── container/
│       │                   │   └── page/
│       │                   │       ├── Menu.java
│       │                   │       ├── MenuComparator.java
│       │                   │       ├── Page.java
│       │                   │       ├── PageHandler.java
│       │                   │       ├── PageServlet.java
│       │                   │       ├── ResourceFilter.java
│       │                   │       └── pages/
│       │                   │           ├── HomePageHandler.java
│       │                   │           ├── LogPageHandler.java
│       │                   │           ├── StatusPageHandler.java
│       │                   │           └── SystemPageHandler.java
│       │                   ├── monitor/
│       │                   │   ├── Monitor.java
│       │                   │   └── MonitorFactory.java
│       │                   ├── qos/
│       │                   │   └── command/
│       │                   │       ├── BaseCommand.java
│       │                   │       └── CommandContext.java
│       │                   ├── registry/
│       │                   │   ├── NotifyListener.java
│       │                   │   ├── Registry.java
│       │                   │   ├── RegistryFactory.java
│       │                   │   └── support/
│       │                   │       ├── AbstractRegistry.java
│       │                   │       ├── AbstractRegistryFactory.java
│       │                   │       └── FailbackRegistry.java
│       │                   ├── remoting/
│       │                   │   ├── Channel.java
│       │                   │   ├── ChannelHandler.java
│       │                   │   ├── Codec.java
│       │                   │   ├── Codec2.java
│       │                   │   ├── Dispatcher.java
│       │                   │   ├── RemotingException.java
│       │                   │   ├── Server.java
│       │                   │   ├── Transporter.java
│       │                   │   ├── exchange/
│       │                   │   │   ├── Exchanger.java
│       │                   │   │   ├── ResponseCallback.java
│       │                   │   │   └── ResponseFuture.java
│       │                   │   └── telnet/
│       │                   │       └── TelnetHandler.java
│       │                   ├── rpc/
│       │                   │   ├── Exporter.java
│       │                   │   ├── Filter.java
│       │                   │   ├── Invocation.java
│       │                   │   ├── Invoker.java
│       │                   │   ├── InvokerListener.java
│       │                   │   ├── Protocol.java
│       │                   │   ├── ProxyFactory.java
│       │                   │   ├── Result.java
│       │                   │   ├── RpcContext.java
│       │                   │   ├── RpcException.java
│       │                   │   ├── RpcInvocation.java
│       │                   │   ├── RpcResult.java
│       │                   │   ├── cluster/
│       │                   │   │   ├── Cluster.java
│       │                   │   │   ├── Configurator.java
│       │                   │   │   ├── ConfiguratorFactory.java
│       │                   │   │   ├── Directory.java
│       │                   │   │   ├── LoadBalance.java
│       │                   │   │   ├── Merger.java
│       │                   │   │   ├── Router.java
│       │                   │   │   ├── RouterFactory.java
│       │                   │   │   ├── RuleConverter.java
│       │                   │   │   └── loadbalance/
│       │                   │   │       └── AbstractLoadBalance.java
│       │                   │   ├── protocol/
│       │                   │   │   └── dubbo/
│       │                   │   │       └── FutureAdapter.java
│       │                   │   ├── service/
│       │                   │   │   ├── EchoService.java
│       │                   │   │   ├── GenericException.java
│       │                   │   │   └── GenericService.java
│       │                   │   └── support/
│       │                   │       └── RpcUtils.java
│       │                   └── validation/
│       │                       ├── Validation.java
│       │                       └── Validator.java
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               ├── cache/
│           │               │   ├── CacheTest.java
│           │               │   ├── MyCache.java
│           │               │   └── MyCacheFactory.java
│           │               ├── common/
│           │               │   ├── extension/
│           │               │   │   ├── ExtensionTest.java
│           │               │   │   ├── MockDispatcher.java
│           │               │   │   ├── MyExtensionFactory.java
│           │               │   │   ├── activate/
│           │               │   │   │   ├── ActivateExt1.java
│           │               │   │   │   └── impl/
│           │               │   │   │       ├── ActivateExt1Impl1.java
│           │               │   │   │       ├── OldActivateExt1Impl2.java
│           │               │   │   │       └── OldActivateExt1Impl3.java
│           │               │   │   └── support/
│           │               │   │       ├── ActivateComparatorTest.java
│           │               │   │       ├── Filter0.java
│           │               │   │       ├── Filter1.java
│           │               │   │       ├── Filter2.java
│           │               │   │       ├── Filter3.java
│           │               │   │       ├── Filter4.java
│           │               │   │       ├── OldFilter0.java
│           │               │   │       ├── OldFilter5.java
│           │               │   │       ├── Order0Filter0.java
│           │               │   │       ├── Order0Filter1.java
│           │               │   │       └── Order0Filter2.java
│           │               │   └── utils/
│           │               │       └── AnnotationUtilsTest.java
│           │               ├── config/
│           │               │   ├── ApplicationConfigTest.java
│           │               │   ├── ArgumentConfigTest.java
│           │               │   ├── ConfigTest.java
│           │               │   ├── ConsumerConfigTest.java
│           │               │   ├── MethodConfigTest.java
│           │               │   ├── ModuleConfigTest.java
│           │               │   ├── ProtocolConfigTest.java
│           │               │   ├── ProviderConfigTest.java
│           │               │   ├── ReferenceConfigTest.java
│           │               │   ├── RegistryConfigTest.java
│           │               │   ├── SignatureTest.java
│           │               │   └── spring/
│           │               │       ├── api/
│           │               │       │   ├── Box.java
│           │               │       │   ├── DemoService.java
│           │               │       │   └── HelloService.java
│           │               │       ├── beans/
│           │               │       │   └── factory/
│           │               │       │       └── annotation/
│           │               │       │           └── ServiceAnnotationTestConfiguration.java
│           │               │       ├── context/
│           │               │       │   └── annotation/
│           │               │       │       ├── DubboComponentScanRegistrarTest.java
│           │               │       │       ├── DubboConfigConfigurationTest.java
│           │               │       │       ├── EnableDubboConfigTest.java
│           │               │       │       ├── EnableDubboTest.java
│           │               │       │       ├── consumer/
│           │               │       │       │   ├── ConsumerConfiguration.java
│           │               │       │       │   └── test/
│           │               │       │       │       └── TestConsumerConfiguration.java
│           │               │       │       └── provider/
│           │               │       │           ├── DefaultHelloService.java
│           │               │       │           ├── DemoServiceImpl.java
│           │               │       │           ├── HelloServiceImpl.java
│           │               │       │           └── ProviderConfiguration.java
│           │               │       └── filter/
│           │               │           ├── MockDao.java
│           │               │           ├── MockDaoImpl.java
│           │               │           └── MockFilter.java
│           │               ├── echo/
│           │               │   └── EchoServiceTest.java
│           │               ├── filter/
│           │               │   ├── FilterTest.java
│           │               │   ├── LegacyInvocation.java
│           │               │   ├── LegacyInvoker.java
│           │               │   └── MyFilter.java
│           │               ├── generic/
│           │               │   └── GenericServiceTest.java
│           │               ├── metadata/
│           │               │   ├── annotation/
│           │               │   │   └── processing/
│           │               │   │       ├── AbstractAnnotationProcessingTest.java
│           │               │   │       ├── AnnotationProcessingTestProcessor.java
│           │               │   │       ├── CompilerInvocationInterceptor.java
│           │               │   │       ├── builder/
│           │               │   │       │   ├── ArrayTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── CollectionTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── EnumTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── GeneralTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── MapTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── PrimitiveTypeDefinitionBuilderTest.java
│           │               │   │       │   ├── ServiceDefinitionBuilderTest.java
│           │               │   │       │   └── SimpleTypeDefinitionBuilderTest.java
│           │               │   │       ├── model/
│           │               │   │       │   ├── ArrayTypeModel.java
│           │               │   │       │   ├── CollectionTypeModel.java
│           │               │   │       │   ├── Color.java
│           │               │   │       │   ├── MapTypeModel.java
│           │               │   │       │   ├── Model.java
│           │               │   │       │   ├── PrimitiveTypeModel.java
│           │               │   │       │   └── SimpleTypeModel.java
│           │               │   │       └── util/
│           │               │   │           ├── AnnotationUtilsTest.java
│           │               │   │           ├── FieldUtilsTest.java
│           │               │   │           ├── LoggerUtilsTest.java
│           │               │   │           ├── MemberUtilsTest.java
│           │               │   │           ├── MethodUtilsTest.java
│           │               │   │           ├── ServiceAnnotationUtilsTest.java
│           │               │   │           └── TypeUtilsTest.java
│           │               │   ├── rest/
│           │               │   │   ├── DefaultRestService.java
│           │               │   │   ├── RestService.java
│           │               │   │   ├── SpringRestService.java
│           │               │   │   ├── StandardRestService.java
│           │               │   │   └── User.java
│           │               │   └── tools/
│           │               │       ├── Ancestor.java
│           │               │       ├── Compiler.java
│           │               │       ├── CompilerTest.java
│           │               │       ├── DefaultTestService.java
│           │               │       ├── GenericTestService.java
│           │               │       ├── Parent.java
│           │               │       ├── TestProcessor.java
│           │               │       ├── TestService.java
│           │               │       └── TestServiceImpl.java
│           │               ├── rpc/
│           │               │   ├── RpcContextTest.java
│           │               │   ├── cluster/
│           │               │   │   ├── CompatibleRouter.java
│           │               │   │   ├── CompatibleRouter2.java
│           │               │   │   ├── NewRouter.java
│           │               │   │   └── RouterTest.java
│           │               │   ├── filter/
│           │               │   │   └── GenericImplFilterTest.java
│           │               │   └── support/
│           │               │       ├── DemoService.java
│           │               │       ├── Person.java
│           │               │       └── Type.java
│           │               ├── serialization/
│           │               │   ├── MyObjectInput.java
│           │               │   ├── MyObjectOutput.java
│           │               │   ├── MySerialization.java
│           │               │   └── SerializationTest.java
│           │               └── service/
│           │                   ├── ComplexObject.java
│           │                   ├── CustomArgument.java
│           │                   ├── DemoService.java
│           │                   ├── DemoServiceImpl.java
│           │                   ├── MockInvocation.java
│           │                   ├── Person.java
│           │                   └── Type.java
│           └── resources/
│               ├── META-INF/
│               │   ├── config.properties
│               │   ├── default.properties
│               │   ├── dubbb-consumer.properties
│               │   ├── dubbb-provider.properties
│               │   ├── dubbo/
│               │   │   └── internal/
│               │   │       ├── org.apache.dubbo.common.extension.activate.ActivateExt1
│               │   │       ├── org.apache.dubbo.common.extension.support.Filter0
│               │   │       └── org.apache.dubbo.rpc.Filter
│               │   ├── dubbo-consumer.properties
│               │   ├── dubbo-provider.properties
│               │   └── services/
│               │       ├── com.alibaba.dubbo.common.extension.ExtensionFactory
│               │       └── org.apache.dubbo.remoting.Dispatcher
│               ├── definition/
│               │   ├── com.alibaba.dubbo.config.ApplicationConfig
│               │   ├── com.alibaba.dubbo.config.ArgumentConfig
│               │   ├── com.alibaba.dubbo.config.ConsumerConfig
│               │   ├── com.alibaba.dubbo.config.MethodConfig
│               │   ├── com.alibaba.dubbo.config.ModuleConfig
│               │   ├── com.alibaba.dubbo.config.MonitorConfig
│               │   ├── com.alibaba.dubbo.config.ProtocolConfig
│               │   ├── com.alibaba.dubbo.config.ProviderConfig
│               │   ├── com.alibaba.dubbo.config.ReferenceConfig
│               │   ├── com.alibaba.dubbo.config.RegistryConfig
│               │   └── com.alibaba.dubbo.config.ServiceConfig
│               ├── dubbo.properties
│               └── log4j2-test.xml
├── dubbo-config/
│   ├── dubbo-config-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── config/
│   │       │   │                   ├── ConfigInitializer.java
│   │       │   │                   ├── ConfigPostProcessor.java
│   │       │   │                   ├── ConfigScopeModelInitializer.java
│   │       │   │                   ├── DubboShutdownHook.java
│   │       │   │                   ├── ReferenceConfig.java
│   │       │   │                   ├── ServiceConfig.java
│   │       │   │                   ├── ServiceListener.java
│   │       │   │                   ├── bootstrap/
│   │       │   │                   │   ├── BootstrapTakeoverMode.java
│   │       │   │                   │   ├── DubboBootstrap.java
│   │       │   │                   │   ├── DubboBootstrapStartStopListener.java
│   │       │   │                   │   └── builders/
│   │       │   │                   │       ├── AbstractBuilder.java
│   │       │   │                   │       ├── AbstractInterfaceBuilder.java
│   │       │   │                   │       ├── AbstractMethodBuilder.java
│   │       │   │                   │       ├── AbstractReferenceBuilder.java
│   │       │   │                   │       ├── AbstractServiceBuilder.java
│   │       │   │                   │       ├── ApplicationBuilder.java
│   │       │   │                   │       ├── ArgumentBuilder.java
│   │       │   │                   │       ├── ConfigCenterBuilder.java
│   │       │   │                   │       ├── ConsumerBuilder.java
│   │       │   │                   │       ├── InternalServiceConfigBuilder.java
│   │       │   │                   │       ├── MetadataReportBuilder.java
│   │       │   │                   │       ├── MethodBuilder.java
│   │       │   │                   │       ├── MetricsBuilder.java
│   │       │   │                   │       ├── ModuleBuilder.java
│   │       │   │                   │       ├── MonitorBuilder.java
│   │       │   │                   │       ├── ProtocolBuilder.java
│   │       │   │                   │       ├── ProviderBuilder.java
│   │       │   │                   │       ├── ReferenceBuilder.java
│   │       │   │                   │       ├── RegistryBuilder.java
│   │       │   │                   │       ├── ServiceBuilder.java
│   │       │   │                   │       ├── TripleBuilder.java
│   │       │   │                   │       └── package-info.java
│   │       │   │                   ├── deploy/
│   │       │   │                   │   ├── DefaultApplicationDeployer.java
│   │       │   │                   │   ├── DefaultMetricsServiceExporter.java
│   │       │   │                   │   ├── DefaultModuleDeployer.java
│   │       │   │                   │   └── FrameworkModelCleaner.java
│   │       │   │                   ├── invoker/
│   │       │   │                   │   └── DelegateProviderMetaDataInvoker.java
│   │       │   │                   ├── metadata/
│   │       │   │                   │   ├── ConfigurableMetadataServiceExporter.java
│   │       │   │                   │   ├── ExporterDeployListener.java
│   │       │   │                   │   └── MetadataServiceURLParamsMetadataCustomizer.java
│   │       │   │                   └── utils/
│   │       │   │                       ├── CompositeReferenceCache.java
│   │       │   │                       ├── ConfigValidationUtils.java
│   │       │   │                       ├── DefaultConfigValidator.java
│   │       │   │                       └── SimpleReferenceCache.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   ├── org.apache.dubbo.common.deploy.ApplicationDeployListener
│   │       │                   ├── org.apache.dubbo.metrics.service.MetricsServiceExporter
│   │       │                   ├── org.apache.dubbo.registry.client.ServiceInstanceCustomizer
│   │       │                   └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│   │       └── test/
│   │           ├── java/
│   │           │   ├── demo/
│   │           │   │   ├── MultiClassLoaderService.java
│   │           │   │   ├── MultiClassLoaderServiceImpl.java
│   │           │   │   ├── MultiClassLoaderServiceRequest.java
│   │           │   │   └── MultiClassLoaderServiceResult.java
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── config/
│   │           │                   ├── AbstractConfigTest.java
│   │           │                   ├── AbstractMethodConfigTest.java
│   │           │                   ├── AbstractReferenceConfigTest.java
│   │           │                   ├── AbstractServiceConfigTest.java
│   │           │                   ├── ApplicationConfigTest.java
│   │           │                   ├── ArgumentConfigTest.java
│   │           │                   ├── ConfigCenterConfigTest.java
│   │           │                   ├── ConfigScopeModelInitializerTest.java
│   │           │                   ├── ConsumerConfigTest.java
│   │           │                   ├── DubboShutdownHookTest.java
│   │           │                   ├── MetadataReportConfigTest.java
│   │           │                   ├── MethodConfigTest.java
│   │           │                   ├── MetricsConfigTest.java
│   │           │                   ├── ModuleConfigTest.java
│   │           │                   ├── MonitorConfigTest.java
│   │           │                   ├── ProtocolConfigTest.java
│   │           │                   ├── ProviderConfigTest.java
│   │           │                   ├── ReferenceConfigTest.java
│   │           │                   ├── RegistryConfigTest.java
│   │           │                   ├── ServiceConfigTest.java
│   │           │                   ├── SysProps.java
│   │           │                   ├── api/
│   │           │                   │   ├── Box.java
│   │           │                   │   ├── DemoException.java
│   │           │                   │   ├── DemoService.java
│   │           │                   │   ├── Greeting.java
│   │           │                   │   └── User.java
│   │           │                   ├── bootstrap/
│   │           │                   │   ├── DubboBootstrapTest.java
│   │           │                   │   ├── MultiInstanceTest.java
│   │           │                   │   └── builders/
│   │           │                   │       ├── AbstractBuilderTest.java
│   │           │                   │       ├── AbstractInterfaceBuilderTest.java
│   │           │                   │       ├── AbstractMethodBuilderTest.java
│   │           │                   │       ├── AbstractReferenceBuilderTest.java
│   │           │                   │       ├── AbstractServiceBuilderTest.java
│   │           │                   │       ├── ApplicationBuilderTest.java
│   │           │                   │       ├── ArgumentBuilderTest.java
│   │           │                   │       ├── ConfigCenterBuilderTest.java
│   │           │                   │       ├── ConsumerBuilderTest.java
│   │           │                   │       ├── MetadataReportBuilderTest.java
│   │           │                   │       ├── MethodBuilderTest.java
│   │           │                   │       ├── MetricsBuilderTest.java
│   │           │                   │       ├── ModuleBuilderTest.java
│   │           │                   │       ├── MonitorBuilderTest.java
│   │           │                   │       ├── ProtocolBuilderTest.java
│   │           │                   │       ├── ProviderBuilderTest.java
│   │           │                   │       ├── ReferenceBuilderTest.java
│   │           │                   │       ├── RegistryBuilderTest.java
│   │           │                   │       ├── ServiceBuilderTest.java
│   │           │                   │       └── TripleBuilderTest.java
│   │           │                   ├── cache/
│   │           │                   │   ├── CacheService.java
│   │           │                   │   ├── CacheServiceImpl.java
│   │           │                   │   └── CacheTest.java
│   │           │                   ├── common/
│   │           │                   │   └── Person.java
│   │           │                   ├── deploy/
│   │           │                   │   └── DefaultApplicationDeployerTest.java
│   │           │                   ├── integration/
│   │           │                   │   ├── AbstractRegistryCenterExporterListener.java
│   │           │                   │   ├── AbstractRegistryCenterServiceListener.java
│   │           │                   │   ├── Constants.java
│   │           │                   │   ├── IntegrationTest.java
│   │           │                   │   ├── multiple/
│   │           │                   │   │   ├── AbstractStorage.java
│   │           │                   │   │   ├── Storage.java
│   │           │                   │   │   ├── exportmetadata/
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataExporterListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataIntegrationTest.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataService.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportMetadataServiceImpl.java
│   │           │                   │   │   │   └── MultipleRegistryCenterExportMetadataServiceListener.java
│   │           │                   │   │   ├── exportprovider/
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderExporterListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderFilter.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderIntegrationTest.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderRegistryProtocolListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderService.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterExportProviderServiceImpl.java
│   │           │                   │   │   │   └── MultipleRegistryCenterExportProviderServiceListener.java
│   │           │                   │   │   ├── injvm/
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmExporterListener.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmFilter.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmIntegrationTest.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmService.java
│   │           │                   │   │   │   ├── MultipleRegistryCenterInjvmServiceImpl.java
│   │           │                   │   │   │   └── MultipleRegistryCenterInjvmServiceListener.java
│   │           │                   │   │   ├── package-info.java
│   │           │                   │   │   └── servicediscoveryregistry/
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryRegistryServiceListener.java
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryService.java
│   │           │                   │   │       ├── MultipleRegistryCenterServiceDiscoveryRegistryServiceImpl.java
│   │           │                   │   │       ├── ServiceDiscoveryRegistryInfoWrapper.java
│   │           │                   │   │       └── ServiceDiscoveryRegistryStorage.java
│   │           │                   │   └── single/
│   │           │                   │       ├── SingleRegistryCenterDubboProtocolIntegrationTest.java
│   │           │                   │       ├── SingleRegistryCenterExportedServiceListener.java
│   │           │                   │       ├── SingleRegistryCenterIntegrationService.java
│   │           │                   │       ├── SingleRegistryCenterIntegrationServiceImpl.java
│   │           │                   │       ├── exportmetadata/
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataExporterListener.java
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataIntegrationTest.java
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataService.java
│   │           │                   │       │   ├── SingleRegistryCenterExportMetadataServiceImpl.java
│   │           │                   │       │   └── SingleRegistryCenterExportMetadataServiceListener.java
│   │           │                   │       ├── exportprovider/
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderExporterListener.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderFilter.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderIntegrationTest.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderRegistryProtocolListener.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderService.java
│   │           │                   │       │   ├── SingleRegistryCenterExportProviderServiceImpl.java
│   │           │                   │       │   └── SingleRegistryCenterExportProviderServiceListener.java
│   │           │                   │       ├── injvm/
│   │           │                   │       │   ├── SingleRegistryCenterInjvmExporterListener.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmFilter.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmIntegrationTest.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmService.java
│   │           │                   │       │   ├── SingleRegistryCenterInjvmServiceImpl.java
│   │           │                   │       │   └── SingleRegistryCenterInjvmServiceListener.java
│   │           │                   │       └── package-info.java
│   │           │                   ├── invoker/
│   │           │                   │   └── DelegateProviderMetaDataInvokerTest.java
│   │           │                   ├── metadata/
│   │           │                   │   └── MetadataServiceURLParamsMetadataCustomizerTest.java
│   │           │                   ├── mock/
│   │           │                   │   ├── GreetingLocal1.java
│   │           │                   │   ├── GreetingLocal2.java
│   │           │                   │   ├── GreetingLocal3.java
│   │           │                   │   ├── MockCluster.java
│   │           │                   │   ├── MockCodec.java
│   │           │                   │   ├── MockDispatcher.java
│   │           │                   │   ├── MockExchanger.java
│   │           │                   │   ├── MockExporterListener.java
│   │           │                   │   ├── MockFilter.java
│   │           │                   │   ├── MockInvokerListener.java
│   │           │                   │   ├── MockLoadBalance.java
│   │           │                   │   ├── MockProtocol.java
│   │           │                   │   ├── MockProtocol2.java
│   │           │                   │   ├── MockProxyFactory.java
│   │           │                   │   ├── MockRegistry.java
│   │           │                   │   ├── MockRegistryFactory.java
│   │           │                   │   ├── MockRegistryFactory2.java
│   │           │                   │   ├── MockServiceDiscovery.java
│   │           │                   │   ├── MockServiceListener.java
│   │           │                   │   ├── MockStatusChecker.java
│   │           │                   │   ├── MockTelnetHandler.java
│   │           │                   │   ├── MockThreadPool.java
│   │           │                   │   ├── MockTransporter.java
│   │           │                   │   └── TestProxyFactory.java
│   │           │                   ├── nested/
│   │           │                   │   ├── AggregationConfigTest.java
│   │           │                   │   └── PrometheusConfigTest.java
│   │           │                   ├── provider/
│   │           │                   │   └── impl/
│   │           │                   │       └── DemoServiceImpl.java
│   │           │                   ├── url/
│   │           │                   │   ├── ExporterSideConfigUrlTest.java
│   │           │                   │   ├── InvokerSideConfigUrlTest.java
│   │           │                   │   ├── RpcConfigGetSetProxy.java
│   │           │                   │   └── UrlTestBase.java
│   │           │                   └── utils/
│   │           │                       ├── ConfigValidationUtilsTest.java
│   │           │                       ├── MockReferenceConfig.java
│   │           │                       ├── ReferenceCacheTest.java
│   │           │                       ├── TestPreferSerializationProvider.java
│   │           │                       ├── XxxMockReferenceConfig.java
│   │           │                       └── service/
│   │           │                           ├── FooService.java
│   │           │                           ├── FooServiceImpl.java
│   │           │                           ├── XxxService.java
│   │           │                           └── XxxServiceImpl.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       ├── org.apache.dubbo.common.status.StatusChecker
│   │               │       ├── org.apache.dubbo.common.threadpool.ThreadPool
│   │               │       ├── org.apache.dubbo.config.ServiceListener
│   │               │       ├── org.apache.dubbo.registry.RegistryFactory
│   │               │       ├── org.apache.dubbo.registry.RegistryServiceListener
│   │               │       ├── org.apache.dubbo.registry.integration.RegistryProtocolListener
│   │               │       ├── org.apache.dubbo.remoting.Codec
│   │               │       ├── org.apache.dubbo.remoting.Dispatcher
│   │               │       ├── org.apache.dubbo.remoting.Transporter
│   │               │       ├── org.apache.dubbo.remoting.exchange.Exchanger
│   │               │       ├── org.apache.dubbo.remoting.telnet.TelnetHandler
│   │               │       ├── org.apache.dubbo.rpc.ExporterListener
│   │               │       ├── org.apache.dubbo.rpc.Filter
│   │               │       ├── org.apache.dubbo.rpc.InvokerListener
│   │               │       ├── org.apache.dubbo.rpc.Protocol
│   │               │       ├── org.apache.dubbo.rpc.ProxyFactory
│   │               │       ├── org.apache.dubbo.rpc.cluster.Cluster
│   │               │       └── org.apache.dubbo.rpc.cluster.LoadBalance
│   │               ├── dubbo.properties
│   │               └── security/
│   │                   └── serialize.allowlist
│   ├── dubbo-config-spring/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── config/
│   │       │   │                   └── spring/
│   │       │   │                       ├── ConfigCenterBean.java
│   │       │   │                       ├── Constants.java
│   │       │   │                       ├── ReferenceBean.java
│   │       │   │                       ├── ServiceBean.java
│   │       │   │                       ├── SpringScopeModelInitializer.java
│   │       │   │                       ├── aot/
│   │       │   │                       │   └── AotWithSpringDetector.java
│   │       │   │                       ├── beans/
│   │       │   │                       │   └── factory/
│   │       │   │                       │       ├── annotation/
│   │       │   │                       │       │   ├── AbstractAnnotationBeanPostProcessor.java
│   │       │   │                       │       │   ├── AnnotationPropertyValuesAdapter.java
│   │       │   │                       │       │   ├── DubboConfigAliasPostProcessor.java
│   │       │   │                       │       │   ├── ReferenceAnnotationBeanPostProcessor.java
│   │       │   │                       │       │   ├── ServiceAnnotationPostProcessor.java
│   │       │   │                       │       │   ├── ServiceBeanNameBuilder.java
│   │       │   │                       │       │   └── ServicePackagesHolder.java
│   │       │   │                       │       └── config/
│   │       │   │                       │           ├── ConfigurableSourceBeanMetadataElement.java
│   │       │   │                       │           └── DubboConfigDefaultPropertyValueBeanPostProcessor.java
│   │       │   │                       ├── context/
│   │       │   │                       │   ├── DubboBootstrapApplicationListener.java
│   │       │   │                       │   ├── DubboBootstrapStartStopListenerSpringAdapter.java
│   │       │   │                       │   ├── DubboConfigApplicationListener.java
│   │       │   │                       │   ├── DubboConfigBeanInitializer.java
│   │       │   │                       │   ├── DubboContextPostProcessor.java
│   │       │   │                       │   ├── DubboDeployApplicationListener.java
│   │       │   │                       │   ├── DubboInfraBeanRegisterPostProcessor.java
│   │       │   │                       │   ├── DubboSpringInitContext.java
│   │       │   │                       │   ├── DubboSpringInitCustomizer.java
│   │       │   │                       │   ├── DubboSpringInitCustomizerHolder.java
│   │       │   │                       │   ├── DubboSpringInitializer.java
│   │       │   │                       │   ├── annotation/
│   │       │   │                       │   │   ├── ConfigurationBeanBindingPostProcessor.java
│   │       │   │                       │   │   ├── ConfigurationBeanBindingRegistrar.java
│   │       │   │                       │   │   ├── ConfigurationBeanBindingsRegister.java
│   │       │   │                       │   │   ├── DubboClassPathBeanDefinitionScanner.java
│   │       │   │                       │   │   ├── DubboComponentScan.java
│   │       │   │                       │   │   ├── DubboComponentScanRegistrar.java
│   │       │   │                       │   │   ├── DubboConfigConfiguration.java
│   │       │   │                       │   │   ├── DubboConfigConfigurationRegistrar.java
│   │       │   │                       │   │   ├── EnableConfigurationBeanBinding.java
│   │       │   │                       │   │   ├── EnableConfigurationBeanBindings.java
│   │       │   │                       │   │   ├── EnableDubbo.java
│   │       │   │                       │   │   └── EnableDubboConfig.java
│   │       │   │                       │   ├── config/
│   │       │   │                       │   │   ├── ConfigurationBeanBinder.java
│   │       │   │                       │   │   ├── ConfigurationBeanCustomizer.java
│   │       │   │                       │   │   ├── DefaultConfigurationBeanBinder.java
│   │       │   │                       │   │   ├── DubboConfigBeanCustomizer.java
│   │       │   │                       │   │   └── NamePropertyDefaultValueDubboConfigBeanCustomizer.java
│   │       │   │                       │   ├── event/
│   │       │   │                       │   │   ├── DubboApplicationStateEvent.java
│   │       │   │                       │   │   ├── DubboBootstrapStatedEvent.java
│   │       │   │                       │   │   ├── DubboBootstrapStopedEvent.java
│   │       │   │                       │   │   ├── DubboConfigInitEvent.java
│   │       │   │                       │   │   ├── DubboModuleStateEvent.java
│   │       │   │                       │   │   └── ServiceBeanExportedEvent.java
│   │       │   │                       │   └── properties/
│   │       │   │                       │       ├── AbstractDubboConfigBinder.java
│   │       │   │                       │       ├── DefaultDubboConfigBinder.java
│   │       │   │                       │       └── DubboConfigBinder.java
│   │       │   │                       ├── extension/
│   │       │   │                       │   └── SpringExtensionInjector.java
│   │       │   │                       ├── reference/
│   │       │   │                       │   ├── ReferenceAttributes.java
│   │       │   │                       │   ├── ReferenceBeanBuilder.java
│   │       │   │                       │   ├── ReferenceBeanManager.java
│   │       │   │                       │   ├── ReferenceBeanSupport.java
│   │       │   │                       │   └── ReferenceCreator.java
│   │       │   │                       ├── schema/
│   │       │   │                       │   ├── AnnotationBeanDefinitionParser.java
│   │       │   │                       │   ├── DubboBeanDefinitionParser.java
│   │       │   │                       │   └── DubboNamespaceHandler.java
│   │       │   │                       ├── status/
│   │       │   │                       │   ├── DataSourceStatusChecker.java
│   │       │   │                       │   └── SpringStatusChecker.java
│   │       │   │                       └── util/
│   │       │   │                           ├── AnnotatedBeanDefinitionRegistryUtils.java
│   │       │   │                           ├── AnnotationUtils.java
│   │       │   │                           ├── BeanRegistrar.java
│   │       │   │                           ├── DubboAnnotationUtils.java
│   │       │   │                           ├── DubboBeanUtils.java
│   │       │   │                           ├── EnvironmentUtils.java
│   │       │   │                           ├── GenericBeanPostProcessorAdapter.java
│   │       │   │                           ├── LazyTargetInvocationHandler.java
│   │       │   │                           ├── LazyTargetSource.java
│   │       │   │                           ├── LockUtils.java
│   │       │   │                           ├── ObjectUtils.java
│   │       │   │                           ├── PropertySourcesUtils.java
│   │       │   │                           ├── SpringCompatUtils.java
│   │       │   │                           ├── SpringParameterNameReader.java
│   │       │   │                           └── WrapperUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── compat/
│   │       │           │   └── dubbo.xsd
│   │       │           ├── dubbo/
│   │       │           │   └── internal/
│   │       │           │       ├── org.apache.dubbo.common.extension.ExtensionInjector
│   │       │           │       ├── org.apache.dubbo.common.status.StatusChecker
│   │       │           │       ├── org.apache.dubbo.common.utils.ParameterNameReader
│   │       │           │       ├── org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener
│   │       │           │       └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│   │       │           ├── dubbo.xsd
│   │       │           ├── spring.handlers
│   │       │           └── spring.schemas
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── config/
│   │           │                   └── spring/
│   │           │                       ├── AbstractRegistryService.java
│   │           │                       ├── ConfigTest.java
│   │           │                       ├── ControllerServiceConfigTest.java
│   │           │                       ├── DubboStateListener.java
│   │           │                       ├── EmbeddedZooKeeper.java
│   │           │                       ├── GenericDemoService.java
│   │           │                       ├── JavaConfigBeanTest.java
│   │           │                       ├── ServiceBeanTest.java
│   │           │                       ├── SimpleRegistryExporter.java
│   │           │                       ├── SimpleRegistryService.java
│   │           │                       ├── SysProps.java
│   │           │                       ├── action/
│   │           │                       │   ├── DemoActionByAnnotation.java
│   │           │                       │   ├── DemoActionBySetter.java
│   │           │                       │   └── DemoInterceptor.java
│   │           │                       ├── annotation/
│   │           │                       │   ├── consumer/
│   │           │                       │   │   └── AnnotationAction.java
│   │           │                       │   ├── merged/
│   │           │                       │   │   ├── MergedReference.java
│   │           │                       │   │   └── MergedService.java
│   │           │                       │   └── provider/
│   │           │                       │       └── AnnotationServiceImpl.java
│   │           │                       ├── api/
│   │           │                       │   ├── Box.java
│   │           │                       │   ├── DemoService.java
│   │           │                       │   ├── DemoServiceSon.java
│   │           │                       │   ├── HelloService.java
│   │           │                       │   ├── MethodCallback.java
│   │           │                       │   ├── ProvidedByDemoService1.java
│   │           │                       │   ├── ProvidedByDemoService2.java
│   │           │                       │   ├── ProvidedByDemoService3.java
│   │           │                       │   └── SpringControllerService.java
│   │           │                       ├── beans/
│   │           │                       │   └── factory/
│   │           │                       │       ├── annotation/
│   │           │                       │       │   ├── DubboConfigAliasPostProcessorTest.java
│   │           │                       │       │   ├── MergedAnnotationTest.java
│   │           │                       │       │   ├── MethodConfigCallbackTest.java
│   │           │                       │       │   ├── ParameterConvertTest.java
│   │           │                       │       │   ├── ReferenceAnnotationBeanPostProcessorTest.java
│   │           │                       │       │   ├── ReferenceCreatorTest.java
│   │           │                       │       │   ├── ServiceAnnotationPostProcessorTest.java
│   │           │                       │       │   ├── ServiceAnnotationTestConfiguration.java
│   │           │                       │       │   └── ServiceBeanNameBuilderTest.java
│   │           │                       │       └── config/
│   │           │                       │           ├── DubboConfigDefaultPropertyValueBeanPostProcessorTest.java
│   │           │                       │           ├── MultipleServicesWithMethodConfigsTest.java
│   │           │                       │           ├── YamlPropertySourceFactory.java
│   │           │                       │           └── YamlPropertySourceFactoryTest.java
│   │           │                       ├── boot/
│   │           │                       │   ├── conditional1/
│   │           │                       │   │   ├── XmlReferenceBeanConditionalTest.java
│   │           │                       │   │   └── consumer/
│   │           │                       │   │       └── dubbo-consumer.xml
│   │           │                       │   ├── conditional2/
│   │           │                       │   │   └── JavaConfigAnnotationReferenceBeanConditionalTest.java
│   │           │                       │   ├── conditional3/
│   │           │                       │   │   └── JavaConfigRawReferenceBeanConditionalTest.java
│   │           │                       │   ├── conditional4/
│   │           │                       │   │   └── JavaConfigReferenceBeanConditionalTest4.java
│   │           │                       │   ├── configprops/
│   │           │                       │   │   ├── SpringBootConfigPropsTest.java
│   │           │                       │   │   └── SpringBootMultipleConfigPropsTest.java
│   │           │                       │   ├── importxml/
│   │           │                       │   │   ├── SpringBootImportDubboXmlTest.java
│   │           │                       │   │   └── consumer/
│   │           │                       │   │       └── dubbo-consumer.xml
│   │           │                       │   └── importxml2/
│   │           │                       │       ├── HelloServiceImpl.java
│   │           │                       │       ├── SpringBootImportAndScanTest.java
│   │           │                       │       └── dubbo-provider.xml
│   │           │                       ├── context/
│   │           │                       │   ├── KeepRunningOnSpringClosedTest.java
│   │           │                       │   ├── annotation/
│   │           │                       │   │   ├── DubboComponentScanRegistrarTest.java
│   │           │                       │   │   ├── DubboConfigConfigurationTest.java
│   │           │                       │   │   ├── EnableDubboConfigTest.java
│   │           │                       │   │   ├── EnableDubboTest.java
│   │           │                       │   │   ├── consumer/
│   │           │                       │   │   │   ├── ConsumerConfiguration.java
│   │           │                       │   │   │   └── test/
│   │           │                       │   │   │       └── TestConsumerConfiguration.java
│   │           │                       │   │   └── provider/
│   │           │                       │   │       ├── DefaultHelloService.java
│   │           │                       │   │       ├── DemoServiceImpl.java
│   │           │                       │   │       ├── HelloServiceImpl.java
│   │           │                       │   │       └── ProviderConfiguration.java
│   │           │                       │   ├── customize/
│   │           │                       │   │   ├── DubboSpringInitCustomizerTest.java
│   │           │                       │   │   ├── dubbo-provider-v1.xml
│   │           │                       │   │   └── dubbo-provider-v2.xml
│   │           │                       │   └── properties/
│   │           │                       │       └── DefaultDubboConfigBinderTest.java
│   │           │                       ├── extension/
│   │           │                       │   ├── BeanForContext2.java
│   │           │                       │   └── SpringExtensionInjectorTest.java
│   │           │                       ├── filter/
│   │           │                       │   ├── MockDao.java
│   │           │                       │   ├── MockDaoImpl.java
│   │           │                       │   └── MockFilter.java
│   │           │                       ├── impl/
│   │           │                       │   ├── DemoServiceImpl.java
│   │           │                       │   ├── DemoServiceImpl_LongWaiting.java
│   │           │                       │   ├── DemoServiceSonImpl.java
│   │           │                       │   ├── HelloServiceImpl.java
│   │           │                       │   ├── MethodCallbackImpl.java
│   │           │                       │   ├── NotifyService.java
│   │           │                       │   ├── UnserializableBox.java
│   │           │                       │   └── UnserializableBoxDemoServiceImpl.java
│   │           │                       ├── isolation/
│   │           │                       │   ├── api/
│   │           │                       │   │   └── ApiIsolationTest.java
│   │           │                       │   └── spring/
│   │           │                       │       ├── BaseTest.java
│   │           │                       │       ├── annotation/
│   │           │                       │       │   ├── AnnotationIsolationTest.java
│   │           │                       │       │   ├── consumer/
│   │           │                       │       │   │   ├── dubbo/
│   │           │                       │       │   │   │   ├── DemoServiceV1.java
│   │           │                       │       │   │   │   ├── HelloServiceV2.java
│   │           │                       │       │   │   │   └── HelloServiceV3.java
│   │           │                       │       │   │   └── tri/
│   │           │                       │       │   │       ├── DemoServiceV1.java
│   │           │                       │       │   │       ├── HelloServiceV2.java
│   │           │                       │       │   │       └── HelloServiceV3.java
│   │           │                       │       │   └── provider/
│   │           │                       │       │       ├── DemoServiceImplV1.java
│   │           │                       │       │       ├── HelloServiceImplV2.java
│   │           │                       │       │       └── HelloServiceImplV3.java
│   │           │                       │       ├── support/
│   │           │                       │       │   ├── DemoServiceExecutor.java
│   │           │                       │       │   └── HelloServiceExecutor.java
│   │           │                       │       └── xml/
│   │           │                       │           └── XmlIsolationTest.java
│   │           │                       ├── issues/
│   │           │                       │   ├── issue6000/
│   │           │                       │   │   ├── Issue6000Test.java
│   │           │                       │   │   ├── adubbo/
│   │           │                       │   │   │   └── HelloDubbo.java
│   │           │                       │   │   └── dubbo/
│   │           │                       │   │       └── MyReferenceConfig.java
│   │           │                       │   ├── issue6252/
│   │           │                       │   │   └── Issue6252Test.java
│   │           │                       │   ├── issue7003/
│   │           │                       │   │   └── Issue7003Test.java
│   │           │                       │   ├── issue9172/
│   │           │                       │   │   └── MultipleConsumerAndProviderTest.java
│   │           │                       │   └── issue9207/
│   │           │                       │       └── ConfigCenterBeanTest.java
│   │           │                       ├── metrics/
│   │           │                       │   └── SpringBootConfigMetricsTest.java
│   │           │                       ├── propertyconfigurer/
│   │           │                       │   ├── consumer/
│   │           │                       │   │   ├── DemoBeanFactoryPostProcessor.java
│   │           │                       │   │   ├── PropertyConfigurerTest.java
│   │           │                       │   │   ├── app.properties
│   │           │                       │   │   └── dubbo-consumer.xml
│   │           │                       │   ├── consumer2/
│   │           │                       │   │   ├── PropertySourcesConfigurerTest.java
│   │           │                       │   │   ├── app.properties
│   │           │                       │   │   └── dubbo-consumer.xml
│   │           │                       │   ├── consumer3/
│   │           │                       │   │   ├── PropertySourcesInJavaConfigTest.java
│   │           │                       │   │   ├── app.properties
│   │           │                       │   │   └── dubbo-consumer.xml
│   │           │                       │   └── provider/
│   │           │                       │       ├── HelloServiceImpl.java
│   │           │                       │       ├── app.properties
│   │           │                       │       └── dubbo-provider.xml
│   │           │                       ├── reference/
│   │           │                       │   ├── DubboConfigBeanInitializerTest.java
│   │           │                       │   ├── ReferenceKeyTest.java
│   │           │                       │   ├── javaconfig/
│   │           │                       │   │   ├── JavaConfigReferenceBeanTest.java
│   │           │                       │   │   └── consumer.properties
│   │           │                       │   ├── localcall/
│   │           │                       │   │   ├── LocalCallTest.java
│   │           │                       │   │   ├── LocalCallTest2.java
│   │           │                       │   │   ├── LocalHelloServiceImpl.java
│   │           │                       │   │   ├── local-call-consumer.xml
│   │           │                       │   │   └── local-call-provider.xml
│   │           │                       │   ├── localcalla/
│   │           │                       │   │   ├── LocalCallReferenceAnnotationTest.java
│   │           │                       │   │   └── local-call-config.properties
│   │           │                       │   ├── localcallam/
│   │           │                       │   │   ├── LocalCallMultipleReferenceAnnotationsTest.java
│   │           │                       │   │   └── local-call-config.properties
│   │           │                       │   ├── localcallmix/
│   │           │                       │   │   ├── LocalCallReferenceMixTest.java
│   │           │                       │   │   ├── local-call-config.properties
│   │           │                       │   │   └── local-call-consumer.xml
│   │           │                       │   └── registryNA/
│   │           │                       │       ├── consumer/
│   │           │                       │       │   ├── DubboXmlConsumerTest.java
│   │           │                       │       │   ├── dubbo-consumer.xml
│   │           │                       │       │   └── dubbo-registryNA-consumer.xml
│   │           │                       │       └── provider/
│   │           │                       │           ├── DubboXmlProviderTest.java
│   │           │                       │           └── dubbo-provider.xml
│   │           │                       ├── registry/
│   │           │                       │   ├── MockRegistry.java
│   │           │                       │   ├── MockRegistryFactory.java
│   │           │                       │   ├── MockServiceDiscovery.java
│   │           │                       │   └── nacos/
│   │           │                       │       ├── demo/
│   │           │                       │       │   ├── consumer/
│   │           │                       │       │   │   ├── DemoServiceConsumerBootstrap.java
│   │           │                       │       │   │   └── DemoServiceConsumerXmlBootstrap.java
│   │           │                       │       │   ├── provider/
│   │           │                       │       │   │   ├── DemoServiceProviderBootstrap.java
│   │           │                       │       │   │   └── DemoServiceProviderXmlBootstrap.java
│   │           │                       │       │   └── service/
│   │           │                       │       │       ├── DefaultService.java
│   │           │                       │       │       └── DemoService.java
│   │           │                       │       └── nacos/
│   │           │                       │           └── NacosServiceNameTest.java
│   │           │                       ├── samples/
│   │           │                       │   ├── ZookeeperDubboSpringConsumerBootstrap.java
│   │           │                       │   ├── ZookeeperDubboSpringConsumerXmlBootstrap.java
│   │           │                       │   └── ZookeeperDubboSpringProviderBootstrap.java
│   │           │                       ├── schema/
│   │           │                       │   ├── DubboNamespaceHandlerTest.java
│   │           │                       │   ├── GenericServiceTest.java
│   │           │                       │   ├── GenericServiceWithoutInterfaceTest.java
│   │           │                       │   └── MyGenericService.java
│   │           │                       ├── status/
│   │           │                       │   ├── DataSourceStatusCheckerTest.java
│   │           │                       │   └── SpringStatusCheckerTest.java
│   │           │                       └── util/
│   │           │                           └── EnvironmentUtilsTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   ├── config.properties
│   │               │   ├── default.properties
│   │               │   ├── demo-provider.properties
│   │               │   ├── dubbb-consumer.properties
│   │               │   ├── dubbb-provider.properties
│   │               │   ├── dubbo/
│   │               │   │   └── internal/
│   │               │   │       ├── org.apache.dubbo.common.metrics.service.MetricsService
│   │               │   │       ├── org.apache.dubbo.common.metrics.service.MetricsServiceExporter
│   │               │   │       ├── org.apache.dubbo.registry.RegistryFactory
│   │               │   │       └── org.apache.dubbo.rpc.Filter
│   │               │   ├── dubbo-consumer.properties
│   │               │   ├── dubbo-provider.properties
│   │               │   ├── dubbo.yml
│   │               │   ├── init-reference.properties
│   │               │   ├── isolation/
│   │               │   │   ├── dubbo-consumer.xml
│   │               │   │   └── dubbo-provider.xml
│   │               │   ├── issues/
│   │               │   │   ├── issue6000/
│   │               │   │   │   └── config.properties
│   │               │   │   ├── issue6252/
│   │               │   │   │   └── config.properties
│   │               │   │   ├── issue7003/
│   │               │   │   │   └── config.properties
│   │               │   │   ├── issue9172/
│   │               │   │   │   ├── consumer.properties
│   │               │   │   │   └── provider.properties
│   │               │   │   └── issue9207/
│   │               │   │       └── dubbo-properties-in-configcenter.properties
│   │               │   ├── service-introspection/
│   │               │   │   ├── zookeeper-dubbb-consumer.properties
│   │               │   │   ├── zookeeper-dubbb-provider.properties
│   │               │   │   └── zookeeper-dubbo-consumer.xml
│   │               │   └── spring/
│   │               │       ├── dubbo-annotation-consumer.xml
│   │               │       ├── dubbo-annotation-provider.xml
│   │               │       ├── dubbo-consumer.xml
│   │               │       ├── dubbo-generic-consumer-without-interface.xml
│   │               │       ├── dubbo-generic-consumer.xml
│   │               │       ├── dubbo-nacos-consumer-context.xml
│   │               │       ├── dubbo-nacos-provider-context.xml
│   │               │       ├── dubbo-provider.xml
│   │               │       └── multiple-services-with-methods.xml
│   │               ├── applicationContext.xml
│   │               ├── dubbo-binder.properties
│   │               ├── dubbo.properties
│   │               ├── nacos-consumer-config.properties
│   │               ├── nacos-provider-config.properties
│   │               ├── org/
│   │               │   └── apache/
│   │               │       └── dubbo/
│   │               │           └── config/
│   │               │               └── spring/
│   │               │                   ├── annotation-consumer.xml
│   │               │                   ├── annotation-provider.xml
│   │               │                   ├── annotation-version-consumer.xml
│   │               │                   ├── annotation-version-provider.xml
│   │               │                   ├── aop-autowire-byname.xml
│   │               │                   ├── aop-autowire-bytype.xml
│   │               │                   ├── consumer-notification.xml
│   │               │                   ├── customize-parameter.xml
│   │               │                   ├── delay-fixed-time.xml
│   │               │                   ├── delay-on-initialized.xml
│   │               │                   ├── demo-provider-UnserializableBox.xml
│   │               │                   ├── demo-provider-long-waiting.xml
│   │               │                   ├── demo-provider-no-methods-interface.xml
│   │               │                   ├── demo-provider-properties.xml
│   │               │                   ├── demo-provider.xml
│   │               │                   ├── generic-export.xml
│   │               │                   ├── init-reference-getUrls.xml
│   │               │                   ├── init-reference-keys.xml
│   │               │                   ├── init-reference-properties.xml
│   │               │                   ├── init-reference-retry-false.xml
│   │               │                   ├── init-reference.xml
│   │               │                   ├── metrics-aggregation.xml
│   │               │                   ├── metrics-prometheus.xml
│   │               │                   ├── multi-monitor.xml
│   │               │                   ├── multi-protocol-default.xml
│   │               │                   ├── multi-protocol-error.xml
│   │               │                   ├── multi-protocol-register.xml
│   │               │                   ├── multi-protocol.xml
│   │               │                   ├── multi-registry.xml
│   │               │                   ├── override-multi-protocol.xml
│   │               │                   ├── override-protocol.xml
│   │               │                   ├── provider-multi.xml
│   │               │                   ├── provider-nested-service.xml
│   │               │                   ├── provider-with-module.xml
│   │               │                   ├── provider-with-monitor.xml
│   │               │                   ├── service-class.xml
│   │               │                   ├── spring-extension-inject.xml
│   │               │                   ├── system-properties-override-default.xml
│   │               │                   ├── system-properties-override.xml
│   │               │                   └── xml-override-properties.xml
│   │               └── webapps/
│   │                   ├── test/
│   │                   │   └── WEB-INF/
│   │                   │       └── web.xml
│   │                   ├── test2/
│   │                   │   └── WEB-INF/
│   │                   │       └── web.xml
│   │                   └── test3/
│   │                       └── WEB-INF/
│   │                           └── web.xml
│   ├── dubbo-config-spring6/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── dubbo/
│   │       │                   └── config/
│   │       │                       └── spring6/
│   │       │                           ├── beans/
│   │       │                           │   └── factory/
│   │       │                           │       ├── annotation/
│   │       │                           │       │   ├── ReferenceAnnotationWithAotBeanPostProcessor.java
│   │       │                           │       │   └── ServiceAnnotationWithAotPostProcessor.java
│   │       │                           │       └── aot/
│   │       │                           │           ├── AutowiredElementResolver.java
│   │       │                           │           ├── ReferencedFieldValueResolver.java
│   │       │                           │           └── ReferencedMethodArgumentsResolver.java
│   │       │                           ├── context/
│   │       │                           │   └── DubboInfraBeanRegisterPostProcessor.java
│   │       │                           └── utils/
│   │       │                               └── AotUtils.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── dubbo/
│   │                           └── config/
│   │                               └── spring6/
│   │                                   └── utils/
│   │                                       ├── AotUtilsTest.java
│   │                                       ├── CircularDependencyDemoService.java
│   │                                       ├── DemoA.java
│   │                                       ├── DemoB.java
│   │                                       ├── DemoService.java
│   │                                       ├── HelloRequest.java
│   │                                       ├── HelloRequestSuper.java
│   │                                       ├── HelloResponse.java
│   │                                       ├── Person.java
│   │                                       └── SexEnum.java
│   └── pom.xml
├── dubbo-configcenter/
│   ├── dubbo-configcenter-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── configcenter/
│   │       │   │                   └── support/
│   │       │   │                       └── apollo/
│   │       │   │                           ├── ApolloDynamicConfiguration.java
│   │       │   │                           └── ApolloDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── configcenter/
│   │           │                   └── support/
│   │           │                       └── apollo/
│   │           │                           ├── ApolloDynamicConfigurationTest.java
│   │           │                           └── EmbeddedApolloJunit5.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── app.properties
│   │               ├── log4j2-test.xml
│   │               └── mockdata-dubbo.properties
│   ├── dubbo-configcenter-file/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── common/
│   │       │   │                   └── config/
│   │       │   │                       └── configcenter/
│   │       │   │                           └── file/
│   │       │   │                               ├── FileSystemDynamicConfiguration.java
│   │       │   │                               └── FileSystemDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── common/
│   │           │                   └── config/
│   │           │                       └── configcenter/
│   │           │                           └── file/
│   │           │                               ├── FileSystemDynamicConfigurationFactoryTest.java
│   │           │                               └── FileSystemDynamicConfigurationTest.java
│   │           └── resources/
│   │               └── log4j2-test.xml
│   ├── dubbo-configcenter-nacos/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── configcenter/
│   │       │   │                   └── support/
│   │       │   │                       └── nacos/
│   │       │   │                           ├── NacosConfigServiceWrapper.java
│   │       │   │                           ├── NacosDynamicConfiguration.java
│   │       │   │                           └── NacosDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── configcenter/
│   │           │                   └── support/
│   │           │                       └── nacos/
│   │           │                           ├── MockConfigService.java
│   │           │                           ├── NacosDynamicConfigurationTest.java
│   │           │                           └── RetryTest.java
│   │           └── resources/
│   │               └── log4j2-test.xml
│   ├── dubbo-configcenter-zookeeper/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── configcenter/
│   │       │   │                   └── support/
│   │       │   │                       └── zookeeper/
│   │       │   │                           ├── CacheListener.java
│   │       │   │                           ├── ZookeeperDataListener.java
│   │       │   │                           ├── ZookeeperDynamicConfiguration.java
│   │       │   │                           └── ZookeeperDynamicConfigurationFactory.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── dubbo/
│   │                           └── configcenter/
│   │                               └── support/
│   │                                   └── zookeeper/
│   │                                       └── ZookeeperDynamicConfigurationTest.java
│   └── pom.xml
├── dubbo-demo/
│   ├── README.md
│   ├── dubbo-demo-api/
│   │   ├── dubbo-demo-api-consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── demo/
│   │   │           │                   └── consumer/
│   │   │           │                       └── Application.java
│   │   │           └── resources/
│   │   │               └── log4j2.xml
│   │   ├── dubbo-demo-api-interface/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── dubbo/
│   │   │                           └── api/
│   │   │                               └── demo/
│   │   │                                   └── DemoService.java
│   │   ├── dubbo-demo-api-provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── demo/
│   │   │           │                   └── provider/
│   │   │           │                       ├── Application.java
│   │   │           │                       └── DemoServiceImpl.java
│   │   │           └── resources/
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   ├── dubbo-demo-mcp-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── mcp/
│   │           │                   └── server/
│   │           │                       └── demo/
│   │           │                           ├── McpDemoApplication.java
│   │           │                           └── demo/
│   │           │                               ├── ComplexRequest.java
│   │           │                               ├── ComplexResponse.java
│   │           │                               ├── HelloService.java
│   │           │                               ├── HelloServiceImpl.java
│   │           │                               └── NestedDetail.java
│   │           └── resources/
│   │               ├── application.yml
│   │               └── log4j2.xml
│   ├── dubbo-demo-spring-boot/
│   │   ├── dubbo-demo-spring-boot-consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── springboot/
│   │   │           │                   └── demo/
│   │   │           │                       └── consumer/
│   │   │           │                           └── ConsumerApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── dubbo-demo-spring-boot-interface/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── dubbo/
│   │   │                           └── springboot/
│   │   │                               └── demo/
│   │   │                                   └── DemoService.java
│   │   ├── dubbo-demo-spring-boot-provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── springboot/
│   │   │           │                   └── demo/
│   │   │           │                       └── provider/
│   │   │           │                           ├── DemoServiceImpl.java
│   │   │           │                           └── ProviderApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── dubbo-demo-spring-boot-servlet/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── dubbo/
│   │   │           │               └── springboot/
│   │   │           │                   └── demo/
│   │   │           │                       └── servlet/
│   │   │           │                           ├── ApiConsumer.java
│   │   │           │                           ├── GreeterService.java
│   │   │           │                           ├── GreeterServiceImpl.java
│   │   │           │                           ├── HelloReply.java
│   │   │           │                           ├── HelloRequest.java
│   │   │           │                           └── ProviderApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   └── dubbo-demo-spring-boot-idl/
│       ├── dubbo-demo-spring-boot-idl-consumer/
│       │   ├── pom.xml
│       │   └── src/
│       │       └── main/
│       │           ├── java/
│       │           │   └── org/
│       │           │       └── apache/
│       │           │           └── dubbo/
│       │           │               └── springboot/
│       │           │                   └── idl/
│       │           │                       └── demo/
│       │           │                           └── consumer/
│       │           │                               └── ConsumerApplication.java
│       │           ├── proto/
│       │           │   └── helloworld.proto
│       │           └── resources/
│       │               ├── application.yml
│       │               └── log4j2.xml
│       ├── dubbo-demo-spring-boot-idl-provider/
│       │   ├── README.md
│       │   ├── pom.xml
│       │   └── src/
│       │       ├── main/
│       │       │   ├── java/
│       │       │   │   └── org/
│       │       │   │       └── apache/
│       │       │   │           └── dubbo/
│       │       │   │               └── springboot/
│       │       │   │                   └── idl/
│       │       │   │                       └── demo/
│       │       │   │                           └── provider/
│       │       │   │                               ├── GreeterServiceImpl.java
│       │       │   │                               └── ProviderApplication.java
│       │       │   ├── proto/
│       │       │   │   ├── helloworld.proto
│       │       │   │   └── message.proto
│       │       │   └── resources/
│       │       │       ├── application.yml
│       │       │       └── log4j2.xml
│       │       └── test/
│       │           └── java/
│       │               └── org/
│       │                   └── apache/
│       │                       └── dubbo/
│       │                           └── springboot/
│       │                               └── idl/
│       │                                   └── demo/
│       │                                       └── MessageServiceTest.java
│       └── pom.xml
├── dubbo-dependencies-bom/
│   └── pom.xml
├── dubbo-distribution/
│   ├── dubbo-all/
│   │   └── pom.xml
│   ├── dubbo-all-shaded/
│   │   └── pom.xml
│   ├── dubbo-apache-release/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── assembly/
│   │           ├── bin-release.xml
│   │           └── source-release.xml
│   ├── dubbo-bom/
│   │   └── pom.xml
│   └── dubbo-core-spi/
│       └── pom.xml
├── dubbo-maven-plugin/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── dubbo/
│           │               └── maven/
│           │                   └── plugin/
│           │                       ├── aot/
│           │                       │   ├── AbstractAotMojo.java
│           │                       │   ├── AbstractDependencyFilterMojo.java
│           │                       │   ├── CommandLineBuilder.java
│           │                       │   ├── DependencyFilter.java
│           │                       │   ├── DubboProcessAotMojo.java
│           │                       │   ├── Exclude.java
│           │                       │   ├── ExcludeFilter.java
│           │                       │   ├── FilterableDependency.java
│           │                       │   ├── Include.java
│           │                       │   ├── IncludeFilter.java
│           │                       │   ├── JavaCompilerPluginConfiguration.java
│           │                       │   ├── JavaExecutable.java
│           │                       │   ├── JavaProcessExecutor.java
│           │                       │   ├── MatchingGroupIdFilter.java
│           │                       │   ├── RunArguments.java
│           │                       │   └── RunProcess.java
│           │                       └── protoc/
│           │                           ├── DubboProtocCompilerMojo.java
│           │                           ├── DubboProtocPlugin.java
│           │                           ├── DubboProtocPluginWrapper.java
│           │                           ├── DubboProtocPluginWrapperFactory.java
│           │                           ├── LinuxDubboProtocPluginWrapper.java
│           │                           ├── ProtocMetaData.java
│           │                           ├── WinDubboProtocPluginWrapper.java
│           │                           ├── command/
│           │                           │   ├── DefaultProtocCommandBuilder.java
│           │                           │   └── ProtocCommandArgsBuilder.java
│           │                           └── enums/
│           │                               └── DubboGenerateTypeEnum.java
│           └── resources/
│               └── version-matrix.properties
├── dubbo-metadata/
│   ├── dubbo-metadata-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── metadata/
│   │       │   │                   ├── AbstractCacheManager.java
│   │       │   │                   ├── AbstractServiceNameMapping.java
│   │       │   │                   ├── DefaultMetadataParamsFilter.java
│   │       │   │                   ├── DubboMetadataServiceV2Triple.java
│   │       │   │                   ├── InstanceMetadataChangedListener.java
│   │       │   │                   ├── MappingCacheManager.java
│   │       │   │                   ├── MappingChangedEvent.java
│   │       │   │                   ├── MappingListener.java
│   │       │   │                   ├── MetadataConstants.java
│   │       │   │                   ├── MetadataInfo.java
│   │       │   │                   ├── MetadataInfoV2.java
│   │       │   │                   ├── MetadataInfoV2OrBuilder.java
│   │       │   │                   ├── MetadataParamsFilter.java
│   │       │   │                   ├── MetadataRequest.java
│   │       │   │                   ├── MetadataRequestOrBuilder.java
│   │       │   │                   ├── MetadataService.java
│   │       │   │                   ├── MetadataServiceDetector.java
│   │       │   │                   ├── MetadataServiceV2.java
│   │       │   │                   ├── MetadataServiceV2Detector.java
│   │       │   │                   ├── MetadataServiceV2OuterClass.java
│   │       │   │                   ├── OpenAPIFormat.java
│   │       │   │                   ├── OpenAPIInfo.java
│   │       │   │                   ├── OpenAPIInfoOrBuilder.java
│   │       │   │                   ├── OpenAPIRequest.java
│   │       │   │                   ├── OpenAPIRequestOrBuilder.java
│   │       │   │                   ├── ParameterTypesComparator.java
│   │       │   │                   ├── RevisionResolver.java
│   │       │   │                   ├── ServiceInfoV2.java
│   │       │   │                   ├── ServiceInfoV2OrBuilder.java
│   │       │   │                   ├── ServiceNameMapping.java
│   │       │   │                   ├── aot/
│   │       │   │                   │   ├── MetadataProxyDescriberRegistrar.java
│   │       │   │                   │   └── MetadataReflectionTypeDescriberRegistrar.java
│   │       │   │                   ├── report/
│   │       │   │                   │   ├── MetadataReport.java
│   │       │   │                   │   ├── MetadataReportFactory.java
│   │       │   │                   │   ├── MetadataReportInstance.java
│   │       │   │                   │   ├── MetadataScopeModelInitializer.java
│   │       │   │                   │   ├── identifier/
│   │       │   │                   │   │   ├── BaseApplicationMetadataIdentifier.java
│   │       │   │                   │   │   ├── BaseMetadataIdentifier.java
│   │       │   │                   │   │   ├── BaseServiceMetadataIdentifier.java
│   │       │   │                   │   │   ├── KeyTypeEnum.java
│   │       │   │                   │   │   ├── MetadataIdentifier.java
│   │       │   │                   │   │   ├── ServiceMetadataIdentifier.java
│   │       │   │                   │   │   └── SubscriberMetadataIdentifier.java
│   │       │   │                   │   └── support/
│   │       │   │                   │       ├── AbstractMetadataReport.java
│   │       │   │                   │       ├── AbstractMetadataReportFactory.java
│   │       │   │                   │       ├── Constants.java
│   │       │   │                   │       └── NopMetadataReport.java
│   │       │   │                   └── util/
│   │       │   │                       └── MetadataServiceVersionUtils.java
│   │       │   ├── proto/
│   │       │   │   └── metadata_service_v2.proto
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   ├── org.apache.dubbo.aot.api.ProxyDescriberRegistrar
│   │       │                   ├── org.apache.dubbo.aot.api.ReflectionTypeDescriberRegistrar
│   │       │                   ├── org.apache.dubbo.metadata.MetadataParamsFilter
│   │       │                   ├── org.apache.dubbo.rpc.model.BuiltinServiceDetector
│   │       │                   └── org.apache.dubbo.rpc.model.ScopeModelInitializer
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── metadata/
│   │           │                   ├── AbstractServiceNameMappingTest.java
│   │           │                   ├── MetadataInfoTest.java
│   │           │                   ├── filter/
│   │           │                   │   ├── CustomizedParamsFilter.java
│   │           │                   │   ├── ExcludedParamsFilter.java
│   │           │                   │   └── ExcludedParamsFilter2.java
│   │           │                   ├── report/
│   │           │                   │   ├── MetadataReportInstanceTest.java
│   │           │                   │   ├── identifier/
│   │           │                   │   │   ├── BaseApplicationMetadataIdentifierTest.java
│   │           │                   │   │   ├── BaseServiceMetadataIdentifierTest.java
│   │           │                   │   │   ├── KeyTypeEnumTest.java
│   │           │                   │   │   ├── MetadataIdentifierTest.java
│   │           │                   │   │   ├── ServiceMetadataIdentifierTest.java
│   │           │                   │   │   └── SubscriberMetadataIdentifierTest.java
│   │           │                   │   └── support/
│   │           │                   │       ├── AbstractMetadataReportFactoryTest.java
│   │           │                   │       └── AbstractMetadataReportTest.java
│   │           │                   ├── store/
│   │           │                   │   ├── InterfaceNameTestService.java
│   │           │                   │   ├── InterfaceNameTestService2.java
│   │           │                   │   └── RetryTestService.java
│   │           │                   └── test/
│   │           │                       ├── JTestMetadataReport4Test.java
│   │           │                       └── JTestMetadataReportFactory4Test.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── dubbo/
│   │               │       ├── internal/
│   │               │       │   ├── org.apache.dubbo.metadata.MetadataParamsFilter
│   │               │       │   └── org.apache.dubbo.metadata.report.MetadataReportFactory
│   │               │       └── service-name-mapping.properties
│   │               └── log4j2-test.xml
│   ├── dubbo-metadata-definition-protobuf/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── metadata/
│   │       │   │                   └── definition/
│   │       │   │                       └── protobuf/
│   │       │   │                           └── ProtobufTypeBuilder.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── dubbo/
│   │       │               └── internal/
│   │       │                   └── org.apache.dubbo.metadata.definition.builder.TypeBuilder
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── dubbo/
│   │           │               └── metadata/
│   │           │                   └── definition/
│   │           │                       └── protobuf/
│   │           │                           ├── ProtobufTypeBuilderTest.java
│   │           │                           └── model/
│   │           │                               ├── GooglePB.java
│   │           │                               └── ServiceInterface.java
│   │           └── resources/
│   │               └── log4j2-test.xml
│   ├── dubbo-metadata-processor/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── dubbo/
│   │       │   │               └── metadata/
│   │       │   │                   └── annotation/
│   │       │   │                       └── processing/
│   │       │   │                           ├── AbstractServiceAnnotationProcessor.java
│   │       │   │                           ├── ClassPathMetadataStorage.java
│   │       │   │                           ├── ServiceDefinitionMetadataAnnotationProcessor.java
│   │       │   │                           ├── builder/
│   │       │   │                           │   ├── ArrayTypeDefinitionBuilder.java
│   │       │   │                           │   ├── CollectionTypeDefinitionBuilder.java
│   │       │   │                           │   ├── DeclaredTypeDefinitionBuilder.java
│   │       │   │                           │   ├── EnumTypeDefinitionBuilder.java
│   │       │   │                           │   ├── GeneralTypeDefinitionBuilder.java
│   │       │   │                           │   ├── MapTypeDefinitionBuilder.java
│   │       │   │                           │   ├── MethodDefinitionBuilder.java
│   │       │   │                           │   ├── PrimitiveTypeDefinitionBuilder.java
│   │       │   │                           │   ├── ServiceDefinitionBuilder.java
│   │       │   │                           │   ├── SimpleTypeDefinitionBuilder.java
│   │       │   │                           │   ├── TypeBuilder.java
│   │       │   │                           │   └── TypeDefinitionBuilder.java
│   │       │   │                           └── util/
│   │       │   │                              
Download .txt
Showing preview only (2,323K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (27668 symbols across 3092 files)

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/registry/AddressListener.java
  type AddressListener (line 26) | @SPI(scope = ExtensionScope.MODULE)
    method notify (line 36) | List<URL> notify(List<URL> addresses, URL consumerUrl, Directory regis...
    method destroy (line 38) | default void destroy(URL consumerUrl, Directory registryDirectory) {}

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java
  class CacheableRouterFactory (line 29) | public abstract class CacheableRouterFactory implements RouterFactory {
    method getRouter (line 32) | @Override
    method createRouter (line 37) | protected abstract Router createRouter(URL url);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Cluster.java
  type Cluster (line 34) | @SPI(Cluster.DEFAULT)
    method join (line 47) | @Adaptive
    method getCluster (line 50) | static Cluster getCluster(ScopeModel scopeModel, String name) {
    method getCluster (line 54) | static Cluster getCluster(ScopeModel scopeModel, String name, boolean ...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterInvoker.java
  type ClusterInvoker (line 34) | public interface ClusterInvoker<T> extends Invoker<T> {
    method getRegistryUrl (line 36) | URL getRegistryUrl();
    method getDirectory (line 38) | Directory<T> getDirectory();
    method isDestroyed (line 40) | boolean isDestroyed();
    method isServiceDiscovery (line 42) | default boolean isServiceDiscovery() {
    method hasProxyInvokers (line 50) | default boolean hasProxyInvokers() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterScopeModelInitializer.java
  class ClusterScopeModelInitializer (line 26) | public class ClusterScopeModelInitializer implements ScopeModelInitializ...
    method initializeFrameworkModel (line 28) | @Override
    method initializeApplicationModel (line 34) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Configurator.java
  type Configurator (line 37) | public interface Configurator extends Comparable<Configurator> {
    method getUrl (line 44) | URL getUrl();
    method configure (line 52) | URL configure(URL url);
    method toConfigurators (line 70) | static Optional<List<Configurator>> toConfigurators(List<URL> urls) {
    method compareTo (line 104) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ConfiguratorFactory.java
  type ConfiguratorFactory (line 28) | @SPI
    method getConfigurator (line 37) | @Adaptive(CommonConstants.PROTOCOL_KEY)

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Constants.java
  type Constants (line 19) | public interface Constants {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Directory.java
  type Directory (line 35) | public interface Directory<T> extends Node {
    method getInterface (line 42) | Class<T> getInterface();
    method list (line 50) | List<Invoker<T>> list(Invocation invocation) throws RpcException;
    method getAllInvokers (line 56) | List<Invoker<T>> getAllInvokers();
    method getConsumerUrl (line 58) | URL getConsumerUrl();
    method isDestroyed (line 60) | boolean isDestroyed();
    method isEmpty (line 62) | default boolean isEmpty() {
    method isServiceDiscovery (line 66) | default boolean isServiceDiscovery() {
    method discordAddresses (line 70) | void discordAddresses();
    method getRouterChain (line 72) | RouterChain<T> getRouterChain();
    method addInvalidateInvoker (line 80) | void addInvalidateInvoker(Invoker<T> invoker);
    method addDisabledInvoker (line 89) | void addDisabledInvoker(Invoker<T> invoker);
    method recoverDisabledInvoker (line 96) | void recoverDisabledInvoker(Invoker<T> invoker);
    method isNotificationReceived (line 98) | default boolean isNotificationReceived() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/LoadBalance.java
  type LoadBalance (line 36) | @SPI(RandomLoadBalance.NAME)
    method select (line 47) | @Adaptive("loadbalance")

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java
  class MergeableClusterScopeModelInitializer (line 24) | public class MergeableClusterScopeModelInitializer implements ScopeModel...
    method initializeApplicationModel (line 26) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Merger.java
  type Merger (line 21) | @SPI
    method merge (line 24) | T merge(T... items);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ProviderURLMergeProcessor.java
  type ProviderURLMergeProcessor (line 24) | @SPI("default")
    method mergeUrl (line 34) | URL mergeUrl(URL remoteUrl, Map<String, String> localParametersMap);
    method mergeLocalParams (line 36) | default Map<String, String> mergeLocalParams(Map<String, String> local...
    method accept (line 40) | default boolean accept(URL providerUrl, Map<String, String> localParam...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
  type Router (line 35) | public interface Router extends Comparable<Router> {
    method getUrl (line 44) | URL getUrl();
    method route (line 55) | @Deprecated
    method route (line 71) | default <T> RouterResult<Invoker<T>> route(
    method notify (line 83) | default <T> void notify(List<Invoker<T>> invokers) {}
    method isRuntime (line 91) | boolean isRuntime();
    method isForce (line 100) | boolean isForce();
    method getPriority (line 107) | int getPriority();
    method stop (line 109) | default void stop() {
    method compareTo (line 113) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
  class RouterChain (line 44) | public class RouterChain<T> {
    method buildChain (line 51) | @SuppressWarnings({"rawtypes", "unchecked"})
    method buildSingleChain (line 58) | public static <T> SingleRouterChain<T> buildSingleChain(Class<T> inter...
    method RouterChain (line 83) | public RouterChain(SingleRouterChain<T>[] chains) {
    method getLock (line 96) | public ReadWriteLock getLock() {
    method getSingleChain (line 100) | public SingleRouterChain<T> getSingleChain(URL url, BitList<Invoker<T>...
    method route (line 119) | @Deprecated
    method setInvokers (line 128) | public synchronized void setInvokers(BitList<Invoker<T>> invokers, Run...
    method destroy (line 212) | public synchronized void destroy() {
    method addRouters (line 225) | public void addRouters(List<Router> routers) {
    method getCurrentChain (line 230) | public SingleRouterChain<T> getCurrentChain() {
    method getRouters (line 234) | public List<Router> getRouters() {
    method getHeadStateRouter (line 238) | public StateRouter<T> getHeadStateRouter() {
    method getStateRouters (line 242) | @Deprecated

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterFactory.java
  type RouterFactory (line 36) | @SPI
    method getRouter (line 46) | @Adaptive(CommonConstants.PROTOCOL_KEY)

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RuleConverter.java
  type RuleConverter (line 24) | @SPI
    method convert (line 27) | List<URL> convert(URL subscribeUrl, Object source);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/SingleRouterChain.java
  class SingleRouterChain (line 50) | public class SingleRouterChain<T> {
    method SingleRouterChain (line 82) | public SingleRouterChain(
    method initWithStateRouters (line 95) | private void initWithStateRouters(List<StateRouter<T>> stateRouters) {
    method initWithRouters (line 110) | public void initWithRouters(List<Router> builtinRouters) {
    method addRouters (line 123) | public void addRouters(List<Router> routers) {
    method getRouters (line 131) | public List<Router> getRouters() {
    method getHeadStateRouter (line 135) | public StateRouter<T> getHeadStateRouter() {
    method route (line 139) | public List<Invoker<T>> route(URL url, BitList<Invoker<T>> availableIn...
    method routeAndPrint (line 156) | public List<Invoker<T>> routeAndPrint(URL url, BitList<Invoker<T>> ava...
    method simpleRoute (line 162) | public List<Invoker<T>> simpleRoute(URL url, BitList<Invoker<T>> avail...
    method printRouterSnapshot (line 203) | private void printRouterSnapshot(URL url, BitList<Invoker<T>> availabl...
    method buildRouterSnapshot (line 212) | public RouterSnapshotNode<T> buildRouterSnapshot(
    method logRouterSnapshot (line 279) | private void logRouterSnapshot(URL url, Invocation invocation, RouterS...
    method setInvokers (line 313) | public void setInvokers(BitList<Invoker<T>> invokers) {
    method setHeadStateRouter (line 322) | @Deprecated
    method getStateRouters (line 330) | @Deprecated
    method getLock (line 335) | public ReadWriteLock getLock() {
    method destroy (line 339) | public void destroy() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java
  class AbstractConfigurator (line 51) | public abstract class AbstractConfigurator implements Configurator {
    method AbstractConfigurator (line 57) | public AbstractConfigurator(URL url) {
    method getUrl (line 64) | @Override
    method configure (line 69) | @Override
    method configureDeprecated (line 99) | @Deprecated
    method configureIfMatch (line 125) | private URL configureIfMatch(String host, URL url) {
    method isV27ConditionMatchOrUnset (line 159) | private boolean isV27ConditionMatchOrUnset(URL url) {
    method isDeprecatedConditionMatch (line 201) | private boolean isDeprecatedConditionMatch(Set<String> conditionKeys, ...
    method genConditionKeys (line 222) | private Set<String> genConditionKeys() {
    method startWithTilde (line 238) | private boolean startWithTilde(String key) {
    method doConfigure (line 242) | protected abstract URL doConfigure(URL currentUrl, URL configUrl);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfigurator.java
  class AbsentConfigurator (line 22) | public class AbsentConfigurator extends AbstractConfigurator {
    method AbsentConfigurator (line 24) | public AbsentConfigurator(URL url) {
    method doConfigure (line 28) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfiguratorFactory.java
  class AbsentConfiguratorFactory (line 27) | public class AbsentConfiguratorFactory implements ConfiguratorFactory {
    method getConfigurator (line 29) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfigurator.java
  class OverrideConfigurator (line 24) | public class OverrideConfigurator extends AbstractConfigurator {
    method OverrideConfigurator (line 27) | public OverrideConfigurator(URL url) {
    method doConfigure (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfiguratorFactory.java
  class OverrideConfiguratorFactory (line 27) | public class OverrideConfiguratorFactory implements ConfiguratorFactory {
    method getConfigurator (line 29) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParser.java
  class ConfigParser (line 44) | public class ConfigParser {
    method parseConfigurators (line 46) | public static List<URL> parseConfigurators(String rawConfig) {
    method parseJsonArray (line 69) | private static List<URL> parseJsonArray(String rawConfig) {
    method parseObject (line 82) | private static ConfiguratorConfig parseObject(String rawConfig) {
    method serviceItemToUrls (line 88) | private static List<URL> serviceItemToUrls(ConfigItem item, Configurat...
    method appItemToUrls (line 122) | private static List<URL> appItemToUrls(ConfigItem item, ConfiguratorCo...
    method toParameterString (line 153) | private static String toParameterString(ConfigItem item) {
    method appendService (line 189) | private static String appendService(String serviceKey) {
    method parseEnabled (line 216) | private static void parseEnabled(ConfigItem item, ConfiguratorConfig c...
    method parseAddresses (line 225) | private static List<String> parseAddresses(ConfigItem item) {
    method appendMatchCondition (line 236) | private static URL appendMatchCondition(URL url, ConfigItem item) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ConditionMatch.java
  class ConditionMatch (line 27) | public class ConditionMatch {
    method getAddress (line 34) | public AddressMatch getAddress() {
    method setAddress (line 38) | public void setAddress(AddressMatch address) {
    method getProviderAddress (line 42) | public AddressMatch getProviderAddress() {
    method setProviderAddress (line 46) | public void setProviderAddress(AddressMatch providerAddress) {
    method getService (line 50) | public ListStringMatch getService() {
    method setService (line 54) | public void setService(ListStringMatch service) {
    method getApp (line 58) | public ListStringMatch getApp() {
    method setApp (line 62) | public void setApp(ListStringMatch app) {
    method getParam (line 66) | public List<ParamMatch> getParam() {
    method setParam (line 70) | public void setParam(List<ParamMatch> param) {
    method isMatch (line 74) | public boolean isMatch(String host, URL url) {
    method toString (line 102) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ConfigItem.java
  class ConfigItem (line 29) | public class ConfigItem {
    method parseFromMap (line 56) | @SuppressWarnings("unchecked")
    method getType (line 115) | public String getType() {
    method setType (line 119) | public void setType(String type) {
    method getEnabled (line 123) | public Boolean getEnabled() {
    method setEnabled (line 127) | public void setEnabled(Boolean enabled) {
    method getAddresses (line 131) | public List<String> getAddresses() {
    method setAddresses (line 135) | public void setAddresses(List<String> addresses) {
    method getServices (line 139) | public List<String> getServices() {
    method setServices (line 143) | public void setServices(List<String> services) {
    method getApplications (line 147) | public List<String> getApplications() {
    method setApplications (line 151) | public void setApplications(List<String> applications) {
    method getProviderAddresses (line 155) | public List<String> getProviderAddresses() {
    method setProviderAddresses (line 159) | public void setProviderAddresses(List<String> providerAddresses) {
    method getParameters (line 163) | public Map<String, String> getParameters() {
    method setParameters (line 167) | public void setParameters(Map<String, String> parameters) {
    method getSide (line 171) | public String getSide() {
    method setSide (line 175) | public void setSide(String side) {
    method getMatch (line 179) | public ConditionMatch getMatch() {
    method setMatch (line 183) | public void setMatch(ConditionMatch match) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ConfiguratorConfig.java
  class ConfiguratorConfig (line 23) | public class ConfiguratorConfig {
    method parseFromMap (line 38) | @SuppressWarnings("unchecked")
    method getConfigVersion (line 59) | public String getConfigVersion() {
    method setConfigVersion (line 63) | public void setConfigVersion(String configVersion) {
    method getScope (line 67) | public String getScope() {
    method setScope (line 71) | public void setScope(String scope) {
    method getKey (line 75) | public String getKey() {
    method setKey (line 79) | public void setKey(String key) {
    method getEnabled (line 83) | public Boolean getEnabled() {
    method setEnabled (line 87) | public void setEnabled(Boolean enabled) {
    method getConfigs (line 91) | public List<ConfigItem> getConfigs() {
    method setConfigs (line 95) | public void setConfigs(List<ConfigItem> configs) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ParamMatch.java
  class ParamMatch (line 22) | public class ParamMatch {
    method getKey (line 26) | public String getKey() {
    method setKey (line 30) | public void setKey(String key) {
    method getValue (line 34) | public StringMatch getValue() {
    method setValue (line 38) | public void setValue(StringMatch value) {
    method isMatch (line 42) | public boolean isMatch(URL url) {
    method toString (line 51) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
  class AbstractDirectory (line 82) | public abstract class AbstractDirectory<T> implements Directory<T> {
    method AbstractDirectory (line 145) | public AbstractDirectory(URL url) {
    method AbstractDirectory (line 149) | public AbstractDirectory(URL url, boolean isUrlFromRegistry) {
    method AbstractDirectory (line 153) | public AbstractDirectory(URL url, RouterChain<T> routerChain, boolean ...
    method list (line 203) | @Override
    method getUrl (line 275) | @Override
    method getRouterChain (line 280) | public RouterChain<T> getRouterChain() {
    method setRouterChain (line 284) | public void setRouterChain(RouterChain<T> routerChain) {
    method addRouters (line 288) | protected void addRouters(List<Router> routers) {
    method getConsumerUrl (line 293) | public URL getConsumerUrl() {
    method setConsumerUrl (line 297) | public void setConsumerUrl(URL consumerUrl) {
    method isDestroyed (line 301) | @Override
    method destroy (line 306) | @Override
    method discordAddresses (line 314) | @Override
    method addInvalidateInvoker (line 319) | @Override
    method checkConnectivity (line 336) | public void checkConnectivity() {
    method refreshInvoker (line 433) | public void refreshInvoker() {
    method getDirectoryMeta (line 443) | protected Map<String, String> getDirectoryMeta() {
    method refreshInvokerInternal (line 447) | private void refreshInvokerInternal() {
    method refreshInvokers (line 454) | private void refreshInvokers(BitList<Invoker<T>> targetInvokers, Colle...
    method addDisabledInvoker (line 466) | @Override
    method recoverDisabledInvoker (line 479) | @Override
    method refreshRouter (line 495) | protected final void refreshRouter(BitList<Invoker<T>> newlyInvokers, ...
    method getCheckConnectivityPermit (line 517) | @Deprecated
    method getConnectivityCheckFuture (line 525) | @Deprecated
    method getInvokers (line 530) | public BitList<Invoker<T>> getInvokers() {
    method getValidInvokers (line 535) | public BitList<Invoker<T>> getValidInvokers() {
    method getInvokersToReconnect (line 540) | public List<Invoker<T>> getInvokersToReconnect() {
    method getDisabledInvokers (line 544) | public Set<Invoker<T>> getDisabledInvokers() {
    method setInvokers (line 548) | protected void setInvokers(BitList<Invoker<T>> invokers) {
    method destroyInvokers (line 559) | protected void destroyInvokers() {
    method addValidInvoker (line 568) | private boolean addValidInvoker(Invoker<T> invoker) {
    method removeValidInvoker (line 578) | private boolean removeValidInvoker(Invoker<T> invoker) {
    method doList (line 588) | protected abstract List<Invoker<T>> doList(
    method joinValidInvokerAddresses (line 592) | protected String joinValidInvokerAddresses() {
    method getSummary (line 604) | private Map<MetricsKey, Map<String, Integer>> getSummary() {
    method groupByServiceKey (line 614) | private Map<String, Integer> groupByServiceKey(Collection<Invoker<T>> ...
    method toString (line 618) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java
  class StaticDirectory (line 41) | public class StaticDirectory<T> extends AbstractDirectory<T> {
    method StaticDirectory (line 45) | public StaticDirectory(List<Invoker<T>> invokers) {
    method StaticDirectory (line 49) | public StaticDirectory(List<Invoker<T>> invokers, RouterChain<T> route...
    method StaticDirectory (line 53) | public StaticDirectory(URL url, List<Invoker<T>> invokers) {
    method StaticDirectory (line 57) | public StaticDirectory(URL url, List<Invoker<T>> invokers, RouterChain...
    method getInterface (line 71) | @Override
    method getAllInvokers (line 76) | @Override
    method isAvailable (line 81) | @Override
    method destroy (line 96) | @Override
    method buildRouterChain (line 107) | public void buildRouterChain() {
    method notify (line 113) | public void notify(List<Invoker<T>> invokers) {
    method doList (line 122) | @Override
    method getDirectoryMeta (line 143) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
  class DefaultFilterChainBuilder (line 37) | @Activate
    method buildInvokerChain (line 43) | @Override
    method buildClusterInvokerChain (line 82) | @Override
    method sortingAndDeduplication (line 120) | private <T> List<T> sortingAndDeduplication(List<T> filters, List<Exte...
    method getModuleModelsFromUrl (line 138) | private List<ModuleModel> getModuleModelsFromUrl(URL url) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/FilterChainBuilder.java
  type FilterChainBuilder (line 43) | @SPI(value = "default", scope = APPLICATION)
    method buildInvokerChain (line 48) | <T> Invoker<T> buildInvokerChain(final Invoker<T> invoker, String key,...
    method buildClusterInvokerChain (line 53) | <T> ClusterInvoker<T> buildClusterInvokerChain(final ClusterInvoker<T>...
    class FilterChainNode (line 61) | class FilterChainNode<T, TYPE extends Invoker<T>, FILTER extends BaseF...
      method FilterChainNode (line 66) | public FilterChainNode(TYPE originalInvoker, Invoker<T> nextNode, FI...
      method getOriginalInvoker (line 72) | public TYPE getOriginalInvoker() {
      method getInterface (line 76) | @Override
      method getUrl (line 81) | @Override
      method isAvailable (line 86) | @Override
      method invoke (line 91) | @Override
      method destroy (line 145) | @Override
      method toString (line 150) | @Override
    class ClusterFilterChainNode (line 162) | class ClusterFilterChainNode<T, TYPE extends ClusterInvoker<T>, FILTER...
      method ClusterFilterChainNode (line 164) | public ClusterFilterChainNode(TYPE originalInvoker, Invoker<T> nextN...
      method getRegistryUrl (line 168) | @Override
      method getDirectory (line 173) | @Override
      method isDestroyed (line 178) | @Override
    class CallbackRegistrationInvoker (line 184) | class CallbackRegistrationInvoker<T, FILTER extends BaseFilter> implem...
      method CallbackRegistrationInvoker (line 190) | public CallbackRegistrationInvoker(Invoker<T> filterInvoker, List<FI...
      method invoke (line 195) | @Override
      method getFilterInvoker (line 254) | public Invoker<T> getFilterInvoker() {
      method getInterface (line 258) | @Override
      method getUrl (line 263) | @Override
      method isAvailable (line 268) | @Override
      method destroy (line 273) | @Override
    class ClusterCallbackRegistrationInvoker (line 279) | class ClusterCallbackRegistrationInvoker<T, FILTER extends BaseFilter>
      method ClusterCallbackRegistrationInvoker (line 283) | public ClusterCallbackRegistrationInvoker(
      method getOriginalInvoker (line 289) | public ClusterInvoker<T> getOriginalInvoker() {
      method getRegistryUrl (line 293) | @Override
      method getDirectory (line 298) | @Override
      method isDestroyed (line 303) | @Override
    class CopyOfFilterChainNode (line 309) | @Experimental(
      method CopyOfFilterChainNode (line 318) | public CopyOfFilterChainNode(TYPE originalInvoker, Invoker<T> nextNo...
      method getOriginalInvoker (line 324) | public TYPE getOriginalInvoker() {
      method getInterface (line 328) | @Override
      method getUrl (line 333) | @Override
      method isAvailable (line 338) | @Override
      method invoke (line 343) | @Override
      method destroy (line 381) | @Override
      method toString (line 386) | @Override
    class CopyOfClusterFilterChainNode (line 392) | @Experimental(
      method CopyOfClusterFilterChainNode (line 396) | public CopyOfClusterFilterChainNode(TYPE originalInvoker, Invoker<T>...
      method getRegistryUrl (line 400) | @Override
      method getDirectory (line 405) | @Override
      method isDestroyed (line 410) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/InvocationInterceptorBuilder.java
  type InvocationInterceptorBuilder (line 22) | @SPI("default")
    method buildClusterInterceptorChain (line 24) | <T> ClusterInvoker<T> buildClusterInterceptorChain(final ClusterInvoke...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
  class ProtocolFilterWrapper (line 35) | @Activate(order = 100)
    method ProtocolFilterWrapper (line 40) | public ProtocolFilterWrapper(Protocol protocol) {
    method getDefaultPort (line 47) | @Override
    method export (line 52) | @Override
    method getFilterChainBuilder (line 61) | private <T> FilterChainBuilder getFilterChainBuilder(URL url) {
    method refer (line 66) | @Override
    method destroy (line 75) | @Override
    method getServers (line 80) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/CallbackConsumerContextFilter.java
  class CallbackConsumerContextFilter (line 30) | @Activate(group = CALLBACK, order = Integer.MIN_VALUE)
    method CallbackConsumerContextFilter (line 33) | public CallbackConsumerContextFilter(ApplicationModel applicationModel) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java
  class ConsumerClassLoaderFilter (line 31) | @Activate(group = CONSUMER, order = Integer.MIN_VALUE + 100)
    method invoke (line 33) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
  class ConsumerContextFilter (line 52) | @Activate(group = CONSUMER, order = Integer.MIN_VALUE)
    method ConsumerContextFilter (line 57) | public ConsumerContextFilter(ApplicationModel applicationModel) {
    method invoke (line 63) | @Override
    method onResponse (line 122) | @Override
    method onError (line 130) | @Override
    method removeContext (line 135) | private void removeContext(Invocation invocation) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/MetricsConsumerFilter.java
  class MetricsConsumerFilter (line 30) | @Activate(
    method MetricsConsumerFilter (line 34) | public MetricsConsumerFilter() {}
    method invoke (line 36) | @Override
    method onResponse (line 41) | @Override
    method onError (line 46) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java
  class DefaultGovernanceRuleRepositoryImpl (line 23) | public class DefaultGovernanceRuleRepositoryImpl implements GovernanceRu...
    method DefaultGovernanceRuleRepositoryImpl (line 27) | public DefaultGovernanceRuleRepositoryImpl(ModuleModel moduleModel) {
    method addListener (line 31) | @Override
    method removeListener (line 39) | @Override
    method getRule (line 47) | @Override
    method getDynamicConfiguration (line 56) | private DynamicConfiguration getDynamicConfiguration() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java
  type GovernanceRuleRepository (line 24) | @SPI(value = "default", scope = MODULE)
    method addListener (line 35) | default void addListener(String key, ConfigurationListener listener) {
    method removeListener (line 45) | default void removeListener(String key, ConfigurationListener listener) {
    method addListener (line 59) | void addListener(String key, String group, ConfigurationListener liste...
    method removeListener (line 68) | void removeListener(String key, String group, ConfigurationListener li...
    method getRule (line 77) | default String getRule(String key, String group) {
    method getRule (line 91) | String getRule(String key, String group, long timeout) throws IllegalS...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/interceptor/ClusterInterceptor.java
  type ClusterInterceptor (line 29) | @Deprecated
    method before (line 33) | void before(AbstractClusterInvoker<?> clusterInvoker, Invocation invoc...
    method after (line 35) | void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invoca...
    method intercept (line 47) | default Result intercept(AbstractClusterInvoker<?> clusterInvoker, Inv...
    type Listener (line 51) | interface Listener {
      method onMessage (line 53) | void onMessage(Result appResponse, AbstractClusterInvoker<?> cluster...
      method onError (line 55) | void onError(Throwable t, AbstractClusterInvoker<?> clusterInvoker, ...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
  class AbstractLoadBalance (line 36) | public abstract class AbstractLoadBalance implements LoadBalance {
    method calculateWarmupWeight (line 46) | static int calculateWarmupWeight(int uptime, int warmup, int weight) {
    method select (line 51) | @Override
    method doSelect (line 62) | protected abstract <T> Invoker<T> doSelect(List<Invoker<T>> invokers, ...
    method getWeight (line 72) | protected int getWeight(Invoker<?> invoker, Invocation invocation) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java
  class AdaptiveLoadBalance (line 36) | public class AdaptiveLoadBalance extends AbstractLoadBalance {
    method AdaptiveLoadBalance (line 45) | public AdaptiveLoadBalance(ApplicationModel scopeModel) {
    method doSelect (line 49) | @Override
    method selectByP2C (line 62) | private <T> Invoker<T> selectByP2C(List<Invoker<T>> invokers, Invocati...
    method getServiceKey (line 81) | private String getServiceKey(Invoker<?> invoker, Invocation invocation) {
    method buildServiceKey (line 93) | private String buildServiceKey(Invoker<?> invoker, Invocation invocati...
    method getTimeout (line 100) | private int getTimeout(Invoker<?> invoker, Invocation invocation) {
    method chooseLowLoadInvoker (line 107) | private <T> Invoker<T> chooseLowLoadInvoker(Invoker<T> invoker1, Invok...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java
  class ConsistentHashLoadBalance (line 33) | public class ConsistentHashLoadBalance extends AbstractLoadBalance {
    method doSelect (line 48) | @SuppressWarnings("unchecked")
    class ConsistentHashSelector (line 70) | private static final class ConsistentHashSelector<T> {
      method ConsistentHashSelector (line 80) | ConsistentHashSelector(List<Invoker<T>> invokers, String methodName,...
      method select (line 102) | public Invoker<T> select(Invocation invocation) {
      method toKey (line 109) | private String toKey(Object[] args) {
      method selectForKey (line 119) | private Invoker<T> selectForKey(long hash) {
      method hash (line 127) | private long hash(byte[] digest, int number) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java
  class LeastActiveLoadBalance (line 36) | public class LeastActiveLoadBalance extends AbstractLoadBalance {
    method doSelect (line 40) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalance.java
  class RandomLoadBalance (line 42) | public class RandomLoadBalance extends AbstractLoadBalance {
    method doSelect (line 55) | @Override
    method needWeightLoadBalance (line 108) | private <T> boolean needWeightLoadBalance(List<Invoker<T>> invokers, I...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalance.java
  class RoundRobinLoadBalance (line 35) | public class RoundRobinLoadBalance extends AbstractLoadBalance {
    class WeightedRoundRobin (line 43) | protected static class WeightedRoundRobin {
      method getWeight (line 48) | public int getWeight() {
      method setWeight (line 52) | public void setWeight(int weight) {
      method increaseCurrent (line 57) | public long increaseCurrent() {
      method sel (line 61) | public void sel(int total) {
      method getLastUpdate (line 65) | public long getLastUpdate() {
      method setLastUpdate (line 69) | public void setLastUpdate(long lastUpdate) {
    method getInvokerAddrList (line 83) | protected <T> Collection<String> getInvokerAddrList(List<Invoker<T>> i...
    method doSelect (line 92) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java
  class ShortestResponseLoadBalance (line 46) | public class ShortestResponseLoadBalance extends AbstractLoadBalance imp...
    method setApplicationModel (line 60) | @Override
    class SlideWindowData (line 73) | protected static class SlideWindowData {
      method SlideWindowData (line 79) | public SlideWindowData(RpcStatus rpcStatus) {
      method reset (line 85) | public void reset() {
      method getSucceededAverageElapsed (line 90) | private long getSucceededAverageElapsed() {
      method getEstimateResponse (line 98) | public long getEstimateResponse() {
    method doSelect (line 104) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java
  class ArrayMerger (line 24) | public class ArrayMerger implements Merger<Object[]> {
    method merge (line 28) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java
  class BooleanArrayMerger (line 22) | public class BooleanArrayMerger implements Merger<boolean[]> {
    method merge (line 24) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java
  class ByteArrayMerger (line 22) | public class ByteArrayMerger implements Merger<byte[]> {
    method merge (line 24) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java
  class CharArrayMerger (line 22) | public class CharArrayMerger implements Merger<char[]> {
    method merge (line 24) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
  class DoubleArrayMerger (line 25) | public class DoubleArrayMerger implements Merger<double[]> {
    method merge (line 27) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java
  class FloatArrayMerger (line 22) | public class FloatArrayMerger implements Merger<float[]> {
    method merge (line 24) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
  class IntArrayMerger (line 25) | public class IntArrayMerger implements Merger<int[]> {
    method merge (line 27) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
  class ListMerger (line 29) | public class ListMerger implements Merger<List<?>> {
    method merge (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
  class LongArrayMerger (line 25) | public class LongArrayMerger implements Merger<long[]> {
    method merge (line 27) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
  class MapMerger (line 28) | public class MapMerger implements Merger<Map<?, ?>> {
    method merge (line 30) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java
  class MergerFactory (line 35) | public class MergerFactory implements ScopeModelAware {
    method setScopeModel (line 42) | @Override
    method getMerger (line 55) | public <T> Merger<T> getMerger(Class<T> returnType) {
    method loadMergers (line 70) | private void loadMergers() {
    method getActualTypeArgument (line 93) | private Class<?> getActualTypeArgument(Class<? extends Merger> mergerC...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
  class SetMerger (line 28) | public class SetMerger implements Merger<Set<?>> {
    method merge (line 30) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java
  class ShortArrayMerger (line 22) | public class ShortArrayMerger implements Merger<short[]> {
    method merge (line 24) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java
  class AbstractRouter (line 23) | public abstract class AbstractRouter implements Router {
    method AbstractRouter (line 30) | public AbstractRouter(URL url) {
    method AbstractRouter (line 37) | public AbstractRouter() {}
    method getUrl (line 39) | @Override
    method setUrl (line 44) | public void setUrl(URL url) {
    method isRuntime (line 48) | @Override
    method isForce (line 53) | @Override
    method setForce (line 58) | public void setForce(boolean force) {
    method getPriority (line 62) | @Override
    method setPriority (line 67) | public void setPriority(int priority) {
    method getRuleRepository (line 71) | public GovernanceRuleRepository getRuleRepository() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java
  class AbstractRouterRule (line 35) | public abstract class AbstractRouterRule {
    method parseFromMap0 (line 48) | protected void parseFromMap0(Map<String, Object> map) {
    method getRawRule (line 86) | public String getRawRule() {
    method setRawRule (line 90) | public void setRawRule(String rawRule) {
    method isRuntime (line 94) | public boolean isRuntime() {
    method setRuntime (line 98) | public void setRuntime(boolean runtime) {
    method isForce (line 102) | public boolean isForce() {
    method setForce (line 106) | public void setForce(boolean force) {
    method isValid (line 110) | public boolean isValid() {
    method setValid (line 114) | public void setValid(boolean valid) {
    method isEnabled (line 118) | public boolean isEnabled() {
    method setEnabled (line 122) | public void setEnabled(boolean enabled) {
    method getPriority (line 126) | public int getPriority() {
    method setPriority (line 130) | public void setPriority(int priority) {
    method isDynamic (line 134) | public boolean isDynamic() {
    method setDynamic (line 138) | public void setDynamic(boolean dynamic) {
    method getScope (line 142) | public String getScope() {
    method setScope (line 146) | public void setScope(String scope) {
    method getKey (line 150) | public String getKey() {
    method setKey (line 154) | public void setKey(String key) {
    method getVersion (line 158) | public String getVersion() {
    method setVersion (line 162) | public void setVersion(String version) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterResult.java
  class RouterResult (line 21) | public class RouterResult<T> {
    method RouterResult (line 26) | public RouterResult(List<T> result) {
    method RouterResult (line 32) | public RouterResult(List<T> result, String message) {
    method RouterResult (line 38) | public RouterResult(boolean needContinueRoute, List<T> result, String ...
    method isNeedContinueRoute (line 44) | public boolean isNeedContinueRoute() {
    method getResult (line 48) | public List<T> getResult() {
    method getMessage (line 52) | public String getMessage() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotFilter.java
  class RouterSnapshotFilter (line 33) | @Activate(group = {CONSUMER})
    method RouterSnapshotFilter (line 39) | public RouterSnapshotFilter(FrameworkModel frameworkModel) {
    method invoke (line 43) | @Override
    method onResponse (line 61) | @Override
    method onError (line 66) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotNode.java
  class RouterSnapshotNode (line 29) | public class RouterSnapshotNode<T> {
    method RouterSnapshotNode (line 41) | public RouterSnapshotNode(String name, List<Invoker<T>> inputInvokers) {
    method getName (line 55) | public String getName() {
    method getBeforeSize (line 59) | public int getBeforeSize() {
    method getNodeOutputSize (line 63) | public int getNodeOutputSize() {
    method getRouterMessage (line 67) | public String getRouterMessage() {
    method setRouterMessage (line 71) | public void setRouterMessage(String routerMessage) {
    method getNodeOutputInvokers (line 75) | public List<Invoker<T>> getNodeOutputInvokers() {
    method setNodeOutputInvokers (line 79) | public void setNodeOutputInvokers(List<Invoker<T>> outputInvokers) {
    method setChainOutputInvokers (line 84) | public void setChainOutputInvokers(List<Invoker<T>> outputInvokers) {
    method getChainOutputSize (line 89) | public int getChainOutputSize() {
    method getChainOutputInvokers (line 93) | public List<Invoker<T>> getChainOutputInvokers() {
    method getNextNode (line 97) | public List<RouterSnapshotNode<T>> getNextNode() {
    method getParentNode (line 101) | public RouterSnapshotNode<T> getParentNode() {
    method appendNode (line 105) | public void appendNode(RouterSnapshotNode<T> nextNode) {
    method toString (line 110) | @Override
    method toString (line 115) | public String toString(int level) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotSwitcher.java
  class RouterSnapshotSwitcher (line 25) | public class RouterSnapshotSwitcher {
    method isEnable (line 34) | public boolean isEnable() {
    method addEnabledService (line 38) | public synchronized void addEnabledService(String service) {
    method isEnable (line 44) | public boolean isEnable(String service) {
    method removeEnabledService (line 48) | public synchronized void removeEnabledService(String service) {
    method getEnabledService (line 54) | public synchronized Set<String> getEnabledService() {
    method setSnapshot (line 58) | public void setSnapshot(String snapshot) {
    method cloneSnapshot (line 65) | public String[] cloneSnapshot() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/AffinityStateRouter.java
  class AffinityStateRouter (line 59) | public class AffinityStateRouter<T> extends AbstractStateRouter<T> {
    method AffinityStateRouter (line 71) | public AffinityStateRouter(URL url) {
    method AffinityStateRouter (line 83) | public AffinityStateRouter(URL url, String affinityKey, Double ratio, ...
    method init (line 95) | public void init(String rule) {
    method parseRule (line 106) | private ConditionMatcher parseRule(String rule) throws ParseException {
    method doRoute (line 114) | @Override
    method isRuntime (line 173) | @Override
    method getMatcher (line 180) | private ConditionMatcher getMatcher(String key) {
    method matchInvoker (line 187) | private boolean matchInvoker(URL url, URL param) {
    method doMatch (line 191) | private boolean doMatch(URL url, URL param, Invocation invocation, Con...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/AffinityStateRouterFactory.java
  class AffinityStateRouterFactory (line 26) | public class AffinityStateRouterFactory extends CacheableStateRouterFact...
    method createRouter (line 30) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityListenableStateRouter.java
  class AffinityListenableStateRouter (line 46) | public abstract class AffinityListenableStateRouter<T> extends AbstractS...
    method AffinityListenableStateRouter (line 56) | public AffinityListenableStateRouter(URL url, String ruleKey) {
    method process (line 63) | @Override
    method doRoute (line 90) | @Override
    method isForce (line 124) | @Override
    method isRuleRuntime (line 129) | private boolean isRuleRuntime() {
    method generateConditions (line 133) | private void generateConditions(AbstractRouterRule rule) {
    method init (line 143) | private synchronized void init(String ruleKey) {
    method getAffinityRouter (line 155) | public AffinityStateRouter<T> getAffinityRouter() {
    method stop (line 159) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityProviderAppStateRouter.java
  class AffinityProviderAppStateRouter (line 36) | public class AffinityProviderAppStateRouter<T> extends ListenableStateRo...
    method AffinityProviderAppStateRouter (line 43) | public AffinityProviderAppStateRouter(URL url) {
    method notify (line 48) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityProviderAppStateRouterFactory.java
  class AffinityProviderAppStateRouterFactory (line 27) | @Activate(order = 135)
    method createRouter (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityServiceStateRouter.java
  class AffinityServiceStateRouter (line 25) | public class AffinityServiceStateRouter<T> extends AffinityListenableSta...
    method AffinityServiceStateRouter (line 28) | public AffinityServiceStateRouter(URL url) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityServiceStateRouterFactory.java
  class AffinityServiceStateRouterFactory (line 27) | @Activate(order = 130)
    method createRouter (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/model/AffinityRouterRule.java
  class AffinityRouterRule (line 29) | public class AffinityRouterRule extends AbstractRouterRule {
    method parseFromMap (line 35) | @SuppressWarnings("unchecked")
    method AffinityRouterRule (line 57) | public AffinityRouterRule() {}
    method getAffinityKey (line 59) | public String getAffinityKey() {
    method setAffinityKey (line 63) | public void setAffinityKey(String affinityKey) {
    method getRatio (line 67) | public Double getRatio() {
    method setRatio (line 71) | public void setRatio(Double ratio) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/model/AffinityRuleParser.java
  class AffinityRuleParser (line 41) | public class AffinityRuleParser {
    method parse (line 43) | public static AffinityRouterRule parse(String rawRule) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java
  class ConditionStateRouter (line 72) | public class ConditionStateRouter<T> extends AbstractStateRouter<T> {
    method ConditionStateRouter (line 83) | public ConditionStateRouter(URL url, String rule, boolean force, boole...
    method ConditionStateRouter (line 94) | public ConditionStateRouter(URL url) {
    method init (line 106) | public void init(String rule) {
    method parseRule (line 127) | private Map<String, ConditionMatcher> parseRule(String rule) throws Pa...
    method doRoute (line 204) | @Override
    method isRuntime (line 281) | @Override
    method getMatcher (line 288) | private ConditionMatcher getMatcher(String key) {
    method matchWhen (line 300) | boolean matchWhen(URL url, Invocation invocation) {
    method matchThen (line 308) | private boolean matchThen(URL url, URL param) {
    method doMatch (line 316) | private boolean doMatch(

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java
  class ConditionStateRouterFactory (line 27) | public class ConditionStateRouterFactory extends CacheableStateRouterFac...
    method createRouter (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/MultiDestConditionRouter.java
  class MultiDestConditionRouter (line 52) | public class MultiDestConditionRouter<T> extends AbstractStateRouter<T> {
    method MultiDestConditionRouter (line 63) | public MultiDestConditionRouter(URL url, MultiDestCondition multiDestC...
    method init (line 72) | public void init(Map<String, String> from, List<Map<String, String>> t...
    method parseRule (line 101) | private Map<String, ConditionMatcher> parseRule(String rule) throws Pa...
    method getMatcher (line 171) | private ConditionMatcher getMatcher(String key) {
    method doRoute (line 183) | @Override
    method matchWhen (line 277) | boolean matchWhen(URL url, Invocation invocation) {
    method doMatch (line 285) | private boolean doMatch(
    method setWhenCondition (line 302) | public void setWhenCondition(Map<String, ConditionMatcher> whenConditi...
    method setThenCondition (line 306) | public void setThenCondition(List<ConditionSubSet> thenCondition) {
    method setForce (line 310) | public void setForce(boolean force) {
    method getWhenCondition (line 314) | public Map<String, ConditionMatcher> getWhenCondition() {
    method isForce (line 318) | public boolean isForce() {
    method getThenCondition (line 322) | public List<ConditionSubSet> getThenCondition() {
    method getMatcherFactories (line 326) | public List<ConditionMatcherFactory> getMatcherFactories() {
    method setMatcherFactories (line 330) | public void setMatcherFactories(List<ConditionMatcherFactory> matcherF...
    method isEnabled (line 334) | public boolean isEnabled() {
    method setEnabled (line 338) | public void setEnabled(boolean enabled) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java
  class AppStateRouter (line 24) | public class AppStateRouter<T> extends ListenableStateRouter<T> {
    method AppStateRouter (line 27) | public AppStateRouter(URL url) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java
  class AppStateRouterFactory (line 28) | @Activate(order = 150)
    method getRouter (line 35) | @SuppressWarnings("unchecked")
    method createRouter (line 49) | private <T> StateRouter<T> createRouter(URL url) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java
  class ListenableStateRouter (line 52) | public abstract class ListenableStateRouter<T> extends AbstractStateRout...
    method ListenableStateRouter (line 65) | public ListenableStateRouter(URL url, String ruleKey) {
    method process (line 72) | @Override
    method doRoute (line 101) | @Override
    method isForce (line 146) | @Override
    method isRuleRuntime (line 151) | private boolean isRuleRuntime() {
    method generateConditions (line 155) | private void generateConditions(AbstractRouterRule rule) {
    method init (line 183) | private synchronized void init(String ruleKey) {
    method stop (line 195) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java
  class ProviderAppStateRouter (line 35) | public class ProviderAppStateRouter<T> extends ListenableStateRouter<T> {
    method ProviderAppStateRouter (line 42) | public ProviderAppStateRouter(URL url) {
    method notify (line 47) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java
  class ProviderAppStateRouterFactory (line 24) | @Activate(order = 145)
    method createRouter (line 29) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java
  class ServiceStateRouter (line 25) | public class ServiceStateRouter<T> extends ListenableStateRouter<T> {
    method ServiceStateRouter (line 28) | public ServiceStateRouter(URL url) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java
  class ServiceStateRouterFactory (line 28) | @Activate(order = 140)
    method createRouter (line 33) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
  class ConditionRouterRule (line 27) | public class ConditionRouterRule extends AbstractRouterRule {
    method parseFromMap (line 30) | @SuppressWarnings("unchecked")
    method ConditionRouterRule (line 44) | public ConditionRouterRule() {}
    method getConditions (line 46) | public List<String> getConditions() {
    method setConditions (line 50) | public void setConditions(List<String> conditions) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java
  class ConditionRuleParser (line 48) | public class ConditionRuleParser {
    method parse (line 52) | public static AbstractRouterRule parse(String rawRule) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionSubSet.java
  class ConditionSubSet (line 26) | public class ConditionSubSet {
    method ConditionSubSet (line 30) | public ConditionSubSet() {}
    method ConditionSubSet (line 32) | public ConditionSubSet(Map<String, ConditionMatcher> condition, Intege...
    method getCondition (line 40) | public Map<String, ConditionMatcher> getCondition() {
    method setCondition (line 44) | public void setCondition(Map<String, ConditionMatcher> condition) {
    method getSubSetWeight (line 48) | public Integer getSubSetWeight() {
    method setSubSetWeight (line 52) | public void setSubSetWeight(int subSetWeight) {
    method toString (line 56) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/Destination.java
  class Destination (line 22) | public class Destination<T> {
    method Destination (line 26) | Destination(int weight, BitList<Invoker<T>> invokers) {
    method getWeight (line 31) | public int getWeight() {
    method setWeight (line 35) | public void setWeight(int weight) {
    method getInvokers (line 39) | public BitList<Invoker<T>> getInvokers() {
    method setInvokers (line 43) | public void setInvokers(BitList<Invoker<T>> invokers) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/DestinationSet.java
  class DestinationSet (line 27) | public class DestinationSet<T> {
    method DestinationSet (line 32) | public DestinationSet() {
    method addDestination (line 38) | public void addDestination(int weight, BitList<Invoker<T>> invokers) {
    method randDestination (line 43) | public BitList<Invoker<T>> randDestination() {
    method getDestinations (line 58) | public List<Destination<T>> getDestinations() {
    method getWeightSum (line 62) | public long getWeightSum() {
    method setWeightSum (line 66) | public void setWeightSum(long weightSum) {
    method getRandom (line 70) | public Random getRandom() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/MultiDestCondition.java
  class MultiDestCondition (line 24) | public class MultiDestCondition {
    method getFrom (line 28) | public Map<String, String> getFrom() {
    method setFrom (line 32) | public void setFrom(Map<String, String> from) {
    method getTo (line 36) | public List<Map<String, String>> getTo() {
    method setTo (line 40) | public void setTo(List<Map<String, String>> to) {
    method toString (line 44) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/MultiDestConditionRouterRule.java
  class MultiDestConditionRouterRule (line 28) | public class MultiDestConditionRouterRule extends AbstractRouterRule {
    method parseFromMap (line 32) | public static AbstractRouterRule parseFromMap(Map<String, Object> map) {
    method getConditions (line 47) | public List<MultiDestCondition> getConditions() {
    method setConditions (line 51) | public void setConditions(List<MultiDestCondition> conditions) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java
  class AbstractConditionMatcher (line 40) | public abstract class AbstractConditionMatcher implements ConditionMatch...
    method AbstractConditionMatcher (line 50) | public AbstractConditionMatcher(String key, ModuleModel model) {
    method getSampleValueFromUrl (line 56) | public static String getSampleValueFromUrl(
    method isMatch (line 69) | public boolean isMatch(Map<String, String> sample, URL param, Invocati...
    method getMatches (line 112) | @Override
    method getMismatches (line 117) | @Override
    method doPatternMatch (line 123) | protected boolean doPatternMatch(
    method getValue (line 147) | protected abstract String getValue(Map<String, String> sample, URL url...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java
  type ConditionMatcher (line 35) | public interface ConditionMatcher {
    method isMatch (line 46) | boolean isMatch(Map<String, String> sample, URL param, Invocation invo...
    method getMatches (line 53) | Set<String> getMatches();
    method getMismatches (line 60) | Set<String> getMismatches();

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java
  type ConditionMatcherFactory (line 25) | @SPI
    method shouldMatch (line 33) | boolean shouldMatch(String key);
    method createMatcher (line 42) | ConditionMatcher createMatcher(String key, ModuleModel model);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java
  class ArgumentConditionMatcher (line 39) | @Activate
    method ArgumentConditionMatcher (line 45) | public ArgumentConditionMatcher(String key, ModuleModel model) {
    method getValue (line 49) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java
  class ArgumentConditionMatcherFactory (line 25) | @Activate(order = 300)
    method shouldMatch (line 28) | @Override
    method createMatcher (line 33) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java
  class AttachmentConditionMatcher (line 39) | @Activate
    method AttachmentConditionMatcher (line 45) | public AttachmentConditionMatcher(String key, ModuleModel model) {
    method getValue (line 49) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java
  class AttachmentConditionMatcherFactory (line 24) | @Activate(order = 200)
    method shouldMatch (line 28) | @Override
    method createMatcher (line 33) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java
  class UrlParamConditionMatcher (line 30) | public class UrlParamConditionMatcher extends AbstractConditionMatcher {
    method UrlParamConditionMatcher (line 32) | public UrlParamConditionMatcher(String key, ModuleModel model) {
    method getValue (line 36) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java
  class UrlParamConditionMatcherFactory (line 25) | @Activate(order = Integer.MAX_VALUE)
    method shouldMatch (line 27) | @Override
    method createMatcher (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java
  type ValuePattern (line 23) | @SPI
    method shouldMatch (line 31) | boolean shouldMatch(String pattern);
    method match (line 43) | boolean match(String pattern, String value, URL url, Invocation invoca...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java
  class RangeValuePattern (line 32) | @Activate(order = 100)
    method shouldMatch (line 36) | @Override
    method match (line 41) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java
  class WildcardValuePattern (line 30) | @Activate(order = Integer.MAX_VALUE)
    method shouldMatch (line 32) | @Override
    method match (line 37) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java
  class FileStateRouterFactory (line 34) | public class FileStateRouterFactory implements StateRouterFactory {
    method setRouterFactory (line 40) | public void setRouterFactory(StateRouterFactory routerFactory) {
    method getRouter (line 44) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java
  class MeshScopeModelInitializer (line 24) | public class MeshScopeModelInitializer implements ScopeModelInitializer {
    method initializeModuleModel (line 26) | public void initializeModuleModel(ModuleModel moduleModel) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java
  class MeshAppRuleListener (line 45) | public class MeshAppRuleListener implements ConfigurationListener {
    method MeshAppRuleListener (line 55) | public MeshAppRuleListener(String appName) {
    method receiveConfigInfo (line 60) | @SuppressWarnings("unchecked")
    method computeRuleType (line 113) | @SuppressWarnings("unchecked")
    method register (line 128) | public <T> void register(MeshRuleListener subscriber) {
    method unregister (line 138) | public <T> void unregister(MeshRuleListener subscriber) {
    method process (line 142) | @Override
    method isEmpty (line 151) | public boolean isEmpty() {
    method getMeshRuleDispatcher (line 158) | @Deprecated

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java
  type MeshEnvListener (line 23) | public interface MeshEnvListener {
    method isEnable (line 27) | default boolean isEnable() {
    method onSubscribe (line 31) | void onSubscribe(String appName, MeshAppRuleListener listener);
    method onUnSubscribe (line 33) | void onUnSubscribe(String appName);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java
  type MeshEnvListenerFactory (line 21) | @SPI
    method getListener (line 23) | MeshEnvListener getListener();

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java
  class MeshRuleCache (line 38) | public class MeshRuleCache<T> {
    method MeshRuleCache (line 44) | private MeshRuleCache(
    method getAppList (line 55) | public List<String> getAppList() {
    method getAppToVDGroup (line 59) | public Map<String, VsDestinationGroup> getAppToVDGroup() {
    method getTotalSubsetMap (line 63) | public Map<String, Map<String, BitList<Invoker<T>>>> getTotalSubsetMap...
    method getUnmatchedInvokers (line 67) | public BitList<Invoker<T>> getUnmatchedInvokers() {
    method getVsDestinationGroup (line 71) | public VsDestinationGroup getVsDestinationGroup(String appName) {
    method getSubsetInvokers (line 75) | public BitList<Invoker<T>> getSubsetInvokers(String appName, String su...
    method containsRule (line 86) | public boolean containsRule() {
    method build (line 90) | public static <T> MeshRuleCache<T> build(
    method emptyCache (line 144) | public static <T> MeshRuleCache<T> emptyCache() {
    method isLabelMatch (line 149) | protected static boolean isLabelMatch(URL url, String protocolServiceK...
    method equals (line 167) | @Override
    method hashCode (line 182) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java
  class MeshRuleConstants (line 19) | public class MeshRuleConstants {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
  class MeshRuleManager (line 34) | public class MeshRuleManager {
    method MeshRuleManager (line 44) | public MeshRuleManager(ModuleModel moduleModel) {
    method subscribeAppRule (line 54) | private synchronized MeshAppRuleListener subscribeAppRule(String app) {
    method unsubscribeAppRule (line 88) | private synchronized void unsubscribeAppRule(String app, MeshAppRuleLi...
    method register (line 103) | public synchronized <T> void register(String app, MeshRuleListener sub...
    method unregister (line 111) | public synchronized <T> void unregister(String app, MeshRuleListener s...
    method getAppRuleListeners (line 123) | @Deprecated

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
  class MeshRuleRouter (line 60) | public abstract class MeshRuleRouter<T> extends AbstractStateRouter<T> i...
    method MeshRuleRouter (line 73) | public MeshRuleRouter(URL url) {
    method doRoute (line 82) | @Override
    method getDubboRouteDestination (line 145) | protected List<DubboRouteDestination> getDubboRouteDestination(
    method getDubboRoute (line 166) | protected DubboRoute getDubboRoute(VirtualServiceRule virtualServiceRu...
    method getDubboRouteDestination (line 190) | protected List<DubboRouteDestination> getDubboRouteDestination(DubboRo...
    method randomSelectDestination (line 212) | protected String randomSelectDestination(
    method computeDestination (line 249) | protected String computeDestination(
    method notify (line 281) | @Override
    method registerAppRule (line 289) | private void registerAppRule(BitList<Invoker<T>> invokers) {
    method onRuleChange (line 317) | @Override
    method clearRule (line 349) | @Override
    method computeSubset (line 356) | protected void computeSubset(Map<String, VsDestinationGroup> vsDestina...
    method stop (line 361) | @Override
    method getRemoteAppName (line 371) | @Deprecated
    method getInvokerList (line 379) | @Deprecated
    method getMeshRuleCache (line 387) | @Deprecated

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java
  class StandardMeshRuleRouter (line 23) | public class StandardMeshRuleRouter<T> extends MeshRuleRouter<T> {
    method StandardMeshRuleRouter (line 25) | public StandardMeshRuleRouter(URL url) {
    method ruleSuffix (line 29) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java
  class StandardMeshRuleRouterFactory (line 24) | @Activate(order = -50)
    method getRouter (line 26) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java
  class BaseRule (line 21) | public class BaseRule {
    method getApiVersion (line 26) | public String getApiVersion() {
    method setApiVersion (line 30) | public void setApiVersion(String apiVersion) {
    method getKind (line 34) | public String getKind() {
    method setKind (line 38) | public void setKind(String kind) {
    method getMetadata (line 42) | public Map<String, String> getMetadata() {
    method setMetadata (line 46) | public void setMetadata(Map<String, String> metadata) {
    method toString (line 50) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
  class VsDestinationGroup (line 25) | public class VsDestinationGroup {
    method getAppName (line 30) | public String getAppName() {
    method setAppName (line 34) | public void setAppName(String appName) {
    method getVirtualServiceRuleList (line 38) | public List<VirtualServiceRule> getVirtualServiceRuleList() {
    method setVirtualServiceRuleList (line 42) | public void setVirtualServiceRuleList(List<VirtualServiceRule> virtual...
    method getDestinationRuleList (line 46) | public List<DestinationRule> getDestinationRuleList() {
    method setDestinationRuleList (line 50) | public void setDestinationRuleList(List<DestinationRule> destinationRu...
    method isValid (line 54) | public boolean isValid() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java
  class ConnectionPoolSettings (line 19) | public class ConnectionPoolSettings {}

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java
  class DestinationRule (line 21) | public class DestinationRule extends BaseRule {
    method getSpec (line 24) | public DestinationRuleSpec getSpec() {
    method setSpec (line 28) | public void setSpec(DestinationRuleSpec spec) {
    method toString (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java
  class DestinationRuleSpec (line 21) | public class DestinationRuleSpec {
    method getHost (line 26) | public String getHost() {
    method setHost (line 30) | public void setHost(String host) {
    method getSubsets (line 34) | public List<Subset> getSubsets() {
    method setSubsets (line 38) | public void setSubsets(List<Subset> subsets) {
    method getTrafficPolicy (line 42) | public TrafficPolicy getTrafficPolicy() {
    method setTrafficPolicy (line 46) | public void setTrafficPolicy(TrafficPolicy trafficPolicy) {
    method toString (line 50) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java
  class Subset (line 21) | public class Subset {
    method getName (line 25) | public String getName() {
    method setName (line 29) | public void setName(String name) {
    method getLabels (line 33) | public Map<String, String> getLabels() {
    method setLabels (line 37) | public void setLabels(Map<String, String> labels) {
    method toString (line 41) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java
  class TCPSettings (line 19) | public class TCPSettings {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java
  class TcpKeepalive (line 19) | public class TcpKeepalive {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java
  class TrafficPolicy (line 21) | public class TrafficPolicy {
    method getLoadBalancer (line 24) | public LoadBalancerSettings getLoadBalancer() {
    method setLoadBalancer (line 28) | public void setLoadBalancer(LoadBalancerSettings loadBalancer) {
    method toString (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java
  class ConsistentHashLB (line 19) | public class ConsistentHashLB {}

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java
  class LoadBalancerSettings (line 19) | public class LoadBalancerSettings {
    method getSimple (line 23) | public SimpleLB getSimple() {
    method setSimple (line 27) | public void setSimple(SimpleLB simple) {
    method getConsistentHash (line 31) | public ConsistentHashLB getConsistentHash() {
    method setConsistentHash (line 35) | public void setConsistentHash(ConsistentHashLB consistentHash) {
    method toString (line 39) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java
  type SimpleLB (line 19) | public enum SimpleLB {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java
  class DubboMatchRequest (line 28) | public class DubboMatchRequest {
    method getName (line 35) | public String getName() {
    method setName (line 39) | public void setName(String name) {
    method getMethod (line 43) | public DubboMethodMatch getMethod() {
    method setMethod (line 47) | public void setMethod(DubboMethodMatch method) {
    method getSourceLabels (line 51) | public Map<String, String> getSourceLabels() {
    method setSourceLabels (line 55) | public void setSourceLabels(Map<String, String> sourceLabels) {
    method getAttachments (line 59) | public DubboAttachmentMatch getAttachments() {
    method setAttachments (line 63) | public void setAttachments(DubboAttachmentMatch attachments) {
    method getHeaders (line 67) | public Map<String, StringMatch> getHeaders() {
    method setHeaders (line 71) | public void setHeaders(Map<String, StringMatch> headers) {
    method toString (line 75) | @Override
    method isMatch (line 85) | public boolean isMatch(

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java
  class DubboRoute (line 23) | public class DubboRoute {
    method getName (line 28) | public String getName() {
    method setName (line 32) | public void setName(String name) {
    method getServices (line 36) | public List<StringMatch> getServices() {
    method setServices (line 40) | public void setServices(List<StringMatch> services) {
    method getRoutedetail (line 44) | public List<DubboRouteDetail> getRoutedetail() {
    method setRoutedetail (line 48) | public void setRoutedetail(List<DubboRouteDetail> routedetail) {
    method toString (line 52) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java
  class DubboRouteDetail (line 23) | public class DubboRouteDetail {
    method getName (line 28) | public String getName() {
    method setName (line 32) | public void setName(String name) {
    method getMatch (line 36) | public List<DubboMatchRequest> getMatch() {
    method setMatch (line 40) | public void setMatch(List<DubboMatchRequest> match) {
    method getRoute (line 44) | public List<DubboRouteDestination> getRoute() {
    method setRoute (line 48) | public void setRoute(List<DubboRouteDestination> route) {
    method toString (line 52) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java
  class VirtualServiceRule (line 21) | public class VirtualServiceRule extends BaseRule {
    method getSpec (line 24) | public VirtualServiceSpec getSpec() {
    method setSpec (line 28) | public void setSpec(VirtualServiceSpec spec) {
    method toString (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java
  class VirtualServiceSpec (line 21) | public class VirtualServiceSpec {
    method getHosts (line 25) | public List<String> getHosts() {
    method setHosts (line 29) | public void setHosts(List<String> hosts) {
    method getDubbo (line 33) | public List<DubboRoute> getDubbo() {
    method setDubbo (line 37) | public void setDubbo(List<DubboRoute> dubbo) {
    method toString (line 41) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java
  class DubboDestination (line 19) | public class DubboDestination {
    method getHost (line 25) | public String getHost() {
    method setHost (line 29) | public void setHost(String host) {
    method getSubset (line 33) | public String getSubset() {
    method setSubset (line 37) | public void setSubset(String subset) {
    method getPort (line 41) | public int getPort() {
    method setPort (line 45) | public void setPort(int port) {
    method getFallback (line 49) | public DubboRouteDestination getFallback() {
    method setFallback (line 53) | public void setFallback(DubboRouteDestination fallback) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java
  class DubboRouteDestination (line 19) | public class DubboRouteDestination {
    method getDestination (line 23) | public DubboDestination getDestination() {
    method setDestination (line 27) | public void setDestination(DubboDestination destination) {
    method getWeight (line 31) | public int getWeight() {
    method setWeight (line 35) | public void setWeight(int weight) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/AddressMatch.java
  class AddressMatch (line 30) | public class AddressMatch {
    method getWildcard (line 36) | public String getWildcard() {
    method setWildcard (line 40) | public void setWildcard(String wildcard) {
    method getCird (line 44) | public String getCird() {
    method setCird (line 48) | public void setCird(String cird) {
    method getExact (line 52) | public String getExact() {
    method setExact (line 56) | public void setExact(String exact) {
    method isMatch (line 60) | public boolean isMatch(String input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/BoolMatch.java
  class BoolMatch (line 19) | public class BoolMatch {
    method getExact (line 22) | public Boolean getExact() {
    method setExact (line 26) | public void setExact(Boolean exact) {
    method isMatch (line 30) | public boolean isMatch(boolean input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DoubleMatch.java
  class DoubleMatch (line 19) | public class DoubleMatch {
    method getExact (line 24) | public Double getExact() {
    method setExact (line 28) | public void setExact(Double exact) {
    method getRange (line 32) | public DoubleRangeMatch getRange() {
    method setRange (line 36) | public void setRange(DoubleRangeMatch range) {
    method getMod (line 40) | public Double getMod() {
    method setMod (line 44) | public void setMod(Double mod) {
    method isMatch (line 48) | public boolean isMatch(Double input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DoubleRangeMatch.java
  class DoubleRangeMatch (line 19) | public class DoubleRangeMatch {
    method getStart (line 23) | public Double getStart() {
    method setStart (line 27) | public void setStart(Double start) {
    method getEnd (line 31) | public Double getEnd() {
    method setEnd (line 35) | public void setEnd(Double end) {
    method isMatch (line 39) | public boolean isMatch(Double input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java
  class DubboAttachmentMatch (line 25) | public class DubboAttachmentMatch {
    method getTracingContext (line 29) | public Map<String, StringMatch> getTracingContext() {
    method setTracingContext (line 33) | public void setTracingContext(Map<String, StringMatch> tracingContext) {
    method getDubboContext (line 37) | public Map<String, StringMatch> getDubboContext() {
    method setDubboContext (line 41) | public void setDubboContext(Map<String, StringMatch> dubboContext) {
    method isMatch (line 45) | public boolean isMatch(Invocation invocation, Set<TracingContextProvid...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboMethodArg.java
  class DubboMethodArg (line 19) | public class DubboMethodArg {
    method getIndex (line 26) | public int getIndex() {
    method setIndex (line 30) | public void setIndex(int index) {
    method getType (line 34) | public String getType() {
    method setType (line 38) | public void setType(String type) {
    method getStr_value (line 42) | public ListStringMatch getStr_value() {
    method setStr_value (line 46) | public void setStr_value(ListStringMatch str_value) {
    method getNum_value (line 50) | public ListDoubleMatch getNum_value() {
    method setNum_value (line 54) | public void setNum_value(ListDoubleMatch num_value) {
    method getBool_value (line 58) | public BoolMatch getBool_value() {
    method setBool_value (line 62) | public void setBool_value(BoolMatch bool_value) {
    method isMatch (line 66) | public boolean isMatch(Object input) {
    method toString (line 78) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboMethodMatch.java
  class DubboMethodMatch (line 25) | public class DubboMethodMatch {
    method getName_match (line 32) | public StringMatch getName_match() {
    method setName_match (line 36) | public void setName_match(StringMatch name_match) {
    method getArgc (line 40) | public Integer getArgc() {
    method setArgc (line 44) | public void setArgc(Integer argc) {
    method getArgs (line 48) | public List<DubboMethodArg> getArgs() {
    method setArgs (line 52) | public void setArgs(List<DubboMethodArg> args) {
    method getArgp (line 56) | public List<StringMatch> getArgp() {
    method setArgp (line 60) | public void setArgp(List<StringMatch> argp) {
    method getHeaders (line 64) | public Map<String, StringMatch> getHeaders() {
    method setHeaders (line 68) | public void setHeaders(Map<String, StringMatch> headers) {
    method toString (line 72) | @Override
    method isMatch (line 82) | public boolean isMatch(Invocation invocation) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListBoolMatch.java
  class ListBoolMatch (line 21) | public class ListBoolMatch {
    method getOneof (line 24) | public List<BoolMatch> getOneof() {
    method setOneof (line 28) | public void setOneof(List<BoolMatch> oneof) {
    method isMatch (line 32) | public boolean isMatch(boolean input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListDoubleMatch.java
  class ListDoubleMatch (line 21) | public class ListDoubleMatch {
    method getOneof (line 24) | public List<DoubleMatch> getOneof() {
    method setOneof (line 28) | public void setOneof(List<DoubleMatch> oneof) {
    method isMatch (line 32) | public boolean isMatch(Double input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListStringMatch.java
  class ListStringMatch (line 21) | public class ListStringMatch {
    method getOneof (line 24) | public List<StringMatch> getOneof() {
    method setOneof (line 28) | public void setOneof(List<StringMatch> oneof) {
    method isMatch (line 32) | public boolean isMatch(String input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/StringMatch.java
  class StringMatch (line 21) | public class StringMatch {
    method getExact (line 29) | public String getExact() {
    method setExact (line 33) | public void setExact(String exact) {
    method getPrefix (line 37) | public String getPrefix() {
    method setPrefix (line 41) | public void setPrefix(String prefix) {
    method getRegex (line 45) | public String getRegex() {
    method setRegex (line 49) | public void setRegex(String regex) {
    method getNoempty (line 53) | public String getNoempty() {
    method setNoempty (line 57) | public void setNoempty(String noempty) {
    method getEmpty (line 61) | public String getEmpty() {
    method setEmpty (line 65) | public void setEmpty(String empty) {
    method getWildcard (line 69) | public String getWildcard() {
    method setWildcard (line 73) | public void setWildcard(String wildcard) {
    method isMatch (line 77) | public boolean isMatch(String input) {
    method toString (line 96) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java
  class MeshRuleDispatcher (line 33) | public class MeshRuleDispatcher {
    method MeshRuleDispatcher (line 39) | public MeshRuleDispatcher(String appName) {
    method post (line 43) | public synchronized void post(Map<String, List<Map<String, Object>>> r...
    method register (line 79) | public synchronized void register(MeshRuleListener listener) {
    method unregister (line 87) | public synchronized void unregister(MeshRuleListener listener) {
    method isEmpty (line 100) | public boolean isEmpty() {
    method getListenerMap (line 107) | @Deprecated

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java
  type MeshRuleListener (line 22) | public interface MeshRuleListener {
    method onRuleChange (line 23) | void onRuleChange(String appName, List<Map<String, Object>> rules);
    method clearRule (line 25) | void clearRule(String appName);
    method ruleSuffix (line 27) | String ruleSuffix();

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java
  type TracingContextProvider (line 26) | @SPI(scope = ExtensionScope.APPLICATION)
    method getValue (line 36) | String getValue(Invocation invocation, String key);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java
  class MockInvokersSelector (line 40) | public class MockInvokersSelector<T> extends AbstractStateRouter<T> {
    method MockInvokersSelector (line 47) | public MockInvokersSelector(URL url) {
    method doRoute (line 51) | @Override
    method notify (line 92) | @Override
    method cacheMockedInvokers (line 98) | private void cacheMockedInvokers(BitList<Invoker<T>> invokers) {
    method cacheNormalInvokers (line 104) | @SuppressWarnings("rawtypes")
    method doBuildSnapshot (line 111) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java
  class MockStateRouterFactory (line 24) | @Activate(order = -100)
    method getRouter (line 28) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java
  class ScriptStateRouter (line 65) | public class ScriptStateRouter<T> extends AbstractStateRouter<T> {
    method ScriptStateRouter (line 89) | public ScriptStateRouter(URL url) {
    method getRule (line 112) | private String getRule(URL url) {
    method getEngine (line 123) | private ScriptEngine getEngine(URL url) {
    method doRoute (line 135) | @Override
    method getRoutedInvokers (line 175) | @SuppressWarnings("unchecked")
    method createBindings (line 192) | private Bindings createBindings(List<Invoker<T>> invokers, Invocation ...
    method isRuntime (line 201) | @Override
    method isForce (line 206) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java
  class ScriptStateRouterFactory (line 36) | public class ScriptStateRouterFactory implements StateRouterFactory {
    method getRouter (line 40) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java
  class AppScriptRouterFactory (line 24) | @Activate(order = 200)
    method createRouter (line 28) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java
  class AppScriptStateRouter (line 47) | public class AppScriptStateRouter<T> extends AbstractStateRouter<T> impl...
    method AppScriptStateRouter (line 56) | public AppScriptStateRouter(URL url) {
    method doRoute (line 60) | @Override
    method process (line 87) | @Override
    method notify (line 118) | @Override
    method stop (line 154) | @Override
    method setScriptRule (line 162) | public void setScriptRule(ScriptRule scriptRule) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java
  class ScriptRule (line 27) | public class ScriptRule extends AbstractRouterRule {
    method parse (line 33) | public static ScriptRule parse(String rawRule) {
    method getType (line 56) | public String getType() {
    method setType (line 60) | public void setType(String type) {
    method getScript (line 64) | public String getScript() {
    method setScript (line 68) | public void setScript(String script) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/AbstractStateRouter.java
  class AbstractStateRouter (line 34) | public abstract class AbstractStateRouter<T> implements StateRouter<T> {
    method AbstractStateRouter (line 48) | public AbstractStateRouter(URL url) {
    method getUrl (line 57) | @Override
    method setUrl (line 62) | public void setUrl(URL url) {
    method isRuntime (line 66) | @Override
    method isForce (line 71) | @Override
    method setForce (line 76) | public void setForce(boolean force) {
    method getRuleRepository (line 80) | public GovernanceRuleRepository getRuleRepository() {
    method getNextRouter (line 84) | public StateRouter<T> getNextRouter() {
    method notify (line 88) | @Override
    method route (line 93) | @Override
    method doRoute (line 162) | protected abstract BitList<Invoker<T>> doRoute(
    method continueRoute (line 176) | protected final BitList<Invoker<T>> continueRoute(
    method supportContinueRoute (line 196) | protected boolean supportContinueRoute() {
    method setNextRouter (line 205) | @Override
    method buildSnapshot (line 210) | @Override
    method doBuildSnapshot (line 215) | protected String doBuildSnapshot() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/BitList.java
  class BitList (line 55) | public class BitList<E> extends AbstractList<E> implements Cloneable {
    method BitList (line 61) | public BitList(List<E> originList) {
    method BitList (line 65) | public BitList(List<E> originList, boolean empty) {
    method BitList (line 80) | public BitList(List<E> originList, boolean empty, List<E> tailList) {
    method BitList (line 89) | public BitList(List<E> originList, BitSet rootSet, List<E> tailList) {
    method getOriginList (line 96) | public synchronized List<E> getOriginList() {
    method addIndex (line 100) | public synchronized void addIndex(int index) {
    method totalSetSize (line 104) | public synchronized int totalSetSize() {
    method indexExist (line 108) | public synchronized boolean indexExist(int index) {
    method getByIndex (line 112) | public synchronized E getByIndex(int index) {
    method and (line 123) | public synchronized BitList<E> and(BitList<E> target) {
    method or (line 131) | public synchronized BitList<E> or(BitList<E> target) {
    method hasMoreElementInTailList (line 137) | public synchronized boolean hasMoreElementInTailList() {
    method getTailList (line 141) | public synchronized List<E> getTailList() {
    method addToTailList (line 145) | public synchronized void addToTailList(E e) {
    method randomSelectOne (line 152) | public synchronized E randomSelectOne() {
    method emptyList (line 177) | @SuppressWarnings("unchecked")
    method size (line 183) | @Override
    method contains (line 188) | @Override
    method iterator (line 194) | @Override
    method add (line 207) | @Override
    method remove (line 227) | @Override
    method clear (line 244) | @Override
    method get (line 254) | @Override
    method remove (line 274) | @Override
    method indexOf (line 292) | @Override
    method addAll (line 312) | @Override
    method lastIndexOf (line 327) | @Override
    method isEmpty (line 346) | @Override
    method listIterator (line 351) | @Override
    method listIterator (line 356) | @Override
    method subList (line 361) | @Override
    class BitListIterator (line 387) | public static class BitListIterator<E> implements ListIterator<E> {
      method BitListIterator (line 395) | public BitListIterator(BitList<E> bitList, int index) {
      method hasNext (line 416) | @Override
      method next (line 430) | @Override
      method hasPrevious (line 459) | @Override
      method previous (line 473) | @Override
      method nextIndex (line 505) | @Override
      method previousIndex (line 510) | @Override
      method remove (line 515) | @Override
      method set (line 535) | @Override
      method add (line 540) | @Override
    method cloneToArrayList (line 546) | public synchronized ArrayList<E> cloneToArrayList() {
    method clone (line 555) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/CacheableStateRouterFactory.java
  class CacheableStateRouterFactory (line 29) | public abstract class CacheableStateRouterFactory implements StateRouter...
    method getRouter (line 33) | @Override
    method createRouter (line 39) | protected abstract <T> StateRouter<T> createRouter(Class<T> interfaceC...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/RouterGroupingState.java
  class RouterGroupingState (line 25) | public class RouterGroupingState<T> {
    method RouterGroupingState (line 30) | public RouterGroupingState(String routerName, int total, Map<String, B...
    method getRouterName (line 36) | public String getRouterName() {
    method getTotal (line 40) | public int getTotal() {
    method getGrouping (line 44) | public Map<String, BitList<Invoker<T>>> getGrouping() {
    method toString (line 48) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/StateRouter.java
  type StateRouter (line 39) | public interface StateRouter<T> {
    method getUrl (line 46) | URL getUrl();
    method route (line 58) | BitList<Invoker<T>> route(
    method isRuntime (line 72) | boolean isRuntime();
    method isForce (line 81) | boolean isForce();
    method notify (line 90) | void notify(BitList<Invoker<T>> invokers);
    method buildSnapshot (line 97) | String buildSnapshot();
    method stop (line 99) | default void stop() {
    method setNextRouter (line 108) | void setNextRouter(StateRouter<T> nextRouter);

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/StateRouterFactory.java
  type StateRouterFactory (line 24) | @SPI
    method getRouter (line 33) | @Adaptive(CommonConstants.PROTOCOL_KEY)

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/TailStateRouter.java
  class TailStateRouter (line 26) | public class TailStateRouter<T> implements StateRouter<T> {
    method getInstance (line 29) | @SuppressWarnings("unchecked")
    method TailStateRouter (line 34) | private TailStateRouter() {}
    method setNextRouter (line 36) | @Override
    method getUrl (line 39) | @Override
    method route (line 44) | @Override
    method isRuntime (line 55) | @Override
    method isForce (line 60) | @Override
    method notify (line 65) | @Override
    method buildSnapshot (line 68) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java
  class TagStateRouter (line 53) | public class TagStateRouter<T> extends AbstractStateRouter<T> implements...
    method TagStateRouter (line 63) | public TagStateRouter(URL url) {
    method process (line 67) | @Override
    method doRoute (line 93) | @Override
    method filterUsingStaticTag (line 210) | private <T> BitList<Invoker<T>> filterUsingStaticTag(BitList<Invoker<T...
    method isRuntime (line 234) | @Override
    method isForce (line 239) | @Override
    method isForceUseTag (line 245) | private boolean isForceUseTag(Invocation invocation) {
    method filterInvoker (line 250) | private <T> BitList<Invoker<T>> filterInvoker(BitList<Invoker<T>> invo...
    method addressMatches (line 261) | private boolean addressMatches(URL url, Set<String> addresses) {
    method addressNotMatches (line 265) | private boolean addressNotMatches(URL url, Set<String> addresses) {
    method checkAddressMatch (line 269) | private boolean checkAddressMatch(Set<String> addresses, String host, ...
    method setApplication (line 290) | public void setApplication(String app) {
    method notify (line 294) | @Override
    method getInvokers (line 337) | public BitList<Invoker<T>> getInvokers() {
    method stop (line 341) | @Override
    method setTagRouterRule (line 349) | public void setTagRouterRule(TagRouterRule tagRouterRule) {
    method selectAddressByTagLevel (line 367) | public static Set<String> selectAddressByTagLevel(

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java
  class TagStateRouterFactory (line 27) | @Activate(order = 100)
    method createRouter (line 32) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java
  class ParamMatch (line 21) | public class ParamMatch {
    method getKey (line 25) | public String getKey() {
    method setKey (line 29) | public void setKey(String key) {
    method getValue (line 33) | public StringMatch getValue() {
    method setValue (line 37) | public void setValue(StringMatch value) {
    method isMatch (line 41) | public boolean isMatch(String input) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java
  class Tag (line 30) | public class Tag {
    method parseFromMap (line 37) | @SuppressWarnings("unchecked")
    method getName (line 78) | public String getName() {
    method setName (line 82) | public void setName(String name) {
    method getAddresses (line 86) | public List<String> getAddresses() {
    method setAddresses (line 90) | public void setAddresses(List<String> addresses) {
    method getMatch (line 94) | public List<ParamMatch> getMatch() {
    method setMatch (line 98) | public void setMatch(List<ParamMatch> match) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
  class TagRouterRule (line 50) | public class TagRouterRule extends AbstractRouterRule {
    method parseFromMap (line 56) | @SuppressWarnings("unchecked")
    method init (line 72) | public void init(TagStateRouter<?> router) {
    method getAddresses (line 118) | public Set<String> getAddresses() {
    method getTagNames (line 125) | public List<String> getTagNames() {
    method getAddressToTagnames (line 129) | public Map<String, Set<String>> getAddressToTagnames() {
    method getTagnameToAddresses (line 133) | public Map<String, Set<String>> getTagnameToAddresses() {
    method getTags (line 137) | public List<Tag> getTags() {
    method setTags (line 141) | public void setTags(List<Tag> tags) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java
  class TagRuleParser (line 30) | public class TagRuleParser {
    method parse (line 32) | public static TagRouterRule parse(String rawRule) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
  class AbstractClusterInvoker (line 62) | public abstract class AbstractClusterInvoker<T> implements ClusterInvoke...
    method AbstractClusterInvoker (line 79) | public AbstractClusterInvoker() {}
    method AbstractClusterInvoker (line 81) | public AbstractClusterInvoker(Directory<T> directory) {
    method AbstractClusterInvoker (line 85) | public AbstractClusterInvoker(Directory<T> directory, URL url) {
    method getInterface (line 98) | @Override
    method getUrl (line 103) | @Override
    method getRegistryUrl (line 108) | @Override
    method isAvailable (line 113) | @Override
    method getDirectory (line 122) | @Override
    method destroy (line 127) | @Override
    method isDestroyed (line 134) | @Override
    method select (line 155) | protected Invoker<T> select(
    method doSelect (line 187) | private Invoker<T> doSelect(
    method reselect (line 254) | private Invoker<T> reselect(
    method checkShouldInvalidateInvoker (line 330) | private void checkShouldInvalidateInvoker(Invoker<T> invoker) {
    method invalidateInvoker (line 336) | private void invalidateInvoker(Invoker<T> invoker) {
    method invoke (line 344) | @Override
    method checkWhetherDestroyed (line 372) | protected void checkWhetherDestroyed() {
    method toString (line 381) | @Override
    method checkInvokers (line 386) | protected void checkInvokers(List<Invoker<T>> invokers, Invocation inv...
    method invokeWithContext (line 402) | protected Result invokeWithContext(Invoker<T> invoker, Invocation invo...
    method setRemote (line 424) | private void setRemote(Invoker<?> invoker, Invocation invocation) {
    method invokeWithContextAsync (line 437) | protected Result invokeWithContextAsync(Invoker<T> invoker, Invocation...
    method doInvoke (line 448) | protected abstract Result doInvoke(Invocation invocation, List<Invoker...
    method list (line 451) | protected List<Invoker<T>> list(Invocation invocation) throws RpcExcep...
    method initLoadBalance (line 466) | protected LoadBalance initLoadBalance(List<Invoker<T>> invokers, Invoc...
    method setContext (line 480) | private Invoker<T> setContext(Invoker<T> invoker) {
    method setContext (line 484) | private Invoker<T> setContext(Invoker<T> invoker, URL consumerUrl) {
    method clearContext (line 495) | private void clearContext(Invoker<T> invoker) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AvailableCluster.java
  class AvailableCluster (line 27) | public class AvailableCluster extends AbstractCluster {
    method doJoin (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AvailableClusterInvoker.java
  class AvailableClusterInvoker (line 32) | public class AvailableClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method AvailableClusterInvoker (line 34) | public AvailableClusterInvoker(Directory<T> directory) {
    method doInvoke (line 38) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/BroadcastCluster.java
  class BroadcastCluster (line 27) | public class BroadcastCluster extends AbstractCluster {
    method doJoin (line 29) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/BroadcastClusterInvoker.java
  class BroadcastClusterInvoker (line 40) | public class BroadcastClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method BroadcastClusterInvoker (line 48) | public BroadcastClusterInvoker(Directory<T> directory) {
    method doInvoke (line 52) | @Override
    method getRpcException (line 148) | private RpcException getRpcException(Throwable throwable) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
  class ClusterUtils (line 29) | public class ClusterUtils implements ScopeModelAware {
    method setApplicationModel (line 33) | @Override
    method mergeUrl (line 38) | public URL mergeUrl(URL remoteUrl, Map<String, String> localMap) {
    method mergeLocalParams (line 56) | public Map<String, String> mergeLocalParams(Map<String, String> localM...

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailbackCluster.java
  class FailbackCluster (line 27) | public class FailbackCluster extends AbstractCluster {
    method doJoin (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvoker.java
  class FailbackClusterInvoker (line 54) | public class FailbackClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method FailbackClusterInvoker (line 70) | public FailbackClusterInvoker(Directory<T> directory) {
    method addFailed (line 85) | private void addFailed(
    method doInvoke (line 117) | @Override
    method destroy (line 143) | @Override
    class RetryTimerTask (line 154) | private class RetryTimerTask implements TimerTask {
      method RetryTimerTask (line 172) | RetryTimerTask(
      method run (line 189) | @Override
      method rePut (line 220) | private void rePut(Timeout timeout) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailfastCluster.java
  class FailfastCluster (line 27) | public class FailfastCluster extends AbstractCluster {
    method doJoin (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailfastClusterInvoker.java
  class FailfastClusterInvoker (line 37) | public class FailfastClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method FailfastClusterInvoker (line 39) | public FailfastClusterInvoker(Directory<T> directory) {
    method doInvoke (line 43) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailoverCluster.java
  class FailoverCluster (line 27) | public class FailoverCluster extends AbstractCluster {
    method doJoin (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java
  class FailoverClusterInvoker (line 48) | public class FailoverClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method FailoverClusterInvoker (line 53) | public FailoverClusterInvoker(Directory<T> directory) {
    method doInvoke (line 57) | @Override
    method calculateInvokeTimes (line 129) | private int calculateInvokeTimes(String methodName) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailsafeCluster.java
  class FailsafeCluster (line 27) | public class FailsafeCluster extends AbstractCluster {
    method doJoin (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailsafeClusterInvoker.java
  class FailsafeClusterInvoker (line 40) | public class FailsafeClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method FailsafeClusterInvoker (line 44) | public FailsafeClusterInvoker(Directory<T> directory) {
    method doInvoke (line 48) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ForkingCluster.java
  class ForkingCluster (line 27) | public class ForkingCluster extends AbstractCluster {
    method doJoin (line 31) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ForkingClusterInvoker.java
  class ForkingClusterInvoker (line 52) | public class ForkingClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method ForkingClusterInvoker (line 60) | public ForkingClusterInvoker(Directory<T> directory) {
    method doInvoke (line 70) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java
  class MergeableCluster (line 23) | public class MergeableCluster extends AbstractCluster {
    method doJoin (line 27) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java
  class MergeableClusterInvoker (line 51) | @SuppressWarnings("unchecked")
    method MergeableClusterInvoker (line 57) | public MergeableClusterInvoker(Directory<T> directory) {
    method doInvoke (line 61) | @Override
    method getInterface (line 201) | @Override
    method isAvailable (line 206) | @Override
    method destroy (line 211) | @Override
    method getGroupDescFromServiceKey (line 216) | private String getGroupDescFromServiceKey(String key) {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/merger/DefaultProviderURLMergeProcessor.java
  class DefaultProviderURLMergeProcessor (line 46) | public class DefaultProviderURLMergeProcessor implements ProviderURLMerg...
    method mergeUrl (line 48) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareCluster.java
  class ZoneAwareCluster (line 24) | public class ZoneAwareCluster extends AbstractCluster {
    method doJoin (line 28) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareClusterInvoker.java
  class ZoneAwareClusterInvoker (line 50) | public class ZoneAwareClusterInvoker<T> extends AbstractClusterInvoker<T> {
    method ZoneAwareClusterInvoker (line 56) | public ZoneAwareClusterInvoker(Directory<T> directory) {
    method doInvoke (line 65) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
  class AbstractCluster (line 43) | public abstract class AbstractCluster implements Cluster {
    method buildClusterInterceptors (line 45) | private <T> Invoker<T> buildClusterInterceptors(AbstractClusterInvoker...
    method join (line 57) | @Override
    method buildInterceptorInvoker (line 66) | private <T> AbstractClusterInvoker<T> buildInterceptorInvoker(Abstract...
    method doJoin (line 77) | protected abstract <T> AbstractClusterInvoker<T> doJoin(Directory<T> d...
    class ClusterFilterInvoker (line 79) | static class ClusterFilterInvoker<T> extends AbstractClusterInvoker<T> {
      method ClusterFilterInvoker (line 82) | public ClusterFilterInvoker(AbstractClusterInvoker<T> invoker) {
      method invoke (line 99) | @Override
      method getDirectory (line 104) | @Override
      method getRegistryUrl (line 109) | @Override
      method isDestroyed (line 114) | @Override
      method getUrl (line 119) | @Override
      method doInvoke (line 128) | @Override
      method getFilterInvoker (line 134) | public ClusterInvoker<T> getFilterInvoker() {
    class InvocationInterceptorInvoker (line 139) | static class InvocationInterceptorInvoker<T> extends AbstractClusterIn...
      method InvocationInterceptorInvoker (line 142) | public InvocationInterceptorInvoker(
      method invoke (line 152) | @Override
      method getDirectory (line 157) | @Override
      method getRegistryUrl (line 162) | @Override
      method isDestroyed (line 167) | @Override
      method getUrl (line 172) | @Override
      method doInvoke (line 181) | @Override
    method build27xCompatibleClusterInterceptors (line 188) | @Deprecated
    class InterceptorInvokerNode (line 206) | @Deprecated
      method InterceptorInvokerNode (line 213) | public InterceptorInvokerNode(
      method getInterface (line 222) | @Override
      method getUrl (line 227) | @Override
      method isAvailable (line 232) | @Override
      method invoke (line 237) | @Override
      method destroy (line 266) | @Override
      method toString (line 271) | @Override
      method doInvoke (line 276) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
  class MockClusterInvoker (line 48) | public class MockClusterInvoker<T> implements ClusterInvoker<T> {
    method MockClusterInvoker (line 58) | public MockClusterInvoker(Directory<T> directory, Invoker<T> invoker) {
    method getUrl (line 63) | @Override
    method getRegistryUrl (line 68) | @Override
    method getDirectory (line 73) | @Override
    method isDestroyed (line 78) | @Override
    method isAvailable (line 83) | @Override
    method destroy (line 88) | @Override
    method getInterface (line 93) | @Override
    method invoke (line 98) | @Override
    method doMockInvoke (line 154) | @SuppressWarnings({"unchecked", "rawtypes"})
    method getMockExceptionMessage (line 188) | private String getMockExceptionMessage(Throwable t, Throwable mt) {
    method selectMockInvoker (line 205) | private List<Invoker<T>> selectMockInvoker(Invocation invocation) {
    method toString (line 230) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java
  class MockClusterWrapper (line 28) | public class MockClusterWrapper implements Cluster {
    method MockClusterWrapper (line 32) | public MockClusterWrapper(Cluster cluster) {
    method join (line 36) | @Override
    method getCluster (line 41) | public Cluster getCluster() {

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/ScopeClusterInvoker.java
  class ScopeClusterInvoker (line 60) | public class ScopeClusterInvoker<T> implements ClusterInvoker<T>, Export...
    method ScopeClusterInvoker (line 74) | public ScopeClusterInvoker(Directory<T> directory, Invoker<T> invoker) {
    method getUrl (line 81) | @Override
    method getRegistryUrl (line 86) | @Override
    method getDirectory (line 91) | @Override
    method isDestroyed (line 96) | @Override
    method isAvailable (line 101) | @Override
    method destroy (line 118) | @Override
    method getInterface (line 127) | @Override
    method invoke (line 140) | @Override
    method isBroadcast (line 174) | private boolean isBroadcast() {
    method onExporterChangeExport (line 178) | @Override
    method onExporterChangeUnExport (line 190) | @Override
    method getInvoker (line 199) | public Invoker<?> getInvoker() {
    method init (line 206) | private void init() {
    method isNotRemoteOrGeneric (line 244) | private boolean isNotRemoteOrGeneric() {
    method isInjvmExported (line 255) | private boolean isInjvmExported() {
    method isForceLocal (line 279) | private boolean isForceLocal() {
    method createInjvmInvoker (line 287) | private void createInjvmInvoker(Exporter<?> exporter) {
    method destroyInjvmInvoker (line 319) | private void destroyInjvmInvoker() {
    method toString (line 326) | @Override

FILE: dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/ScopeClusterWrapper.java
  class ScopeClusterWrapper (line 28) | @Wrapper(order = -1)
    method ScopeClusterWrapper (line 32) | public ScopeClusterWrapper(Cluster cluster) {
    method join (line 36) | @Override
    method getCluster (line 41) | public Cluster getCluster() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/ConfiguratorTest.java
  class ConfiguratorTest (line 34) | class ConfiguratorTest {
    method test (line 36) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/StickyTest.java
  class StickyTest (line 39) | @SuppressWarnings("unchecked")
    method setUp (line 54) | @BeforeEach
    method testStickyNoCheck (line 71) | @Test
    method testStickyForceCheck (line 77) | @Test
    method testMethodStickyNoCheck (line 83) | @Test
    method testMethodStickyForceCheck (line 89) | @Test
    method testMethodsSticky (line 95) | @Test
    method testSticky (line 104) | public int testSticky(String methodName, boolean check) {
    class StickyClusterInvoker (line 133) | static class StickyClusterInvoker<T> extends AbstractClusterInvoker<T> {
      method StickyClusterInvoker (line 136) | public StickyClusterInvoker(Directory<T> directory) {
      method StickyClusterInvoker (line 140) | public StickyClusterInvoker(Directory<T> directory, URL url) {
      method doInvoke (line 144) | @Override
      method getSelectedInvoker (line 152) | public Invoker<T> getSelectedInvoker() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfiguratorTest.java
  class AbsentConfiguratorTest (line 29) | class AbsentConfiguratorTest {
    method testOverrideApplication (line 31) | @Test
    method testOverrideHost (line 49) | @Test
    method testAbsentForVersion27 (line 70) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/configurator/consts/UrlConstant.java
  class UrlConstant (line 22) | public class UrlConstant {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfiguratorTest.java
  class OverrideConfiguratorTest (line 36) | class OverrideConfiguratorTest {
    method testOverride_Application (line 38) | @Test
    method testOverride_Host (line 56) | @Test
    method testOverrideForVersion27 (line 78) | @Test
    method testOverrideForVersion3 (line 127) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParserTest.java
  class ConfigParserTest (line 40) | class ConfigParserTest {
    method streamToString (line 42) | private String streamToString(InputStream stream) throws IOException {
    method snakeYamlBasicTest (line 48) | @Test
    method parseConfiguratorsServiceNoAppTest (line 58) | @Test
    method parseConfiguratorsServiceGroupVersionTest (line 70) | @Test
    method parseConfiguratorsServiceMultiAppsTest (line 82) | @Test
    method parseConfiguratorsServiceNoRuleTest (line 95) | @Test
    method parseConfiguratorsAppMultiServicesTest (line 105) | @Test
    method parseConfiguratorsAppAnyServicesTest (line 121) | @Test
    method parseConfiguratorsAppNoServiceTest (line 136) | @Test
    method parseConsumerSpecificProvidersTest (line 151) | @Test
    method parseProviderConfigurationV3 (line 167) | @Test
    method parseProviderConfigurationV3Compatibility (line 196) | @Test
    method parseProviderConfigurationV3Conflict (line 218) | @Test
    method parseURLJsonArrayCompatible (line 240) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectoryConcurrencyTest.java
  class AbstractDirectoryConcurrencyTest (line 45) | class AbstractDirectoryConcurrencyTest {
    method setUp (line 51) | @BeforeEach
    method tearDown (line 58) | @AfterEach
    method testMultipleReadLocks (line 68) | @Test
    method testWriteBlocksRead (line 107) | @Test
    method testConcurrentReadAndWrite (line 145) | @Test
    class TestDirectory (line 200) | static class TestDirectory extends AbstractDirectory<Object> {
      method TestDirectory (line 203) | public TestDirectory(URL url) {
      method setListAction (line 209) | public void setListAction(Runnable listAction) {
      method getInterface (line 213) | @Override
      method getAllInvokers (line 218) | @Override
      method isAvailable (line 223) | @Override
      method doList (line 228) | @Override
      method simulateWriteLock (line 237) | public void simulateWriteLock(CountDownLatch acquired, CountDownLatc...
      method setInvokers (line 271) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
  class MockDirInvocation (line 36) | class MockDirInvocation implements Invocation {
    method MockDirInvocation (line 40) | public MockDirInvocation() {
    method getTargetServiceUniqueName (line 50) | @Override
    method getProtocolServiceKey (line 55) | @Override
    method getMethodName (line 60) | public String getMethodName() {
    method getServiceName (line 64) | @Override
    method getParameterTypes (line 69) | public Class<?>[] getParameterTypes() {
    method getArguments (line 73) | public Object[] getArguments() {
    method getAttachments (line 77) | public Map<String, String> getAttachments() {
    method getObjectAttachments (line 81) | @Override
    method copyObjectAttachments (line 86) | @Override
    method foreachAttachment (line 91) | @Override
    method setAttachment (line 96) | @Override
    method setAttachment (line 101) | @Override
    method setObjectAttachment (line 106) | @Override
    method setAttachmentIfAbsent (line 111) | @Override
    method setAttachmentIfAbsent (line 116) | @Override
    method setObjectAttachmentIfAbsent (line 121) | @Override
    method getInvoker (line 126) | public Invoker<?> getInvoker() {
    method put (line 130) | @Override
    method get (line 135) | @Override
    method setServiceModel (line 140) | @Override
    method getServiceModel (line 143) | @Override
    method getAttributes (line 148) | @Override
    method getAttachment (line 153) | public String getAttachment(String key) {
    method getObjectAttachment (line 157) | @Override
    method getAttachment (line 162) | public String getAttachment(String key, String defaultValue) {
    method addInvokedInvoker (line 166) | @Override
    method getInvokedInvokers (line 169) | @Override
    method getObjectAttachment (line 174) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java
  class StaticDirectoryTest (line 39) | class StaticDirectoryTest {
    method getRouteUrl (line 42) | private URL getRouteUrl(String rule) {
    method testStaticDirectory (line 46) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilderTest.java
  class DefaultFilterChainBuilderTest (line 33) | class DefaultFilterChainBuilderTest {
    method testBuildInvokerChainForLocalReference (line 35) | @Test
    method testBuildInvokerChainForRemoteReference (line 71) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DemoService.java
  type DemoService (line 19) | public interface DemoService {
    method sayHello (line 20) | String sayHello(String name);
    method plus (line 22) | int plus(int a, int b);

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DemoServiceImpl.java
  class DemoServiceImpl (line 19) | class DemoServiceImpl implements DemoService {
    method sayHello (line 21) | @Override
    method plus (line 26) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DemoServiceLocal.java
  class DemoServiceLocal (line 19) | class DemoServiceLocal implements DemoService {
    method DemoServiceLocal (line 21) | public DemoServiceLocal(DemoService demoService) {}
    method sayHello (line 23) | public String sayHello(String name) {
    method plus (line 27) | public int plus(int a, int b) {
    method ondisconnect (line 31) | public void ondisconnect() {}
    method onconnect (line 33) | public void onconnect() {}

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DemoServiceMock.java
  class DemoServiceMock (line 19) | class DemoServiceMock implements DemoService {
    method sayHello (line 20) | public String sayHello(String name) {
    method plus (line 24) | public int plus(int a, int b) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/DemoServiceStub.java
  class DemoServiceStub (line 19) | class DemoServiceStub implements DemoService {
    method DemoServiceStub (line 21) | public DemoServiceStub(DemoService demoService) {}
    method sayHello (line 23) | public String sayHello(String name) {
    method plus (line 27) | public int plus(int a, int b) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/LogFilter.java
  class LogFilter (line 28) | @Activate(group = CONSUMER, value = "log")
    method invoke (line 31) | @Override
    method onResponse (line 36) | @Override
    method onError (line 39) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/MockService.java
  class MockService (line 19) | class MockService implements DemoService {
    method sayHello (line 20) | public String sayHello(String name) {
    method plus (line 24) | public int plus(int a, int b) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalanceTest.java
  class AbstractLoadBalanceTest (line 38) | class AbstractLoadBalanceTest {
    method doSelect (line 41) | @Override
    method testGetWeight (line 47) | @Test
    method testGetRegistryWeight (line 65) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java
  class AdaptiveLoadBalanceTest (line 36) | @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    method testSelectByWeight (line 43) | @Test
    method buildServiceKey (line 74) | private String buildServiceKey(Invoker invoker) {
    method getAdaptiveMetricsInstance (line 79) | private AdaptiveMetrics getAdaptiveMetricsInstance() {
    method testSelectByAdaptive (line 86) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalanceTest.java
  class ConsistentHashLoadBalanceTest (line 38) | @SuppressWarnings("rawtypes")
    method testConsistentHashLoadBalanceInGenericCall (line 41) | @Test
    method testArgumentMatchAll (line 53) | @Test
    method findHit (line 81) | private Invoker findHit(Map<Invoker, AtomicLong> invokerCounter) {
    method testConsistentHashLoadBalance (line 96) | @Test
    method testNormalWhenRouterEnabled (line 122) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveBalanceTest.java
  class LeastActiveBalanceTest (line 28) | class LeastActiveBalanceTest extends LoadBalanceBaseTest {
    method testLeastActiveLoadBalance_select (line 29) | @Disabled
    method testSelectByWeight (line 42) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
  class LoadBalanceBaseTest (line 48) | @SuppressWarnings({"unchecked", "rawtypes"})
    method setUpBeforeClass (line 69) | @BeforeAll
    method setUp (line 75) | @BeforeEach
    method getInvokeCounter (line 129) | public Map<Invoker, AtomicLong> getInvokeCounter(int runs, String load...
    method getGenericInvokeCounter (line 143) | public Map<Invoker, AtomicLong> getGenericInvokeCounter(int runs, Stri...
    method getLoadBalance (line 157) | protected AbstractLoadBalance getLoadBalance(String loadbalanceName) {
    method testLoadBalanceWarmup (line 162) | @Test
    method calculateDefaultWarmupWeight (line 185) | private static int calculateDefaultWarmupWeight(int uptime) {
    class InvokeResult (line 191) | protected static class InvokeResult {
      method InvokeResult (line 196) | public InvokeResult(int weight) {
      method getCount (line 200) | public AtomicLong getCount() {
      method getWeight (line 204) | public int getWeight() {
      method getTotalWeight (line 208) | public int getTotalWeight() {
      method setTotalWeight (line 212) | public void setTotalWeight(int totalWeight) {
      method getExpected (line 216) | public int getExpected(int runCount) {
      method getDeltaPercentage (line 220) | public float getDeltaPercentage(int runCount) {
      method toString (line 225) | @Override
    method before (line 240) | @BeforeEach
    method getWeightedInvokeResult (line 300) | protected Map<Invoker, InvokeResult> getWeightedInvokeResult(int runs,...

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalanceTest.java
  class RandomLoadBalanceTest (line 31) | class RandomLoadBalanceTest extends LoadBalanceBaseTest {
    method testRandomLoadBalanceSelect (line 32) | @Test
    method testSelectByWeight (line 59) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalanceTest.java
  class RoundRobinLoadBalanceTest (line 34) | @Disabled
    method assertStrictWRRResult (line 37) | private void assertStrictWRRResult(int loop, Map<Invoker, InvokeResult...
    method testRoundRobinLoadBalanceSelect (line 49) | @Test
    method testSelectByWeight (line 59) | @Test
    method testNodeCacheShouldNotRecycle (line 102) | @Test
    method testNodeCacheShouldRecycle (line 131) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalanceTest.java
  class ShortestResponseLoadBalanceTest (line 36) | @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    method testSelectByWeight (line 39) | @Test
    method testSelectByResponse (line 67) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java
  class DoubleSumMerger (line 24) | public class DoubleSumMerger implements Merger<Double> {
    method merge (line 26) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java
  class FloatSumMerger (line 24) | public class FloatSumMerger implements Merger<Float> {
    method merge (line 26) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java
  class IntFindAnyMerger (line 23) | public class IntFindAnyMerger implements Merger<Integer> {
    method merge (line 25) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java
  class IntFindFirstMerger (line 23) | public class IntFindFirstMerger implements Merger<Integer> {
    method merge (line 25) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java
  class IntSumMerger (line 24) | public class IntSumMerger implements Merger<Integer> {
    method merge (line 26) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java
  class LongSumMerger (line 24) | public class LongSumMerger implements Merger<Long> {
    method merge (line 26) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
  class ResultMergerTest (line 38) | class ResultMergerTest {
    method setup (line 41) | @BeforeEach
    method testMergerFactoryIllegalArgumentException (line 50) | @Test
    method testArrayMergerIllegalArgumentException (line 63) | @Test
    method testArrayMerger (line 78) | @Test
    method testBooleanArrayMerger (line 117) | @Test
    method testByteArrayMerger (line 138) | @Test
    method testCharArrayMerger (line 159) | @Test
    method testDoubleArrayMerger (line 180) | @Test
    method testFloatArrayMerger (line 201) | @Test
    method testIntArrayMerger (line 222) | @Test
    method testListMerger (line 243) | @Test
    method testMapArrayMerger (line 282) | @Test
    method testLongArrayMerger (line 318) | @Test
    method testSetMerger (line 339) | @Test
    method testShortArrayMerger (line 380) | @Test
    method testIntSumMerger (line 401) | @Test
    method testDoubleSumMerger (line 414) | @Test
    method testFloatSumMerger (line 428) | @Test
    method testLongSumMerger (line 441) | @Test
    method testIntFindAnyMerger (line 454) | @Test
    method testIntFindFirstMerger (line 467) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
  class MockInvoker (line 25) | public class MockInvoker<T> implements Invoker<T> {
    method MockInvoker (line 29) | public MockInvoker() {}
    method MockInvoker (line 31) | public MockInvoker(URL url) {
    method MockInvoker (line 36) | public MockInvoker(URL url, boolean available) {
    method MockInvoker (line 42) | public MockInvoker(boolean available) {
    method getInterface (line 46) | @Override
    method getUrl (line 51) | public URL getUrl() {
    method isAvailable (line 55) | @Override
    method invoke (line 60) | @Override
    method destroy (line 65) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotFilterTest.java
  class RouterSnapshotFilterTest (line 30) | class RouterSnapshotFilterTest {
    method setUp (line 32) | @BeforeAll
    method test (line 37) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/affinity/AffinityRouteTest.java
  class AffinityRouteTest (line 41) | public class AffinityRouteTest {
    method setUp (line 48) | @BeforeAll
    method filtrate (line 100) | public List<String> filtrate(List<String> invokers, String key) {
    method testMetAffinityRoute (line 105) | @Test
    method testUnMetAffinityRoute (line 136) | @Test
    method testRatioEqualsAffinityRoute (line 167) | @Test
    method testRatioNotEqualsAffinityRoute (line 198) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java
  class ConditionStateRouterTest (line 39) | class ConditionStateRouterTest {
    method setUpBeforeClass (line 43) | @BeforeAll
    method setUp (line 46) | @BeforeEach
    method getRouteUrl (line 49) | private URL getRouteUrl(String rule) {
    method testRoute_matchWhen (line 53) | @Test
    method testRoute_matchFilter (line 107) | @Test
    method testRoute_methodRoute (line 199) | @Test
    method testRoute_ReturnFalse (line 265) | @Test
    method testRoute_ReturnEmpty (line 284) | @Test
    method testRoute_ReturnAll (line 303) | @Test
    method testRoute_HostFilter (line 322) | @Test
    method testRoute_Empty_HostFilter (line 348) | @Test
    method testRoute_False_HostFilter (line 374) | @Test
    method testRoute_Placeholder (line 400) | @Test
    method testRoute_NoForce (line 426) | @Test
    method testRoute_Force (line 450) | @Test
    method testRoute_Arguments (line 477) | @Test
    method testRoute_Attachments (line 557) | @Test
    method testRoute_Range_Pattern (line 621) | @Test
    method testRoute_Key_Not_Exist (line 709) | @Test
    method testRoute_Multiple_Conditions (line 742) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ConditionStateRouterTestV31.java
  class ConditionStateRouterTestV31 (line 43) | public class ConditionStateRouterTestV31 {
    method setUp (line 47) | @BeforeAll
    method testParseRawRule (line 99) | @Test
    method testMultiplyConditionRoute (line 118) | @Test
    method testRemoveDuplicatesCondition (line 157) | @Test
    method testConsequentCondition (line 199) | @Test
    method testUnMatchCondition (line 247) | @Test
    method testMatchAndRouteZero (line 293) | @Test
    method testMatchRouteZeroAndIgnore (line 331) | @Test
    method testTrafficDisabledAndIgnoreConditionRouteForce (line 377) | @Test
    method testMultiplyDestination (line 412) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java
  class ProviderAppConditionStateRouterTest (line 38) | public class ProviderAppConditionStateRouterTest {
    method setUpBeforeClass (line 55) | @BeforeAll
    method test (line 60) | @Test
    method getInvokers (line 82) | private BitList<Invoker<String>> getInvokers() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
  class FileRouterEngineTest (line 52) | @SuppressWarnings("unchecked")
    method setUpBeforeClass (line 64) | @BeforeAll
    method setUp (line 70) | @BeforeEach
    method teardown (line 76) | @AfterEach
    method testRouteNotAvailable (line 82) | @Test
    method testRouteAvailable (line 98) | @Test
    method testRouteByMethodName (line 114) | @Test
    method initUrl (line 143) | private URL initUrl(String filename) {
    method initInvocation (line 153) | private void initInvocation(String methodName) {
    method initInvokers (line 158) | private void initInvokers(URL url) {
    method initInvokers (line 162) | private void initInvokers(URL url, boolean invoker1Status, boolean inv...
    method initDic (line 174) | private void initDic(URL url) {
    class MockClusterInvoker (line 185) | static class MockClusterInvoker<T> extends AbstractClusterInvoker<T> {
      method MockClusterInvoker (line 188) | public MockClusterInvoker(Directory<T> directory) {
      method MockClusterInvoker (line 192) | public MockClusterInvoker(Directory<T> directory, URL url) {
      method doInvoke (line 196) | @Override
      method getSelectedInvoker (line 204) | public Invoker<T> getSelectedInvoker() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java
  class MeshAppRuleListenerTest (line 42) | class MeshAppRuleListenerTest {
    method testStandard (line 111) | @Test
    method register (line 137) | @Test
    method unregister (line 185) | @Test
    method process (line 225) | @Test
    method testUnknownRule (line 276) | @Test
    method testMultipleRule (line 307) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java
  class MeshRuleCacheTest (line 41) | class MeshRuleCacheTest {
    method createInvoker (line 43) | private Invoker<Object> createInvoker(String app) {
    method containMapKeyValue (line 51) | @Test
    method testBuild (line 76) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java
  class MeshRuleManagerTest (line 46) | class MeshRuleManagerTest {
    method setup (line 71) | @BeforeEach
    method teardown (line 85) | @AfterEach
    method testRegister1 (line 90) | @Test
    method testRegister2 (line 151) | @Test
    method testRegister3 (line 197) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
  class MeshRuleRouterTest (line 54) | class MeshRuleRouterTest {
    method setup (line 167) | @BeforeEach
    method teardown (line 187) | @AfterEach
    method createInvoker (line 192) | private Invoker<Object> createInvoker(String app) {
    method createInvoker (line 200) | private Invoker<Object> createInvoker(Map<String, String> parameters) {
    method testNotify (line 208) | @Test
    method testRuleChange (line 235) | @Test
    method testRoute1 (line 261) | @Test
    method testRoute2 (line 272) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java
  class StandardMeshRuleRouterFactoryTest (line 24) | class StandardMeshRuleRouterFactoryTest {
    method getRouter (line 26) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java
  class DestinationRuleTest (line 34) | class DestinationRuleTest {
    method parserTest (line 36) | @Test
    method parserMultiRuleTest (line 92) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
  class VirtualServiceRuleTest (line 32) | class VirtualServiceRuleTest {
    method parserTest (line 34) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java
  class DubboMatchRequestTest (line 34) | class DubboMatchRequestTest {
    method isMatch (line 36) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/BoolMatchTest.java
  class BoolMatchTest (line 24) | class BoolMatchTest {
    method isMatch (line 26) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DoubleMatchTest.java
  class DoubleMatchTest (line 24) | class DoubleMatchTest {
    method exactMatch (line 26) | @Test
    method rangeStartMatch (line 35) | @Test
    method rangeEndMatch (line 48) | @Test
    method rangeStartEndMatch (line 61) | @Test
    method modMatch (line 80) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java
  class DubboAttachmentMatchTest (line 33) | class DubboAttachmentMatchTest {
    method dubboContextMatch (line 35) | @Test
    method tracingContextMatch (line 82) | @Test
    method contextMatch (line 126) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboMethodMatchTest.java
  class DubboMethodMatchTest (line 29) | class DubboMethodMatchTest {
    method nameMatch (line 31) | @Test
    method argcMatch (line 44) | @Test
    method argpMatch (line 55) | @Test
    method parametersMatch (line 80) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListBoolMatchTest.java
  class ListBoolMatchTest (line 27) | class ListBoolMatchTest {
    method isMatch (line 29) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListDoubleMatchTest.java
  class ListDoubleMatchTest (line 27) | class ListDoubleMatchTest {
    method isMatch (line 29) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListStringMatchTest.java
  class ListStringMatchTest (line 27) | class ListStringMatchTest {
    method isMatch (line 29) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/StringMatchTest.java
  class StringMatchTest (line 24) | class StringMatchTest {
    method exactMatch (line 26) | @Test
    method prefixMatch (line 36) | @Test
    method regxMatch (line 46) | @Test
    method emptyMatch (line 57) | @Test
    method noEmptyMatch (line 67) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java
  class MeshRuleDispatcherTest (line 28) | class MeshRuleDispatcherTest {
    method post (line 30) | @Test
    method register (line 104) | @Test
    method unregister (line 129) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java
  class MockInvokersSelectorTest (line 34) | class MockInvokersSelectorTest {
    method test (line 35) | @Test
    class DemoService (line 71) | class DemoService {}

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java
  class ScriptStateRouterTest (line 39) | @DisabledForJreRange(min = JRE.JAVA_16)
    method setUpBeforeClass (line 44) | @BeforeAll
    method setUp (line 47) | @BeforeEach
    method getRouteUrl (line 50) | private URL getRouteUrl(String rule) {
    method testRouteReturnAll (line 54) | @Test
    method testRoutePickInvokers (line 69) | @Test
    method testRouteHostFilter (line 96) | @Test
    method testRoute_throwException (line 130) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java
  class AppScriptStateRouterTest (line 40) | @DisabledForJreRange(min = JRE.JAVA_16)
    method setUpBeforeClass (line 62) | @BeforeAll
    method testConfigScriptRoute (line 67) | @Test
    method getInvokers (line 85) | private BitList<Invoker<String>> getInvokers() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/state/BitListTest.java
  class BitListTest (line 32) | class BitListTest {
    method test (line 33) | @Test
    method testIntersect (line 83) | @Test
    method testIsEmpty (line 105) | @Test
    method testAdd (line 118) | @Test
    method testAddAll (line 143) | @Test
    method testGet (line 162) | @Test
    method testRemove (line 182) | @Test
    method testRemoveIndex (line 214) | @Test
    method testRetain (line 244) | @Test
    method testIndex (line 268) | @Test
    method testSubList (line 290) | @Test
    method testListIterator1 (line 337) | @Test
    method testListIterator2 (line 356) | @Test
    method testListIterator3 (line 381) | @Test
    method testListIterator4 (line 402) | @Test
    method testListIterator5 (line 423) | @Test
    method testListIterator6 (line 452) | @Test
    method testListIterator7 (line 481) | @Test
    method testListIterator8 (line 510) | @Test
    method testClone1 (line 539) | @Test
    method testClone2 (line 560) | @Test
    method testConcurrent (line 582) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java
  class TagStateRouterTest (line 48) | class TagStateRouterTest {
    method setup (line 53) | @BeforeEach
    method testTagRoutePickInvokers (line 65) | @Test
    method testTagRouteWithDynamicRuleV3 (line 91) | @Test
    method tagRouterRuleParseTest (line 132) | @Test
    method tagRouterRuleParseTestV3 (line 171) | @Test
    method getInvokers (line 232) | public BitList<Invoker<String>> getInvokers() {
    method getTagRule (line 244) | private TagRouterRule getTagRule() {
    method tagMultiLevelTest (line 263) | @Test
    method tagLevelForceTest (line 294) | @Test
    method testTagRouteWithWildcardShouldReturnAllProviders (line 303) | @Test
    method testTagRouteWithDynamicRuleWildcardShouldReturnAllProviders (line 341) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
  class AbstractClusterInvokerTest (line 70) | @SuppressWarnings("rawtypes")
    method setUpBeforeClass (line 91) | @BeforeAll
    method teardown (line 96) | @AfterEach
    method afterClass (line 101) | @AfterAll
    method setUp (line 106) | @SuppressWarnings({"unchecked"})
    method testBindingAttachment (line 170) | @Disabled(
    method testSelect_Invokersize0 (line 198) | @Test
    method testSelectedInvokers (line 214) | @Test
    method testSelect_Invokersize1 (line 232) | @Test
    method testSelect_Invokersize2AndselectNotNull (line 242) | @Test
    method testSelect_multiInvokers (line 263) | @Test
    method testCloseAvailablecheck (line 270) | @Test
    method turnRegistryUrlToConsumerUrl (line 284) | private URL turnRegistryUrlToConsumerUrl(URL url, Map<String, String> ...
    method testDonotSelectAgainAndNoCheckAvailable (line 298) | @Test
    method testSelectAgainAndCheckAvailable (line 356) | @Test
    method testSelect_multiInvokers (line 415) | public void testSelect_multiInvokers(String lbname) {
    method testSelectBalance (line 480) | @Test
    method initlistsize5 (line 507) | private void initlistsize5() {
    method initDic (line 518) | private void initDic() {
    method testTimeoutExceptionCode (line 523) | @Test
    type IHelloService (line 578) | public static interface IHelloService {}

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AvailableClusterInvokerTest.java
  class AvailableClusterInvokerTest (line 42) | class AvailableClusterInvokerTest {
    method setUp (line 53) | @BeforeEach
    method resetInvokerToNoException (line 70) | private void resetInvokerToNoException() {
    method testInvokeNoException (line 88) | @Test
    method testInvokeWithException (line 98) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/BroadCastClusterInvokerTest.java
  class BroadCastClusterInvokerTest (line 42) | class BroadCastClusterInvokerTest {
    method setUp (line 53) | @BeforeEach
    method testNormal (line 74) | @Test
    method testEx (line 85) | @Test
    method testFailPercent (line 100) | @Test
  class MockInvoker (line 121) | class MockInvoker implements Invoker<DemoService> {
    method getUrl (line 127) | @Override
    method isAvailable (line 132) | @Override
    method destroy (line 137) | @Override
    method getInterface (line 140) | @Override
    method invoke (line 145) | @Override
    method invokeThrowEx (line 155) | public void invokeThrowEx() {
    method isInvoked (line 159) | public boolean isInvoked() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ClusterUtilsTest.java
  class ClusterUtilsTest (line 46) | class ClusterUtilsTest {
    method setup (line 50) | @BeforeEach
    method testMergeUrl (line 56) | @Test
    method testMergeLocalParams (line 135) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ConnectivityValidationTest.java
  class ConnectivityValidationTest (line 50) | @SuppressWarnings("all")
    method setup (line 73) | @BeforeEach
    method tearDown (line 119) | @AfterEach
    method configInvoker (line 124) | private void configInvoker(Invoker invoker) {
    method setupClass (line 129) | @BeforeAll
    method clearAfterClass (line 134) | @AfterAll
    method testBasic (line 139) | @Test
    method testRetry (line 191) | @Test
    method testRandomSelect (line 217) | @Test
    class ConnectivityClusterInvoker (line 301) | private static class ConnectivityClusterInvoker<T> extends AbstractClu...
      method ConnectivityClusterInvoker (line 302) | public ConnectivityClusterInvoker(Directory<T> directory) {
      method select (line 306) | @Override
      method doInvoke (line 313) | @Override
    method waitRefresh (line 320) | private void waitRefresh(Set<Invoker> invokerSet) throws InterruptedEx...
    class RandomLoadBalance (line 332) | private static class RandomLoadBalance implements LoadBalance {
      method select (line 333) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceA.java
  type DemoServiceA (line 19) | public interface DemoServiceA {
    method methodA (line 20) | String methodA();

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceAMock.java
  class DemoServiceAMock (line 22) | public class DemoServiceAMock implements DemoServiceA {
    method methodA (line 25) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceB.java
  type DemoServiceB (line 19) | public interface DemoServiceB {
    method methodB (line 20) | String methodB();

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceBMock.java
  class DemoServiceBMock (line 22) | public class DemoServiceBMock implements DemoServiceB {
    method methodB (line 25) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailSafeClusterInvokerTest.java
  class FailSafeClusterInvokerTest (line 44) | @SuppressWarnings("unchecked")
    method setUp (line 56) | @BeforeEach
    method resetInvokerToException (line 71) | private void resetInvokerToException() {
    method resetInvokerToNoException (line 77) | private void resetInvokerToNoException() {
    method testInvokeException (line 84) | @Test
    method testInvokeNoException (line 92) | @Test
    method testNoInvoke (line 101) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
  class FailbackClusterInvokerTest (line 57) | @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    method setUp (line 70) | @BeforeEach
    method tearDown (line 85) | @AfterEach
    method resetInvokerToException (line 93) | private void resetInvokerToException() {
    method resetInvokerToNoException (line 99) | private void resetInvokerToNoException() {
    method testInvokeWithIllegalRetriesParam (line 105) | @Test
    method testInvokeWithIllegalFailbacktasksParam (line 121) | @Test
    method testInvokeException (line 137) | @Test
    method testInvokeNoException (line 147) | @Test
    method testNoInvoke (line 158) | @Test
    method testARetryFailed (line 180) | @Disabled
    method getRetryFailedPeriod (line 212) | private long getRetryFailedPeriod() throws NoSuchFieldException, Illeg...
    method testInvokeRetryTimesWithZeroValue (line 218) | @Test
    method testInvokeRetryTimesWithTwoValue (line 243) | @Test
    method testInvokeRetryTimesWithDefaultValue (line 268) | @Test
    method testInvokeRetryTimesWithIllegalValue (line 292) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailfastClusterInvokerTest.java
  class FailfastClusterInvokerTest (line 42) | @SuppressWarnings("unchecked")
    method setUp (line 54) | @BeforeEach
    method resetInvoker1ToException (line 69) | private void resetInvoker1ToException() {
    method resetInvoker1ToNoException (line 75) | private void resetInvoker1ToNoException() {
    method testInvokeException (line 81) | @Test
    method testInvokeBizException (line 91) | @Test
    method testInvokeNoException (line 107) | @Test
    method testNoInvoke (line 117) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailoverClusterInvokerTest.java
  class FailoverClusterInvokerTest (line 51) | @SuppressWarnings("unchecked")
    method setUp (line 65) | @BeforeEach
    method testInvokeWithRuntimeException (line 80) | @Test
    method testInvokeWithRPCException (line 102) | @Test
    method testInvoke_retryTimes (line 121) | @Test
    method testInvoke_retryTimes2 (line 144) | @Test
    method testInvoke_retryTimes_withBizException (line 171) | @Test
    method testInvoke_without_retry (line 193) | @Test
    method testInvoke_when_retry_illegal (line 221) | @Test
    method testNoInvoke (line 249) | @Test
    method testInvokerDestroyAndReList (line 274) | @Test
    type Demo (line 313) | public interface Demo {}
    class MockInvoker (line 315) | public static class MockInvoker<T> extends AbstractInvoker<T> {
      method MockInvoker (line 323) | public MockInvoker(Class<T> type, URL url) {
      method setResult (line 327) | public void setResult(Result result) {
      method setException (line 331) | public void setException(RpcException exception) {
      method setCallable (line 335) | public void setCallable(Callable<?> callable) {
      method doInvoke (line 339) | @Override
    class MockDirectory (line 356) | public static class MockDirectory<T> extends StaticDirectory<T> {
      method MockDirectory (line 357) | public MockDirectory(URL url, List<Invoker<T>> invokers) {
      method doList (line 361) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/ForkingClusterInvokerTest.java
  class ForkingClusterInvokerTest (line 40) | @SuppressWarnings("unchecked")
    method setUp (line 52) | @BeforeEach
    method resetInvokerToException (line 69) | private void resetInvokerToException() {
    method resetInvokerToNoException (line 86) | private void resetInvokerToNoException() {
    method testInvokeException (line 103) | @Test
    method testClearRpcContext (line 117) | @Test
    method testInvokeNoException (line 142) | @Test
    method testInvokeWithIllegalForksParam (line 152) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Greeting.java
  type Greeting (line 21) | @SPI
    method hello (line 23) | String hello();

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock1.java
  class GreetingMock1 (line 19) | public class GreetingMock1 {}

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock2.java
  class GreetingMock2 (line 19) | public class GreetingMock2 implements Greeting {
    method GreetingMock2 (line 20) | private GreetingMock2() {}
    method hello (line 22) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java
  class Menu (line 25) | class Menu {
    method Menu (line 29) | public Menu() {}
    method Menu (line 31) | public Menu(Map<String, List<String>> menus) {
    method putMenuItem (line 37) | public void putMenuItem(String menu, String item) {
    method addMenu (line 46) | public void addMenu(String menu, List<String> items) {
    method getMenus (line 55) | public Map<String, List<String>> getMenus() {
    method merge (line 59) | public void merge(Menu menu) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java
  type MenuService (line 21) | public interface MenuService {
    method getMenu (line 23) | Menu getMenu();
    method addMenu (line 25) | void addMenu(String menu, List<String> items);

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java
  class MergeableClusterInvokerTest (line 52) | class MergeableClusterInvokerTest {
    method merge (line 83) | static void merge(Map<String, List<String>> first, Map<String, List<St...
    method setUp (line 94) | @BeforeEach
    method testGetMenuSuccessfully (line 103) | @Test
    method testAddMenu (line 176) | @Test
    method testAddMenu1 (line 221) | @Test
    method testInvokerToNoInvokerAvailableException (line 287) | @Test
    method testInvokerToException (line 344) | @Test
    method testGetMenuResultHasException (line 396) | @Test
    method testGetMenuWithMergerDefault (line 442) | @Test
    method testDestroy (line 507) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockAbstractClusterInvokerTest.java
  class MockAbstractClusterInvokerTest (line 53) | @SuppressWarnings("rawtypes")
    method setUpBeforeClass (line 74) | @BeforeAll
    method teardown (line 79) | @AfterEach
    method afterClass (line 84) | @AfterAll
    method setUp (line 89) | @SuppressWarnings({"unchecked"})
    method initlistsize5 (line 153) | private void initlistsize5() {
    method initDic (line 164) | private void initDic() {
    method testMockedInvokerSelect (line 172) | @Test
    type IHelloService (line 189) | public static interface IHelloService {}

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockInvokerTest.java
  class MockInvokerTest (line 35) | class MockInvokerTest {
    method testParseMockValue (line 37) | @Test
    method testInvoke (line 55) | @Test
    method testGetDefaultObject (line 66) | @Test
    method testInvokeThrowsRpcException1 (line 88) | @Test
    method testInvokeThrowsRpcException2 (line 96) | @Test
    method testInvokeThrowsRpcException3 (line 107) | @Test
    method testGetThrowable (line 118) | @Test
    method testGetMockObject (line 124) | @Test
    method testNormalizeMock (line 151) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/TagProviderURLMergeProcessor.java
  class TagProviderURLMergeProcessor (line 26) | public class TagProviderURLMergeProcessor implements ProviderURLMergePro...
    method mergeUrl (line 28) | @Override
    method mergeLocalParams (line 36) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/merger/DefaultProviderURLMergeProcessorTest.java
  class DefaultProviderURLMergeProcessorTest (line 49) | class DefaultProviderURLMergeProcessorTest {
    method setup (line 53) | @BeforeEach
    method testMergeUrl (line 58) | @Test
    method testUseProviderParams (line 123) | @Test

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareClusterInvokerTest.java
  class ZoneAwareClusterInvokerTest (line 41) | class ZoneAwareClusterInvokerTest {
    method testPreferredStrategy (line 57) | @Test
    method testRegistryZoneStrategy (line 99) | @Test
    method testRegistryZoneForceStrategy (line 144) | @Test
    method testNoAvailableInvoker (line 173) | @Test
    method newUnexpectedInvoker (line 185) | private ClusterInvoker newUnexpectedInvoker() {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractClusterTest.java
  class AbstractClusterTest (line 44) | class AbstractClusterTest {
    method testBuildClusterInvokerChain (line 46) | @Test
    class DemoCluster (line 68) | static class DemoCluster extends AbstractCluster {
      method join (line 69) | @Override
      method doJoin (line 74) | @Override
    class DemoAbstractClusterInvoker (line 80) | static class DemoAbstractClusterInvoker<T> extends AbstractClusterInvo...
      method getUrl (line 82) | @Override
      method DemoAbstractClusterInvoker (line 87) | public DemoAbstractClusterInvoker(Directory<T> directory, URL url) {
      method doInvoke (line 91) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/DemoClusterFilter.java
  class DemoClusterFilter (line 28) | @Activate(
    method invoke (line 32) | @Override

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
  class MockClusterInvokerTest (line 50) | class MockClusterInvokerTest {
    method beforeMethod (line 55) | @BeforeEach
    method testMockInvokerInvoke_normal (line 64) | @Test
    method testMockInvokerInvoke_failmock (line 92) | @Test
    method testMockInvokerInvoke_forcemock (line 131) | @Test
    method testMockInvokerInvoke_forcemock_defaultreturn (line 167) | @Test
    method testMockInvokerFromOverride_Invoke_Fock_someMethods (line 191) | @Test
    method testMockInvokerFromOverride_Invoke_Fock_WithOutDefault (line 228) | @Test
    method testMockInvokerFromOverride_Invoke_Fock_WithDefault (line 264) | @Test
    method testMockInvokerFromOverride_Invoke_Fock_WithFailDefault (line 303) | @Test
    method testMockInvokerFromOverride_Invoke_Fock_WithForceDefault (line 342) | @Test
    method testMockInvokerFromOverride_Invoke_Fock_Default (line 381) | @Test
    method testMockInvokerFromOverride_Invoke_checkCompatible_return (line 411) | @Test
    method testMockInvokerFromOverride_Invoke_checkCompatible_ImplMock (line 439) | @Test
    method testMockInvokerFromOverride_Invoke_checkCompatible_ImplMock2 (line 458) | @Test
    method testMockInvokerFromOverride_Invoke_checkCompatible_ImplMock3 (line 474) | @Test
    method testMockInvokerFromOverride_Invoke_check_String (line 487) | @Test
    method testMockInvokerFromOverride_Invoke_check_int (line 507) | @Test
    method testMockInvokerFromOverride_Invoke_check_boolean (line 526) | @Test
    method testMockInvokerFromOverride_Invoke_check_Boolean (line 545) | @Test
    method testMockInvokerFromOverride_Invoke_check_ListString_empty (line 561) | @SuppressWarnings("unchecked")
    method testMockInvokerFromOverride_Invoke_check_ListString (line 578) | @SuppressWarnings("unchecked")
    method testMockInvokerFromOverride_Invoke_check_ListPojo_empty (line 597) | @SuppressWarnings("unchecked")
    method testMockInvokerFromOverride_Invoke_check_ListPojoAsync (line 614) | @Test
    method testMockInvokerFromOverride_Invoke_check_ListPojo (line 637) | @SuppressWarnings("unchecked")
    method testMockInvokerFromOverride_Invoke_check_ListPojo_error (line 656) | @Test
    method testMockInvokerFromOverride_Invoke_force_throw (line 674) | @Test
    method testMockInvokerFromOverride_Invoke_force_throwCustemException (line 694) | @Test
    method testMockInvokerFromOverride_Invoke_force_throwCustemExceptionNotFound (line 715) | @Test
    method testMockInvokerFromOverride_Invoke_mock_false (line 735) | @Test
    method getClusterInvokerMock (line 753) | private Invoker<IHelloService> getClusterInvokerMock(URL url, Invoker<...
    method getClusterInvoker (line 782) | @SuppressWarnings({"unchecked", "rawtypes"})
    type IHelloService (line 787) | public interface IHelloService {
      method getSomething (line 788) | String getSomething();
      method getSomething2 (line 790) | String getSomething2();
      method getSomething3 (line 792) | String getSomething3();
      method getSomething4 (line 794) | String getSomething4();
      method getInt1 (line 796) | int getInt1();
      method getBoolean1 (line 798) | boolean getBoolean1();
      method getBoolean2 (line 800) | Boolean getBoolean2();
      method getListString (line 802) | List<String> getListString();
      method getUsers (line 804) | List<User> getUsers();
      method getUsersAsync (line 806) | CompletableFuture<List<User>> getUsersAsync();
      method sayHello (line 808) | void sayHello();
    class HelloService (line 811) | public static class HelloService implements IHelloService {
      method getSomething (line 812) | public String getSomething() {
      method getSomething2 (line 816) | public String getSomething2() {
      method getSomething3 (line 820) | public String getSomething3() {
      method getSomething4 (line 824) | public String getSomething4() {
      method getInt1 (line 828) | public int getInt1() {
      method getBoolean1 (line 832) | public boolean getBoolean1() {
      method getBoolean2 (line 836) | public Boolean getBoolean2() {
      method getListString (line 840) | public List<String> getListString() {
      method getUsers (line 844) | public List<User> getUsers() {
      method getUsersAsync (line 848) | @Override
      method sayHello (line 855) | public void sayHello() {
    class IHelloServiceMock (line 860) | public static class IHelloServiceMock implements IHelloService {
      method IHelloServiceMock (line 861) | public IHelloServiceMock() {}
      method getSomething (line 863) | public String getSomething() {
      method getSomething2 (line 867) | public String getSomething2() {
      method getSomething3 (line 871) | public String getSomething3() {
      method getSomething4 (line 875) | public String getSomething4() {
      method getListString (line 879) | public List<String> getListString() {
      method getUsers (line 883) | public List<User> getUsers() {
      method getUsersAsync (line 887) | @Override
      method getInt1 (line 894) | public int getInt1() {
      method getBoolean1 (line 898) | public boolean getBoolean1() {
      method getBoolean2 (line 902) | public Boolean getBoolean2() {
      method sayHello (line 906) | public void sayHello() {
    class User (line 911) | public static class User {
      method User (line 915) | public User() {}
      method User (line 917) | public User(int id, String name) {
      method getId (line 923) | public int getId() {
      method setId (line 927) | public void setId(int id) {
      method getName (line 931) | public String getName() {
      method setName (line 935) | public void setName(String name) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java
  class MockProviderRpcExceptionTest (line 47) | class MockProviderRpcExceptionTest {
    method beforeMethod (line 52) | @BeforeEach
    method testMockInvokerProviderRpcException (line 61) | @Test
    method getClusterInvokerMock (line 78) | private Invoker<IHelloRpcService> getClusterInvokerMock(URL url, Invok...
    method getClusterInvoker (line 107) | @SuppressWarnings({"unchecked", "rawtypes"})
    type IHelloRpcService (line 112) | public static interface IHelloRpcService {
      method getSomething (line 113) | String getSomething();
      method getSomething2 (line 115) | String getSomething2();
      method getSomething3 (line 117) | String getSomething3();
      method getSomething4 (line 119) | String getSomething4();
      method getInt1 (line 121) | int getInt1();
      method getBoolean1 (line 123) | boolean getBoolean1();
      method getBoolean2 (line 125) | Boolean getBoolean2();
      method getListString (line 127) | public List<String> getListString();
      method getUsers (line 129) | public List<User> getUsers();
      method sayHello (line 131) | void sayHello();
    class HelloRpcService (line 134) | public static class HelloRpcService implements IHelloRpcService {
      method getSomething (line 135) | public String getSomething() {
      method getSomething2 (line 139) | public String getSomething2() {
      method getSomething3 (line 143) | public String getSomething3() {
      method getSomething4 (line 147) | public String getSomething4() {
      method getInt1 (line 151) | public int getInt1() {
      method getBoolean1 (line 155) | public boolean getBoolean1() {
      method getBoolean2 (line 159) | public Boolean getBoolean2() {
      method getListString (line 163) | public List<String> getListString() {
      method getUsers (line 167) | public List<User> getUsers() {
      method sayHello (line 171) | public void sayHello() {
    class IHelloRpcServiceMock (line 176) | public static class IHelloRpcServiceMock implements IHelloRpcService {
      method IHelloRpcServiceMock (line 177) | public IHelloRpcServiceMock() {}
      method getSomething (line 179) | public String getSomething() {
      method getSomething2 (line 183) | public String getSomething2() {
      method getSomething3 (line 187) | public String getSomething3() {
      method getSomething4 (line 191) | public String getSomething4() {
      method getListString (line 195) | public List<String> getListString() {
      method getUsers (line 199) | public List<User> getUsers() {
      method getInt1 (line 203) | public int getInt1() {
      method getBoolean1 (line 207) | public boolean getBoolean1() {
      method getBoolean2 (line 211) | public Boolean getBoolean2() {
      method sayHello (line 215) | public void sayHello() {
    class User (line 220) | public static class User {
      method User (line 224) | public User() {}
      method User (line 226) | public User(int id, String name) {
      method getId (line 232) | public int getId() {
      method setId (line 236) | public void setId(int id) {
      method getName (line 240) | public String getName() {
      method setName (line 244) | public void setName(String name) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java
  class MyMockException (line 19) | public class MyMockException extends RuntimeException {
    method MyMockException (line 23) | public MyMockException(String message) {

FILE: dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/ScopeClusterInvokerTest.java
  class ScopeClusterInvokerTest (line 58) | class ScopeClusterInvokerTest {
    method beforeMonth (line 69) | @BeforeEach
    method after (line 74) | @AfterEach
    method testScopeNull_RemoteInvoke (line 89) | @Test
    method testScopeNull_LocalInvoke (line 105) | @Test
    method testScopeRemoteInvoke (line 128) | @Test
    method testScopeLocalInvoke (line 152) | @Test
    method testInjvmRefer (line 184) | @Test
    method testListenUnExport (line 207) | @Test
    method testPeerInvoke (line 235) | @Test
    method testInjvmUrlInvoke (line 255) | @Test
    method testDynamicInvoke (line 272) | @Test
    method testBroadcast (line 316) | @Test
    method getClusterInvoker (line 333) | private Invoker<DemoService> getClusterInvoker(URL url) {
    type DemoService (line 360) | public static interface DemoService {
      method doSomething1 (line 361) | String doSomething1();
      method doSomething2 (line 363) | String doSomething2();
      method doSomething3 (line 365) | String doSomething3();
      method doSomething4 (line 367) | String doSomething4();
      method doSomething5 (line 369) | String doSomething5();
      method doSomething6 (line 371) | String doSomething6();
      method doSomething7 (line 373) | String doSomething7();
      method doSomething8 (line 375) | String doSomething8();
    class DemoServiceImpl (line 378) | public static class DemoServiceImpl implements DemoService {
      method doSomething1 (line 380) | @Override
      method doSomething2 (line 385) | @Override
      method doSomething3 (line 390) | @Override
      method doSomething4 (line 395) | @Override
      method doSomething5 (line 400) | @Override
      method doSomething6 (line 405) | @Override
      method doSomething7 (line 410) | @Override
      method doSomething8 (line 415) | @Override

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/BaseServiceMetadata.java
  class BaseServiceMetadata (line 27) | public class BaseServiceMetadata {
    method buildServiceKey (line 36) | public static String buildServiceKey(String path, String group, String...
    method versionFromServiceKey (line 52) | public static String versionFromServiceKey(String serviceKey) {
    method groupFromServiceKey (line 60) | public static String groupFromServiceKey(String serviceKey) {
    method interfaceFromServiceKey (line 68) | public static String interfaceFromServiceKey(String serviceKey) {
    method getDisplayServiceKey (line 81) | public String getDisplayServiceKey() {
    method revertDisplayServiceKey (line 94) | public static BaseServiceMetadata revertDisplayServiceKey(String displ...
    method keyWithoutGroup (line 107) | public static String keyWithoutGroup(String interfaceName, String vers...
    method getServiceKey (line 114) | public String getServiceKey() {
    method generateServiceKey (line 118) | public void generateServiceKey() {
    method setServiceKey (line 122) | public void setServiceKey(String serviceKey) {
    method getServiceInterfaceName (line 126) | public String getServiceInterfaceName() {
    method setServiceInterfaceName (line 130) | public void setServiceInterfaceName(String serviceInterfaceName) {
    method getVersion (line 134) | public String getVersion() {
    method setVersion (line 138) | public void setVersion(String version) {
    method getGroup (line 142) | public String getGroup() {
    method setGroup (line 146) | public void setGroup(String group) {
    method getServiceModel (line 150) | public ServiceModel getServiceModel() {
    method setServiceModel (line 154) | public void setServiceModel(ServiceModel serviceModel) {

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/BatchExecutorQueue.java
  class BatchExecutorQueue (line 25) | public class BatchExecutorQueue<T> {
    method BatchExecutorQueue (line 32) | public BatchExecutorQueue() {
    method BatchExecutorQueue (line 36) | public BatchExecutorQueue(int chunkSize) {
    method enqueue (line 42) | public void enqueue(T message, Executor executor) {
    method scheduleFlush (line 47) | protected void scheduleFlush(Executor executor) {
    method run (line 53) | private void run(Executor executor) {
    method prepare (line 87) | protected void prepare(T item) {}
    method flush (line 89) | protected void flush(T item) {}

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/CommonScopeModelInitializer.java
  class CommonScopeModelInitializer (line 35) | public class CommonScopeModelInitializer implements ScopeModelInitializer {
    method initializeFrameworkModel (line 36) | @Override
    method initializeApplicationModel (line 47) | @Override
    method initializeModuleModel (line 55) | @Override

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/Node.java
  type Node (line 22) | public interface Node {
    method getUrl (line 29) | URL getUrl();
    method isAvailable (line 36) | boolean isAvailable();
    method destroy (line 41) | void destroy();

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/Parameters.java
  class Parameters (line 40) | @Deprecated
    method Parameters (line 45) | public Parameters(String... pairs) {
    method Parameters (line 49) | public Parameters(Map<String, String> parameters) {
    method toMap (line 54) | private static Map<String, String> toMap(String... pairs) {
    method parseParameters (line 58) | public static Parameters parseParameters(String query) {
    method getParameters (line 62) | public Map<String, String> getParameters() {
    method getExtension (line 69) | @Deprecated
    method getExtension (line 78) | @Deprecated
    method getMethodExtension (line 87) | @Deprecated
    method getMethodExtension (line 96) | @Deprecated
    method getDecodedParameter (line 102) | public String getDecodedParameter(String key) {
    method getDecodedParameter (line 106) | public String getDecodedParameter(String key, String defaultValue) {
    method getParameter (line 118) | public String getParameter(String key) {
    method getParameter (line 132) | public String getParameter(String key, String defaultValue) {
    method getIntParameter (line 140) | public int getIntParameter(String key) {
    method getIntParameter (line 148) | public int getIntParameter(String key, int defaultValue) {
    method getPositiveIntParameter (line 156) | public int getPositiveIntParameter(String key, int defaultValue) {
    method getBooleanParameter (line 171) | public boolean getBooleanParameter(String key) {
    method getBooleanParameter (line 179) | public boolean getBooleanParameter(String key, boolean defaultValue) {
    method hasParameter (line 187) | public boolean hasParameter(String key) {
    method getMethodParameter (line 192) | public String getMethodParameter(String method, String key) {
    method getMethodParameter (line 203) | public String getMethodParameter(String method, String key, String def...
    method getMethodIntParameter (line 211) | public int getMethodIntParameter(String method, String key) {
    method getMethodIntParameter (line 219) | public int getMethodIntParameter(String method, String key, int defaul...
    method getMethodPositiveIntParameter (line 227) | public int getMethodPositiveIntParameter(String method, String key, in...
    method getMethodBooleanParameter (line 242) | public boolean getMethodBooleanParameter(String method, String key) {
    method getMethodBooleanParameter (line 250) | public boolean getMethodBooleanParameter(String method, String key, bo...
    method hasMethodParameter (line 258) | public boolean hasMethodParameter(String method, String key) {
    method equals (line 263) | @Override
    method hashCode (line 271) | @Override
    method toString (line 276) | @Override

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/ProtocolServiceKey.java
  class ProtocolServiceKey (line 24) | public class ProtocolServiceKey extends ServiceKey {
    method ProtocolServiceKey (line 27) | public ProtocolServiceKey(String interfaceName, String version, String...
    method getProtocol (line 32) | public String getProtocol() {
    method getServiceKeyString (line 36) | public String getServiceKeyString() {
    method isSameWith (line 40) | public boolean isSameWith(ProtocolServiceKey protocolServiceKey) {
    method equals (line 60) | @Override
    method hashCode (line 75) | @Override
    method toString (line 80) | @Override
    class Matcher (line 85) | public static class Matcher {
      method isMatch (line 86) | public static boolean isMatch(ProtocolServiceKey rule, ProtocolServi...

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/Resetable.java
  type Resetable (line 22) | public interface Resetable {
    method reset (line 29) | void reset(URL url);

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/ServiceKey.java
  class ServiceKey (line 24) | public class ServiceKey {
    method ServiceKey (line 29) | public ServiceKey(String interfaceName, String version, String group) {
    method getInterfaceName (line 35) | public String getInterfaceName() {
    method getGroup (line 39) | public String getGroup() {
    method getVersion (line 43) | public String getVersion() {
    method equals (line 47) | @Override
    method hashCode (line 61) | @Override
    method toString (line 66) | @Override
    class Matcher (line 71) | public static class Matcher {
      method isMatch (line 72) | public static boolean isMatch(ServiceKey rule, ServiceKey target) {

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
  class URL (line 114) | public /*final**/ class URL implements Serializable {
    method URL (line 129) | protected URL() {
    method URL (line 135) | public URL(URLAddress urlAddress, URLParam urlParam) {
    method URL (line 139) | public URL(URLAddress urlAddress, URLParam urlParam, Map<String, Objec...
    method URL (line 150) | public URL(String protocol, String host, int port) {
    method URL (line 154) | public URL(
    method URL (line 162) | public URL(String protocol, String host, int port, Map<String, String>...
    method URL (line 166) | public URL(String protocol, String host, int port, String path) {
    method URL (line 170) | public URL(String protocol, String host, int port, String path, String...
    method URL (line 174) | public URL(String protocol, String host, int port, String path, Map<St...
    method URL (line 178) | public URL(String protocol, String username, String password, String h...
    method URL (line 182) | public URL(String protocol, String username, String password, String h...
    method URL (line 186) | public URL(
    method URL (line 203) | protected URL(
    method cacheableValueOf (line 221) | public static URL cacheableValueOf(String url) {
    method valueOf (line 237) | public static URL valueOf(String url) {
    method valueOf (line 241) | public static URL valueOf(String url, ScopeModel scopeModel) {
    method valueOf (line 254) | public static URL valueOf(String url, boolean encoded) {
    method valueOf (line 261) | public static URL valueOf(String url, String... reserveParams) {
    method valueOf (line 277) | public static URL valueOf(URL url, String[] reserveParams, String[] re...
    method encode (line 319) | public static String encode(String value) {
    method decode (line 330) | public static String decode(String value) {
    method appendDefaultPort (line 341) | static String appendDefaultPort(String address, int defaultPort) {
    method getUrlAddress (line 353) | public URLAddress getUrlAddress() {
    method getUrlParam (line 357) | public URLParam getUrlParam() {
    method getProtocol (line 361) | public String getProtocol() {
    method setProtocol (line 365) | public URL setProtocol(String protocol) {
    method getUsername (line 374) | public String getUsername() {
    method setUsername (line 378) | public URL setUsername(String username) {
    method getPassword (line 388) | public String getPassword() {
    method setPassword (line 392) | public URL setPassword(String password) {
    method getAuthority (line 407) | public String getAuthority() {
    method getUserInformation (line 431) | public String getUserInformation() {
    method getHost (line 451) | public String getHost() {
    method setHost (line 455) | public URL setHost(String host) {
    method getPort (line 464) | public int getPort() {
    method setPort (line 468) | public URL setPort(int port) {
    method getPort (line 477) | public int getPort(int defaultPort) {
    method getAddress (line 482) | public String getAddress() {
    method setAddress (line 486) | public URL setAddress(String address) {
    method getIp (line 504) | public String getIp() {
    method getBackupAddress (line 508) | public String getBackupAddress() {
    method getBackupAddress (line 512) | public String getBackupAddress(int defaultPort) {
    method getBackupUrls (line 524) | public List<URL> getBackupUrls() {
    method getPath (line 536) | public String getPath() {
    method setPath (line 540) | public URL setPath(String path) {
    method getAbsolutePath (line 549) | public String getAbsolutePath() {
    method getOriginalParameters (line 557) | public Map<String, String> getOriginalParameters() {
    method getParameters (line 561) | public Map<String, String> getParameters() {
    method getAllParameters (line 565) | public Map<String, String> getAllParameters() {
    method getParameters (line 576) | public Map<String, String> getParameters(Predicate<String> nameToSelec...
    method getParameterAndDecoded (line 587) | public String getParameterAndDecoded(String key) {
    method getParameterAndDecoded (line 591) | public String getParameterAndDecoded(String key, String defaultValue) {
    method getOriginalParameter (line 595) | public String getOriginalParameter(String key) {
    method getParameter (line 599) | public String getParameter(String key) {
    method getParameter (line 603) | public String getParameter(String key, String defaultValue) {
    method getParameter (line 608) | public String[] getParameter(String key, String[] defaultValue) {
    method getParameter (line 613) | public List<String> getParameter(String key, List<String> defaultValue) {
    method getParameter (line 631) | public <T> T getParameter(String key, Class<T> valueType) {
    method getParameter (line 645) | public <T> T getParameter(String key, Class<T> valueType, T defaultVal...
    method setScopeModel (line 660) | public URL setScopeModel(ScopeModel scopeModel) {
    method getScopeModel (line 664) | public ScopeModel getScopeModel() {
    method getOrDefaultFrameworkModel (line 668) | public FrameworkModel getOrDefaultFrameworkModel() {
    method getOrDefaultApplicationModel (line 672) | public ApplicationModel getOrDefaultApplicationModel() {
    method getApplicationModel (line 676) | public ApplicationModel getApplicationModel() {
    method getOrDefaultModuleModel (line 680) | public ModuleModel getOrDefaultModuleModel() {
    method setServiceModel (line 684) | public URL setServiceModel(ServiceModel serviceModel) {
    method getServiceModel (line 688) | public ServiceModel getServiceModel() {
    method getUrlParameter (line 692) | public URL getUrlParameter(String key) {
    method getParameter (line 700) | public double getParameter(String key, double defaultValue) {
    method getParameter (line 708) | public float getParameter(String key, float defaultValue) {
    method getParameter (line 716) | public long getParameter(String key, long defaultValue) {
    method getParameter (line 724) | public int getParameter(String key, int defaultValue) {
    method getParameter (line 732) | public short getParameter(String key, short defaultValue) {
    method getParameter (line 740) | public byte getParameter(String key, byte defaultValue) {
    method getPositiveParameter (line 748) | public float getPositiveParameter(String key, float defaultValue) {
    method getPositiveParameter (line 756) | public double getPositiveParameter(String key, double defaultValue) {
    method getPositiveParameter (line 764) | public long getPositiveParameter(String key, long defaultValue) {
    method getPositiveParameter (line 772) | public int getPositiveParameter(String key, int defaultValue) {
    method getPositiveParameter (line 780) | public short getPositiveParameter(String key, short defaultValue) {
    method getPositiveParameter (line 788) | public byte getPositiveParameter(String key, byte defaultValue) {
    method getParameter (line 796) | public char getParameter(String key, char defaultValue) {
    method getParameter (line 801) | public boolean getParameter(String key, boolean defaultValue) {
    method hasParameter (line 806) | public boolean hasParameter(String key) {
    method getMethodParameterAndDecoded (line 811) | public String getMethodParameterAndDecoded(String method, String key) {
    method getMethodParameterAndDecoded (line 815) | public String getMethodParameterAndDecoded(String method, String key, ...
    method getMethodParameter (line 819) | public String getMethodParameter(String method, String key) {
    method getMethodParameterStrict (line 823) | public String getMethodParameterStrict(String method, String key) {
    method getMethodParameter (line 827) | public String getMethodParameter(String method, String key, String def...
    method getMethodParameter (line 832) | public double getMethodParameter(String method, String key, double def...
    method getMethodParameter (line 840) | public float getMethodParameter(String method, String key, float defau...
    method getMethodParameter (line 848) | public long getMethodParameter(String method, String key, long default...
    method getMethodParameter (line 856) | public int getMethodParameter(String method, String key, int defaultVa...
    method getMethodParameter (line 864) | public short getMethodParameter(String method, String key, short defau...
    method getMethodParameter (line 872) | public byte getMethodParameter(String method, String key, byte default...
    method getMethodPositiveParameter (line 880) | public double getMethodPositiveParameter(String method, String key, do...
    method getMethodPositiveParameter (line 888) | public float getMethodPositiveParameter(String method, String key, flo...
    method getMethodPositiveParameter (line 896) | public long getMethodPositiveParameter(String method, String key, long...
    method getMethodPositiveParameter (line 904) | public int getMethodPositiveParameter(String method, String key, int d...
    method getMethodPositiveParameter (line 912) | public short getMethodPositiveParameter(String method, String key, sho...
    method getMethodPositiveParameter (line 920) | public byte getMethodPositiveParameter(String method, String key, byte...
    method getMethodParameter (line 928) | public char getMethodParameter(String method, String key, char default...
    method getMethodParameter (line 933) | public boolean getMethodParameter(String method, String key, boolean d...
    method hasMethodParameter (line 938) | public boolean hasMethodParameter(String method, String key) {
    method getAnyMethodParameter (line 961) | public String getAnyMethodParameter(String key) {
    method hasMethodParameter (line 965) | public boolean hasMethodParameter(String method) {
    method isLocalHost (line 969) | public boolean isLocalHost() {
    method isAnyHost (line 973) | public boolean isAnyHost() {
    method addParameterAndEncoded (line 977) | public URL addParameterAndEncoded(String key, String value) {
    method addParameter (line 984) | public URL addParameter(String key, boolean value) {
    method addParameter (line 988) | public URL addParameter(String key, char value) {
    method addParameter (line 992) | public URL addParameter(String key, byte value) {
    method addParameter (line 996) | public URL addParameter(String key, short value) {
    method addParameter (line 1000) | public URL addParameter(String key, int value) {
    method addParameter (line 1004) | public URL addParameter(String key, long value) {
    method addParameter (line 1008) | public URL addParameter(String key, float value) {
    method addParameter (line 1012) | public URL addParameter(String key, double value) {
    method addParameter (line 1016) | public URL addParameter(String key, Enum<?> value) {
    method addParameter (line 1023) | public URL addParameter(String key, Number value) {
    method addParameter (line 1030) | public URL addParameter(String key, CharSequence value) {
    method addParameter (line 1037) | public URL addParameter(String key, String value) {
    method addParameterIfAbsent (line 1042) | public URL addParameterIfAbsent(String key, String value) {
    method addParameters (line 1053) | public URL addParameters(Map<String, String> parameters) {
    method addParametersIfAbsent (line 1058) | public URL addParametersIfAbsent(Map<String, String> parameters) {
    method addParameters (line 1063) | public URL addParameters(String... pairs) {
    method addParameterString (line 1078) | public URL addParameterString(String query) {
    method removeParameter (line 1085) | public URL removeParameter(String key) {
    method removeParameters (line 1092) | public URL removeParameters(Collection<String> keys) {
    method removeParameters (line 1099) | public URL removeParameters(String... keys) {
    method clearParameters (line 1104) | public URL clearParameters() {
    method getRawParameter (line 1109) | public String getRawParameter(String key) {
    method toOriginalMap (line 1131) | public Map<String, String> toOriginalMap() {
    method toMap (line 1136) | public Map<String, String> toMap() {
    method addSpecialKeys (line 1141) | private Map<String, String> addSpecialKeys(Map<String, String> map) {
    method toString (line 1166) | @Override
    method toString (line 1171) | public String toString(String... parameters) {
    method toIdentityString (line 1175) | public String toIdentityString() {
    method toIdentityString (line 1179) | public String toIdentityString(String... parameters) {
    method toFullString (line 1184) | public String toFullString() {
    method toFullString (line 1188) | public String toFullString(String... parameters) {
    method toParameterString (line 1192) | public String toParameterString() {
    method toParameterString (line 1196) | public String toParameterString(String... parameters) {
    method buildParameters (line 1202) | protected void buildParameters(StringBuilder buf, boolean concat, Stri...
    method buildString (line 1224) | private String buildString(boolean appendUser, boolean appendParameter...
    method buildString (line 1228) | private String buildString(
    method toJavaURL (line 1273) | public java.net.URL toJavaURL() {
    method toInetSocketAddress (line 1281) | public InetSocketAddress toInetSocketAddress() {
    method getColonSeparatedKey (line 1290) | public String getColonSeparatedKey() {
    method getCompatibleColonSeparatedKey (line 1303) | public String getCompatibleColonSeparatedKey() {
    method append (line 1311) | private void append(StringBuilder target, String parameterName, boolea...
    method compatibleAppend (line 1323) | private void compatibleAppend(StringBuilder target, String parameterNa...
    method getServiceKey (line 1336) | public String getServiceKey() {
    method getDisplayServiceKey (line 1353) | public String getDisplayServiceKey() {
    method getPathKey (line 1365) | public String getPathKey() {
    method buildKey (line 1373) | public static String buildKey(String path, String group, String versio...
    method getProtocolServiceKey (line 1377) | public String getProtocolServiceKey() {
    method toServiceStringWithoutResolving (line 1392) | public String toServiceStringWithoutResolving() {
    method toServiceString (line 1396) | public String toServiceString() {
    method toServiceString (line 1400) | public String toServiceString(String... parameters) {
    method getServiceName (line 1404) | @Deprecated
    method getServiceInterface (line 1409) | public String getServiceInterface() {
    method setServiceInterface (line 1413) | public URL setServiceInterface(String service) {
    method getIntParameter (line 1421) | @Deprecated
    method getIntParameter (line 1430) | @Deprecated
    method getPositiveIntParameter (line 1439) | @Deprecated
    method getBooleanParameter (line 1448) | @Deprecated
    method getBooleanParameter (line 1457) | @Deprecated
    method getMethodIntParameter (line 1466) | @Deprecated
    method getMethodIntParameter (line 1475) | @Deprecated
    method getMethodPositiveIntParameter (line 1484) | @Deprecated
    method getMethodBooleanParameter (line 1493) | @Deprecated
    method getMethodBooleanParameter (line 1502) | @Deprecated
    method toConfiguration (line 1507) | public Configuration toConfiguration() {
    method hashCode (line 1515) | @Override
    method equals (line 1523) | @Override
    method putMethodParameter (line 1539) | public static void putMethodParameter(
    method newURL (line 1545) | protected <T extends URL> T newURL(URLAddress urlAddress, URLParam url...
    method getApplication (line 1551) | public String getApplication(String defaultValue) {
    method getApplication (line 1556) | public String getApplication() {
    method getRemoteApplication (line 1560) | public String getRemoteApplication() {
    method getGroup (line 1564) | public String getGroup() {
    method getGroup (line 1568) | public String getGroup(String defaultValue) {
    method getVersion (line 1573) | public String getVersion() {
    method getVersion (line 1577) | public String getVersion(String defaultValue) {
    method getConcatenatedParameter (line 1582) | public String getConcatenatedParameter(String key) {
    method getCategory (line 1586) | public String getCategory(String defaultValue) {
    method getCategory (line 1594) | public String[] getCategory(String[] defaultValue) {
    method getCategory (line 1599) | public String getCategory() {
    method getSide (line 1603) | public String getSide(String defaultValue) {
    method getSide (line 1608) | public String getSide() {
    method getAttributes (line 1613) | public Map<String, Object> getAttributes() {
    method addAttributes (line 1617) | public URL addAttributes(Map<String, Object> attributeMap) {
    method getAttribute (line 1624) | public Object getAttribute(String key) {
    method getAttribute (line 1628) | public Object getAttribute(String key, Object defaultValue) {
    method putAttribute (line 1633) | public URL putAttribute(String key, Object obj) {
    method removeAttribute (line 1641) | public URL removeAttribute(String key) {
    method hasAttribute (line 1648) | public boolean hasAttribute(String key) {
    method returnURL (line 1654) | private URL returnURL(URLAddress newURLAddress) {
    method returnURL (line 1661) | private URL returnURL(URLParam newURLParam) {
    method getOriginalServiceParameters (line 1669) | public Map<String, String> getOriginalServiceParameters(String service) {
    method getServiceParameters (line 1673) | public Map<String, String> getServiceParameters(String service) {
    method getOriginalServiceParameter (line 1677) | public String getOriginalServiceParameter(String service, String key) {
    method getServiceParameter (line 1681) | public String getServiceParameter(String service, String key) {
    method getServiceParameter (line 1685) | public String getServiceParameter(String service, String key, String d...
    method getServiceParameter (line 1690) | public int getServiceParameter(String service, String key, int default...
    method getServiceParameter (line 1694) | public double getServiceParameter(String service, String key, double d...
    method getServiceParameter (line 1702) | public float getServiceParameter(String service, String key, float def...
    method getServiceParameter (line 1710) | public long getServiceParameter(String service, String key, long defau...
    method getServiceParameter (line 1718) | public short getServiceParameter(String service, String key, short def...
    method getServiceParameter (line 1726) | public byte getServiceParameter(String service, String key, byte defau...
    method getServiceParameter (line 1734) | public char getServiceParameter(String service, String key, char defau...
    method getServiceParameter (line 1739) | public boolean getServiceParameter(String service, String key, boolean...
    method hasServiceParameter (line 1744) | public boolean hasServiceParameter(String service, String key) {
    method getPositiveServiceParameter (line 1749) | public float getPositiveServiceParameter(String service, String key, f...
    method getPositiveServiceParameter (line 1757) | public double getPositiveServiceParameter(String service, String key, ...
    method getPositiveServiceParameter (line 1765) | public long getPositiveServiceParameter(String service, String key, lo...
    method getPositiveServiceParameter (line 1773) | public int getPositiveServiceParameter(String service, String key, int...
    method getPositiveServiceParameter (line 1781) | public short getPositiveServiceParameter(String service, String key, s...
    method getPositiveServiceParameter (line 1789) | public byte getPositiveServiceParameter(String service, String key, by...
    method getServiceMethodParameterAndDecoded (line 1797) | public String getServiceMethodParameterAndDecoded(String service, Stri...
    method getServiceMethodParameterAndDecoded (line 1801) | public String getServiceMethodParameterAndDecoded(String service, Stri...
    method getServiceMethodParameterStrict (line 1805) | public String getServiceMethodParameterStrict(String service, String m...
    method getServiceMethodParameter (line 1809) | public String getServiceMethodParameter(String service, String method,...
    method getServiceMethodParameter (line 1813) | public String getServiceMethodParameter(String service, String method,...
    method getServiceMethodParameter (line 1818) | public double getServiceMethodParameter(String service, String method,...
    method getServiceMethodParameter (line 1826) | public float getServiceMethodParameter(String service, String method, ...
    method getServiceMethodParameter (line 1834) | public long getServiceMethodParameter(String service, String method, S...
    method getServiceMethodParameter (line 1842) | public int getServiceMethodParameter(String service, String method, St...
    method getServiceMethodParameter (line 1850) | public short getServiceMethodParameter(String service, String method, ...
    method getServiceMethodParameter (line 1858) | public byte getServiceMethodParameter(String service, String method, S...
    method hasServiceMethodParameter (line 1866) | public boolean hasServiceMethodParameter(String service, String method...
    method hasServiceMethodParameter (line 1870) | public boolean hasServiceMethodParameter(String service, String method) {
    method toSerializableURL (line 1874) | public URL toSerializableURL() {

FILE: dubbo-common/src/main/java/org/apache/dubbo/common/URLBuilder.java
  class URLBuilder (line 32) | public final class URLBuilder extends ServiceConfigURL {
    method URLBuilder (line 53) | public URLBuilder() {
    method URLBuilder (line 65) | public URLBuilder(String protocol, String host, int port) {
    method URLBuilder (line 69) | public URLBuilder(String protocol, String host, int port, String[] pai...
    method URLBuilder (line 73) | public URLBuilder(String protocol, String host, int port, Map<String, ...
    method URLBuilder (line 77) | public URLBuilder(String protocol, String host, int port, String path) {
    method URLBuilder (line 81) | public URLBuilder(String protocol, String host, int port, String path,...
    method URLBuilder (line 85) | public URLBuilder(String protocol, String host, int port, String path,...
    method URLBuilder (line 89) | public URLBuilder(
    method URLBuilder (line 100) | public URLBuilder(
    method from (line 119) | public static URLBuilder from(URL url) {
    method build (line 131) | public ServiceConfigURL build() {
    method putAttribute (line 151) | @Override
    method removeAttribute (line 157) | @Override
    method setProtocol (line 163)
Copy disabled (too large) Download .json
Condensed preview — 4827 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,722K chars).
[
  {
    "path": ".artifacts",
    "chars": 3162,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".asf.yaml",
    "chars": 3153,
    "preview": "#\n#\n#   Licensed to the Apache Software Foundation (ASF) under one or more\n#   contributor license agreements.  See the "
  },
  {
    "path": ".editorconfig",
    "chars": 3013,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".gitattributes",
    "chars": 879,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".github/DISCUSSION_TEMPLATE/general.yml",
    "chars": 3359,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/DISCUSSION_TEMPLATE/question.yml",
    "chars": 3364,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1-bug.yml",
    "chars": 6287,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2-feature.yml",
    "chars": 3913,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 1001,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 605,
    "preview": "## What is the purpose of the change?\n\n\n## Checklist\n- [x] Make sure there is a [GitHub_issue](https://github.com/apache"
  },
  {
    "path": ".github/dependabot.yaml",
    "chars": 342,
    "preview": "version: 2\nupdates:\n\n  - package-ecosystem: \"maven\"\n    directory: \"/\"\n    open-pull-requests-limit: 20\n    # Ignore maj"
  },
  {
    "path": ".github/workflows/build-and-test-pr.yml",
    "chars": 28573,
    "preview": "name: \"Build and Test For PR\"\n\non: [push, pull_request, workflow_dispatch]\n\npermissions:\n  contents: read\n\nenv:\n  FORK_C"
  },
  {
    "path": ".github/workflows/build-and-test-scheduled-3.1.yml",
    "chars": 23773,
    "preview": "name: Build and Test Scheduled On 3.1\n\non:\n  schedule:\n    - cron: '0 0/6 * * *'\n  workflow_dispatch:\n\npermissions:\n  co"
  },
  {
    "path": ".github/workflows/build-and-test-scheduled-3.2.yml",
    "chars": 23871,
    "preview": "name: Build and Test Scheduled On 3.2\n\non:\n  schedule:\n    - cron: '0 0/6 * * *'\n  workflow_dispatch:\n\npermissions:\n  co"
  },
  {
    "path": ".github/workflows/build-and-test-scheduled-3.3.yml",
    "chars": 25519,
    "preview": "name: Build and Test Scheduled On 3.3\n\non:\n  schedule:\n    - cron: '0 0/6 * * *'\n  workflow_dispatch:\n\npermissions:\n  co"
  },
  {
    "path": ".github/workflows/release-test.yml",
    "chars": 25005,
    "preview": "name: Release Test\n\non:\n  push:\n    branches:\n      - '**-release'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 687,
    "preview": "# maven ignore\ntarget/\n*.jar\n*.war\n*.zip\n*.tar\n*.tar.gz\n.flattened-pom.xml\n\n# eclipse ignore\n.settings/\n.project\n.classp"
  },
  {
    "path": ".licenserc.yaml",
    "chars": 10763,
    "preview": "header:\n  license:\n    spdx-id: Apache-2.0\n    content: |\n      Licensed to the Apache Software Foundation (ASF) under o"
  },
  {
    "path": ".mvn/jvm.config",
    "chars": 125,
    "preview": "-Dfile.encoding=UTF-8\n-Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8\n-Dstdout.encoding=UTF-8 -Dstderr.encoding="
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 1019,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "CHANGES.md",
    "chars": 33324,
    "preview": "# Release Notes\n\nPlease refer to https://github.com/apache/dubbo/releases for notes of future releases.\n\n## 2.7.6 \n\n### "
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3217,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5087,
    "preview": "\n## Contributing to Dubbo\nDubbo is released under the non-restrictive Apache 2.0 licenses and follows a very standard Gi"
  },
  {
    "path": "Jenkinsfile",
    "chars": 4731,
    "preview": "import groovy.json.JsonSlurper\n\npipeline {\n    agent {\n        node {\n            label 'ubuntu'\n        }\n    }\n\n    op"
  },
  {
    "path": "Jenkinsfile.sonar",
    "chars": 2684,
    "preview": "/*\n *\n *  Licensed to the Apache Software Foundation (ASF) under one or more\n *  contributor license agreements.  See th"
  },
  {
    "path": "LICENSE",
    "chars": 16295,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "NOTICE",
    "chars": 1271,
    "preview": "Apache Dubbo\nCopyright 2018-2024 The Apache Software Foundation\n\nThis product includes software developed at\nThe Apache "
  },
  {
    "path": "README.md",
    "chars": 8421,
    "preview": "\n# Apache Dubbo Project\n\n[![Build and Test For PR](https://github.com/apache/dubbo/actions/workflows/build-and-test-pr.y"
  },
  {
    "path": "SECURITY.md",
    "chars": 1660,
    "preview": "# Security Policy\n\n## Supported Versions\n\nBelow is a table that shows versions that we accept security fixes.\n\n| Version"
  },
  {
    "path": "build",
    "chars": 3539,
    "preview": "#!/bin/sh\n\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See"
  },
  {
    "path": "build.cmd",
    "chars": 3791,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "codecov.yml",
    "chars": 1127,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "codestyle/checkstyle-suppressions.xml",
    "chars": 551,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE suppressions PUBLIC\n        \"-//Puppy Crawl//DTD Suppressions 1.1//EN\"\n        \"http://w"
  },
  {
    "path": "codestyle/checkstyle.xml",
    "chars": 1606,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n        \"-//Puppy Crawl//DTD Check Configuration 1.3//EN\"\n        \"http://"
  },
  {
    "path": "codestyle/checkstyle_unix.xml",
    "chars": 317,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n        \"-//Puppy Crawl//DTD Check Configuration 1.3//EN\"\n        \"http://"
  },
  {
    "path": "codestyle/dubbo_codestyle_for_idea.xml",
    "chars": 718,
    "preview": "<code_scheme name=\"dubbo_codestyle\">\n    <option name=\"CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND\" value=\"99\"/>\n    <option nam"
  },
  {
    "path": "dubbo-cluster/pom.xml",
    "chars": 3920,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contr"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/registry/AddressListener.java",
    "chars": 1472,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java",
    "chars": 1611,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Cluster.java",
    "chars": 2212,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterInvoker.java",
    "chars": 2157,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterScopeModelInitializer.java",
    "chars": 1728,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Configurator.java",
    "chars": 4284,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ConfiguratorFactory.java",
    "chars": 1368,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Constants.java",
    "chars": 4054,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Directory.java",
    "chars": 2872,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/LoadBalance.java",
    "chars": 1793,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java",
    "chars": 1390,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Merger.java",
    "chars": 950,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ProviderURLMergeProcessor.java",
    "chars": 1510,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java",
    "chars": 4132,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java",
    "chars": 10275,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterFactory.java",
    "chars": 1910,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RuleConverter.java",
    "chars": 1045,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/SingleRouterChain.java",
    "chars": 14907,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java",
    "chars": 11658,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfigurator.java",
    "chars": 1259,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfiguratorFactory.java",
    "chars": 1235,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfigurator.java",
    "chars": 1544,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfiguratorFactory.java",
    "chars": 1243,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParser.java",
    "chars": 9310,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ConditionMatch.java",
    "chars": 3330,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ConfigItem.java",
    "chars": 6618,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ConfiguratorConfig.java",
    "chars": 3309,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/parser/model/ParamMatch.java",
    "chars": 1693,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java",
    "chars": 27761,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java",
    "chars": 5243,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java",
    "chars": 6639,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/FilterChainBuilder.java",
    "chars": 16174,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/InvocationInterceptorBuilder.java",
    "chars": 1128,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java",
    "chars": 3075,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/CallbackConsumerContextFilter.java",
    "chars": 1605,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java",
    "chars": 1963,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java",
    "chars": 7557,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/MetricsConsumerFilter.java",
    "chars": 2020,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java",
    "chars": 2425,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java",
    "chars": 3814,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/interceptor/ClusterInterceptor.java",
    "chars": 2247,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java",
    "chars": 4299,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java",
    "chars": 5368,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java",
    "chars": 5568,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java",
    "chars": 5588,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalance.java",
    "chars": 5345,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalance.java",
    "chars": 4843,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java",
    "chars": 7455,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java",
    "chars": 2299,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java",
    "chars": 1633,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java",
    "chars": 1597,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java",
    "chars": 1597,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java",
    "chars": 1365,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java",
    "chars": 1606,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java",
    "chars": 1347,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java",
    "chars": 1506,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java",
    "chars": 1353,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java",
    "chars": 1451,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java",
    "chars": 4348,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java",
    "chars": 1439,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java",
    "chars": 1606,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java",
    "chars": 2105,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java",
    "chars": 4543,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterResult.java",
    "chars": 1748,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotFilter.java",
    "chars": 2764,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotNode.java",
    "chars": 6502,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/RouterSnapshotSwitcher.java",
    "chars": 2505,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/AffinityStateRouter.java",
    "chars": 7941,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/AffinityStateRouterFactory.java",
    "chars": 1351,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityListenableStateRouter.java",
    "chars": 6808,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityProviderAppStateRouter.java",
    "chars": 3738,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityProviderAppStateRouterFactory.java",
    "chars": 1474,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityServiceStateRouter.java",
    "chars": 1311,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/AffinityServiceStateRouterFactory.java",
    "chars": 1468,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/model/AffinityRouterRule.java",
    "chars": 2907,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/affinity/config/model/AffinityRuleParser.java",
    "chars": 2030,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java",
    "chars": 14365,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java",
    "chars": 1423,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/MultiDestConditionRouter.java",
    "chars": 14350,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java",
    "chars": 1176,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java",
    "chars": 1839,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java",
    "chars": 8431,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java",
    "chars": 3624,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java",
    "chars": 1407,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java",
    "chars": 1280,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java",
    "chars": 1475,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java",
    "chars": 1992,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java",
    "chars": 3205,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionSubSet.java",
    "chars": 2079,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/Destination.java",
    "chars": 1512,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/DestinationSet.java",
    "chars": 2339,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/MultiDestCondition.java",
    "chars": 1565,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/MultiDestConditionRouterRule.java",
    "chars": 2181,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java",
    "chars": 6250,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java",
    "chars": 2295,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java",
    "chars": 1617,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java",
    "chars": 3207,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java",
    "chars": 1564,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java",
    "chars": 3190,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java",
    "chars": 1576,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java",
    "chars": 1614,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java",
    "chars": 1550,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java",
    "chars": 1841,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java",
    "chars": 3644,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java",
    "chars": 1696,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java",
    "chars": 3252,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java",
    "chars": 1366,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java",
    "chars": 6546,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java",
    "chars": 1252,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java",
    "chars": 990,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java",
    "chars": 7644,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java",
    "chars": 1403,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java",
    "chars": 5310,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java",
    "chars": 16031,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java",
    "chars": 1228,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java",
    "chars": 1324,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java",
    "chars": 1706,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java",
    "chars": 2098,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java",
    "chars": 909,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java",
    "chars": 1319,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java",
    "chars": 1751,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java",
    "chars": 1412,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java",
    "chars": 1002,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java",
    "chars": 972,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java",
    "chars": 1378,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java",
    "chars": 915,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java",
    "chars": 1508,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java",
    "chars": 968,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java",
    "chars": 3618,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java",
    "chars": 1809,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java",
    "chars": 1789,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java",
    "chars": 1325,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java",
    "chars": 1441,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java",
    "chars": 1617,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java",
    "chars": 1318,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/AddressMatch.java",
    "chars": 3190,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/BoolMatch.java",
    "chars": 1218,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DoubleMatch.java",
    "chars": 1772,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DoubleRangeMatch.java",
    "chars": 1609,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java",
    "chars": 2703,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboMethodArg.java",
    "chars": 2600,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboMethodMatch.java",
    "chars": 4190,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListBoolMatch.java",
    "chars": 1338,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListDoubleMatch.java",
    "chars": 1351,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/ListStringMatch.java",
    "chars": 1351,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/StringMatch.java",
    "chars": 3099,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java",
    "chars": 4424,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java",
    "chars": 1077,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java",
    "chars": 1390,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java",
    "chars": 4978,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java",
    "chars": 1357,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java",
    "chars": 8277,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java",
    "chars": 1729,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java",
    "chars": 1388,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java",
    "chars": 7277,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java",
    "chars": 2210,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/AbstractStateRouter.java",
    "chars": 7601,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/BitList.java",
    "chars": 19460,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/CacheableStateRouterFactory.java",
    "chars": 1802,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/RouterGroupingState.java",
    "chars": 2879,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/StateRouter.java",
    "chars": 3772,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/StateRouterFactory.java",
    "chars": 1325,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/state/TailStateRouter.java",
    "chars": 2182,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  }
]

// ... and 4627 more files (download for full content)

About this extraction

This page contains the full source code of the apache/dubbo GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4827 files (19.2 MB), approximately 4.3M tokens, and a symbol index with 27668 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!