master ed86d043e894 cached
3326 files
9.1 MB
2.6M tokens
17127 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (10,636K chars total). Download the full file to get everything.
Repository: ServiceComb/ServiceComb-Java-Chassis
Branch: master
Commit: ed86d043e894
Files: 3326
Total size: 9.1 MB

Directory structure:
gitextract_c_qmn9s_/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── documentation_issue.yml
│   │   ├── feature_request.yml
│   │   └── question.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── checkstyle.yml
│       ├── linelint.yml
│       ├── maven.yml
│       ├── rat_check.yml
│       └── typo_check.yml
├── .gitignore
├── .typos.toml
├── LICENSE
├── NOTICE
├── README.md
├── README_ZH.md
├── ci/
│   ├── README.md
│   ├── checkstyle/
│   │   ├── checkstyle.xml
│   │   └── suppressions.xml
│   └── spotbugs/
│       └── exclude.xml
├── clients/
│   ├── README.md
│   ├── config-center-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── config/
│   │                               └── center/
│   │                                   └── client/
│   │                                       ├── ConfigCenterAddressManager.java
│   │                                       ├── ConfigCenterClient.java
│   │                                       ├── ConfigCenterConfigurationChangedEvent.java
│   │                                       ├── ConfigCenterManager.java
│   │                                       ├── ConfigCenterOperation.java
│   │                                       └── model/
│   │                                           ├── ConfigCenterConfiguration.java
│   │                                           ├── QueryConfigurationsRequest.java
│   │                                           └── QueryConfigurationsResponse.java
│   ├── config-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── config/
│   │                               └── common/
│   │                                   ├── ConfigConverter.java
│   │                                   └── exception/
│   │                                       └── OperationException.java
│   ├── config-kie-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── config/
│   │       │                       └── kie/
│   │       │                           └── client/
│   │       │                               ├── KieClient.java
│   │       │                               ├── KieConfigManager.java
│   │       │                               ├── KieConfigOperation.java
│   │       │                               ├── KieConfigurationChangedEvent.java
│   │       │                               └── model/
│   │       │                                   ├── ConfigConstants.java
│   │       │                                   ├── ConfigurationsRequest.java
│   │       │                                   ├── ConfigurationsRequestFactory.java
│   │       │                                   ├── ConfigurationsResponse.java
│   │       │                                   ├── KVDoc.java
│   │       │                                   ├── KVResponse.java
│   │       │                                   ├── KieAddressManager.java
│   │       │                                   ├── KieConfiguration.java
│   │       │                                   ├── LabelDocResponse.java
│   │       │                                   └── ValueType.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── config/
│   │                               └── kie/
│   │                                   └── client/
│   │                                       └── model/
│   │                                           ├── ConfigurationsRequestTest.java
│   │                                           └── KieAddressManagerTest.java
│   ├── dashboard-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── dashboard/
│   │       │                       └── client/
│   │       │                           ├── DashboardAddressManager.java
│   │       │                           ├── DashboardClient.java
│   │       │                           ├── DashboardOperation.java
│   │       │                           └── model/
│   │       │                               ├── InterfaceInfo.java
│   │       │                               └── MonitorData.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── dashboard/
│   │                               └── client/
│   │                                   └── AddressManagerTest.java
│   ├── http-client-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── http/
│   │       │                       └── client/
│   │       │                           ├── auth/
│   │       │                           │   ├── DefaultRequestAuthHeaderProvider.java
│   │       │                           │   └── RequestAuthHeaderProvider.java
│   │       │                           ├── common/
│   │       │                           │   ├── AbstractAddressManager.java
│   │       │                           │   ├── HttpConfiguration.java
│   │       │                           │   ├── HttpRequest.java
│   │       │                           │   ├── HttpResponse.java
│   │       │                           │   ├── HttpTransport.java
│   │       │                           │   ├── HttpTransportFactory.java
│   │       │                           │   ├── HttpTransportImpl.java
│   │       │                           │   ├── HttpUtils.java
│   │       │                           │   ├── MessageObjectMapper.java
│   │       │                           │   ├── SSLSocketFactoryExt.java
│   │       │                           │   ├── URLEndPoint.java
│   │       │                           │   ├── WebSocketListener.java
│   │       │                           │   └── WebSocketTransport.java
│   │       │                           ├── event/
│   │       │                           │   ├── EngineConnectChangedEvent.java
│   │       │                           │   ├── OperationEvents.java
│   │       │                           │   └── RefreshEndpointEvent.java
│   │       │                           ├── task/
│   │       │                           │   ├── AbstractTask.java
│   │       │                           │   └── Task.java
│   │       │                           └── utils/
│   │       │                               └── ServiceCombServiceAvailableUtils.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── http/
│   │           │                   └── client/
│   │           │                       └── common/
│   │           │                           ├── AbstractAddressManagerTest.java
│   │           │                           └── HttpTransportImplTest.java
│   │           └── resources/
│   │               └── tls/
│   │                   ├── client.p12
│   │                   └── server.jks
│   ├── pom.xml
│   └── service-center-client/
│       ├── README.md
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   └── java/
│           │       └── org/
│           │           └── apache/
│           │               └── servicecomb/
│           │                   └── service/
│           │                       └── center/
│           │                           └── client/
│           │                               ├── CacheableServiceCenterOperation.java
│           │                               ├── DiscoveryEvents.java
│           │                               ├── RegistrationEvents.java
│           │                               ├── ServiceCenterAddressManager.java
│           │                               ├── ServiceCenterClient.java
│           │                               ├── ServiceCenterDiscovery.java
│           │                               ├── ServiceCenterOperation.java
│           │                               ├── ServiceCenterRawClient.java
│           │                               ├── ServiceCenterRegistration.java
│           │                               ├── ServiceCenterWatch.java
│           │                               ├── exception/
│           │                               │   └── OperationException.java
│           │                               └── model/
│           │                                   ├── BasePath.java
│           │                                   ├── CreateMicroserviceInstanceRequest.java
│           │                                   ├── CreateMicroserviceRequest.java
│           │                                   ├── CreateSchemaRequest.java
│           │                                   ├── DataCenterInfo.java
│           │                                   ├── ErrorMessage.java
│           │                                   ├── FindMicroserviceInstancesResponse.java
│           │                                   ├── Framework.java
│           │                                   ├── GetSchemaListResponse.java
│           │                                   ├── GetSchemaResponse.java
│           │                                   ├── HealthCheck.java
│           │                                   ├── HealthCheckMode.java
│           │                                   ├── HeartbeatsRequest.java
│           │                                   ├── InstancesRequest.java
│           │                                   ├── Microservice.java
│           │                                   ├── MicroserviceInstance.java
│           │                                   ├── MicroserviceInstanceResponse.java
│           │                                   ├── MicroserviceInstanceStatus.java
│           │                                   ├── MicroserviceInstancesResponse.java
│           │                                   ├── MicroserviceResponse.java
│           │                                   ├── MicroserviceStatus.java
│           │                                   ├── MicroservicesResponse.java
│           │                                   ├── ModifySchemasRequest.java
│           │                                   ├── RbacTokenRequest.java
│           │                                   ├── RbacTokenResponse.java
│           │                                   ├── RegisteredMicroserviceInstanceResponse.java
│           │                                   ├── RegisteredMicroserviceResponse.java
│           │                                   ├── SchemaInfo.java
│           │                                   ├── ServiceCenterConfiguration.java
│           │                                   └── UpdatePropertiesRequest.java
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── apache/
│               │           └── servicecomb/
│               │               └── service/
│               │                   └── center/
│               │                       └── client/
│               │                           ├── ServiceCenterAddressManagerTest.java
│               │                           ├── ServiceCenterClientTest.java
│               │                           └── ServiceCenterRawClientTest.java
│               └── resources/
│                   └── tls/
│                       ├── client.p12
│                       └── server.jks
├── common/
│   ├── common-access-log/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── common/
│   │       │   │                   └── accessLog/
│   │       │   │                       ├── AccessLogBootListener.java
│   │       │   │                       ├── AccessLogBootstrap.java
│   │       │   │                       ├── AccessLogConfig.java
│   │       │   │                       ├── AccessLogConfiguration.java
│   │       │   │                       ├── AccessLogInitializer.java
│   │       │   │                       ├── client/
│   │       │   │                       │   └── ClientDefaultInitializer.java
│   │       │   │                       ├── core/
│   │       │   │                       │   ├── AccessLogGenerator.java
│   │       │   │                       │   ├── element/
│   │       │   │                       │   │   ├── AccessLogItem.java
│   │       │   │                       │   │   └── impl/
│   │       │   │                       │   │       ├── ConfigurableDatetimeAccessItem.java
│   │       │   │                       │   │       ├── CookieAccessItem.java
│   │       │   │                       │   │       ├── DurationMillisecondAccessItem.java
│   │       │   │                       │   │       ├── DurationSecondAccessItem.java
│   │       │   │                       │   │       ├── FirstLineOfRequestAccessItem.java
│   │       │   │                       │   │       ├── HttpMethodAccessItem.java
│   │       │   │                       │   │       ├── HttpStatusAccessItem.java
│   │       │   │                       │   │       ├── InvocationContextAccessItem.java
│   │       │   │                       │   │       ├── LocalHostAccessItem.java
│   │       │   │                       │   │       ├── LocalPortAccessItem.java
│   │       │   │                       │   │       ├── PlainTextAccessItem.java
│   │       │   │                       │   │       ├── QueryStringAccessItem.java
│   │       │   │                       │   │       ├── RemoteHostAccessItem.java
│   │       │   │                       │   │       ├── RequestHeaderAccessItem.java
│   │       │   │                       │   │       ├── RequestProtocolAccessItem.java
│   │       │   │                       │   │       ├── ResponseHeaderAccessItem.java
│   │       │   │                       │   │       ├── ResponseSizeAccessItem.java
│   │       │   │                       │   │       ├── TraceIdAccessItem.java
│   │       │   │                       │   │       ├── TransportAccessItem.java
│   │       │   │                       │   │       ├── UrlPathAccessItem.java
│   │       │   │                       │   │       └── UrlPathWithQueryAccessItem.java
│   │       │   │                       │   ├── parser/
│   │       │   │                       │   │   ├── AccessLogItemCreator.java
│   │       │   │                       │   │   ├── AccessLogItemMeta.java
│   │       │   │                       │   │   ├── AccessLogPatternParser.java
│   │       │   │                       │   │   ├── CompositeVertxRestAccessLogItemMeta.java
│   │       │   │                       │   │   ├── VertxRestAccessLogItemMeta.java
│   │       │   │                       │   │   └── impl/
│   │       │   │                       │   │       ├── DefaultCompositeVertxRestAccessLogItemMeta.java
│   │       │   │                       │   │       └── VertxRestAccessLogPatternParser.java
│   │       │   │                       │   └── placeholder/
│   │       │   │                       │       └── AccessLogItemTypeEnum.java
│   │       │   │                       └── server/
│   │       │   │                           └── ServerDefaultInitializer.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── org.apache.servicecomb.common.accessLog.AccessLogInitializer
│   │       │           │   └── org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── common/
│   │           │                   └── accessLog/
│   │           │                       └── core/
│   │           │                           ├── AccessLogGeneratorTest.java
│   │           │                           ├── element/
│   │           │                           │   └── impl/
│   │           │                           │       ├── CookieItemTest.java
│   │           │                           │       ├── DatetimeConfigurableItemTest.java
│   │           │                           │       ├── DurationMillisecondItemTest.java
│   │           │                           │       ├── DurationSecondItemTest.java
│   │           │                           │       ├── FirstLineOfRequestItemTest.java
│   │           │                           │       ├── HttpMethodItemTest.java
│   │           │                           │       ├── HttpStatusItemTest.java
│   │           │                           │       ├── InvocationContextItemTest.java
│   │           │                           │       ├── LocalHostItemTest.java
│   │           │                           │       ├── LocalPortItemTest.java
│   │           │                           │       ├── PlainTextItemTest.java
│   │           │                           │       ├── QueryStringItemTest.java
│   │           │                           │       ├── RemoteHostItemTest.java
│   │           │                           │       ├── RequestHeaderItemTest.java
│   │           │                           │       ├── RequestProtocolItemTest.java
│   │           │                           │       ├── ResponseHeaderItemTest.java
│   │           │                           │       ├── ResponseSizeItemTest.java
│   │           │                           │       ├── TraceIdItemTest.java
│   │           │                           │       ├── TransportItemTest.java
│   │           │                           │       ├── UrlPathItemTest.java
│   │           │                           │       ├── UrlPathWithQueryItemTest.java
│   │           │                           │       ├── UserDefinedAccessLogItem.java
│   │           │                           │       └── UserDefinedAccessLogItemLowPriority.java
│   │           │                           └── parser/
│   │           │                               └── impl/
│   │           │                                   ├── TestCompositeExtendedAccessLogItemMeta.java
│   │           │                                   ├── TestSingleExtendedAccessLogItemMeta.java
│   │           │                                   └── VertxRestAccessLogPatternParserTest.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
│   ├── common-protobuf/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── codec/
│   │       │                       └── protobuf/
│   │       │                           ├── definition/
│   │       │                           │   ├── HighwayJsonUtils.java
│   │       │                           │   ├── OperationProtobuf.java
│   │       │                           │   ├── ProtobufManager.java
│   │       │                           │   ├── RequestRootDeserializer.java
│   │       │                           │   ├── RequestRootSerializer.java
│   │       │                           │   ├── ResponseRootDeserializer.java
│   │       │                           │   └── ResponseRootSerializer.java
│   │       │                           ├── internal/
│   │       │                           │   └── converter/
│   │       │                           │       ├── ProtoMethod.java
│   │       │                           │       ├── ProtoResponse.java
│   │       │                           │       ├── ProtoToStringGenerator.java
│   │       │                           │       ├── SchemaSwaggerTypeAdapter.java
│   │       │                           │       ├── SwaggerToProtoGenerator.java
│   │       │                           │       └── SwaggerTypeAdapter.java
│   │       │                           ├── schema/
│   │       │                           │   └── SchemaToProtoGenerator.java
│   │       │                           └── utils/
│   │       │                               └── ScopedProtobufSchemaManager.java
│   │       └── test/
│   │           ├── java/
│   │           │   ├── io/
│   │           │   │   └── protostuff/
│   │           │   │       └── runtime/
│   │           │   │           └── model/
│   │           │   │               ├── ModelProtostuff.java
│   │           │   │               └── User.java
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── codec/
│   │           │                   └── protobuf/
│   │           │                       ├── definition/
│   │           │                       │   └── TestResponseRootDeserializer.java
│   │           │                       ├── internal/
│   │           │                       │   └── converter/
│   │           │                       │       ├── TestProtoToStringGenerator.java
│   │           │                       │       ├── TestSchemaMetaCodec.java
│   │           │                       │       ├── TestSchemaMetaCodecRestTemplate.java
│   │           │                       │       ├── TestSwaggerToProtoGenerator.java
│   │           │                       │       └── model/
│   │           │                       │           ├── FieldNeedWrap.java
│   │           │                       │           ├── ProtoSchema.java
│   │           │                       │           ├── ProtoSchemaIntf.java
│   │           │                       │           ├── ProtoSchemaPojo.java
│   │           │                       │           ├── Ref1.java
│   │           │                       │           └── Ref2.java
│   │           │                       └── schema/
│   │           │                           ├── TestSchemaCodec.java
│   │           │                           ├── TestSchemaToProtoGenerator.java
│   │           │                           └── model/
│   │           │                               ├── CyclicInfo.java
│   │           │                               ├── DeptInfo.java
│   │           │                               ├── SchemaService.java
│   │           │                               ├── ScoreInfo.java
│   │           │                               └── UserInfo.java
│   │           ├── proto/
│   │           │   └── ModelProtobuf.proto
│   │           └── resources/
│   │               └── ProtoSchema.proto
│   ├── common-rest/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── common/
│   │       │   │                   └── rest/
│   │       │   │                       ├── CommonRestConfiguration.java
│   │       │   │                       ├── EdgeServerWebSocketInvocationCreator.java
│   │       │   │                       ├── HttpTransportContext.java
│   │       │   │                       ├── ProviderServerWebSocketInvocationCreator.java
│   │       │   │                       ├── RestConst.java
│   │       │   │                       ├── RestEngineSchemaListener.java
│   │       │   │                       ├── RestProducerInvocationCreator.java
│   │       │   │                       ├── RestProducerInvocationFlow.java
│   │       │   │                       ├── RestVertxProducerInvocationCreator.java
│   │       │   │                       ├── ServerWebSocketInvocationCreator.java
│   │       │   │                       ├── UploadConfig.java
│   │       │   │                       ├── VertxHttpTransportContext.java
│   │       │   │                       ├── WebSocketTransportContext.java
│   │       │   │                       ├── codec/
│   │       │   │                       │   ├── RestClientRequest.java
│   │       │   │                       │   ├── RestCodec.java
│   │       │   │                       │   ├── RestObjectMapperFactory.java
│   │       │   │                       │   ├── header/
│   │       │   │                       │   │   ├── HeaderCodec.java
│   │       │   │                       │   │   ├── HeaderCodecCsv.java
│   │       │   │                       │   │   ├── HeaderCodecMulti.java
│   │       │   │                       │   │   ├── HeaderCodecPipes.java
│   │       │   │                       │   │   ├── HeaderCodecSimple.java
│   │       │   │                       │   │   ├── HeaderCodecSsv.java
│   │       │   │                       │   │   ├── HeaderCodecWithDelimiter.java
│   │       │   │                       │   │   └── HeaderCodecsUtils.java
│   │       │   │                       │   ├── param/
│   │       │   │                       │   │   ├── AbstractParamProcessor.java
│   │       │   │                       │   │   ├── BodyProcessorCreator.java
│   │       │   │                       │   │   ├── CookieProcessorCreator.java
│   │       │   │                       │   │   ├── FormProcessorCreator.java
│   │       │   │                       │   │   ├── HeaderProcessorCreator.java
│   │       │   │                       │   │   ├── ParamValueProcessor.java
│   │       │   │                       │   │   ├── ParamValueProcessorCreator.java
│   │       │   │                       │   │   ├── ParamValueProcessorCreatorManager.java
│   │       │   │                       │   │   ├── PathProcessorCreator.java
│   │       │   │                       │   │   └── QueryProcessorCreator.java
│   │       │   │                       │   ├── produce/
│   │       │   │                       │   │   ├── ProduceEventStreamProcessor.java
│   │       │   │                       │   │   ├── ProduceJsonProcessor.java
│   │       │   │                       │   │   ├── ProduceProcessor.java
│   │       │   │                       │   │   ├── ProduceProcessorManager.java
│   │       │   │                       │   │   ├── ProduceProtoBufferProcessor.java
│   │       │   │                       │   │   └── ProduceTextPlainProcessor.java
│   │       │   │                       │   └── query/
│   │       │   │                       │       ├── AbstractQueryCodec.java
│   │       │   │                       │       ├── QueryCodec.java
│   │       │   │                       │       ├── QueryCodecCsv.java
│   │       │   │                       │       ├── QueryCodecMulti.java
│   │       │   │                       │       ├── QueryCodecPipes.java
│   │       │   │                       │       ├── QueryCodecSsv.java
│   │       │   │                       │       ├── QueryCodecWithDelimiter.java
│   │       │   │                       │       ├── QueryCodecs.java
│   │       │   │                       │       └── QueryCodecsUtils.java
│   │       │   │                       ├── definition/
│   │       │   │                       │   ├── RestMetaUtils.java
│   │       │   │                       │   ├── RestOperationComparator.java
│   │       │   │                       │   ├── RestOperationMeta.java
│   │       │   │                       │   ├── RestParam.java
│   │       │   │                       │   └── path/
│   │       │   │                       │       ├── AbstractUrlParamWriter.java
│   │       │   │                       │       ├── PathRegExp.java
│   │       │   │                       │       ├── PathVarParamWriter.java
│   │       │   │                       │       ├── QueryVarParamWriter.java
│   │       │   │                       │       ├── StaticUrlParamWriter.java
│   │       │   │                       │       ├── URLPathBuilder.java
│   │       │   │                       │       └── UrlParamWriter.java
│   │       │   │                       ├── filter/
│   │       │   │                       │   └── inner/
│   │       │   │                       │       ├── RestServerCodecFilter.java
│   │       │   │                       │       └── WebSocketServerCodecFilter.java
│   │       │   │                       ├── locator/
│   │       │   │                       │   ├── MicroservicePaths.java
│   │       │   │                       │   ├── OperationGroup.java
│   │       │   │                       │   ├── OperationLocator.java
│   │       │   │                       │   └── ServicePathManager.java
│   │       │   │                       ├── resource/
│   │       │   │                       │   ├── ClassPathStaticResourceHandler.java
│   │       │   │                       │   └── StaticResourceHandler.java
│   │       │   │                       └── route/
│   │       │   │                           ├── URLMappedConfigurationItem.java
│   │       │   │                           ├── URLMappedConfigurationLoader.java
│   │       │   │                           └── Utils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── com.fasterxml.jackson.databind.Module
│   │       │           │   ├── org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor
│   │       │           │   └── org.apache.servicecomb.core.filter.FilterProvider
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── common/
│   │           │                   └── rest/
│   │           │                       ├── RestProducerInvocationCreatorTest.java
│   │           │                       ├── TestDefPath.java
│   │           │                       ├── TestRestEngineSchemaListener.java
│   │           │                       ├── codec/
│   │           │                       │   ├── PojoModel.java
│   │           │                       │   ├── TestRestCodec.java
│   │           │                       │   ├── TestRestObjectMapper.java
│   │           │                       │   ├── fix/
│   │           │                       │   │   └── TestDoSFix.java
│   │           │                       │   ├── param/
│   │           │                       │   │   ├── TestBodyProcessor.java
│   │           │                       │   │   ├── TestBodyProcessorCreator.java
│   │           │                       │   │   ├── TestCookieProcessor.java
│   │           │                       │   │   ├── TestCookieProcessorCreator.java
│   │           │                       │   │   ├── TestFormProcessor.java
│   │           │                       │   │   ├── TestFormProcessorCreator.java
│   │           │                       │   │   ├── TestHeaderProcessor.java
│   │           │                       │   │   ├── TestHeaderProcessorCreator.java
│   │           │                       │   │   ├── TestPathProcessor.java
│   │           │                       │   │   ├── TestPathProcessorCreator.java
│   │           │                       │   │   ├── TestQueryProcessor.java
│   │           │                       │   │   └── TestQueryProcessorCreator.java
│   │           │                       │   ├── produce/
│   │           │                       │   │   ├── TestProduceJsonProcessor.java
│   │           │                       │   │   ├── TestProduceProcessorManager.java
│   │           │                       │   │   └── TestProduceTextPlainProcessor.java
│   │           │                       │   └── query/
│   │           │                       │       ├── QueryCodecCsvTest.java
│   │           │                       │       ├── QueryCodecMultiTest.java
│   │           │                       │       ├── QueryCodecPipesTest.java
│   │           │                       │       ├── QueryCodecSsvTest.java
│   │           │                       │       ├── QueryCodecTestBase.java
│   │           │                       │       └── QueryCodecsTest.java
│   │           │                       ├── definition/
│   │           │                       │   ├── TestPath.java
│   │           │                       │   ├── TestRestOperationComparator.java
│   │           │                       │   ├── TestRestOperationMeta.java
│   │           │                       │   └── path/
│   │           │                       │       ├── PathVarParamWriterTest.java
│   │           │                       │       ├── QueryVarParamWriterTest.java
│   │           │                       │       ├── URLPathBuilderTest.java
│   │           │                       │       └── URLPathStringBuilderTest.java
│   │           │                       ├── filter/
│   │           │                       │   └── inner/
│   │           │                       │       └── RestServerCodecFilterTest.java
│   │           │                       ├── locator/
│   │           │                       │   ├── TestMicroservicePaths.java
│   │           │                       │   ├── TestPathSchema.java
│   │           │                       │   └── TestServicePathManager.java
│   │           │                       └── resource/
│   │           │                           └── TestClassPathStaticResourceHandler.java
│   │           └── resources/
│   │               ├── log4j2.xml
│   │               ├── microservice.yaml
│   │               └── web-root/
│   │                   └── index.html
│   └── pom.xml
├── core/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── servicecomb/
│       │   │               └── core/
│       │   │                   ├── BootListener.java
│       │   │                   ├── CoreConst.java
│       │   │                   ├── Endpoint.java
│       │   │                   ├── Invocation.java
│       │   │                   ├── NonSwaggerInvocation.java
│       │   │                   ├── ProducerProvider.java
│       │   │                   ├── SCBApplicationListener.java
│       │   │                   ├── SCBEngine.java
│       │   │                   ├── SCBStatus.java
│       │   │                   ├── ServiceCombCoreConfiguration.java
│       │   │                   ├── Transport.java
│       │   │                   ├── annotation/
│       │   │                   │   └── Transport.java
│       │   │                   ├── bootstrap/
│       │   │                   │   ├── SCBBootstrap.java
│       │   │                   │   └── SCBEngineForTest.java
│       │   │                   ├── bootup/
│       │   │                   │   ├── BootUpInformationCollector.java
│       │   │                   │   ├── ConfigurationProblemsAlarmEvent.java
│       │   │                   │   ├── ConfigurationProblemsCollector.java
│       │   │                   │   ├── FilterChainCollector.java
│       │   │                   │   └── ServiceInformationCollector.java
│       │   │                   ├── definition/
│       │   │                   │   ├── ConsumerMicroserviceVersionsMeta.java
│       │   │                   │   ├── CoreMetaUtils.java
│       │   │                   │   ├── InvocationRuntimeType.java
│       │   │                   │   ├── MicroserviceMeta.java
│       │   │                   │   ├── MicroserviceVersionsMeta.java
│       │   │                   │   ├── OperationConfig.java
│       │   │                   │   ├── OperationMeta.java
│       │   │                   │   └── SchemaMeta.java
│       │   │                   ├── event/
│       │   │                   │   ├── InvocationBaseEvent.java
│       │   │                   │   ├── InvocationBusinessFinishEvent.java
│       │   │                   │   ├── InvocationBusinessMethodFinishEvent.java
│       │   │                   │   ├── InvocationBusinessMethodStartEvent.java
│       │   │                   │   ├── InvocationEncodeResponseStartEvent.java
│       │   │                   │   ├── InvocationFinishEvent.java
│       │   │                   │   ├── InvocationStartEvent.java
│       │   │                   │   ├── InvocationStartSendRequestEvent.java
│       │   │                   │   ├── InvocationTimeoutCheckEvent.java
│       │   │                   │   ├── InvocationWithResponseEvent.java
│       │   │                   │   └── ServerAccessLogEvent.java
│       │   │                   ├── exception/
│       │   │                   │   ├── CoreExceptionConfiguration.java
│       │   │                   │   ├── CseException.java
│       │   │                   │   ├── DefaultExceptionProcessor.java
│       │   │                   │   ├── ExceptionCodes.java
│       │   │                   │   ├── ExceptionConverter.java
│       │   │                   │   ├── ExceptionProcessor.java
│       │   │                   │   ├── ExceptionUtils.java
│       │   │                   │   ├── Exceptions.java
│       │   │                   │   └── converter/
│       │   │                   │       ├── ConnectTimeoutExceptionConverter.java
│       │   │                   │       ├── ConstraintViolationExceptionConverter.java
│       │   │                   │       ├── DefaultExceptionConverter.java
│       │   │                   │       ├── IllegalArgumentExceptionConverter.java
│       │   │                   │       ├── InvocationExceptionConverter.java
│       │   │                   │       ├── ServiceCombExceptionConverter.java
│       │   │                   │       ├── TimeoutExceptionConverter.java
│       │   │                   │       └── ValidateDetail.java
│       │   │                   ├── executor/
│       │   │                   │   ├── ExecutorManager.java
│       │   │                   │   ├── GroupExecutor.java
│       │   │                   │   ├── GroupThreadFactory.java
│       │   │                   │   ├── LinkedBlockingQueueEx.java
│       │   │                   │   ├── ReactiveExecutor.java
│       │   │                   │   └── ThreadPoolExecutorEx.java
│       │   │                   ├── filter/
│       │   │                   │   ├── AbstractFilter.java
│       │   │                   │   ├── ConsumerFilter.java
│       │   │                   │   ├── CoreFilterConfiguration.java
│       │   │                   │   ├── EdgeFilter.java
│       │   │                   │   ├── Filter.java
│       │   │                   │   ├── FilterChainsManager.java
│       │   │                   │   ├── FilterNode.java
│       │   │                   │   ├── InvocationFilterChains.java
│       │   │                   │   ├── ProviderFilter.java
│       │   │                   │   └── impl/
│       │   │                   │       ├── ContextMapperFilter.java
│       │   │                   │       ├── EmptyFilter.java
│       │   │                   │       ├── JacksonPropertyNodeNameProvider.java
│       │   │                   │       ├── ParameterValidatorFilter.java
│       │   │                   │       ├── ProviderOperationFilter.java
│       │   │                   │       ├── RetryFilter.java
│       │   │                   │       └── ScheduleFilter.java
│       │   │                   ├── governance/
│       │   │                   │   ├── CoreGovernanceConfiguration.java
│       │   │                   │   ├── GovernanceConfiguration.java
│       │   │                   │   ├── MatchType.java
│       │   │                   │   ├── RetryContext.java
│       │   │                   │   ├── ServiceCombCircuitBreakerExtension.java
│       │   │                   │   ├── ServiceCombConfigurationEventAdapter.java
│       │   │                   │   ├── ServiceCombInstanceIsolationExtension.java
│       │   │                   │   ├── ServiceCombMicroserviceMeta.java
│       │   │                   │   └── ServiceCombRetryExtension.java
│       │   │                   ├── invocation/
│       │   │                   │   ├── CoreInvocationConfiguration.java
│       │   │                   │   ├── InvocationCreator.java
│       │   │                   │   ├── InvocationFactory.java
│       │   │                   │   ├── InvocationStageTrace.java
│       │   │                   │   ├── InvocationTimeoutBootListener.java
│       │   │                   │   ├── InvocationTimeoutStrategy.java
│       │   │                   │   ├── ProducerInvocationFlow.java
│       │   │                   │   ├── endpoint/
│       │   │                   │   │   ├── EndpointCacheUtils.java
│       │   │                   │   │   ├── EndpointContextRegister.java
│       │   │                   │   │   ├── EndpointMapper.java
│       │   │                   │   │   ├── EndpointMapperFactory.java
│       │   │                   │   │   └── EndpointUtils.java
│       │   │                   │   └── timeout/
│       │   │                   │       ├── PassingTimeStrategy.java
│       │   │                   │       └── ProcessingTimeStrategy.java
│       │   │                   ├── provider/
│       │   │                   │   ├── LocalOpenAPIRegistry.java
│       │   │                   │   ├── OpenAPIRegistry.java
│       │   │                   │   ├── OpenAPIRegistryManager.java
│       │   │                   │   ├── RegistryOpenAPIRegistry.java
│       │   │                   │   ├── consumer/
│       │   │                   │   │   ├── ConsumerProviderManager.java
│       │   │                   │   │   ├── InvokerUtils.java
│       │   │                   │   │   ├── MicroserviceReferenceConfig.java
│       │   │                   │   │   ├── ReactiveResponseExecutor.java
│       │   │                   │   │   ├── ReferenceConfig.java
│       │   │                   │   │   ├── ReferenceConfigManager.java
│       │   │                   │   │   └── SyncResponseExecutor.java
│       │   │                   │   └── producer/
│       │   │                   │       ├── AbstractProducerProvider.java
│       │   │                   │       ├── ProducerBootListener.java
│       │   │                   │       ├── ProducerMeta.java
│       │   │                   │       └── ProducerProviderManager.java
│       │   │                   ├── registry/
│       │   │                   │   └── discovery/
│       │   │                   │       └── EndpointDiscoveryFilter.java
│       │   │                   ├── tracing/
│       │   │                   │   ├── BraveTraceIdGenerator.java
│       │   │                   │   ├── ScbMarker.java
│       │   │                   │   ├── TraceIdGenerator.java
│       │   │                   │   └── TraceIdLogger.java
│       │   │                   └── transport/
│       │   │                       ├── AbstractTransport.java
│       │   │                       ├── TransportClassAnnotationProcessor.java
│       │   │                       ├── TransportManager.java
│       │   │                       └── TransportMethodAnnotationProcessor.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── services/
│       │       │   │   ├── org.apache.servicecomb.core.exception.ExceptionConverter
│       │       │   │   ├── org.apache.servicecomb.core.filter.FilterProvider
│       │       │   │   ├── org.apache.servicecomb.core.tracing.TraceIdGenerator
│       │       │   │   ├── org.apache.servicecomb.swagger.generator.ClassAnnotationProcessor
│       │       │   │   ├── org.apache.servicecomb.swagger.generator.MethodAnnotationProcessor
│       │       │   │   ├── org.apache.servicecomb.swagger.generator.SwaggerContextRegister
│       │       │   │   └── org.apache.servicecomb.swagger.invocation.arguments.consumer.ConsumerContextArgumentMapperFactory
│       │       │   └── spring/
│       │       │       └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │       └── microservice.yaml
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── servicecomb/
│           │               └── core/
│           │                   ├── Config.java
│           │                   ├── TestConfig.java
│           │                   ├── TestConfigurationSpringInitializer.java
│           │                   ├── TestEndpoint.java
│           │                   ├── TestException.java
│           │                   ├── TestInvocation.java
│           │                   ├── TestSCBApplicationListener.java
│           │                   ├── TestTransport.java
│           │                   ├── consumer/
│           │                   │   ├── TestReactiveResponseExecutor.java
│           │                   │   └── TestSyncResponseExecutor.java
│           │                   ├── definition/
│           │                   │   ├── MicroServicePropertyExtendedStub.java
│           │                   │   ├── OperationConfigTest.java
│           │                   │   └── TestMicroserviceMetaManager.java
│           │                   ├── event/
│           │                   │   └── TestInvocationStartEvent.java
│           │                   ├── exception/
│           │                   │   ├── ExceptionsTest.java
│           │                   │   └── converter/
│           │                   │       └── TimeoutExceptionConverterTest.java
│           │                   ├── executor/
│           │                   │   ├── TestExecutorManager.java
│           │                   │   ├── TestGroupExecutor.java
│           │                   │   └── TestThreadPoolExecutorEx.java
│           │                   ├── filter/
│           │                   │   ├── FilterChainTest.java
│           │                   │   └── impl/
│           │                   │       ├── ParameterValidatorFilterTest.java
│           │                   │       └── ProducerOperationFilterTest.java
│           │                   ├── invocation/
│           │                   │   ├── ProducerInvocationFlowTest.java
│           │                   │   ├── TestInvocationStageTrace.java
│           │                   │   ├── endpoint/
│           │                   │   │   ├── EndpointTest.java
│           │                   │   │   └── EndpointUtilsTest.java
│           │                   │   └── timeout/
│           │                   │       ├── PassingTimeStrategyTest.java
│           │                   │       └── ProcessingTimeStrategyTest.java
│           │                   ├── provider/
│           │                   │   ├── Person.java
│           │                   │   ├── consumer/
│           │                   │   │   └── TestInvokerUtils.java
│           │                   │   └── producer/
│           │                   │       ├── TestProducerBootListener.java
│           │                   │       ├── TestProducerMeta.java
│           │                   │       └── TestProducerProviderManager.java
│           │                   ├── registry/
│           │                   │   └── discovery/
│           │                   │       └── TestEndpointDiscoveryFilter.java
│           │                   ├── tracing/
│           │                   │   └── BraveTraceIdGeneratorTest.java
│           │                   └── transport/
│           │                       ├── TestAbstractTransport.java
│           │                       └── TestTransportManager.java
│           └── resources/
│               ├── META-INF/
│               │   └── spring/
│               │       └── cse.bean.xml
│               ├── log4j2.xml
│               ├── microservice.yaml
│               └── test/
│                   └── test/
│                       ├── microservice.yaml
│                       └── schema.yaml
├── coverage-reports/
│   └── pom.xml
├── demo/
│   ├── README.md
│   ├── assembly/
│   │   └── assembly.xml
│   ├── demo-consul/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ClientWebsocketController.java
│   │   │           │                   ├── ConsulConsumerApplication.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   ├── ConsumerReactiveStreamController.java
│   │   │           │                   ├── ProviderService.java
│   │   │           │                   └── User.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsulProviderApplication.java
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderController.java
│   │   │           │                   ├── ReactiveStreamController.java
│   │   │           │                   ├── User.java
│   │   │           │                   └── WebsocketController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── ConsulConfigIT.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   ├── ProviderIT.java
│   │           │   │                   ├── ReactiveStreamIT.java
│   │           │   │                   ├── TestClientApplication.java
│   │           │   │                   ├── ThirdSvcConfiguration.java
│   │           │   │                   ├── User.java
│   │           │   │                   └── WebsocketIT.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── ConsulIT.java
│   ├── demo-crossapp/
│   │   ├── crossapp-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── crossapp/
│   │   │       │   │                       ├── CrossappClient.java
│   │   │       │   │                       └── HelloWorld.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── crossapp/
│   │   │                                   └── CrossAppIT.java
│   │   ├── crossapp-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── crossapp/
│   │   │           │                       ├── CrossappServer.java
│   │   │           │                       └── HelloWorldImpl.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-cse-v1/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerConfigController.java
│   │   │           │                   ├── ConsumerConfigurationProperties.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── provider-canary/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── servicecomb/
│   │               │               └── samples/
│   │               │                   ├── Config.java
│   │               │                   ├── ConsumerConfigIT.java
│   │               │                   ├── HelloWorldIT.java
│   │               │                   └── TestClientApplication.java
│   │               └── resources/
│   │                   ├── application.yml
│   │                   └── log4j2.xml
│   ├── demo-cse-v2/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerConfigController.java
│   │   │           │                   ├── ConsumerConfigurationProperties.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── servicecomb/
│   │               │               └── samples/
│   │               │                   ├── Config.java
│   │               │                   ├── ConsumerConfigIT.java
│   │               │                   ├── HelloWorldIT.java
│   │               │                   └── TestClientApplication.java
│   │               └── resources/
│   │                   ├── application.yml
│   │                   └── log4j2.xml
│   ├── demo-edge/
│   │   ├── README.md
│   │   ├── authentication/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── authentication/
│   │   │           │                           ├── AuthImpl.java
│   │   │           │                           ├── AuthMain.java
│   │   │           │                           └── encrypt/
│   │   │           │                               ├── EncryptImpl.java
│   │   │           │                               └── Hcr.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── business-1-1-0/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── business/
│   │   │           │                           ├── BusinessMain_V1_1_0.java
│   │   │           │                           └── Impl.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── business-1.0.0/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── business/
│   │   │           │                           ├── BusinessMain_V1_0_0.java
│   │   │           │                           └── Impl.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── business-2.0.0/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── business/
│   │   │           │                           ├── BusinessMain_V2_0_0.java
│   │   │           │                           ├── EdgeServiceGovernanceService.java
│   │   │           │                           ├── Impl.java
│   │   │           │                           ├── ImplV2.java
│   │   │           │                           └── error/
│   │   │           │                               ├── CustomExceptionToProducerResponseConverter.java
│   │   │           │                               ├── ErrorData.java
│   │   │           │                               ├── ErrorService.java
│   │   │           │                               └── IllegalStateErrorData.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.apache.servicecomb.core.exception.ExceptionConverter
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── edge/
│   │   │       │   │                       └── consumer/
│   │   │       │   │                           ├── Consumer.java
│   │   │       │   │                           ├── ConsumerMain.java
│   │   │       │   │                           └── EdgeServiceGovernanceTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── edge/
│   │   │                                   └── consumer/
│   │   │                                       └── EdgeDemoIT.java
│   │   ├── edge-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       ├── EdgeMain.java
│   │   │           │                       ├── authentication/
│   │   │           │                       │   └── encrypt/
│   │   │           │                       │       └── Hcr.java
│   │   │           │                       └── service/
│   │   │           │                           ├── CustomResponseMetaMapper.java
│   │   │           │                           ├── EdgeConst.java
│   │   │           │                           ├── EdgeDispatcher.java
│   │   │           │                           ├── IllegalStateErrorData.java
│   │   │           │                           ├── encrypt/
│   │   │           │                           │   ├── Encrypt.java
│   │   │           │                           │   ├── EncryptContext.java
│   │   │           │                           │   ├── EncryptEdgeDispatcher.java
│   │   │           │                           │   └── filter/
│   │   │           │                           │       ├── DecodeBodyFilter.java
│   │   │           │                           │       ├── EdgeSignatureRequestFilter.java
│   │   │           │                           │       ├── EdgeSignatureResponseFilter.java
│   │   │           │                           │       └── UserIdFilter.java
│   │   │           │                           └── handler/
│   │   │           │                               ├── Auth.java
│   │   │           │                               └── AuthHandler.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       ├── org.apache.servicecomb.swagger.invocation.response.ResponseMetaMapper
│   │   │               │       └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── model/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── edge/
│   │   │                                   └── model/
│   │   │                                       ├── AppClientDataRsp.java
│   │   │                                       ├── ChannelRequestBase.java
│   │   │                                       ├── DependTypeA.java
│   │   │                                       ├── DependTypeB.java
│   │   │                                       ├── RecursiveSelfType.java
│   │   │                                       ├── ResultWithInstance.java
│   │   │                                       └── User.java
│   │   └── pom.xml
│   ├── demo-etcd/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ClientWebsocketController.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   ├── ConsumerReactiveStreamController.java
│   │   │           │                   ├── EtcdConsumerApplication.java
│   │   │           │                   ├── ProviderService.java
│   │   │           │                   └── User.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── EtcdProviderApplication.java
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderController.java
│   │   │           │                   ├── ReactiveStreamController.java
│   │   │           │                   ├── User.java
│   │   │           │                   └── WebsocketController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── EtcdConfigIT.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   ├── ProviderIT.java
│   │           │   │                   ├── ReactiveStreamIT.java
│   │           │   │                   ├── TestClientApplication.java
│   │           │   │                   ├── ThirdSvcConfiguration.java
│   │           │   │                   ├── User.java
│   │           │   │                   └── WebsocketIT.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── EtcdIT.java
│   ├── demo-filter/
│   │   ├── filter-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── filter/
│   │   │           │                       ├── FilterClient.java
│   │   │           │                       └── client/
│   │   │           │                           ├── ClientExceptionSchema.java
│   │   │           │                           ├── GovernanceConsumerSchema.java
│   │   │           │                           └── RetryClientSchema.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── filter-edge/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── filter/
│   │   │           │                       └── FilterEdge.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── filter-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── filter/
│   │   │           │                       ├── FilterServer.java
│   │   │           │                       └── server/
│   │   │           │                           ├── ExceptionSchema.java
│   │   │           │                           ├── GovernanceProviderSchema.java
│   │   │           │                           └── RetrySchema.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── filter-tests/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── filter/
│   │   │       │   │                       ├── FilterTests.java
│   │   │       │   │                       └── tests/
│   │   │       │   │                           ├── TestExceptionSchemaFromClient.java
│   │   │       │   │                           ├── TestGovernanceSchemaFromEdge.java
│   │   │       │   │                           ├── TestRetrySchemaFromClient.java
│   │   │       │   │                           └── TestRetrySchemaFromEdge.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       ├── microservice.yaml
│   │   │       │       ├── microservices/
│   │   │       │       │   └── com.servicecomb.filterEdge/
│   │   │       │       │       ├── GovernanceConsumerSchema.yaml
│   │   │       │       │       └── RetryClientSchema.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── filter/
│   │   │                                   └── retry/
│   │   │                                       └── FilterTestsIT.java
│   │   └── pom.xml
│   ├── demo-jaxrs/
│   │   ├── jaxrs-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── jaxrs/
│   │   │       │   │                       ├── JaxrsClient.java
│   │   │       │   │                       ├── client/
│   │   │       │   │                       │   ├── CodeFirstRestTemplateJaxrs.java
│   │   │       │   │                       │   ├── CustomLoadbalanceExtensionsFactory.java
│   │   │       │   │                       │   ├── MultiErrorCodeServiceClient.java
│   │   │       │   │                       │   ├── SchemeInterfaceJaxrs.java
│   │   │       │   │                       │   ├── TestClientTimeout.java
│   │   │       │   │                       │   ├── TestCodeFirstJaxrs.java
│   │   │       │   │                       │   ├── TestCodeFirstJaxrsReactive.java
│   │   │       │   │                       │   ├── TestDynamicConfig.java
│   │   │       │   │                       │   ├── TestFileUploadSchema.java
│   │   │       │   │                       │   ├── TestFormRequestSchema.java
│   │   │       │   │                       │   ├── TestQueryParamSchema.java
│   │   │       │   │                       │   ├── TestQueryParamWithListSchema.java
│   │   │       │   │                       │   ├── TestReactiveSchema.java
│   │   │       │   │                       │   ├── TestSchemeInterfaceJaxrs.java
│   │   │       │   │                       │   ├── beanParam/
│   │   │       │   │                       │   │   ├── BeanParamPojoClient.java
│   │   │       │   │                       │   │   ├── BeanParamRestTemplateClient.java
│   │   │       │   │                       │   │   └── BeanParamTestServiceIntf.java
│   │   │       │   │                       │   ├── injectBean/
│   │   │       │   │                       │   │   └── TestInjectBeanSchema.java
│   │   │       │   │                       │   ├── pojoDefault/
│   │   │       │   │                       │   │   ├── DefaultModel.java
│   │   │       │   │                       │   │   └── DefaultModelServiceClient.java
│   │   │       │   │                       │   └── validation/
│   │   │       │   │                       │       └── ValidationServiceClient.java
│   │   │       │   │                       └── server/
│   │   │       │   │                           └── pojoDefault/
│   │   │       │   │                               └── DefaultResponseModel.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── jaxrs/
│   │   │                                   └── JaxrsIT.java
│   │   ├── jaxrs-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── jaxrs/
│   │   │           │                       ├── JaxrsServer.java
│   │   │           │                       └── server/
│   │   │           │                           ├── CodeFirstJaxrs.java
│   │   │           │                           ├── ComputeImpl.java
│   │   │           │                           ├── FileUploadSchema.java
│   │   │           │                           ├── FormRequestSchema.java
│   │   │           │                           ├── JaxRSDefaultValues.java
│   │   │           │                           ├── QueryParamSchema.java
│   │   │           │                           ├── QueryParamWithListSchema.java
│   │   │           │                           ├── ReactiveSchema.java
│   │   │           │                           ├── RequestClientTimeOut.java
│   │   │           │                           ├── SchemeInterfaceJaxrs.java
│   │   │           │                           ├── SchemeInterfaceJaxrsImpl.java
│   │   │           │                           ├── Validator.java
│   │   │           │                           ├── beanParam/
│   │   │           │                           │   ├── BeanParamTestService.java
│   │   │           │                           │   ├── TestBeanParameter.java
│   │   │           │                           │   └── TestBeanParameterWithUpload.java
│   │   │           │                           ├── injectBean/
│   │   │           │                           │   ├── InjectBean.java
│   │   │           │                           │   ├── InjectBeanSchema.java
│   │   │           │                           │   └── InjectBeanVertxHttpDispatcher.java
│   │   │           │                           ├── multiErrorCode/
│   │   │           │                           │   ├── MultiErrorCodeService.java
│   │   │           │                           │   ├── NoClientErrorCode200.java
│   │   │           │                           │   └── NoClientErrorCode400.java
│   │   │           │                           ├── pojoDefault/
│   │   │           │                           │   ├── DefaultModelService.java
│   │   │           │                           │   ├── DefaultRequestModel.java
│   │   │           │                           │   └── DefaultResponseModel.java
│   │   │           │                           └── validation/
│   │   │           │                               └── ValidationService.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-local-registry/
│   │   ├── README.md
│   │   ├── demo-local-registry-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── localRegistryClient/
│   │   │       │   │                       ├── CodeFirstService.java
│   │   │       │   │                       ├── LocalRegistryClientApplication.java
│   │   │       │   │                       ├── LocalRegistryServerTest.java
│   │   │       │   │                       ├── RegistryBeansConfiguration.java
│   │   │       │   │                       └── ServerService.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── log4j2.xml
│   │   │       │       ├── microservices/
│   │   │       │       │   ├── demo-local-registry-server/
│   │   │       │       │   │   └── ServerEndpoint.yaml
│   │   │       │       │   ├── demo-local-registry-server-bean/
│   │   │       │       │   │   └── ServerEndpoint.yaml
│   │   │       │       │   └── demo-local-registry-server-bean2/
│   │   │       │       │       └── ServerEndpoint.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── localRegistryClient/
│   │   │                                   └── LocalRegistryIT.java
│   │   ├── demo-local-registry-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── localRegistryServer/
│   │   │           │                       ├── CodeFirstEndpoint.java
│   │   │           │                       ├── LocalRegistryServerApplication.java
│   │   │           │                       ├── SelfServiceInvoker.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   ├── demo-multi-registries/
│   │   ├── README.md
│   │   ├── demo-multi-registries-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── registry/
│   │   │       │   │                       ├── IServerEndpoint.java
│   │   │       │   │                       ├── IServiceCenterEndpoint.java
│   │   │       │   │                       ├── MultiRegistriesClientApplication.java
│   │   │       │   │                       ├── MultiRegistriesServerTestCase.java
│   │   │       │   │                       ├── SchemaDiscoveryTestCase.java
│   │   │       │   │                       ├── ServiceCenterEndpoint.java
│   │   │       │   │                       └── ServiceCenterTestCase.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── log4j2.xml
│   │   │       │       ├── microservices/
│   │   │       │       │   └── thirdParty-service-center/
│   │   │       │       │       └── ServiceCenterEndpoint.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── registry/
│   │   │                                   └── MultiRegistriesIT.java
│   │   ├── demo-multi-registries-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── registry/
│   │   │           │                       ├── MultiRegistriesServerApplication.java
│   │   │           │                       ├── SelfServiceInvoker.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   ├── demo-multi-service-center/
│   │   ├── demo-multi-service-center-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── multiServiceCenterClient/
│   │   │       │   │                       ├── Application.java
│   │   │       │   │                       ├── IConfigurationEndpoint.java
│   │   │       │   │                       ├── IServerEndpoint.java
│   │   │       │   │                       ├── RegistryClientTest.java
│   │   │       │   │                       ├── SC2Configuration.java
│   │   │       │   │                       ├── SC2Discovery.java
│   │   │       │   │                       ├── SC2Registration.java
│   │   │       │   │                       ├── ServerATest.java
│   │   │       │   │                       └── ServerBTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       └── log4j2.xml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── multiServiceCenterClient/
│   │   │                                   └── MultiServiceCenterIT.java
│   │   ├── demo-multi-service-center-serverA/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiServiceCenter/
│   │   │           │                       ├── ServerApplication.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-multi-service-center-serverB/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiServiceCenterServerB/
│   │   │           │                       ├── ConfigurationEndpoint.java
│   │   │           │                       ├── ServerApplication.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.properties
│   │   │               ├── application.yml
│   │   │               ├── log4j2.xml
│   │   │               ├── mapping.yaml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-multiple/
│   │   ├── a-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── a/
│   │   │           │                           └── client/
│   │   │           │                               ├── AClient.java
│   │   │           │                               ├── AClientMain.java
│   │   │           │                               └── AIntf.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── a-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── a/
│   │   │           │                           └── server/
│   │   │           │                               ├── AImpl.java
│   │   │           │                               └── AServerMain.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── b-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── b/
│   │   │           │                           └── client/
│   │   │           │                               ├── BClient.java
│   │   │           │                               ├── BClientMain.java
│   │   │           │                               └── BIntf.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── b-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── b/
│   │   │           │                           └── server/
│   │   │           │                               ├── BImpl.java
│   │   │           │                               └── BServerMain.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── multiple-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── multiple/
│   │   │       │   │                       └── client/
│   │   │       │   │                           └── MultipleClient.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── multiple/
│   │   │                                   └── client/
│   │   │                                       └── MultipleIT.java
│   │   ├── multiple-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── server/
│   │   │           │                           └── MultipleServer.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-nacos/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   └── TestClientApplication.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── NocasIT.java
│   ├── demo-pojo/
│   │   ├── pojo-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── pojo/
│   │   │       │   │                       └── client/
│   │   │       │   │                           ├── BeanRpcTest.java
│   │   │       │   │                           ├── ClientInterfaceForServerTest.java
│   │   │       │   │                           ├── CodeFirstPojoClient.java
│   │   │       │   │                           ├── CodeFirstPojoClientIntf.java
│   │   │       │   │                           ├── PojoClient.java
│   │   │       │   │                           ├── SchemaInterface.java
│   │   │       │   │                           ├── SchemeInterfacePojo.java
│   │   │       │   │                           ├── TestFlowControl.java
│   │   │       │   │                           ├── TestNotRecommendedService.java
│   │   │       │   │                           ├── TestRpcReferenceMethodInjection.java
│   │   │       │   │                           ├── TestSameService.java
│   │   │       │   │                           ├── TestSchemeInterface.java
│   │   │       │   │                           ├── TestSchemeInterfacePojo.java
│   │   │       │   │                           ├── TestTestImpl.java
│   │   │       │   │                           ├── TestWeakPojo.java
│   │   │       │   │                           └── invoker/
│   │   │       │   │                               ├── ClientModel.java
│   │   │       │   │                               └── TestInvokerEndpoint.java
│   │   │       │   └── resources/
│   │   │       │       ├── META-INF/
│   │   │       │       │   └── spring/
│   │   │       │       │       └── pojo.client.bean.xml
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── pojo/
│   │   │                                   └── PojoIT.java
│   │   ├── pojo-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── pojo/
│   │   │           │                       └── server/
│   │   │           │                           ├── CodeFirstPojo.java
│   │   │           │                           ├── FlowControlClientSchema.java
│   │   │           │                           ├── FlowControlSchema.java
│   │   │           │                           ├── HelloImpl.java
│   │   │           │                           ├── NotRecommendedService.java
│   │   │           │                           ├── PojoProducersCustomized.java
│   │   │           │                           ├── PojoServer.java
│   │   │           │                           ├── SchemaInterface.java
│   │   │           │                           ├── SchemaInterfaceImpl.java
│   │   │           │                           ├── SchemeInterfacePojo.java
│   │   │           │                           ├── SchemeInterfacePojoImpl.java
│   │   │           │                           ├── SmartCareImpl.java
│   │   │           │                           ├── TestImpl.java
│   │   │           │                           ├── WeakPojo.java
│   │   │           │                           ├── invoker/
│   │   │           │                           │   ├── InvokerEndpoint.java
│   │   │           │                           │   └── ServerModel.java
│   │   │           │                           └── same/
│   │   │           │                               ├── pk1/
│   │   │           │                               │   ├── SameInterface.java
│   │   │           │                               │   ├── SameInterfaceImpl.java
│   │   │           │                               │   └── SameService.java
│   │   │           │                               └── pk2/
│   │   │           │                                   ├── SameInterface.java
│   │   │           │                                   ├── SameInterfaceImpl.java
│   │   │           │                                   └── SameService.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── spring/
│   │   │               │       └── pojo.server.bean.xml
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-register-url-prefix/
│   │   ├── README.md
│   │   ├── demo-register-url-prefix-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── prefix/
│   │   │       │   │                       └── Application.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       └── log4j2.xml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── prefix/
│   │   │                                   └── RegisterUrlPrefixIT.java
│   │   ├── demo-register-url-prefix-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── prefix/
│   │   │           │                       ├── PrefixApplication.java
│   │   │           │                       └── RegisterUrlPrefixEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               ├── log4j2.xml
│   │   │               └── logback.xml
│   │   └── pom.xml
│   ├── demo-schema/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── demo/
│   │           │                   ├── CategorizedTestCase.java
│   │           │                   ├── CategorizedTestCaseRunner.java
│   │           │                   ├── CodeFirstPojoIntf.java
│   │           │                   ├── CodeFirstRestTemplate.java
│   │           │                   ├── CommonSchemaInterface.java
│   │           │                   ├── DemoConst.java
│   │           │                   ├── DemoSSLCustom.java
│   │           │                   ├── EmptyObject.java
│   │           │                   ├── Generic.java
│   │           │                   ├── RestObjectMapperWithStringMapper.java
│   │           │                   ├── RestObjectMapperWithStringMapperNotWriteNull.java
│   │           │                   ├── TestMgr.java
│   │           │                   ├── api/
│   │           │                   │   ├── IHeaderParamWithListSchema.java
│   │           │                   │   └── IHeaderParamWithListSchemaSpringMvc.java
│   │           │                   ├── compute/
│   │           │                   │   ├── Compute.java
│   │           │                   │   ├── GenericParam.java
│   │           │                   │   ├── GenericParamExtended.java
│   │           │                   │   ├── GenericParamWithJsonIgnore.java
│   │           │                   │   └── Person.java
│   │           │                   ├── controller/
│   │           │                   │   ├── Controller.java
│   │           │                   │   ├── Person.java
│   │           │                   │   └── PersonAlias.java
│   │           │                   ├── helloworld/
│   │           │                   │   └── greeter/
│   │           │                   │       └── Hello.java
│   │           │                   ├── ignore/
│   │           │                   │   ├── IgnoreInterface.java
│   │           │                   │   ├── InputModelForTestIgnore.java
│   │           │                   │   └── OutputModelForTestIgnore.java
│   │           │                   ├── jaxbbean/
│   │           │                   │   ├── JAXBJob.java
│   │           │                   │   └── JAXBPerson.java
│   │           │                   ├── jaxrs/
│   │           │                   │   └── server/
│   │           │                   │       └── validation/
│   │           │                   │           └── ValidationModel.java
│   │           │                   ├── mapnull/
│   │           │                   │   ├── ParseRequest.java
│   │           │                   │   └── ParseResponse.java
│   │           │                   ├── model/
│   │           │                   │   └── SpecialNameModel.java
│   │           │                   ├── multiErrorCode/
│   │           │                   │   ├── MultiRequest.java
│   │           │                   │   ├── MultiResponse200.java
│   │           │                   │   ├── MultiResponse400.java
│   │           │                   │   └── MultiResponse500.java
│   │           │                   ├── produceprocessor/
│   │           │                   │   ├── ProduceAppXmlProcessor.java
│   │           │                   │   └── override/
│   │           │                   │       └── ProduceAppXmlProcessor.java
│   │           │                   ├── server/
│   │           │                   │   ├── AbstractModel.java
│   │           │                   │   ├── DefaultAbstractModel.java
│   │           │                   │   ├── GenericsModel.java
│   │           │                   │   ├── MapModel.java
│   │           │                   │   ├── NotRecommendedServiceInf.java
│   │           │                   │   ├── SecondAbstractModel.java
│   │           │                   │   ├── Test.java
│   │           │                   │   ├── TestRequest.java
│   │           │                   │   ├── TestResponse.java
│   │           │                   │   ├── User.java
│   │           │                   │   └── WrappedAbstractModel.java
│   │           │                   ├── smartcare/
│   │           │                   │   ├── Application.java
│   │           │                   │   ├── Group.java
│   │           │                   │   ├── Response.java
│   │           │                   │   └── SmartCare.java
│   │           │                   ├── utils/
│   │           │                   │   └── JAXBUtils.java
│   │           │                   └── validator/
│   │           │                       ├── Student.java
│   │           │                       └── Teacher.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       └── org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor
│   │               └── microservice.yaml
│   ├── demo-spring-boot-transport/
│   │   ├── demo-spring-boot-pojo-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── springboot/
│   │   │       │   │                       └── pojo/
│   │   │       │   │                           ├── client/
│   │   │       │   │                           │   ├── DemoConst.java
│   │   │       │   │                           │   ├── PojoClient.java
│   │   │       │   │                           │   ├── PojoClientTest.java
│   │   │       │   │                           │   └── TestMgr.java
│   │   │       │   │                           └── server/
│   │   │       │   │                               └── schema/
│   │   │       │   │                                   └── server/
│   │   │       │   │                                       ├── Test.java
│   │   │       │   │                                       ├── TestRequest.java
│   │   │       │   │                                       ├── TestResponse.java
│   │   │       │   │                                       └── User.java
│   │   │       │   └── resources/
│   │   │       │       ├── META-INF/
│   │   │       │       │   └── spring/
│   │   │       │       │       └── pojo.client.bean.xml
│   │   │       │       └── application.yml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── springboot/
│   │   │                                   └── pojo/
│   │   │                                       └── client/
│   │   │                                           └── PojoClientIT.java
│   │   ├── demo-spring-boot-pojo-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── springboot/
│   │   │           │                       └── pojo/
│   │   │           │                           └── server/
│   │   │           │                               ├── PojoServer.java
│   │   │           │                               ├── handler/
│   │   │           │                               │   └── MyHandler.java
│   │   │           │                               └── schema/
│   │   │           │                                   ├── greeter/
│   │   │           │                                   │   └── Hello.java
│   │   │           │                                   └── server/
│   │   │           │                                       ├── HelloImpl.java
│   │   │           │                                       ├── Test.java
│   │   │           │                                       ├── TestImpl.java
│   │   │           │                                       ├── TestRequest.java
│   │   │           │                                       ├── TestResponse.java
│   │   │           │                                       └── User.java
│   │   │           └── resources/
│   │   │               └── application.yml
│   │   ├── demo-spring-boot-springmvc-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── springboot/
│   │   │       │   │                   └── springmvc/
│   │   │       │   │                       └── client/
│   │   │       │   │                           ├── PlaceHolderSchemaTest.java
│   │   │       │   │                           ├── ReactiveStreamIT.java
│   │   │       │   │                           ├── SpringMvcClient.java
│   │   │       │   │                           ├── TestAnnotationsSchema.java
│   │   │       │   │                           ├── ThirdSvcConfiguration.java
│   │   │       │   │                           └── UploadDownloadSchemaTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── certificates/
│   │   │       │       │   ├── server.p12
│   │   │       │       │   └── trust.jks
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── springboot/
│   │   │                               └── springmvc/
│   │   │                                   └── client/
│   │   │                                       └── SpringMvcClientIT.java
│   │   ├── demo-spring-boot-springmvc-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── springboot/
│   │   │           │                   └── springmvc/
│   │   │           │                       └── server/
│   │   │           │                           ├── AnnotationsSchema.java
│   │   │           │                           ├── PlaceHolderSchema.java
│   │   │           │                           ├── ReactiveStreamController.java
│   │   │           │                           ├── SpringmvcServer.java
│   │   │           │                           └── UploadDownloadSchema.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               ├── certificates/
│   │   │               │   ├── server.p12
│   │   │               │   └── trust.jks
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-springmvc/
│   │   ├── pom.xml
│   │   ├── springmvc-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── springmvc/
│   │   │       │   │                       ├── SpringmvcClient.java
│   │   │       │   │                       ├── client/
│   │   │       │   │                       │   ├── CodeFirstRestTemplateSpringmvc.java
│   │   │       │   │                       │   ├── CodeFirstSpringmvcIntf.java
│   │   │       │   │                       │   ├── CustomEndpointDiscoveryFilter.java
│   │   │       │   │                       │   ├── ICompatible1xTestSchema.java
│   │   │       │   │                       │   ├── ResponseOKData.java
│   │   │       │   │                       │   ├── SchemeInterfaceSpringmvc.java
│   │   │       │   │                       │   ├── SpringMVCSchema.java
│   │   │       │   │                       │   ├── TestAnnotationsSchema.java
│   │   │       │   │                       │   ├── TestBigNumberSchema.java
│   │   │       │   │                       │   ├── TestContentType.java
│   │   │       │   │                       │   ├── TestControllerImpl.java
│   │   │       │   │                       │   ├── TestDataTypesAnnotationsSchema.java
│   │   │       │   │                       │   ├── TestDateTimeSchema.java
│   │   │       │   │                       │   ├── TestDownloadSchema.java
│   │   │       │   │                       │   ├── TestFactoryBean.java
│   │   │       │   │                       │   ├── TestGeneric.java
│   │   │       │   │                       │   ├── TestInvokeWhenServerNotReady.java
│   │   │       │   │                       │   ├── TestManagementEndpoint.java
│   │   │       │   │                       │   ├── TestMaxHttpUrlLength.java
│   │   │       │   │                       │   ├── TestObject.java
│   │   │       │   │                       │   ├── TestResponse.java
│   │   │       │   │                       │   ├── TestRestTemplate.java
│   │   │       │   │                       │   ├── TestRetrySchema.java
│   │   │       │   │                       │   ├── TestSchemeInterfaceSpringmvc.java
│   │   │       │   │                       │   ├── TestSpringMVCCommonSchemaInterface.java
│   │   │       │   │                       │   ├── TestThirdPartyRegistration.java
│   │   │       │   │                       │   ├── TestThirdSvc.java
│   │   │       │   │                       │   ├── TestTransportSchema.java
│   │   │       │   │                       │   ├── TestUploadSchema.java
│   │   │       │   │                       │   ├── TestWeakSpringmvc.java
│   │   │       │   │                       │   ├── ThirdPartyService.java
│   │   │       │   │                       │   ├── ThirdSvc.java
│   │   │       │   │                       │   └── factory/
│   │   │       │   │                       │       ├── ServiceBean.java
│   │   │       │   │                       │       ├── ServiceFactoryBean.java
│   │   │       │   │                       │       ├── ServiceWithReference.java
│   │   │       │   │                       │       └── ServiceWithReferenceImpl.java
│   │   │       │   │                       └── decoderesponse/
│   │   │       │   │                           └── DecodeTestResponse.java
│   │   │       │   └── resources/
│   │   │       │       ├── META-INF/
│   │   │       │       │   └── spring/
│   │   │       │       │       └── springmvc.client.bean.xml
│   │   │       │       ├── SpringMVCSchema.yaml
│   │   │       │       ├── certificates/
│   │   │       │       │   ├── server.p12
│   │   │       │       │   └── trust.jks
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── springmvc/
│   │   │                                   └── SpringMvcIT.java
│   │   └── springmvc-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── servicecomb/
│   │               │               └── demo/
│   │               │                   └── springmvc/
│   │               │                       ├── SpringmvcServer.java
│   │               │                       ├── decoderesponse/
│   │               │                       │   └── DecodeTestResponse.java
│   │               │                       ├── filter/
│   │               │                       │   └── ProviderTestFilter.java
│   │               │                       ├── server/
│   │               │                       │   ├── AnnotationsSchema.java
│   │               │                       │   ├── BigNumberSchema.java
│   │               │                       │   ├── BizkeeperTest.java
│   │               │                       │   ├── CodeFirstSpringmvc.java
│   │               │                       │   ├── CodeFirstSpringmvcForSchema.java
│   │               │                       │   ├── Compatible1xTestSchema.java
│   │               │                       │   ├── CompatibleQueryBean.java
│   │               │                       │   ├── ConfigurationProblemsCollectorTest.java
│   │               │                       │   ├── ContentTypeSpringmvc.java
│   │               │                       │   ├── ContentTypeSpringmvcOverwrite.java
│   │               │                       │   ├── ControllerImpl.java
│   │               │                       │   ├── DataTypesAnnotationsSchema.java
│   │               │                       │   ├── DateTimeSchema.java
│   │               │                       │   ├── DownloadSchema.java
│   │               │                       │   ├── MyStrategy.java
│   │               │                       │   ├── MyStrategyFactory.java
│   │               │                       │   ├── ProducerTestsAfterBootup.java
│   │               │                       │   ├── ReadFileSource.java
│   │               │                       │   ├── ResponseOKData.java
│   │               │                       │   ├── ResponseOKException.java
│   │               │                       │   ├── ResponseOKExceptionConverter.java
│   │               │                       │   ├── RestProducersCustomized.java
│   │               │                       │   ├── RetrySchema.java
│   │               │                       │   ├── SchemeInterfaceSpringmvc.java
│   │               │                       │   ├── SchemeInterfaceSpringmvcImpl.java
│   │               │                       │   ├── SpringMVCCommonSchemaInterface.java
│   │               │                       │   ├── SpringMvcDefaultValues.java
│   │               │                       │   ├── TransportSchema.java
│   │               │                       │   ├── UploadSchema.java
│   │               │                       │   └── WeakSpringmvc.java
│   │               │                       └── third/
│   │               │                           ├── EarlyConsumer.java
│   │               │                           ├── HealthSchema.java
│   │               │                           ├── HeartBeatService.java
│   │               │                           ├── NormalConsumer.java
│   │               │                           └── Register.java
│   │               └── resources/
│   │                   ├── META-INF/
│   │                   │   └── services/
│   │                   │       ├── org.apache.servicecomb.core.exception.ExceptionConverter
│   │                   │       └── org.apache.servicecomb.qps.strategy.IStrategyFactory
│   │                   ├── certificates/
│   │                   │   ├── server.p12
│   │                   │   └── trust.jks
│   │                   ├── log4j2.xml
│   │                   ├── microservice.yaml
│   │                   └── schemas/
│   │                       └── CodeFirstSpringmvcForSchema.yaml
│   ├── demo-zeroconfig-registry/
│   │   ├── README.md
│   │   ├── demo-zeroconfig-registry-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── zeroconfig/
│   │   │           │                       └── client/
│   │   │           │                           ├── ClientApplication.java
│   │   │           │                           ├── ClientModel.java
│   │   │           │                           ├── ClientServerEndpoint.java
│   │   │           │                           ├── GovernanceEndpoint.java
│   │   │           │                           ├── IRpcEndpoint.java
│   │   │           │                           └── IServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-zeroconfig-registry-edge/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── zeroconfig/
│   │   │           │                       └── edge/
│   │   │           │                           ├── EdgeApplication.java
│   │   │           │                           ├── SelfServiceInvoker.java
│   │   │           │                           └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-zeroconfig-registry-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── zeroconfig/
│   │   │           │                       └── server/
│   │   │           │                           ├── GovernanceEndpoint.java
│   │   │           │                           ├── GovernanceNoPrefixEndpoint.java
│   │   │           │                           ├── RpcEndpoint.java
│   │   │           │                           ├── SelfServiceInvoker.java
│   │   │           │                           ├── ServerApplication.java
│   │   │           │                           └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-zeroconfig-registry-tests/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── zeroconfig/
│   │   │       │   │                       └── tests/
│   │   │       │   │                           ├── Application.java
│   │   │       │   │                           ├── ClientModel.java
│   │   │       │   │                           ├── GovernanceTest.java
│   │   │       │   │                           └── ServerTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── logback.xml
│   │   │       │       ├── microservices/
│   │   │       │       │   ├── demo-zeroconfig-registry-client/
│   │   │       │       │   │   ├── ClientServerEndpoint.yaml
│   │   │       │       │   │   ├── GovernanceEndpoint.yaml
│   │   │       │       │   │   └── SchemaDiscoveryEndpoint.yaml
│   │   │       │       │   └── demo-zeroconfig-registry-edge/
│   │   │       │       │       ├── ClientServerEndpoint.yaml
│   │   │       │       │       └── SchemaDiscoveryEndpoint.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── zeroconfig/
│   │   │                                   └── tests/
│   │   │                                       └── ZeroConfigRegistryIT.java
│   │   └── pom.xml
│   ├── demo-zookeeper/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ClientWebsocketController.java
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   ├── ConsumerReactiveStreamController.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   ├── ProviderController.java
│   │   │           │                   ├── ReactiveStreamController.java
│   │   │           │                   └── WebsocketController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   ├── ReactiveStreamIT.java
│   │           │   │                   ├── TestClientApplication.java
│   │           │   │                   ├── ThirdSvcConfiguration.java
│   │           │   │                   └── WebsocketIT.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── ZookeeperIT.java
│   └── pom.xml
├── dependencies/
│   ├── bom/
│   │   └── pom.xml
│   ├── default/
│   │   └── pom.xml
│   └── pom.xml
├── distribution/
│   ├── pom.xml
│   └── src/
│       ├── assembly/
│       │   ├── bin.xml
│       │   └── src.xml
│       └── release/
│           ├── LICENSE
│           ├── NOTICE
│           └── licenses/
│               ├── LICENSE-abego
│               ├── LICENSE-animalsniffer
│               ├── LICENSE-antlr
│               ├── LICENSE-asm
│               ├── LICENSE-bouncycastle
│               ├── LICENSE-cc0
│               ├── LICENSE-cddl
│               ├── LICENSE-checkerqual
│               ├── LICENSE-edl-v10
│               ├── LICENSE-epl-v10
│               ├── LICENSE-epl-v20
│               ├── LICENSE-hamcrest
│               ├── LICENSE-hdrhistogram
│               ├── LICENSE-icu4j
│               ├── LICENSE-jcodings
│               ├── LICENSE-joni
│               ├── LICENSE-jopt
│               ├── LICENSE-jsonp
│               ├── LICENSE-jsoup
│               ├── LICENSE-jsr311-api
│               ├── LICENSE-logback
│               ├── LICENSE-mozilla-v20
│               ├── LICENSE-protobuf
│               ├── LICENSE-slf4j
│               ├── LICENSE-woodstox-stax2-api
│               ├── NOTICE-apache-commons-codec
│               ├── NOTICE-netty
│               ├── NOTICE-prometheus
│               ├── NOTICE-protostuff
│               └── NOTICE-tomcat
├── dynamic-config/
│   ├── config-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── apollo/
│   │       │   │                       ├── ApolloClient.java
│   │       │   │                       ├── ApolloConfig.java
│   │       │   │                       ├── ApolloConfiguration.java
│   │       │   │                       ├── ApolloDynamicPropertiesSource.java
│   │       │   │                       └── ConfigurationAction.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── apollo/
│   │           │                       └── ApolloClientTest.java
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-cc/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── cc/
│   │       │   │                       ├── ConfigCenterConfig.java
│   │       │   │                       ├── ConfigCenterConfiguration.java
│   │       │   │                       ├── ConfigCenterDynamicPropertiesSource.java
│   │       │   │                       ├── ConfigCenterInformationCollector.java
│   │       │   │                       └── TransportUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │           │   └── org.apache.servicecomb.core.bootup.BootUpInformationCollector
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── cc/
│   │           │                       ├── ConfigCenterAddressManagerTest.java
│   │           │                       └── ConfigCenterConfigurationSourceImplTest.java
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-consul/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── consul/
│   │           │                       ├── ConsulConfig.java
│   │           │                       ├── ConsulConfigClient.java
│   │           │                       ├── ConsulConfigProperties.java
│   │           │                       └── ConsulDynamicPropertiesSource.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.config.DynamicPropertiesSource
│   ├── config-etcd/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── etcd/
│   │           │                       ├── EtcdClient.java
│   │           │                       ├── EtcdConfig.java
│   │           │                       └── EtcdDynamicPropertiesSource.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.config.DynamicPropertiesSource
│   ├── config-kie/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── kie/
│   │       │   │                       ├── KieConfig.java
│   │       │   │                       ├── KieConfigConfiguration.java
│   │       │   │                       ├── KieDynamicPropertiesSource.java
│   │       │   │                       ├── TransportUtils.java
│   │       │   │                       └── collect/
│   │       │   │                           └── KieClientInformationCollector.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │           │   └── org.apache.servicecomb.core.bootup.BootUpInformationCollector
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-nacos/
│   │   ├── README.md
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── nacos/
│   │       │   │                       ├── NacosClient.java
│   │       │   │                       ├── NacosConfig.java
│   │       │   │                       └── NacosDynamicPropertiesSource.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       └── test/
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-zookeeper/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── zookeeper/
│   │           │                       ├── ZookeeperClient.java
│   │           │                       ├── ZookeeperConfig.java
│   │           │                       └── ZookeeperDynamicPropertiesSource.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.config.DynamicPropertiesSource
│   └── pom.xml
├── edge/
│   ├── edge-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── edge/
│   │       │   │                   └── core/
│   │       │   │                       ├── AbstractEdgeDispatcher.java
│   │       │   │                       ├── CommonHttpEdgeDispatcher.java
│   │       │   │                       ├── DefaultEdgeDispatcher.java
│   │       │   │                       ├── EdgeAddHeaderFilter.java
│   │       │   │                       ├── EdgeBootListener.java
│   │       │   │                       ├── EdgeCoreConfiguration.java
│   │       │   │                       ├── EdgeInvocationCreator.java
│   │       │   │                       ├── EdgeRestServerVerticle.java
│   │       │   │                       └── URLMappedEdgeDispatcher.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── microservice.yaml
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── edge/
│   │                               └── core/
│   │                                   ├── TestAbstractEdgeDispatcher.java
│   │                                   ├── TestURLMappedEdgeDispatcher.java
│   │                                   └── TestUtils.java
│   └── pom.xml
├── etc/
│   ├── code-templates.xml
│   ├── eclipse-java-google-style.xml
│   └── intellij-java-google-style.xml
├── foundations/
│   ├── foundation-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── foundation/
│   │       │   │                   ├── auth/
│   │       │   │                   │   ├── Cipher.java
│   │       │   │                   │   ├── DefaultCipher.java
│   │       │   │                   │   ├── FoundationCommonAuthConfiguration.java
│   │       │   │                   │   └── ShaAKSKCipher.java
│   │       │   │                   ├── common/
│   │       │   │                   │   ├── AbstractObjectManager.java
│   │       │   │                   │   ├── CommonThread.java
│   │       │   │                   │   ├── DynamicObject.java
│   │       │   │                   │   ├── Holder.java
│   │       │   │                   │   ├── LegacyPropertyFactory.java
│   │       │   │                   │   ├── NamedThreadFactory.java
│   │       │   │                   │   ├── ParameterizedTypeUtil.java
│   │       │   │                   │   ├── RegisterManager.java
│   │       │   │                   │   ├── VendorExtensions.java
│   │       │   │                   │   ├── Version.java
│   │       │   │                   │   ├── base/
│   │       │   │                   │   │   ├── DescriptiveRunnable.java
│   │       │   │                   │   │   ├── DynamicEnum.java
│   │       │   │                   │   │   ├── DynamicEnumCache.java
│   │       │   │                   │   │   ├── EnumUtils.java
│   │       │   │                   │   │   └── ServiceCombConstants.java
│   │       │   │                   │   ├── cache/
│   │       │   │                   │   │   └── VersionedCache.java
│   │       │   │                   │   ├── concurrency/
│   │       │   │                   │   │   └── SuppressedRunnableWrapper.java
│   │       │   │                   │   ├── concurrent/
│   │       │   │                   │   │   └── ConcurrentHashMapEx.java
│   │       │   │                   │   ├── config/
│   │       │   │                   │   │   ├── ConfigLoader.java
│   │       │   │                   │   │   ├── PaaSResourceUtils.java
│   │       │   │                   │   │   └── impl/
│   │       │   │                   │   │       ├── AbstractLoader.java
│   │       │   │                   │   │       ├── PaaSPropertiesLoaderUtils.java
│   │       │   │                   │   │       ├── PropertiesLoader.java
│   │       │   │                   │   │       └── XmlLoaderUtils.java
│   │       │   │                   │   ├── encrypt/
│   │       │   │                   │   │   ├── Encryption.java
│   │       │   │                   │   │   ├── Encryptions.java
│   │       │   │                   │   │   └── NoEncryption.java
│   │       │   │                   │   ├── event/
│   │       │   │                   │   │   ├── AlarmEvent.java
│   │       │   │                   │   │   ├── EnableExceptionPropagation.java
│   │       │   │                   │   │   ├── EventManager.java
│   │       │   │                   │   │   ├── SimpleEventBus.java
│   │       │   │                   │   │   ├── SimpleSubscriber.java
│   │       │   │                   │   │   └── SubscriberOrder.java
│   │       │   │                   │   ├── exceptions/
│   │       │   │                   │   │   └── ServiceCombException.java
│   │       │   │                   │   ├── http/
│   │       │   │                   │   │   ├── HttpStatus.java
│   │       │   │                   │   │   ├── HttpStatusManager.java
│   │       │   │                   │   │   ├── HttpStatusUtils.java
│   │       │   │                   │   │   └── HttpUtils.java
│   │       │   │                   │   ├── io/
│   │       │   │                   │   │   └── AsyncCloseable.java
│   │       │   │                   │   ├── log/
│   │       │   │                   │   │   └── AbstractMarker.java
│   │       │   │                   │   ├── net/
│   │       │   │                   │   │   ├── IpPort.java
│   │       │   │                   │   │   ├── NetUtils.java
│   │       │   │                   │   │   └── URIEndpointObject.java
│   │       │   │                   │   ├── part/
│   │       │   │                   │   │   ├── AbstractPart.java
│   │       │   │                   │   │   ├── FilePart.java
│   │       │   │                   │   │   ├── FilePartForSend.java
│   │       │   │                   │   │   ├── InputStreamPart.java
│   │       │   │                   │   │   └── ResourcePart.java
│   │       │   │                   │   ├── spring/
│   │       │   │                   │   │   └── PaasNamespaceHandler.java
│   │       │   │                   │   └── utils/
│   │       │   │                   │       ├── AbstractRestObjectMapper.java
│   │       │   │                   │       ├── AsyncUtils.java
│   │       │   │                   │       ├── BeanUtils.java
│   │       │   │                   │       ├── ClassLoaderScopeContext.java
│   │       │   │                   │       ├── ConditionWaiter.java
│   │       │   │                   │       ├── ExceptionUtils.java
│   │       │   │                   │       ├── FilePerm.java
│   │       │   │                   │       ├── FortifyUtils.java
│   │       │   │                   │       ├── GenericsUtils.java
│   │       │   │                   │       ├── IOUtils.java
│   │       │   │                   │       ├── JsonUtils.java
│   │       │   │                   │       ├── JvmUtils.java
│   │       │   │                   │       ├── KeyPairEntry.java
│   │       │   │                   │       ├── KeyPairUtils.java
│   │       │   │                   │       ├── LambdaMetafactoryUtils.java
│   │       │   │                   │       ├── LambdaUtils.java
│   │       │   │                   │       ├── MimeTypesUtils.java
│   │       │   │                   │       ├── MuteExceptionUtil.java
│   │       │   │                   │       ├── PartUtils.java
│   │       │   │                   │       ├── ReflectUtils.java
│   │       │   │                   │       ├── ResourceUtil.java
│   │       │   │                   │       ├── RestObjectMapper.java
│   │       │   │                   │       ├── StringBuilderUtils.java
│   │       │   │                   │       ├── TimeUtils.java
│   │       │   │                   │       ├── TypesUtil.java
│   │       │   │                   │       ├── bean/
│   │       │   │                   │       │   ├── ArrayGetter.java
│   │       │   │                   │       │   ├── ArraySetter.java
│   │       │   │                   │       │   ├── BoolGetter.java
│   │       │   │                   │       │   ├── BoolSetter.java
│   │       │   │                   │       │   ├── ByteGetter.java
│   │       │   │                   │       │   ├── ByteSetter.java
│   │       │   │                   │       │   ├── CharGetter.java
│   │       │   │                   │       │   ├── CharSetter.java
│   │       │   │                   │       │   ├── DoubleGetter.java
│   │       │   │                   │       │   ├── DoubleSetter.java
│   │       │   │                   │       │   ├── FloatGetter.java
│   │       │   │                   │       │   ├── FloatSetter.java
│   │       │   │                   │       │   ├── Getter.java
│   │       │   │                   │       │   ├── IntGetter.java
│   │       │   │                   │       │   ├── IntSetter.java
│   │       │   │                   │       │   ├── LongGetter.java
│   │       │   │                   │       │   ├── LongSetter.java
│   │       │   │                   │       │   ├── MapGetter.java
│   │       │   │                   │       │   ├── MapSetter.java
│   │       │   │                   │       │   ├── Setter.java
│   │       │   │                   │       │   ├── ShortGetter.java
│   │       │   │                   │       │   └── ShortSetter.java
│   │       │   │                   │       └── json/
│   │       │   │                   │           ├── JavaxServletPartDeserializer.java
│   │       │   │                   │           ├── JavaxServletPartSerializer.java
│   │       │   │                   │           └── PartModule.java
│   │       │   │                   └── token/
│   │       │   │                       └── Keypair4Auth.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── mime.types
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.foundation.common.encrypt.Encryption
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── common/
│   │           │                       ├── DynamicObjectTest.java
│   │           │                       ├── base/
│   │           │                       │   └── DynamicEnumTest.java
│   │           │                       ├── cache/
│   │           │                       │   └── TestVersionedCache.java
│   │           │                       ├── concurrency/
│   │           │                       │   └── RunnableWrapperTest.java
│   │           │                       ├── config/
│   │           │                       │   └── BeanProp.java
│   │           │                       ├── encrypt/
│   │           │                       │   └── TestEncryptions.java
│   │           │                       ├── event/
│   │           │                       │   ├── TestEventBus.java
│   │           │                       │   └── TestEventManager.java
│   │           │                       ├── http/
│   │           │                       │   ├── TestHttpStatus.java
│   │           │                       │   ├── TestHttpStatusUtils.java
│   │           │                       │   └── TestHttpUtils.java
│   │           │                       ├── net/
│   │           │                       │   ├── TestIpPort.java
│   │           │                       │   ├── TestNetUtils.java
│   │           │                       │   └── TestURIEndpointObject.java
│   │           │                       ├── part/
│   │           │                       │   ├── TestAbstractPart.java
│   │           │                       │   ├── TestFilePart.java
│   │           │                       │   ├── TestInputStreamPart.java
│   │           │                       │   └── TestResourcePart.java
│   │           │                       ├── spring/
│   │           │                       │   └── TestPaasNamespaceHandler.java
│   │           │                       └── utils/
│   │           │                           ├── AsyncUtilsTest.java
│   │           │                           ├── JsonUtilsTest.java
│   │           │                           ├── ResourceUtilTest.java
│   │           │                           ├── TestExceptionUtils.java
│   │           │                           ├── TestFileNameTooLong.java
│   │           │                           ├── TestFortifyUtils.java
│   │           │                           ├── TestGenericsUtils.java
│   │           │                           ├── TestIOUtils.java
│   │           │                           ├── TestJvmUtils.java
│   │           │                           ├── TestLambdaMetafactoryUtils.java
│   │           │                           ├── TestLambdaPerformance.java
│   │           │                           ├── TestMimeTypesUtils.java
│   │           │                           ├── TestRSAUtil.java
│   │           │                           └── TestTypesUtil.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── spring/
│   │               │       └── config.bean.xml
│   │               └── log4j2.xml
│   ├── foundation-config/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   ├── BootStrapProperties.java
│   │       │   │                   ├── ConfigEnvironmentPostProcessor.java
│   │       │   │                   ├── ConfigMapping.java
│   │       │   │                   ├── ConfigUtil.java
│   │       │   │                   ├── ConfigurationChangedEvent.java
│   │       │   │                   ├── DataCenterProperties.java
│   │       │   │                   ├── DynamicProperties.java
│   │       │   │                   ├── DynamicPropertiesImpl.java
│   │       │   │                   ├── DynamicPropertiesSource.java
│   │       │   │                   ├── FoundationConfigConfiguration.java
│   │       │   │                   ├── InMemoryDynamicPropertiesSource.java
│   │       │   │                   ├── YAMLUtil.java
│   │       │   │                   ├── file/
│   │       │   │                   │   ├── AbstractConfigLoader.java
│   │       │   │                   │   ├── ConfigModel.java
│   │       │   │                   │   ├── MicroserviceConfigLoader.java
│   │       │   │                   │   └── YAMLConfigLoader.java
│   │       │   │                   ├── inject/
│   │       │   │                   │   ├── InjectBeanPostProcessor.java
│   │       │   │                   │   ├── InjectProperties.java
│   │       │   │                   │   ├── InjectProperty.java
│   │       │   │                   │   └── PlaceholderResolver.java
│   │       │   │                   ├── parser/
│   │       │   │                   │   ├── Parser.java
│   │       │   │                   │   ├── PropertiesParser.java
│   │       │   │                   │   ├── RawParser.java
│   │       │   │                   │   └── YamlParser.java
│   │       │   │                   └── priority/
│   │       │   │                       ├── ConfigObject.java
│   │       │   │                       ├── ConfigObjectFactory.java
│   │       │   │                       ├── ConfigObjectProperty.java
│   │       │   │                       ├── DynamicProperty.java
│   │       │   │                       ├── PriorityProperty.java
│   │       │   │                       ├── PriorityPropertyFactory.java
│   │       │   │                       ├── PriorityPropertyManager.java
│   │       │   │                       └── PriorityPropertyType.java
│   │       │   └── resources/
│   │       │       ├── META-INF/
│   │       │       │   ├── services/
│   │       │       │   │   └── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │       │   ├── spring/
│   │       │       │   │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       │       │   └── spring.factories
│   │       │       └── mapping.yaml
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   ├── BootStrapPropertiesTest.java
│   │           │                   ├── DynamicPropertiesTest.java
│   │           │                   ├── TestConfigMapping.java
│   │           │                   ├── TestYAMLUtil.java
│   │           │                   ├── file/
│   │           │                   │   └── TestMicroserviceConfigLoader.java
│   │           │                   ├── inject/
│   │           │                   │   ├── TestConfigObjectFactory.java
│   │           │                   │   └── TestPlaceholderResolver.java
│   │           │                   ├── parser/
│   │           │                   │   └── TestParser.java
│   │           │                   └── priority/
│   │           │                       ├── TestPriorityProperty.java
│   │           │                       ├── TestPriorityPropertyBase.java
│   │           │                       ├── TestPriorityPropertyFactory.java
│   │           │                       └── TestPriorityPropertyManager.java
│   │           └── resources/
│   │               ├── empty.yaml
│   │               ├── m1.yaml
│   │               ├── mapping.yaml
│   │               ├── microservice.yaml
│   │               ├── test1.yaml
│   │               └── test2.yaml
│   ├── foundation-metrics/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       └── metrics/
│   │       │                           ├── MetricsBootstrap.java
│   │       │                           ├── MetricsBootstrapConfig.java
│   │       │                           ├── MetricsInitializer.java
│   │       │                           ├── PolledEvent.java
│   │       │                           ├── health/
│   │       │                           │   ├── HealthCheckResult.java
│   │       │                           │   ├── HealthChecker.java
│   │       │                           │   └── HealthCheckerManager.java
│   │       │                           ├── meter/
│   │       │                           │   ├── LatencyDistributionConfig.java
│   │       │                           │   ├── LatencyScopeConfig.java
│   │       │                           │   └── PeriodMeter.java
│   │       │                           └── publish/
│   │       │                               ├── DefaultTagFinder.java
│   │       │                               ├── MeasurementGroupConfig.java
│   │       │                               ├── MeasurementNode.java
│   │       │                               ├── MeasurementTree.java
│   │       │                               └── TagFinder.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── foundation/
│   │                               └── metrics/
│   │                                   ├── TestMetricsBootstrap.java
│   │                                   ├── health/
│   │                                   │   └── TestHealthCheckerManager.java
│   │                                   ├── meter/
│   │                                   │   └── TestLatencyDistributionConfig.java
│   │                                   └── publish/
│   │                                       └── spectator/
│   │                                           ├── TestDefaultTagFinder.java
│   │                                           ├── TestMeasurementGroupConfig.java
│   │                                           ├── TestMeasurementNode.java
│   │                                           ├── TestMeasurementTree.java
│   │                                           └── TestTagFinder.java
│   ├── foundation-protobuf/
│   │   ├── README.md
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   ├── io/
│   │       │   │   │   └── protostuff/
│   │       │   │   │       ├── ByteArrayInputEx.java
│   │       │   │   │       ├── InputEx.java
│   │       │   │   │       ├── OutputEx.java
│   │       │   │   │       ├── ProtobufOutputEx.java
│   │       │   │   │       ├── SchemaEx.java
│   │       │   │   │       ├── SchemaReader.java
│   │       │   │   │       ├── SchemaWriter.java
│   │       │   │   │       ├── package-info.java
│   │       │   │   │       └── runtime/
│   │       │   │   │           ├── ArrayFieldMapEx.java
│   │       │   │   │           ├── FieldMapEx.java
│   │       │   │   │           ├── FieldSchema.java
│   │       │   │   │           ├── FieldTypeUtils.java
│   │       │   │   │           └── HashFieldMapEx.java
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── foundation/
│   │       │   │                   └── protobuf/
│   │       │   │                       ├── ProtoMapper.java
│   │       │   │                       ├── ProtoMapperFactory.java
│   │       │   │                       ├── RootDeserializer.java
│   │       │   │                       ├── RootSerializer.java
│   │       │   │                       ├── internal/
│   │       │   │                       │   ├── ProtoConst.java
│   │       │   │                       │   ├── ProtoUtils.java
│   │       │   │                       │   ├── bean/
│   │       │   │                       │   │   ├── BeanDescriptor.java
│   │       │   │                       │   │   ├── BeanDescriptorManager.java
│   │       │   │                       │   │   ├── PropertyDescriptor.java
│   │       │   │                       │   │   └── PropertyWrapper.java
│   │       │   │                       │   ├── parser/
│   │       │   │                       │   │   ├── ContentFileReader.java
│   │       │   │                       │   │   └── ProtoParser.java
│   │       │   │                       │   └── schema/
│   │       │   │                       │       ├── EnumMeta.java
│   │       │   │                       │       ├── MessageAsFieldSchema.java
│   │       │   │                       │       ├── PropertyWrapperAsFieldSchema.java
│   │       │   │                       │       ├── SchemaManager.java
│   │       │   │                       │       ├── any/
│   │       │   │                       │       │   ├── AnyEntry.java
│   │       │   │                       │       │   ├── AnyEntrySchema.java
│   │       │   │                       │       │   └── AnySchema.java
│   │       │   │                       │       ├── deserializer/
│   │       │   │                       │       │   ├── DeserializerSchemaManager.java
│   │       │   │                       │       │   ├── MessageReadSchema.java
│   │       │   │                       │       │   ├── repeated/
│   │       │   │                       │       │   │   ├── AbstractPrimitiveReaders.java
│   │       │   │                       │       │   │   ├── AbstractReaders.java
│   │       │   │                       │       │   │   ├── PrimitiveArrayBuilderWrapper.java
│   │       │   │                       │       │   │   ├── RepeatedReadSchemas.java
│   │       │   │                       │       │   │   ├── RepeatedReader.java
│   │       │   │                       │       │   │   └── impl/
│   │       │   │                       │       │   │       ├── AnyRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── BytesRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── MessageRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── PropertyWrapperRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── StringRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── bools/
│   │       │   │                       │       │   │       │   ├── BoolRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── BoolNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── BoolPackedReadSchemas.java
│   │       │   │                       │       │   │       ├── doubles/
│   │       │   │                       │       │   │       │   ├── DoubleRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── DoubleNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── DoublePackedReadSchemas.java
│   │       │   │                       │       │   │       ├── enums/
│   │       │   │                       │       │   │       │   ├── EnumNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │   ├── EnumPackedReadSchemas.java
│   │       │   │                       │       │   │       │   └── EnumSchemaUtils.java
│   │       │   │                       │       │   │       ├── floats/
│   │       │   │                       │       │   │       │   ├── FloatRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── FloatNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── FloatPackedReadSchemas.java
│   │       │   │                       │       │   │       ├── ints/
│   │       │   │                       │       │   │       │   ├── IntRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── Fixed32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── Fixed32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── Int32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── Int32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SFixed32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SFixed32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SInt32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SInt32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── UInt32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── UInt32PackedReadSchemas.java
│   │       │   │                       │       │   │       └── longs/
│   │       │   │                       │       │   │           ├── LongRepeatedReadSchemas.java
│   │       │   │                       │       │   │           └── impl/
│   │       │   │                       │       │   │               ├── Fixed64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── Fixed64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── Int64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── Int64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SFixed64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SFixed64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SInt64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SInt64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── UInt64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               └── UInt64PackedReadSchemas.java
│   │       │   │                       │       │   └── scalar/
│   │       │   │                       │       │       ├── AbstractScalarReadSchemas.java
│   │       │   │                       │       │       ├── BoolReadSchemas.java
│   │       │   │                       │       │       ├── BytesReadSchemas.java
│   │       │   │                       │       │       ├── DoubleReadSchemas.java
│   │       │   │                       │       │       ├── EnumsReadSchemas.java
│   │       │   │                       │       │       ├── Fixed32ReadSchemas.java
│   │       │   │                       │       │       ├── Fixed64ReadSchemas.java
│   │       │   │                       │       │       ├── FloatReadSchemas.java
│   │       │   │                       │       │       ├── Int32ReadSchemas.java
│   │       │   │                       │       │       ├── Int64ReadSchemas.java
│   │       │   │                       │       │       ├── SFixed32ReadSchemas.java
│   │       │   │                       │       │       ├── SFixed64ReadSchemas.java
│   │       │   │                       │       │       ├── SInt32ReadSchemas.java
│   │       │   │                       │       │       ├── SInt64ReadSchemas.java
│   │       │   │                       │       │       ├── StringReadSchemas.java
│   │       │   │                       │       │       ├── UInt32ReadSchemas.java
│   │       │   │                       │       │       └── UInt64ReadSchemas.java
│   │       │   │                       │       ├── map/
│   │       │   │                       │       │   ├── MapEntry.java
│   │       │   │                       │       │   ├── MapEntrySchema.java
│   │       │   │                       │       │   └── MapSchema.java
│   │       │   │                       │       └── serializer/
│   │       │   │                       │           ├── MessageWriteSchema.java
│   │       │   │                       │           ├── SerializerSchemaManager.java
│   │       │   │                       │           ├── repeated/
│   │       │   │                       │           │   ├── AbstractPrimitiveWriters.java
│   │       │   │                       │           │   ├── AbstractWriters.java
│   │       │   │                       │           │   ├── RepeatedPrimitiveWriteSchemas.java
│   │       │   │                       │           │   ├── RepeatedWriteSchemas.java
│   │       │   │                       │           │   └── impl/
│   │       │   │                       │           │       ├── AnyRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── BytesRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── MessagesRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── PropertyWrapperRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── StringsRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── bools/
│   │       │   │                       │           │       │   ├── BoolNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── BoolPackedWriteSchemas.java
│   │       │   │                       │           │       ├── doubles/
│   │       │   │                       │           │       │   ├── DoubleNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── DoublePackedWriteSchemas.java
│   │       │   │                       │           │       ├── enums/
│   │       │   │                       │           │       │   ├── EnumNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── EnumPackedWriteSchemas.java
│   │       │   │                       │           │       ├── floats/
│   │       │   │                       │           │       │   ├── FloatNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── FloatPackedWriteSchemas.java
│   │       │   │                       │           │       ├── ints/
│   │       │   │                       │           │       │   ├── Fixed32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── Fixed32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── Int32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── Int32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SFixed32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SFixed32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SInt32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SInt32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── UInt32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── UInt32PackedWriteSchemas.java
│   │       │   │                       │           │       └── longs/
│   │       │   │                       │           │           ├── Fixed64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── Fixed64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── Int64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── Int64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── SFixed64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── SFixed64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── SInt64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── SInt64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── UInt64NotPackedWriteSchemas.java
│   │       │   │                       │           │           └── UInt64PackedWriteSchemas.java
│   │       │   │                       │           └── scalar/
│   │       │   │                       │               ├── BoolWriteSchemas.java
│   │       │   │                       │               ├── BytesWriteSchemas.java
│   │       │   │                       │               ├── DoubleWriteSchemas.java
│   │       │   │                       │               ├── EnumWriteSchemas.java
│   │       │   │                       │               ├── Fixed32WriteSchemas.java
│   │       │   │                       │               ├── Fixed64WriteSchemas.java
│   │       │   │                       │               ├── FloatWriteSchemas.java
│   │       │   │                       │               ├── Int32WriteSchemas.java
│   │       │   │                       │               ├── Int64WriteSchemas.java
│   │       │   │                       │               ├── SFixed32WriteSchemas.java
│   │       │   │                       │               ├── SFixed64WriteSchemas.java
│   │       │   │                       │               ├── SInt32WriteSchemas.java
│   │       │   │                       │               ├── SInt64WriteSchemas.java
│   │       │   │                       │               ├── StringWriteSchemas.java
│   │       │   │                       │               ├── UInt32WriteSchemas.java
│   │       │   │                       │               └── UInt64WriteSchemas.java
│   │       │   │                       └── notice.txt
│   │       │   └── resources/
│   │       │       └── google/
│   │       │           └── protobuf/
│   │       │               ├── any.proto
│   │       │               └── empty.proto
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── protobuf/
│   │           │                       ├── TestISODateTimeParsing.java
│   │           │                       ├── compatibility/
│   │           │                       │   └── TestCompatibilityOfImplementations.java
│   │           │                       ├── internal/
│   │           │                       │   ├── TestModelWrap.java
│   │           │                       │   ├── TestSchemaBase.java
│   │           │                       │   ├── bean/
│   │           │                       │   │   └── TestBeanDescriptorManager.java
│   │           │                       │   ├── model/
│   │           │                       │   │   ├── CustomGeneric.java
│   │           │                       │   │   ├── PrimitiveArrays.java
│   │           │                       │   │   ├── PrimitiveWrapperArrays.java
│   │           │                       │   │   ├── Root.java
│   │           │                       │   │   └── User.java
│   │           │                       │   ├── parser/
│   │           │                       │   │   └── TestProtoParser.java
│   │           │                       │   └── schema/
│   │           │                       │       ├── TestAnySchema.java
│   │           │                       │       ├── TestMapSchema.java
│   │           │                       │       ├── TestMessageSchema.java
│   │           │                       │       ├── TestRepeatedSchema.java
│   │           │                       │       └── scalar/
│   │           │                       │           ├── TestBoolSchema.java
│   │           │                       │           ├── TestBytesSchema.java
│   │           │                       │           ├── TestDoubleSchema.java
│   │           │                       │           ├── TestEnumSchema.java
│   │           │                       │           ├── TestFixed32Schema.java
│   │           │                       │           ├── TestFixed64Schema.java
│   │           │                       │           ├── TestFloatSchema.java
│   │           │                       │           ├── TestInt32Schema.java
│   │           │                       │           ├── TestInt64Schema.java
│   │           │                       │           ├── TestNumberBaseSchema.java
│   │           │                       │           ├── TestSFixed32Schema.java
│   │           │                       │           ├── TestSFixed64Schema.java
│   │           │                       │           ├── TestSInt32Schema.java
│   │           │                       │           ├── TestSInt64Schema.java
│   │           │                       │           ├── TestStringSchema.java
│   │           │                       │           ├── TestUInt32Schema.java
│   │           │                       │           └── TestUInt64Schema.java
│   │           │                       └── performance/
│   │           │                           ├── ProtubufCodecEngine.java
│   │           │                           ├── TestBase.java
│   │           │                           ├── TestEngineResult.java
│   │           │                           ├── TestProtoPerformance.java
│   │           │                           ├── TestResult.java
│   │           │                           ├── cases/
│   │           │                           │   ├── Empty.java
│   │           │                           │   ├── Map.java
│   │           │                           │   ├── Mixed.java
│   │           │                           │   ├── Pojo.java
│   │           │                           │   ├── PojoList.java
│   │           │                           │   ├── Scalars.java
│   │           │                           │   └── SimpleList.java
│   │           │                           └── engine/
│   │           │                               ├── Jackson.java
│   │           │                               ├── Protobuf.java
│   │           │                               ├── Protostuff.java
│   │           │                               ├── SCB.java
│   │           │                               ├── ScbStrong.java
│   │           │                               └── ScbWeak.java
│   │           └── resources/
│   │               ├── jacksonRoot.proto
│   │               ├── method.proto
│   │               ├── model.proto
│   │               └── protobufRoot.proto
│   ├── foundation-registry/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── registry/
│   │       │   │                   ├── DiscoveryManager.java
│   │       │   │                   ├── RegistrationId.java
│   │       │   │                   ├── RegistrationManager.java
│   │       │   │                   ├── RegistryConfiguration.java
│   │       │   │                   ├── api/
│   │       │   │                   │   ├── AbstractDiscoveryInstance.java
│   │       │   │                   │   ├── DataCenterInfo.java
│   │       │   │                   │   ├── Discovery.java
│   │       │   │                   │   ├── DiscoveryInstance.java
│   │       │   │                   │   ├── LifeCycle.java
│   │       │   │                   │   ├── MicroserviceInstance.java
│   │       │   │                   │   ├── MicroserviceInstanceStatus.java
│   │       │   │                   │   ├── MicroserviceKey.java
│   │       │   │                   │   ├── PropertyExtended.java
│   │       │   │                   │   ├── Registration.java
│   │       │   │                   │   └── RegistrationInstance.java
│   │       │   │                   ├── definition/
│   │       │   │                   │   ├── DefinitionConst.java
│   │       │   │                   │   └── MicroserviceNameParser.java
│   │       │   │                   └── discovery/
│   │       │   │                       ├── AbstractDiscoveryFilter.java
│   │       │   │                       ├── AbstractEndpointDiscoveryFilter.java
│   │       │   │                       ├── AbstractGroupDiscoveryFilter.java
│   │       │   │                       ├── DiscoveryContext.java
│   │       │   │                       ├── DiscoveryFilter.java
│   │       │   │                       ├── DiscoveryTree.java
│   │       │   │                       ├── DiscoveryTreeNode.java
│   │       │   │                       ├── InstancePing.java
│   │       │   │                       ├── InstanceStatusDiscoveryFilter.java
│   │       │   │                       ├── MicroserviceInstanceCache.java
│   │       │   │                       ├── StatefulDiscoveryInstance.java
│   │       │   │                       └── TelnetInstancePing.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.registry.consumer.MicroserviceInstancePing
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── registry/
│   │           │                   ├── TestDiscoveryManager.java
│   │           │                   └── discovery/
│   │           │                       ├── TestAbstractDiscoveryFilter.java
│   │           │                       ├── TestAbstractTransportDiscoveryFilter.java
│   │           │                       ├── TestDiscoveryContext.java
│   │           │                       ├── TestDiscoveryTree.java
│   │           │                       ├── TestDiscoveryTreeNode.java
│   │           │                       └── TestInstanceStatusDiscoveryFilter.java
│   │           └── resources/
│   │               └── log4j2.xml
│   ├── foundation-spi/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       ├── auth/
│   │       │                       │   ├── AuthHeaderLoader.java
│   │       │                       │   ├── AuthHeaderProvider.java
│   │       │                       │   └── SignRequest.java
│   │       │                       ├── bootstrap/
│   │       │                       │   └── BootStrapService.java
│   │       │                       └── common/
│   │       │                           └── utils/
│   │       │                               ├── SPIEnabled.java
│   │       │                               ├── SPIOrder.java
│   │       │                               └── SPIServiceUtils.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── common/
│   │           │                       └── utils/
│   │           │                           ├── SPIServiceDef.java
│   │           │                           ├── SPIServiceDef0.java
│   │           │                           ├── SPIServiceDef0Impl.java
│   │           │                           ├── SPIServiceDefImpl.java
│   │           │                           └── TestSPIServiceUtils.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.foundation.common.utils.SPIServiceDef
│   ├── foundation-ssl/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       └── ssl/
│   │       │                           ├── CertificateUtil.java
│   │       │                           ├── ClientAuth.java
│   │       │                           ├── KeyStoreUtil.java
│   │       │                           ├── SSLCustom.java
│   │       │                           ├── SSLManager.java
│   │       │                           ├── SSLOption.java
│   │       │                           ├── SSLOptionFactory.java
│   │       │                           ├── SSLSocketFactoryExt.java
│   │       │                           ├── TrustAllManager.java
│   │       │                           └── TrustManagerExt.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── ssl/
│   │           │                       ├── CertificateUtilTest.java
│   │           │                       ├── KeyStoreUtilTest.java
│   │           │                       ├── MyOptionFactory.java
│   │           │                       ├── SSLManagerTest.java
│   │           │                       ├── SSLOptionTest.java
│   │           │                       ├── TestSSLOptionFactory.java
│   │           │                       ├── TestSSLSocketFactoryExt.java
│   │           │                       ├── TestTrustAllManager.java
│   │           │                       └── TrustManagerExtTest.java
│   │           └── resources/
│   │               ├── client.ssl.properties
│   │               ├── microservice.yaml
│   │               ├── server.ssl.properties
│   │               ├── server.ssl.resource.properties
│   │               └── ssl/
│   │                   ├── server.cer
│   │                   ├── server.p12
│   │                   ├── trust.cer
│   │                   ├── trust.jks
│   │                   └── white.list
│   ├── foundation-test-scaffolding/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── foundation/
│   │                               └── test/
│   │                                   └── scaffolding/
│   │                                       ├── AssertUtils.java
│   │                                       ├── exception/
│   │                                       │   └── RuntimeExceptionWithoutStackTrace.java
│   │                                       ├── log/
│   │                                       │   └── LogCollector.java
│   │                                       ├── model/
│   │                                       │   ├── Color.java
│   │                                       │   ├── Empty.java
│   │                                       │   ├── Media.java
│   │                                       │   ├── People.java
│   │                                       │   └── User.java
│   │                                       ├── spring/
│   │                                       │   └── SpringUtils.java
│   │                                       └── time/
│   │                                           ├── MockClock.java
│   │                                           ├── MockTicker.java
│   │                                           └── MockValues.java
│   ├── foundation-vertx/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       └── vertx/
│   │       │                           ├── AddressResolverConfig.java
│   │       │                           ├── AsyncResultCallback.java
│   │       │                           ├── ConnectionEvent.java
│   │       │                           ├── SharedVertxFactory.java
│   │       │                           ├── SimpleBodyHandler.java
│   │       │                           ├── SimpleJsonObject.java
│   │       │                           ├── TransportType.java
│   │       │                           ├── VertxConst.java
│   │       │                           ├── VertxTLSBuilder.java
│   │       │                           ├── VertxUtils.java
│   │       │                           ├── client/
│   │       │                           │   ├── ClientPoolFactory.java
│   │       │                           │   ├── ClientPoolManager.java
│   │       │                           │   ├── ClientVerticle.java
│   │       │                           │   ├── http/
│   │       │                           │   │   ├── HttpClientOptionsSPI.java
│   │       │                           │   │   ├── HttpClientPoolFactory.java
│   │       │                           │   │   ├── HttpClientWithContext.java
│   │       │                           │   │   └── HttpClients.java
│   │       │                           │   └── tcp/
│   │       │                           │       ├── AbstractTcpClientConnectionPool.java
│   │       │                           │       ├── AbstractTcpClientPackage.java
│   │       │                           │       ├── AbstractTcpClientPoolFactory.java
│   │       │                           │       ├── NetClientWrapper.java
│   │       │                           │       ├── TcpClientConfig.java
│   │       │                           │       ├── TcpClientConnection.java
│   │       │                           │       ├── TcpClientConnectionPool.java
│   │       │                           │       ├── TcpClientPackage.java
│   │       │                           │       ├── TcpClientPoolFactory.java
│   │       │                           │       ├── TcpData.java
│   │       │                           │       ├── TcpRequest.java
│   │       │                           │       └── TcpResponseCallback.java
│   │       │                           ├── executor/
│   │       │                           │   ├── SinglePoolBlockingExecutor.java
│   │       │                           │   ├── VertxContextExecutor.java
│   │       │                           │   └── VertxWorkerExecutor.java
│   │       │                           ├── http/
│   │       │                           │   ├── AbstractHttpServletRequest.java
│   │       │                           │   ├── AbstractHttpServletResponse.java
│   │       │                           │   ├── BodyBufferSupport.java
│   │       │                           │   ├── BodyBufferSupportImpl.java
│   │       │                           │   ├── DownloadUtils.java
│   │       │                           │   ├── EmptyAsyncContext.java
│   │       │                           │   ├── FileUploadPart.java
│   │       │                           │   ├── HttpServletRequestEx.java
│   │       │                           │   ├── HttpServletResponseEx.java
│   │       │                           │   ├── ReadStreamPart.java
│   │       │                           │   ├── StandardHttpServletRequestEx.java
│   │       │                           │   ├── StandardHttpServletResponseEx.java
│   │       │                           │   ├── VertxClientRequestToHttpServletRequest.java
│   │       │                           │   ├── VertxClientResponseToHttpServletResponse.java
│   │       │                           │   ├── VertxServerRequestToHttpServletRequest.java
│   │       │                           │   └── VertxServerResponseToHttpServletResponse.java
│   │       │                           ├── metrics/
│   │       │                           │   ├── DefaultClientMetrics.java
│   │       │                           │   ├── DefaultHttpClientMetrics.java
│   │       │                           │   ├── DefaultHttpServerMetrics.java
│   │       │                           │   ├── DefaultTcpClientMetrics.java
│   │       │                           │   ├── DefaultTcpServerMetrics.java
│   │       │                           │   ├── DefaultVertxMetrics.java
│   │       │                           │   ├── DefaultVertxMetricsFactory.java
│   │       │                           │   ├── MetricsOptionsEx.java
│   │       │                           │   └── metric/
│   │       │                           │       ├── DefaultClientEndpointMetric.java
│   │       │                           │       ├── DefaultClientEndpointMetricManager.java
│   │       │                           │       ├── DefaultClientTaskMetric.java
│   │       │                           │       ├── DefaultEndpointMetric.java
│   │       │                           │       ├── DefaultRequestMetric.java
│   │       │                           │       ├── DefaultServerEndpointMetric.java
│   │       │                           │       └── DefaultTcpSocketMetric.java
│   │       │                           ├── server/
│   │       │                           │   ├── TcpBufferHandler.java
│   │       │                           │   ├── TcpParser.java
│   │       │                           │   ├── TcpServer.java
│   │       │                           │   └── TcpServerConnection.java
│   │       │                           ├── stream/
│   │       │                           │   ├── BufferInputStream.java
│   │       │                           │   ├── BufferOutputStream.java
│   │       │                           │   ├── InputStreamToReadStream.java
│   │       │                           │   ├── OutputStreamToWriteStream.java
│   │       │                           │   ├── PumpCommon.java
│   │       │                           │   └── PumpFromPart.java
│   │       │                           └── tcp/
│   │       │                               ├── TcpConnection.java
│   │       │                               ├── TcpConst.java
│   │       │                               └── TcpOutputStream.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── foundation/
│   │                               └── vertx/
│   │                                   ├── TestSharedVertxFactory.java
│   │                                   ├── TestSimpleBodyHandler.java
│   │                                   ├── TestSimpleJsonObject.java
│   │                                   ├── TestStream.java
│   │                                   ├── TestVertxTLSBuilder.java
│   │                                   ├── TestVertxUtils.java
│   │                                   ├── client/
│   │                                   │   ├── TestClientPoolManager.java
│   │                                   │   ├── TestClientVerticle.java
│   │                                   │   └── tcp/
│   │                                   │       ├── TestAbstractTcpClientPoolFactory.java
│   │                                   │       ├── TestTcpClientConfig.java
│   │                                   │       └── TestTcpClientConnection.java
│   │                                   ├── http/
│   │                                   │   ├── TestAbstractHttpServletRequest.java
│   │                                   │   ├── TestAbstractHttpServletResponse.java
│   │                                   │   ├── TestBodyBufferSupportImpl.java
│   │                                   │   ├── TestFileUploadPart.java
│   │                                   │   ├── TestStandardHttpServletRequestEx.java
│   │                                   │   ├── TestStandardHttpServletResponseEx.java
│   │                                   │   ├── TestVertxClientRequestToHttpServletRequest.java
│   │                                   │   ├── TestVertxClientResponseToHttpServletResponse.java
│   │                                   │   └── TestVertxServerRequestToHttpServletRequest.java
│   │                                   ├── metrics/
│   │                                   │   ├── TestDefaultHttpClientMetrics.java
│   │                                   │   ├── TestDefaultHttpServerMetrics.java
│   │                                   │   ├── TestDefaultTcpClientMetrics.java
│   │                                   │   ├── TestDefaultTcpServerMetrics.java
│   │                                   │   ├── TestDefaultVertxMetricsFactory.java
│   │                                   │   └── TestMetricsOptionsEx.java
│   │                                   ├── server/
│   │                                   │   ├── TestTcpParser.java
│   │                                   │   └── TestTcpServerConnection.java
│   │                                   └── stream/
│   │                                       └── TestBufferInputStream.java
│   └── pom.xml
├── governance/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── servicecomb/
│       │   │         

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

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug Report
description: Create a report to help us improve
title: "[BUG] - Issue Title"
labels: bug

body:
  - type: markdown
    attributes:
      value: "## Describe the bug\nA clear and concise description of what the bug is."

  - type: textarea
    attributes:
      label: Steps to Reproduce
      description: "List the steps to reproduce the bug."
      placeholder: "1. Go to '...'\n2. Click on '...'\n3. See error"

  - type: textarea
    attributes:
      label: Expected Behavior
      description: "Describe the behavior you expected to see."
      placeholder: "A clear and concise description of what you expected to happen."

  - type: input
    attributes:
      label: Servicecomb Version
      description: "Please provide your Servicecomb version"
      placeholder: "3.2.4"

  - type: textarea
    attributes:
      label: Additional Context
      description: "Add any other context about the problem here."
      placeholder: "Any additional information that might help us debug the issue."


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: "Contact Support"
    url: "mailto:dev@servicecomb.apache.org"
    about: "If you need help, please contact us."
templates:
  - name: "Bug Report"
    description: "Report a bug or issue."
    filename: "bug_report.yml"
  - name: "Feature Request"
    description: "Request a new feature or improvement."
    filename: "feature_request.yml"
  - name: "Documentation Issue"
    description: "Report an issue with documentation."
    filename: "documentation_issue.yml"
  - name: "Question"
    description: "Ask a question or seek help."
    filename: "question.yml"


================================================
FILE: .github/ISSUE_TEMPLATE/documentation_issue.yml
================================================
name: Documentation Issue
description: Report an issue with the documentation
title: "[DOCUMENTATION] - Documentation Issue Title"
labels: documentation

body:
  - type: markdown
    attributes:
      value: "## Describe the documentation issue\nA clear and concise description of the issue with the documentation."

  - type: textarea
    attributes:
      label: Location in documentation
      description: "Please provide the URL or section where the issue appears."
      placeholder: "e.g. https://docs.example.com/section"

  - type: textarea
    attributes:
      label: What should be changed?
      description: "Please describe what changes or improvements should be made to the documentation."
      placeholder: "Explain how we can improve the content."

  - type: textarea
    attributes:
      label: Additional Context
      description: "Provide any other context or examples here."
      placeholder: "Additional comments or suggestions for the documentation."


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature Request
description: Suggest an idea or feature for this project
title: "[FEATURE] - Feature Title"
labels: enhancement

body:
  - type: markdown
    attributes:
      value: "## Describe the feature request\nA clear and concise description of what you want to be added to the project."

  - type: textarea
    attributes:
      label: Problem this feature would solve
      description: "Please describe the problem or challenge you're facing."
      placeholder: "Explain why this feature would be helpful."

  - type: textarea
    attributes:
      label: Describe the solution
      description: "How do you envision this feature working?"
      placeholder: "Provide a description of how the feature would solve the problem."

  - type: textarea
    attributes:
      label: Alternatives considered
      description: "Have you considered other solutions or alternatives? If yes, describe them."
      placeholder: "Provide any alternative solutions you've thought about."

  - type: textarea
    attributes:
      label: Additional Context
      description: "Any other context or information that might help us implement this feature."
      placeholder: "Include any links, mockups, or additional details."


================================================
FILE: .github/ISSUE_TEMPLATE/question.yml
================================================
name: General Question
description: Ask a general question related to the project
title: "[QUESTION] - Question Title"
labels: question

body:
  - type: markdown
    attributes:
      value: "## What is your question?\nDescribe the question or issue you are facing. Be as specific as possible."

  - type: textarea
    attributes:
      label: Steps to reproduce (if applicable)
      description: "If your question is about a specific problem or bug, please include steps to reproduce it."
      placeholder: "Provide steps, if applicable."

  - type: textarea
    attributes:
      label: What have you tried so far?
      description: "Please explain what you have already tried to resolve the issue or answer the question."
      placeholder: "Describe the steps you've taken."

  - type: textarea
    attributes:
      label: Additional context
      description: "Provide any other context or information related to the question."
      placeholder: "Include any relevant links or background information."


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
Follow this checklist to help us incorporate your contribution quickly and easily:

 - [ ] Make sure there is a [JIRA issue](https://issues.apache.org/jira/browse/SCB) filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
 - [ ] Each commit in the pull request should have a meaningful subject line and body.
 - [ ] Format the pull request title like `[SCB-XXX] Fixes bug in ApproximateQuantiles`, where you replace `SCB-XXX` with the appropriate JIRA issue.
 - [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
 - [ ] Run `mvn clean install -Pit` to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
 - [ ] If this contribution is large, please file an Apache [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).

---


================================================
FILE: .github/dependabot.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.
#
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "monthly"
  - package-ecosystem: "maven"
    directory: "/"
    schedule:
      interval: "monthly"
    open-pull-requests-limit: 20


================================================
FILE: .github/workflows/checkstyle.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: checkstyle
on:
  pull_request:
    branches:
      - master

jobs:
  checkstyle:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Set up jdk
        uses: actions/setup-java@v5
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: checkstyle
        run: mvn checkstyle:check -B -Pit


================================================
FILE: .github/workflows/linelint.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: line lint
on:
  pull_request:
    branches:
      - master

jobs:
  linelint:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: install linelint
        run: cargo install linelint-cli
      - name: Run linelint check
        run: linelint check


================================================
FILE: .github/workflows/maven.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: Java CI with Maven

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    timeout-minutes: 60
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6
    - name: Set up jdk
      uses: actions/setup-java@v5
      with:
       java-version: '17.0.8'
       distribution: 'temurin'
    - name: Set up Maven
      uses: stCarolas/setup-maven@v5
      with:
        maven-version: 3.9.9
    - uses: actions/cache@v5
      with:
        path: ~/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
        restore-keys: |
          ${{ runner.os }}-maven-
    - name: Compilation and Installation
      run: mvn clean verify -Dcheckstyle.skip=true -B -Pdocker -Pjacoco -Pit -Pcoverage


================================================
FILE: .github/workflows/rat_check.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: rat check
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  rat_check:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Set up jdk
        uses: actions/setup-java@v5
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: rat check
        run: mvn apache-rat:check -B -Pit,release


================================================
FILE: .github/workflows/typo_check.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: typo check
on:
  pull_request:
    branches:
      - master

jobs:
  typo-check:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        # To run the typo check locally, you can follow these steps:
        # 1. Install typos locally using cargo:
        #    cargo install typos-cli
        # 2. Run the typo check with the following command:
        #    typos
      - name: Check typos
        uses: crate-ci/typos@v1.38.1


================================================
FILE: .gitignore
================================================
# Output Directory
target/

# C pre-compile
*.gch
*.pch

# C compile
*.a
*.o
*.ko
*.la
*.lo
*.obj
*.elf
*.so
*.so.*
*.dylib
*.exe
*.lib
*.dll
*.out
*.app
*.hex

# Debug files
*.dSYM/

# Java
*.class

# Java Package Files
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# Zip Files
*.rar
*.zip
*.7z
*.tar
*.gz

# Ant
build/

# Compiled Python
__pycache__/
*.py[cod]
*py.class

# Eclipse
.settings/
.classpath
.project

# IntelliJ, based on http://devnet.jetbrains.net/docs/DOC-1186
.idea/
*.iml
*.ipr
*.iws

# logs and trace
*.log
*.trace
*.dat

# vi swap
*.swp

# Backup Files
*.bak
*.old

# SVN metadata
.svn/

# Mac
.DS_Store

# gradle
.gradle


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

[default.extend-words]
"fo" = "fo"
"VERTX" = "VERTX"
"Vertx" = "Vertx"
"vertx" = "vertx"

[files]
extend-exclude = [
    "**/cobertura.ser"
]
[default]
extend-ignore-words-re = [
    "Verticle",
    "verticle",
    "VERTICLE",
    "Prelease",
    "cobertura",
    "ser",
]


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

=======================================================================
Apache ServiceComb Java Chassis Subcomponents:

The Apache ServiceComb Java Chassis project contains subcomponents with
separate copyright notices and license terms. Your use of the source
for these subcomponents is subject to the terms and conditions of the
following licenses.


================================================================
For foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/MimeTypesUtils.java
    transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestBodyHandler.java
================================================================
This product bundles files from vertx which is licensed under the Apache License v2.
For details, see https://github.com/vert-x3/vertx-web

================================================================
For swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/extend/property/AbstractBaseIntegerProperty.java
================================================================
This product bundles files from swagger which is licensed under the Apache License v2.
For details, see https://github.com/swagger-api/swagger-core

================================================================
For foundations/foundation-protobuf/src/main/java/io/protostuff/runtime/ArrayFieldMapEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/runtime/FieldMapEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/runtime/FieldSchema.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/runtime/FieldTypeUtils.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/runtime/HashFieldMapEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/ByteArrayInputEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/InputEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/OutputEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/package-info.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/ProtobufOutputEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/SchemaEx.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/SchemaReader.java
    foundations/foundation-protobuf/src/main/java/io/protostuff/SchemaWriter.java
================================================================
This product bundles files from protostuff which is licensed under the Apache License v2.
For details, see  https://github.com/protostuff/protostuff

================================================================
For foundations/foundation-protobuf/src/main/resources/google/protobuf/any.proto
For foundations/foundation-protobuf/src/main/resources/google/protobuf/empty.proto
================================================================
This product bundles files from swagger which is licensed under the BSD-3-Clause.
For details, see https://github.com/protocolbuffers/protobuf


================================================
FILE: NOTICE
================================================
Apache ServiceComb Java Chassis
Copyright 2017-2025 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


================================================
FILE: README.md
================================================
# Java Chassis [中文](README_ZH.md) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.servicecomb/java-chassis-core/badge.svg)](http://search.maven.org/#search%7Cga%7C1%7Corg.apache.servicecomb) [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

Apache ServiceComb Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management features.

> If you find this project helpful, please don't forget to `star` it.

# releases

| Release Train  | Latest Version | Compiled JDK Version | Tested JDK Version | Open API | Notes                    |
|----------------|----------------|----------------------|--------------------|----------|--------------------------|
| Java Chassis 3 | 3.3.0          | OpenJDK 17           | OpenJDK 17         | 3.0.x    | Depends on Spring Boot 3 |
| Java Chassis 2 | 2.8.24         | OpenJDK 8            | OpenJDK 8, 11, 17  | 2.0.x    | Depends on Spring 5      |
| Java Chassis 1 | 1.3.11         | OpenJDK 8            | OpenJDK 8          | 2.0.x    | End of Support           |

Java Chassis core dependencies

| Java Chassis | Spring Boot | Vert.x | Swagger | Jackson |
|--------------|-------------|--------|---------|---------|
| 3.3.x        | 3.4.x       | 4.5.x  | 2.2.x   | 2.18.x  |
| 3.2.x        | 3.3.x       | 4.5.x  | 2.2.x   | 2.18.x  |

> NOTICE: Since Open API 3.0.x is not compatible with 2.0.x, Java Chassis 2 and Java Chassis 1 can not
> work together with Java Chassis 3. All related consumers, providers and edge service need use Java Chassis 3 when upgrading.

> NOTICE: Java Chassis 1 reached its end of support now after it's first release from 2018.

# Quick Start

* Define API
```java
@RequestMapping(path = "/provider")
public interface ProviderService {
  @GetMapping("/sayHello")
  String sayHello(@RequestParam("name") String name);
}
```

* Provider service
```java
@RestSchema(schemaId = "ProviderController", schemaInterface = ProviderService.class)
public class ProviderController implements ProviderService {
  @Override
  public String sayHello(String name) {
    return "Hello " + name;
  }
}
```

* Consumer service
```java
@Configuration
public class ProviderServiceConfiguration {
  @Bean
  public ProviderService providerService() {
    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
  }
}
```

Invoke Provider service with RPC
```java
@RestSchema(schemaId = "ConsumerController", schemaInterface = ConsumerService.class)
public class ConsumerController implements ConsumerService {
  private ProviderService providerService;

  @Autowired
  public void setProviderService(ProviderService providerService) {
    this.providerService = providerService;
  }

  @Override
  public String sayHello(String name) {
    return providerService.sayHello(name);
  }
}
```

Try out this example [here](https://servicecomb.apache.org/references/java-chassis/zh_CN/start/first-sample.html) .

# Documentation

Project documentation is available on the [ServiceComb Java Chassis Developer Guide][java-chassis-developer-guide].

[java-chassis-developer-guide]: https://servicecomb.apache.org/references/java-chassis/zh_CN/

# Building

  You don’t need to build from source to use Java Chassis (binaries in apache nexus ), but if you want to try out the latest and greatest, Java Chassis can be easily built with the maven.  You also need JDK 17.

      mvn clean install

The first build may take a longer than expected as Maven downloads all the dependencies.

# Automated Testing

  To build the docker image and run the integration tests with docker, you can use maven docker profile

      mvn clean install -Pdocker -Pit

  If you are using docker machine, please use the following command

      mvn clean install -Pdocker -Pit -Pdocker-machine

# Contact

Bugs: [issues](https://issues.apache.org/jira/browse/SCB)

mailing list: [subscribe](mailto:dev-subscribe@servicecomb.apache.org)  [dev](https://lists.apache.org/list.html?dev@servicecomb.apache.org)


# Contributing

See [CONTRIBUTING](http://servicecomb.apache.org/developers/contributing) for details on submitting patches and the contribution workflow.

# License
Licensed under an [Apache 2.0 license](LICENSE).


================================================
FILE: README_ZH.md
================================================
# Java Chassis | [English](README.md) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.servicecomb/java-chassis-core/badge.svg)](http://search.maven.org/#search%7Cga%7C1%7Corg.apache.servicecomb) [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

Apache ServiceComb Java Chassis 给开发者提供一个快速构建微服务的JAVA SDK。它包含如下特性:

* 基于Open API的契约优先(API First)开发模式,满足开发过程可管理、开发规范可验证要求。
* 多种开发风格,REST(JAX-RS、Spring MVC)和RPC等,高效支持遗留系统迁移和新系统开发场景。
* 多种通信协议, HTTP over Vert.x、Http Over Servlet、Highway等,满足不同场景对于性能、韧性的需求。
* 统一一致的服务提供者、服务消费者处理链,易于扩展新功能。
* 提供服务发现、配置管理、熔断、限流、灰度发布等开箱即用的服务治理能力。

可以通过[设计选型参考](https://servicecomb.apache.org/references/java-chassis/zh_CN/start/design.html) 了解更多特性和设计原理。

> 如果发现项目能帮助到您,别忘了点击右上角`star`表示鼓励。

# 发布版本

| 版本火车           | 最新版本   | 编译的JDK版本   | 支持的JDK版本          | Open API | 备注              |
|----------------|--------|------------|-------------------|----------|-----------------|
| Java Chassis 3 | 3.3.0  | OpenJDK 17 | OpenJDK 17        | 3.0.x    | 依赖Spring Boot 3 |
| Java Chassis 2 | 2.8.24 | OpenJDK 8  | OpenJDK 8, 11, 17 | 2.0.x    | 依赖Spring 5      |
| Java Chassis 1 | 1.3.11 | OpenJDK 8  | OpenJDK 8         | 2.0.x    | 停止更新            |

Java Chassis 的核心依赖

| Java Chassis | Spring Boot | Vert.x | Swagger | Jackson |
|--------------|-------------|--------|---------|---------|
| 3.3.x        | 3.4.x       | 4.5.x  | 2.2.x   | 2.18.x  |
| 3.2.x        | 3.3.x       | 4.5.x  | 2.2.x   | 2.18.x  |

> NOTICE: Open API 3.0.x 不兼容 2.0.x, 因此Java Chassis 2、Java Chassis 1不能与Java Chassis 3共存互访. 升级Java Chassis 3, 需要将相关的消费者、提供者和边缘服务同时升级.

> NOTICE: Java Chassis 1 第一个版本于2018发布,已经停止更新.

# 快速开始

* 定义服务契约

```java
@RequestMapping(path = "/provider")
public interface ProviderService {
  @GetMapping("/sayHello")
  String sayHello(@RequestParam("name") String name);
}
```

* 定义提供者

```java
@RestSchema(schemaId = "ProviderController", schemaInterface = ProviderService.class)
public class ProviderController implements ProviderService {
  @Override
  public String sayHello(String name) {
    return "Hello " + name;
  }
}
```

* 定义消费者

```java
@Configuration
public class ProviderServiceConfiguration {
  @Bean
  public ProviderService providerService() {
    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
  }
}
```

使用RPC方式访问提供者。

```java
@RestSchema(schemaId = "ConsumerController", schemaInterface = ConsumerService.class)
public class ConsumerController implements ConsumerService {
  private ProviderService providerService;

  @Autowired
  public void setProviderService(ProviderService providerService) {
    this.providerService = providerService;
  }

  @Override
  public String sayHello(String name) {
    return providerService.sayHello(name);
  }
}
```

下载并体验上述[示例项目](https://servicecomb.apache.org/references/java-chassis/zh_CN/start/first-sample.html) .

# 用户文档

请访问 [ServiceComb Java Chassis 开发指南][java-chassis-developer-guide].

[java-chassis-developer-guide]:  https://servicecomb.apache.org/references/java-chassis/zh_CN/

# 编译 Java Chassis

开发者可以通过MAVEN仓库使用Java Chassis。 如果需要构建项目,需要使用JDK 17版本,并预先安装maven。

      mvn clean install

# 运行测试用例

开发者需要预先安装docker。

      mvn clean install -Pdocker -Pit

使用docker machine。

      mvn clean install -Pdocker -Pit -Pdocker-machine

# 联系我们

报告缺陷: [issues](https://issues.apache.org/jira/browse/SCB)

邮件列表: [subscribe](mailto:dev-subscribe@servicecomb.apache.org)  [dev](https://lists.apache.org/list.html?dev@servicecomb.apache.org)

# 参与代码提交

参考 [如何做贡献](http://servicecomb.apache.org/cn/developers/contributing).

# License
Licensed under an [Apache 2.0 license](LICENSE).


================================================
FILE: ci/README.md
================================================
# Java Chassis Code Checks

* Compilation and Installation

   see .github/workflows/maven.yml

* Checkstyle

  see .github/workflows/checkstyle.yml

* Rat Check

  see .github/workflows/rat_check.yml

* Spot Bugs

  see .github/workflows/spotbugs.yml

* OWASP Dependency Check

  `mvn verify  -Powasp-dependency-check` . Very Slow, run manually.

* Distribution

  `mvn clean deploy -Dcheckstyle.skip -Dspotbugs.skip=true -Dmaven.javadoc.skip=true -DskipTests -Prelease -Pdistribution` . Run manually when preparing a release.


================================================
FILE: ci/checkstyle/checkstyle.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<!--
    This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--
    Checkstyle-Configuration: paas
    Description: none
-->
<module name="Checker">
  <module name="FileTabCharacter">
    <!-- Checks that there are no tab characters in the file. -->
  </module>
  <module name="NewlineAtEndOfFile">
  </module>
  <module name="RegexpSingleline">
    <property name="format" value="Throwables.propagate\("/>
    <property name="message" value="Throwables.propagate is deprecated"/>
    <property name="severity" value="error"/>
  </module>
  <module name="RegexpSingleline">
    <property name="format" value="\s+$"/>
    <property name="message" value="Trailing whitespace"/>
    <property name="severity" value="error"/>
  </module>
  <module name="SuppressWithPlainTextCommentFilter">
    <property name="offCommentFormat" value="CHECKSTYLE.OFF"/>
    <property name="onCommentFormat" value="CHECKSTYLE.ON"/>
  </module>
  <module name="TreeWalker">
    <module name="AvoidStarImport"/>
    <module name="EmptyStatement"/>
    <module name="LeftCurly">
      <!-- Checks for placement of the left curly brace ('{'). -->
      <property name="severity" value="error"/>
    </module>
    <module name="LocalFinalVariableName">
      <!-- Validates identifiers for local final variables against the
        expression "^[a-z][a-zA-Z0-9]*$". -->
      <property name="severity" value="error"/>
    </module>
    <module name="LocalVariableName">
      <!-- Validates identifiers for local variables against the
        expression "^[a-z][a-zA-Z0-9]*$". -->
      <property name="severity" value="error"/>
    </module>
    <module name="ModifierOrder"/>

    <!-- check if a switch statement has a default clause -->
    <module name="MissingSwitchDefault"/>

    <module name="NoWhitespaceAfter">
      <!-- Checks that there is no whitespace after various unary operators.
           Linebreaks are allowed.
      -->
      <property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,
        UNARY_PLUS"/>
      <property name="allowLineBreaks" value="true"/>
      <property name="severity" value="error"/>
    </module>
    <!-- Checks for braces around if and else blocks -->
    <module name="NeedBraces">
      <property name="severity" value="error"/>
      <property name="tokens" value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
    </module>
    <module name="NoWhitespaceBefore">
      <!-- Checks that there is no whitespace before various unary operators.
           Linebreaks are allowed.
      -->
      <property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/>
      <property name="allowLineBreaks" value="true"/>
      <property name="severity" value="error"/>
    </module>
    <module name="ParenPad">
      <!-- Checks that there is no whitespace before close parens or after
           open parens.
      -->
      <property name="severity" value="error"/>
    </module>
    <!-- Checks for over-complicated boolean expressions. -->
    <module name="SimplifyBooleanExpression"/>
    <module name="RedundantImport"/>
    <module name="RedundantModifier">
      <property name="tokens" value="METHOD_DEF, VARIABLE_DEF, ANNOTATION_FIELD_DEF, INTERFACE_DEF, CLASS_DEF, ENUM_DEF"/>
    </module>
    <module name="RightCurly">
      <!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on
      the same line. e.g., the following example is fine:
      <pre>
        if {
          ...
        } else
      </pre>
      -->
      <!-- This next example is not fine:
      <pre>
        if {
          ...
        }
        else
      </pre>
      -->
      <property name="option" value="same"/>
      <property name="severity" value="error"/>
    </module>
    <module name="UnusedImports">
      <property name="processJavadoc" value="true"/>
    </module>
    <module name="UpperEll">
      <!-- Checks that long constants are defined with an upper ell.-->
      <property name="severity" value="error"/>
    </module>
    <module name="WhitespaceAfter">
      <!-- Checks that commas, semicolons and typecasts are followed by
           whitespace.
      -->
      <property name="tokens" value="COMMA, SEMI, TYPECAST"/>
    </module>
    <module name="WhitespaceAround">
      <!-- Checks that various tokens are surrounded by whitespace.
           This includes most binary operators and keywords followed
           by regular or curly braces.
      -->
      <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR,
        BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,
        EQUAL, GE, GT, LAND, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
        LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
        LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,
        MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,
        SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN"/>
      <property name="severity" value="error"/>
    </module>
  </module>
</module>


================================================
FILE: ci/checkstyle/suppressions.xml
================================================
<?xml version="1.0"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<!DOCTYPE suppressions PUBLIC
        "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
        "https://checkstyle.org/dtds/suppressions_1_2.dtd">

<suppressions>
    <suppress files="[/\\]target[/\\]" checks=".*" />
</suppressions>


================================================
FILE: ci/spotbugs/exclude.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<FindBugsFilter
        xmlns="https://github.com/spotbugs/filter/3.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://github.com/spotbugs/filter/3.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/3.1.0/spotbugs/etc/findbugsfilter.xsd">


    <!-- pattern sort by alpha -->

    <Match>
        <Bug pattern="BC_UNCONFIRMED_CAST"/>
    </Match>

    <Match>
        <Bug pattern="BC_VACUOUS_INSTANCEOF"/>
    </Match>

    <Match>
        <!-- only for JDK 8 -->
        <Bug pattern="CT_CONSTRUCTOR_THROW"/>
    </Match>

    <Match>
        <Bug pattern="DC_DOUBLECHECK"/>
    </Match>

    <Match>
        <Bug pattern="DC_PARTIALLY_CONSTRUCTED"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.demo.jaxrs.server.beanParam.BeanParamTestService"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.it.deploy.Deploys"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.it.testcase.TestParamCodecEdge"/>
    </Match>

    <Match>
        <Bug pattern="DM_DEFAULT_ENCODING"/>
        <Class name="org.apache.servicecomb.it.testcase.TestRestServerConfigEdge"/>
    </Match>

    <Match>
        <Bug pattern="DM_EXIT"/>
    </Match>

    <Match>
        <Bug pattern="EC_UNRELATED_TYPES"/>
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_REP"/>
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_REP2"/>
    </Match>

    <Match>
        <Bug pattern="EI_EXPOSE_STATIC_REP2"/>
    </Match>

    <Match>
        <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
    </Match>

    <Match>
        <Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS"/>
    </Match>

    <Match>
        <Bug pattern="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC"/>
    </Match>

    <Match>
        <Bug pattern="ICAST_IDIV_CAST_TO_DOUBLE"/>
    </Match>

    <Match>
        <Bug pattern="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG"/>
    </Match>

    <Match>
        <Bug pattern="IS2_INCONSISTENT_SYNC"/>
    </Match>

    <Match>
        <Bug pattern="MF_CLASS_MASKS_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="MS_CANNOT_BE_FINAL"/>
    </Match>

    <Match>
        <Bug pattern="MS_EXPOSE_REP"/>
    </Match>

    <Match>
        <Bug pattern="MS_MUTABLE_ARRAY"/>
    </Match>

    <Match>
        <Bug pattern="MS_MUTABLE_COLLECTION_PKGPROTECT"/>
    </Match>

    <Match>
        <Bug pattern="MS_OOI_PKGPROTECT"/>
    </Match>

    <Match>
        <Bug pattern="MS_SHOULD_BE_FINAL"/>
    </Match>

    <Match>
        <Bug pattern="MS_PKGPROTECT"/>
    </Match>

    <Match>
        <Bug pattern="NM_CLASS_NOT_EXCEPTION"/>
    </Match>

    <Match>
        <Bug pattern="NM_METHOD_NAMING_CONVENTION"/>
    </Match>

    <Match>
        <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestJAXRSObjectParamType"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestRPCObjectParamType"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestSpringMVCObjectParamType"/>
    </Match>

    <Match>
        <Bug pattern="NP_NONNULL_RETURN_VIOLATION"/>
    </Match>

    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH"/>
    </Match>

    <Match>
        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
    </Match>

    <Match>
        <Bug pattern="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="OBL_UNSATISFIED_OBLIGATION"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.localRegistryServer.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.mapnull.ParseRequest"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.mapnull.ParseResponse"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.pojo.client.PojoClient"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.registry.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.zeroconfig.server.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/>
        <Class name="org.apache.servicecomb.demo.zeroconfig.edge.SelfServiceInvoker"/>
    </Match>

    <Match>
        <Bug pattern="RC_REF_COMPARISON"/>
    </Match>

    <Match>
        <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
    </Match>

    <Match>
        <Bug pattern="REC_CATCH_EXCEPTION"/>
        <Class name="org.apache.servicecomb.demo.springmvc.SpringmvcClient"/>
    </Match>

    <Match>
        <Bug pattern="REFLC_REFLECTION_MAY_INCREASE_ACCESSIBILITY_OF_CLASS"/>
    </Match>

    <Match>
        <Bug pattern="RV_NEGATING_RESULT_OF_COMPARETO"/>
    </Match>

    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED"/>
    </Match>

    <Match>
        <Bug pattern="SE_BAD_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/>
    </Match>

    <Match>
        <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
    </Match>

    <Match>
        <Bug pattern="SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA"/>
    </Match>

    <Match>
        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION"/>
    </Match>

    <Match>
        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_THROWABLE"/>
    </Match>

    <Match>
        <Bug pattern="THROWS_METHOD_THROWS_RUNTIMEEXCEPTION"/>
    </Match>

    <Match>
        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
    </Match>

    <Match>
        <Bug pattern="VA_FORMAT_STRING_USES_NEWLINE"/>
    </Match>

</FindBugsFilter>


================================================
FILE: clients/README.md
================================================
# About

This module implements common http clients for servicecomb-service-center, servicecomb-kie and other
3rd-party services.

This module is independent on servicecomb-java-chassis, and can be used in many other projects like
Spring Cloud, Dubbo, etc.

# 关于

这个模块给 servicecomb-service-center, servicecomb-kie 以及其他第三方服务实现通用的 Http Client。

这个模块独立于 servicecomb-java-chassis, 可以用于 Spring Cloud, Dubbo 等项目。


================================================
FILE: clients/config-center-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>clients</artifactId>
    <groupId>org.apache.servicecomb</groupId>
    <version>3.4.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>config-center-client</artifactId>
  <name>ServiceComb::Clients::Config Center Client</name>

  <dependencies>
    <!-- Make this client simple and portable to many frameworks.
       Do not import other dependencies if really need. -->
    <dependency>
      <groupId>org.apache.servicecomb</groupId>
      <artifactId>http-client-common</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.servicecomb</groupId>
      <artifactId>config-clients-common</artifactId>
    </dependency>
  </dependencies>
</project>


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterAddressManager.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client;

import java.util.List;

import org.apache.servicecomb.http.client.common.AbstractAddressManager;
import org.apache.servicecomb.http.client.common.URLEndPoint;
import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

public class ConfigCenterAddressManager extends AbstractAddressManager {

  public ConfigCenterAddressManager(String projectName, List<String> addresses, EventBus eventBus, String region,
      String availableZone) {
    super(projectName, addresses, region, availableZone);
    eventBus.register(this);
  }

  @Override
  protected String normalizeUri(String endpoint) {
    String address = new URLEndPoint(endpoint).toString();
    return formatAddress(address);
  }

  @Subscribe
  public void onRefreshEndpointEvent(RefreshEndpointEvent event) {
    refreshEndpoint(event, RefreshEndpointEvent.CONFIG_CENTER_NAME);
  }
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.apache.servicecomb.config.common.exception.OperationException;
import org.apache.servicecomb.config.center.client.model.QueryConfigurationsRequest;
import org.apache.servicecomb.config.center.client.model.QueryConfigurationsResponse;
import org.apache.servicecomb.http.client.common.HttpRequest;
import org.apache.servicecomb.http.client.common.HttpResponse;
import org.apache.servicecomb.http.client.common.HttpTransport;
import org.apache.servicecomb.http.client.common.HttpUtils;
import org.apache.servicecomb.http.client.event.OperationEvents.UnAuthorizedOperationEvent;
import org.apache.servicecomb.http.client.utils.ServiceCombServiceAvailableUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;

import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.eventbus.EventBus;

public class ConfigCenterClient implements ConfigCenterOperation {
  private static final Logger LOGGER = LoggerFactory.getLogger(ConfigCenterClient.class);

  public static final String DEFAULT_APP_SEPARATOR = "@";

  public static final String DEFAULT_SERVICE_SEPARATOR = "#";

  public static final String REVISION = "revision";

  public static final String APPLICATION_CONFIG = "application";

  public static final String DARK_LAUNCH = "darklaunch@";

  private static final String ADDRESS_CHECK_PATH = "/v3/default/configuration/health?mode=readiness";

  private final HttpTransport httpTransport;

  private final ConfigCenterAddressManager addressManager;

  private final Map<String, List<String>> dimensionConfigNames = new HashMap<>();

  private EventBus eventBus;

  public ConfigCenterClient(ConfigCenterAddressManager addressManager, HttpTransport httpTransport) {
    this.addressManager = addressManager;
    this.httpTransport = httpTransport;
  }

  public void setEventBus(EventBus eventBus) {
    this.eventBus = eventBus;
    addressManager.setEventBus(eventBus);
  }

  @Override
  public QueryConfigurationsResponse queryConfigurations(QueryConfigurationsRequest request, String address) {
    String dimensionsInfo = buildDimensionsInfo(request, true);
    QueryConfigurationsResponse queryConfigurationsResponse = new QueryConfigurationsResponse();

    Map<String, Object> configurations = new HashMap<>();

    String uri = null;
    try {
      uri = address + "/configuration/items?dimensionsInfo="
          + HttpUtils.encodeURLParam(dimensionsInfo) + "&revision=" + request.getRevision();

      Map<String, String> headers = new HashMap<>();
      headers.put("x-environment", request.getEnvironment());
      HttpRequest httpRequest = new HttpRequest(uri, headers, null,
          HttpRequest.GET);

      HttpResponse httpResponse = httpTransport.doRequest(httpRequest);
      recordAndSendUnAuthorizedEvent(httpResponse, address);
      if (httpResponse.getStatusCode() == HttpStatus.SC_OK) {
        Map<String, Map<String, Object>> allConfigMap = HttpUtils.deserialize(
            httpResponse.getContent(),
            new TypeReference<Map<String, Map<String, Object>>>() {
            });

        if (allConfigMap.get(REVISION) != null) {
          queryConfigurationsResponse.setRevision((String) allConfigMap.get(REVISION).get("version"));
        }

        if (allConfigMap.get(APPLICATION_CONFIG) != null) {
          configurations.putAll(allConfigMap.get(APPLICATION_CONFIG));
          logConfigurationNames(APPLICATION_CONFIG, allConfigMap.get(APPLICATION_CONFIG));
        }

        if (allConfigMap.get(buildDimensionsInfo(request, false)) != null) {
          configurations.putAll(allConfigMap.get(buildDimensionsInfo(request, false)));
          logConfigurationNames(buildDimensionsInfo(request, false),
              allConfigMap.get(buildDimensionsInfo(request, false)));
        }

        if (allConfigMap.get(buildDarkLaunchDimensionsInfo(request)) != null) {
          configurations.putAll(allConfigMap.get(buildDarkLaunchDimensionsInfo(request)));
          logConfigurationNames(buildDarkLaunchDimensionsInfo(request),
              allConfigMap.get(buildDarkLaunchDimensionsInfo(request)));
        }

        if (allConfigMap.get(dimensionsInfo) != null) {
          configurations.putAll(allConfigMap.get(dimensionsInfo));
          logConfigurationNames(dimensionsInfo, allConfigMap.get(dimensionsInfo));
        }
        queryConfigurationsResponse.setConfigurations(configurations);
        queryConfigurationsResponse.setChanged(true);
        return queryConfigurationsResponse;
      } else if (httpResponse.getStatusCode() == HttpStatus.SC_NOT_MODIFIED) {
        queryConfigurationsResponse.setChanged(false);
        return queryConfigurationsResponse;
      } else if (httpResponse.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
        LOGGER.warn("rate limited, keep the local dimension [{}] configs unchanged.", dimensionsInfo);
        queryConfigurationsResponse.setChanged(false);
        return queryConfigurationsResponse;
      } else if (httpResponse.getStatusCode() == HttpStatus.SC_BAD_REQUEST) {
        throw new OperationException("Bad request for query configurations.");
      } else {
        throw new OperationException(
            "read response failed. status:"
                + httpResponse.getStatusCode()
                + "; message:"
                + httpResponse.getMessage()
                + "; content:"
                + httpResponse.getContent());
      }
    } catch (IOException e) {
      addressManager.recordFailState(address);
      LOGGER.error("query configuration from {} failed, message={}", uri, e.getMessage());
      throw new OperationException("", e);
    }
  }

  private void recordAndSendUnAuthorizedEvent(HttpResponse response, String address) {
    if (this.eventBus != null && response.getStatusCode() == HttpStatus.SC_UNAUTHORIZED) {
      LOGGER.warn("query configuration unauthorized from server [{}], message [{}]", address, response.getMessage());
      addressManager.recordFailState(address);
      this.eventBus.post(new UnAuthorizedOperationEvent(address));
    } else {
      addressManager.recordSuccessState(address);
    }
  }

  /**
   * Only the name of the new configuration item is printed.
   * No log is printed when the configuration content is updated.
   *
   * @param dimension dimension
   * @param configs configs
   */
  private void logConfigurationNames(String dimension, Map<String, Object> configs) {
    if (CollectionUtils.isEmpty(configs)) {
      return;
    }
    List<String> configNames = dimensionConfigNames.get(dimension);
    if (configNames == null) {
      configNames = new ArrayList<>();
    }
    StringBuilder names = new StringBuilder();
    for (String key : configs.keySet()) {
      if (configNames.contains(key)) {
        continue;
      }
      names.append(key).append(",");
      configNames.add(key);
    }
    if (names.isEmpty()) {
      return;
    }
    dimensionConfigNames.put(dimension, configNames);
    String fileNames = names.substring(0, names.length() - 1);
    LOGGER.info("pulling dimension [{}] configurations success, get config names: [{}].",
        dimension, fileNames);
  }

  @Override
  public void checkAddressAvailable(String address) {
    ServiceCombServiceAvailableUtils.checkAddressAvailable(addressManager, address, httpTransport, ADDRESS_CHECK_PATH);
  }

  private String buildDimensionsInfo(QueryConfigurationsRequest request, boolean withVersion) {
    String result =
        request.getServiceName() + DEFAULT_APP_SEPARATOR
            + request.getApplication();
    if (withVersion && !StringUtils.isEmpty(request.getVersion())) {
      result = result + DEFAULT_SERVICE_SEPARATOR + request
          .getVersion();
    }
    return result;
  }

  private String buildDarkLaunchDimensionsInfo(QueryConfigurationsRequest request) {
    return DARK_LAUNCH + request.getApplication();
  }
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterConfigurationChangedEvent.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

/**
 * This event is fired when configuration changed of config center.
 */
public class ConfigCenterConfigurationChangedEvent {
  private final Map<String, Object> added;

  private final Map<String, Object> deleted;

  private final Map<String, Object> updated;

  private Set<String> changed;

  private ConfigCenterConfigurationChangedEvent(Map<String, Object> added, Map<String, Object> updated,
      Map<String, Object> deleted) {
    this.added = added;
    this.deleted = deleted;
    this.updated = updated;
    this.changed = new HashSet<>();
    this.changed.addAll(added.keySet());
    this.changed.addAll(updated.keySet());
    this.changed.addAll(deleted.keySet());
  }

  public static ConfigCenterConfigurationChangedEvent createIncremental(Map<String, Object> latest,
      Map<String, Object> last) {
    Map<String, Object> itemsCreated = new HashMap<>();
    Map<String, Object> itemsDeleted = new HashMap<>();
    Map<String, Object> itemsModified = new HashMap<>();

    for (Map.Entry<String, Object> entry : latest.entrySet()) {
      String itemKey = entry.getKey();
      if (!last.containsKey(itemKey)) {
        itemsCreated.put(itemKey, entry.getValue());
      } else if (!Objects.equals(last.get(itemKey), latest.get(itemKey))) {
        itemsModified.put(itemKey, entry.getValue());
      }
    }
    for (String itemKey : last.keySet()) {
      if (!latest.containsKey(itemKey)) {
        itemsDeleted.put(itemKey, null);
      }
    }
    ConfigCenterConfigurationChangedEvent event = ConfigCenterConfigurationChangedEvent
        .createIncremental(itemsCreated, itemsModified, itemsDeleted);
    return event;
  }

  public static ConfigCenterConfigurationChangedEvent createIncremental(Map<String, Object> added,
      Map<String, Object> updated,
      Map<String, Object> deleted) {
    return new ConfigCenterConfigurationChangedEvent(added, updated, deleted);
  }

  public static ConfigCenterConfigurationChangedEvent createIncremental(Map<String, Object> updated) {
    return new ConfigCenterConfigurationChangedEvent(new HashMap<>(), updated, new HashMap<>());
  }

  public final Map<String, Object> getAdded() {
    return added;
  }


  public final Map<String, Object> getUpdated() {
    return updated;
  }


  public final Map<String, Object> getDeleted() {
    return deleted;
  }

  public final Set<String> getChanged() {
    return changed;
  }
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client;

import java.util.List;
import java.util.Map;

import org.apache.servicecomb.config.center.client.model.ConfigCenterConfiguration;
import org.apache.servicecomb.config.center.client.model.QueryConfigurationsRequest;
import org.apache.servicecomb.config.center.client.model.QueryConfigurationsResponse;
import org.apache.servicecomb.config.common.ConfigConverter;
import org.apache.servicecomb.http.client.task.AbstractTask;
import org.apache.servicecomb.http.client.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.eventbus.EventBus;

public class ConfigCenterManager extends AbstractTask {

  private static final Logger LOGGER = LoggerFactory.getLogger(ConfigCenterManager.class);

  private final ConfigCenterClient configCenterClient;

  private final EventBus eventBus;

  private QueryConfigurationsRequest queryConfigurationsRequest;

  private final ConfigConverter configConverter;

  private final ConfigCenterConfiguration configCenterConfiguration;

  private final ConfigCenterAddressManager configCenterAddressManager;

  public ConfigCenterManager(ConfigCenterClient configCenterClient, EventBus eventBus, ConfigConverter configConverter,
      ConfigCenterConfiguration configCenterConfiguration, ConfigCenterAddressManager configCenterAddressManager) {
    super("config-center-configuration-task");
    this.configCenterClient = configCenterClient;
    this.eventBus = eventBus;
    this.configConverter = configConverter;
    this.configCenterConfiguration = configCenterConfiguration;
    this.configCenterAddressManager = configCenterAddressManager;
  }

  public void setQueryConfigurationsRequest(QueryConfigurationsRequest queryConfigurationsRequest) {
    this.queryConfigurationsRequest = queryConfigurationsRequest;
  }

  public void startConfigCenterManager() {
    this.startTask(new PollConfigurationTask(0));
    schedulerCheckAddressAvailable("cc-addr-check", new CheckConfigCenterAddressTask(),
        configCenterConfiguration.getRefreshIntervalInMillis());
  }

  class PollConfigurationTask implements Task {
    int failCount;

    public PollConfigurationTask(int failCount) {
      this.failCount = failCount;
    }

    @Override
    public void execute() {
      try {
        QueryConfigurationsResponse response = configCenterClient.queryConfigurations(queryConfigurationsRequest,
            configCenterAddressManager.address());
        if (response.isChanged()) {
          queryConfigurationsRequest.setRevision(response.getRevision());
          Map<String, Object> lastData = configConverter.updateData(response.getConfigurations());
          ConfigCenterConfigurationChangedEvent event = ConfigCenterConfigurationChangedEvent
              .createIncremental(configConverter.getCurrentData(), lastData);
          if (!event.getChanged().isEmpty()) {
            eventBus.post(event);
          }
        }
        startTask(
            new BackOffSleepTask(configCenterConfiguration.getRefreshIntervalInMillis(), new PollConfigurationTask(0)));
      } catch (Exception e) {
        LOGGER.warn("get configurations from ConfigCenter failed, and will try again, cause message: {}. current "
            + "fail does not affect the obtained historical configuration.", e.getCause().getMessage());
        startTask(new BackOffSleepTask(failCount + 1, new PollConfigurationTask(failCount + 1)));
      }
    }
  }

  class CheckConfigCenterAddressTask implements Runnable {
    @Override
    public void run() {
      List<String> isolationAddresses = configCenterAddressManager.getIsolationAddresses();
      if (isolationAddresses.isEmpty()) {
        return;
      }
      for (String address : isolationAddresses) {
        configCenterClient.checkAddressAvailable(address);
      }
    }
  }
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterOperation.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client;

import org.apache.servicecomb.config.common.exception.OperationException;
import org.apache.servicecomb.config.center.client.model.QueryConfigurationsRequest;
import org.apache.servicecomb.config.center.client.model.QueryConfigurationsResponse;

public interface ConfigCenterOperation {
  /**
   * 根据查询条件查询配置项。
   * @param request 查询的维度(project, application, serviceName, version) 和 revision 信息。
   * @param address 查询的配置中心地址。
   * @return 如果存在配置变更,返回全量的配置项, changed = true。 如果没有变更, 返回 null, changed = false,
   *  @throws OperationException If some problems happened to contact service center or non http 200 returned.
   */
  QueryConfigurationsResponse queryConfigurations(QueryConfigurationsRequest request, String address);

  /**
   * Check config center isolation address available
   *
   * @param address isolation address
   */
  void checkAddressAvailable(String address);
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client.model;

public class ConfigCenterConfiguration {

    private long refreshIntervalInMillis = 15000;

    public long getRefreshIntervalInMillis() {
        return refreshIntervalInMillis;
    }

    public ConfigCenterConfiguration setRefreshIntervalInMillis(long refreshIntervalInMillis) {
        this.refreshIntervalInMillis = refreshIntervalInMillis;
        return this;
    }
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/QueryConfigurationsRequest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client.model;

public class QueryConfigurationsRequest {
  private String environment;

  private String application;

  private String serviceName;

  private String version;

  private String revision;

  public String getEnvironment() {
    return environment;
  }

  public QueryConfigurationsRequest setEnvironment(String environment) {
    this.environment = environment;
    return this;
  }

  public String getApplication() {
    return application;
  }

  public QueryConfigurationsRequest setApplication(String application) {
    this.application = application;
    return this;
  }

  public String getServiceName() {
    return serviceName;
  }

  public QueryConfigurationsRequest setServiceName(String serviceName) {
    this.serviceName = serviceName;
    return this;
  }

  public String getVersion() {
    return version;
  }

  public QueryConfigurationsRequest setVersion(String version) {
    this.version = version;
    return this;
  }

  public String getRevision() {
    return revision;
  }

  public QueryConfigurationsRequest setRevision(String revision) {
    this.revision = revision;
    return this;
  }
}


================================================
FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/QueryConfigurationsResponse.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.center.client.model;

import java.util.Map;

public class QueryConfigurationsResponse {
  private String revision;

  private boolean changed;

  private Map<String, Object> configurations;

  public String getRevision() {
    return revision;
  }

  public QueryConfigurationsResponse setRevision(String revision) {
    this.revision = revision;
    return this;
  }

  public boolean isChanged() {
    return changed;
  }

  public QueryConfigurationsResponse setChanged(boolean changed) {
    this.changed = changed;
    return this;
  }

  public Map<String, Object> getConfigurations() {
    return configurations;
  }

  public QueryConfigurationsResponse setConfigurations(
      Map<String, Object> configurations) {
    this.configurations = configurations;
    return this;
  }
}


================================================
FILE: clients/config-common/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>clients</artifactId>
        <groupId>org.apache.servicecomb</groupId>
        <version>3.4.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>config-clients-common</artifactId>
    <name>ServiceComb::Clients::Config Common</name>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicecomb</groupId>
            <artifactId>http-client-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
    </dependencies>


</project>


================================================
FILE: clients/config-common/src/main/java/org/apache/servicecomb/config/common/ConfigConverter.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.common;

import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.util.CollectionUtils;

public class ConfigConverter {
  private Map<String, Object> currentData = Collections.emptyMap();

  private Map<String, Object> lastRawData;

  private final List<String> fileSources;

  public ConfigConverter(List<String> fileSources) {
    this.fileSources = fileSources;
  }

  public Map<String, Object> getLastRawData() {
    return this.lastRawData;
  }

  public Map<String, Object> getCurrentData() {
    return this.currentData;
  }

  public Map<String, Object> updateData(Map<String, Object> rawData) {
    Map<String, Object> lastData = this.currentData;

    this.lastRawData = rawData;

    if (CollectionUtils.isEmpty(fileSources)) {
      this.currentData = rawData;
      return lastData;
    }

    Map<String, Object> fileProperties = new HashMap<>();
    fileSources.forEach(source -> {
      if (rawData.get(source) != null) {
        fileProperties.put(source, rawData.get(source));
      }
    });

    Map<String, Object> result = new HashMap<>(rawData.size());
    result.putAll(rawData);
    fileProperties.forEach((k, v) -> result.putAll(createFileSource(v)));
    this.currentData = result;
    return lastData;
  }

  private Map<String, Object> createFileSource(Object v) {
    YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
    yamlFactory.setResources(new ByteArrayResource(v.toString().getBytes(StandardCharsets.UTF_8)));
    return propertiesToMap(yamlFactory.getObject());
  }

  @SuppressWarnings("unchecked")
  private Map<String, Object> propertiesToMap(Properties properties) {
    if (properties == null) {
      return Collections.emptyMap();
    }
    Map<String, Object> result = new HashMap<>();
    Enumeration<String> keys = (Enumeration<String>) properties.propertyNames();
    while (keys.hasMoreElements()) {
      String key = keys.nextElement();
      Object value = properties.getProperty(key);
      result.put(key, value);
    }
    return result;
  }
}


================================================
FILE: clients/config-common/src/main/java/org/apache/servicecomb/config/common/exception/OperationException.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.common.exception;

public class OperationException extends RuntimeException {
  private static final long serialVersionUID = 1L;

  public OperationException(String message) {
    super(message);
  }

  public OperationException(String message, Throwable cause) {
    super(message, cause);
  }
}


================================================
FILE: clients/config-kie-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>clients</artifactId>
        <groupId>org.apache.servicecomb</groupId>
        <version>3.4.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>config-kie-client</artifactId>
    <name>ServiceComb::Clients::Kie Client</name>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicecomb</groupId>
            <artifactId>http-client-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.servicecomb</groupId>
            <artifactId>config-clients-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>failureaccess</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client;

import com.google.common.eventbus.EventBus;

import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.stream.Collectors;

import org.apache.http.HttpStatus;

import org.apache.servicecomb.config.common.exception.OperationException;
import org.apache.servicecomb.config.kie.client.model.ConfigConstants;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsRequest;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsResponse;
import org.apache.servicecomb.config.kie.client.model.KVDoc;
import org.apache.servicecomb.config.kie.client.model.KVResponse;
import org.apache.servicecomb.config.kie.client.model.KieAddressManager;
import org.apache.servicecomb.config.kie.client.model.KieConfiguration;
import org.apache.servicecomb.config.kie.client.model.ValueType;
import org.apache.servicecomb.http.client.common.HttpRequest;
import org.apache.servicecomb.http.client.common.HttpResponse;
import org.apache.servicecomb.http.client.common.HttpTransport;
import org.apache.servicecomb.http.client.common.HttpUtils;
import org.apache.servicecomb.http.client.event.OperationEvents.UnAuthorizedOperationEvent;
import org.apache.servicecomb.http.client.utils.ServiceCombServiceAvailableUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.util.CollectionUtils;

public class KieClient implements KieConfigOperation {

  private static final Logger LOGGER = LoggerFactory.getLogger(KieClient.class);

  private static final String ADDRESS_CHECK_PATH = "/v1/health";

  protected HttpTransport httpTransport;

  protected String revision = "0";

  private final KieAddressManager addressManager;

  private final KieConfiguration kieConfiguration;

  public static final String DEFAULT_KIE_API_VERSION = "v1";

  private final Map<String, List<String>> dimensionConfigNames = new HashMap<>();

  private EventBus eventBus;

  public KieClient(KieAddressManager addressManager, HttpTransport httpTransport, KieConfiguration kieConfiguration) {
    this.httpTransport = httpTransport;
    this.addressManager = addressManager;
    this.kieConfiguration = kieConfiguration;
  }

  public void setEventBus(EventBus eventBus) {
    this.eventBus = eventBus;
    addressManager.setEventBus(eventBus);
  }

  @Override
  public ConfigurationsResponse queryConfigurations(ConfigurationsRequest request, String address) {
    String url = buildUrl(request, address);
    try {
      if (kieConfiguration.isEnableLongPolling()) {
        url += "&wait=" + kieConfiguration.getPollingWaitInSeconds() + "s";
      }

      HttpRequest httpRequest = new HttpRequest(url, null, null, HttpRequest.GET);
      HttpResponse httpResponse = httpTransport.doRequest(httpRequest);
      recordAndSendUnAuthorizedEvent(httpResponse, address);
      ConfigurationsResponse configurationsResponse = new ConfigurationsResponse();
      if (httpResponse.getStatusCode() == HttpStatus.SC_OK) {
        revision = httpResponse.getHeader("X-Kie-Revision");
        KVResponse allConfigList = HttpUtils.deserialize(httpResponse.getContent(), KVResponse.class);
        logConfigurationNames(request.getLabelsQuery(), allConfigList.getData());
        Map<String, Object> configurations = getConfigByLabel(allConfigList);
        configurationsResponse.setConfigurations(configurations);
        configurationsResponse.setChanged(true);
        configurationsResponse.setRevision(revision);
        return configurationsResponse;
      }
      if (httpResponse.getStatusCode() == HttpStatus.SC_BAD_REQUEST) {
        throw new OperationException("Bad request for query configurations.");
      }
      if (httpResponse.getStatusCode() == HttpStatus.SC_NOT_MODIFIED) {
        configurationsResponse.setChanged(false);
        return configurationsResponse;
      }
      if (httpResponse.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
        LOGGER.warn("rate limited, keep the local dimension [{}] configs unchanged.", request.getLabelsQuery());
        configurationsResponse.setChanged(false);
        return configurationsResponse;
      }
      throw new OperationException(
          "read response failed. status:" + httpResponse.getStatusCode() + "; message:" +
              httpResponse.getMessage() + "; content:" + httpResponse.getContent());
    } catch (Exception e) {
      addressManager.recordFailState(address);
      LOGGER.error("query configuration from {} failed, message={}", url, e.getMessage());
      throw new OperationException("read response failed. ", e);
    }
  }

  private void recordAndSendUnAuthorizedEvent(HttpResponse response, String address) {
    if (this.eventBus != null && response.getStatusCode() == HttpStatus.SC_UNAUTHORIZED) {
      LOGGER.warn("query configuration unauthorized from server [{}], message [{}]", address, response.getMessage());
      addressManager.recordFailState(address);
      this.eventBus.post(new UnAuthorizedOperationEvent(address));
    } else {
      addressManager.recordSuccessState(address);
    }
  }

  /**
   * Only the name of the new configuration item is printed.
   * No log is printed when the configuration content is updated.
   *
   * @param dimension dimension
   * @param data configs-data
   */
  private void logConfigurationNames(String dimension, List<KVDoc> data) {
    if (CollectionUtils.isEmpty(data)) {
      return;
    }
    List<String> configNames = dimensionConfigNames.get(dimension);
    if (configNames == null) {
      configNames = new ArrayList<>();
    }
    StringBuilder names = new StringBuilder();
    for (KVDoc doc : data) {
      if (configNames.contains(doc.getKey())) {
        continue;
      }
      names.append(doc.getKey()).append(",");
      configNames.add(doc.getKey());
    }
    if (names.isEmpty()) {
      return;
    }
    dimensionConfigNames.put(dimension, configNames);
    String fileNames = names.substring(0, names.length() - 1);
    LOGGER.info("pulling dimension [{}] configurations success, get config names: [{}].",
        dimension, fileNames);
  }

  @Override
  public void checkAddressAvailable(String address) {
    ServiceCombServiceAvailableUtils.checkAddressAvailable(addressManager, address, httpTransport, ADDRESS_CHECK_PATH);
  }

  private String buildUrl(ConfigurationsRequest request, String currentAddress) {
    StringBuilder sb = new StringBuilder();
    sb.append(currentAddress);
    sb.append("/");
    sb.append(DEFAULT_KIE_API_VERSION);
    sb.append("/");
    sb.append(kieConfiguration.getProject());
    sb.append("/kie/kv?");
    sb.append(request.getLabelsQuery());
    sb.append("&revision=");
    sb.append(request.getRevision());
    if (request.isWithExact()) {
      sb.append("&match=exact");
    }
    return sb.toString();
  }

  private Map<String, Object> getConfigByLabel(KVResponse resp) {
    Map<String, Object> resultMap = new HashMap<>();
    resp.getData().stream()
        .sorted(Comparator.comparing(KVDoc::getUpdateTime, Comparator.nullsFirst(Comparator.naturalOrder())))
        .filter(doc -> doc.getStatus() == null || ConfigConstants.STATUS_ENABLED.equalsIgnoreCase(doc.getStatus()))
        .map(this::processValueType)
        .collect(Collectors.toList())
        .forEach(resultMap::putAll);
    return resultMap;
  }

  private Map<String, Object> processValueType(KVDoc kvDoc) {
    ValueType valueType;
    try {
      valueType = ValueType.valueOf(kvDoc.getValueType());
    } catch (IllegalArgumentException e) {
      throw new OperationException("value type not support [" + kvDoc.getValue() + "]");
    }
    Properties properties = new Properties();
    Map<String, Object> kvMap = new HashMap<>();
    try {
      switch (valueType) {
        case yml:
        case yaml:
          YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
          yamlFactory.setResources(new ByteArrayResource(kvDoc.getValue().getBytes(StandardCharsets.UTF_8)));
          return toMap(yamlFactory.getObject());
        case properties:
          properties.load(new StringReader(kvDoc.getValue()));
          return toMap(properties);
        case text:
        case string:
        default:
          kvMap.put(kvDoc.getKey(), kvDoc.getValue());
          return kvMap;
      }
    } catch (Exception e) {
      LOGGER.error("read config failed", e);
    }
    return Collections.emptyMap();
  }

  @SuppressWarnings("unchecked")
  private Map<String, Object> toMap(Properties properties) {
    if (properties == null) {
      return Collections.emptyMap();
    }
    Map<String, Object> result = new HashMap<>();
    Enumeration<String> keys = (Enumeration<String>) properties.propertyNames();
    while (keys.hasMoreElements()) {
      String key = keys.nextElement();
      Object value = properties.getProperty(key);
      result.put(key, value);
    }
    return result;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors;

import org.apache.servicecomb.config.common.ConfigConverter;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsRequest;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsRequestFactory;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsResponse;
import org.apache.servicecomb.config.kie.client.model.KieAddressManager;
import org.apache.servicecomb.config.kie.client.model.KieConfiguration;
import org.apache.servicecomb.http.client.task.AbstractTask;
import org.apache.servicecomb.http.client.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.eventbus.EventBus;

public class KieConfigManager extends AbstractTask {

  private static final Logger LOGGER = LoggerFactory.getLogger(KieConfigManager.class);

  private static final long LONG_POLLING_INTERVAL = 1000;

  private final KieConfigOperation configKieClient;

  private final EventBus eventBus;

  private final ConfigConverter configConverter;

  private final List<ConfigurationsRequest> configurationsRequests;

  private final KieConfiguration kieConfiguration;

  private final KieAddressManager kieAddressManager;

  public KieConfigManager(KieConfigOperation configKieClient, EventBus eventBus,
      KieConfiguration kieConfiguration, ConfigConverter configConverter, KieAddressManager kieAddressManager) {
    super("config-center-configuration-task");
    this.configurationsRequests = ConfigurationsRequestFactory.buildConfigurationRequests(kieConfiguration);
    this.configurationsRequests.sort(ConfigurationsRequest::compareTo);
    this.configKieClient = configKieClient;
    this.eventBus = eventBus;
    this.configConverter = configConverter;
    this.kieConfiguration = kieConfiguration;
    this.kieAddressManager = kieAddressManager;
  }

  public void firstPull() {
    Map<String, Object> data = new HashMap<>();
    try {
      firstQueryConfigurations(data);
    } catch (Exception e) {
      if (this.kieConfiguration.isFirstPullRequired()) {
        throw e;
      } else {
        LOGGER.warn("first pull failed!");
      }
    }
  }

  private void firstQueryConfigurations(Map<String, Object> data) {
    for (int i = 0; i < 3;) {
      String address = kieAddressManager.address();
      try {
        this.configurationsRequests.forEach(r -> {
          r.setRevision(ConfigurationsRequest.INITIAL_REVISION);
          ConfigurationsResponse response = configKieClient.queryConfigurations(r, address);
          if (response.isChanged()) {
            r.setRevision(response.getRevision());
            r.setLastRawData(response.getConfigurations());
            data.putAll(response.getConfigurations());
          }
        });
        this.configConverter.updateData(data);
        break;
      } catch (Exception e) {
        if (i == 2) {
          throw e;
        }
        LOGGER.warn("firstQueryConfigurations failed, config address {} and ignore {}", address, e.getMessage());
      }
      i++;
    }
  }

  private void onDataChanged() {
    Map<String, Object> latestData = new HashMap<>();
    this.configurationsRequests.forEach(r -> latestData.putAll(r.getLastRawData()));

    Map<String, Object> lastData = configConverter.updateData(latestData);
    KieConfigurationChangedEvent event = KieConfigurationChangedEvent
        .createIncremental(configConverter.getCurrentData(), lastData);
    if (!event.getChanged().isEmpty()) {
      eventBus.post(event);
    }
  }

  @Override
  protected void initTaskPool(String taskName) {
    this.taskPool = Executors.newFixedThreadPool(3, (task) ->
        new Thread(task, taskName));
  }

  public void startConfigKieManager() {
    this.configurationsRequests.forEach((t) ->
        this.startTask(new PollConfigurationTask(0, t)));
    schedulerCheckAddressAvailable("kie-addr-check", new CheckKieAddressTask(),
        kieConfiguration.getRefreshIntervalInMillis());
  }

  class PollConfigurationTask implements Task {
    final int failCount;

    ConfigurationsRequest configurationsRequest;

    public PollConfigurationTask(int failCount, ConfigurationsRequest configurationsRequest) {
      this.failCount = failCount;
      this.configurationsRequest = configurationsRequest;
    }

    @Override
    public void execute() {
      try {
        ConfigurationsResponse response = configKieClient.queryConfigurations(configurationsRequest,
            kieAddressManager.address());
        if (response.isChanged()) {
          configurationsRequest.setRevision(response.getRevision());
          configurationsRequest.setLastRawData(response.getConfigurations());
          onDataChanged();
        }
        if (KieConfigManager.this.kieConfiguration.isEnableLongPolling()) {
          startTask(
              new BackOffSleepTask(LONG_POLLING_INTERVAL, new PollConfigurationTask(0, this.configurationsRequest)));
        } else {
          startTask(new BackOffSleepTask(kieConfiguration.getRefreshIntervalInMillis(),
              new PollConfigurationTask(0, this.configurationsRequest)));
        }
      } catch (Exception e) {
        LOGGER.warn("get configurations from KieConfigCenter failed, and will try again, cause message: {}. current "
            + "fail does not affect the obtained historical configuration.", e.getCause().getMessage());
        startTask(
            new BackOffSleepTask(failCount + 1, new PollConfigurationTask(failCount + 1, this.configurationsRequest)));
      }
    }
  }

  class CheckKieAddressTask implements Runnable {
    @Override
    public void run() {
      List<String> isolationAddresses = kieAddressManager.getIsolationAddresses();
      if (isolationAddresses.isEmpty()) {
        return;
      }
      for (String address : isolationAddresses) {
        configKieClient.checkAddressAvailable(address);
      }
    }
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigOperation.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client;

import org.apache.servicecomb.config.common.exception.OperationException;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsRequest;
import org.apache.servicecomb.config.kie.client.model.ConfigurationsResponse;

//此处支持配置中心扩展
public interface KieConfigOperation {
  /**
   * 根据查询条件查询配置项。
   * @param request 查询的维度(project, application, serviceName, version) 和 revision 信息。
   * @param address 查询的配置中心地址。
   * @return 如果存在配置变更,返回全量的配置项, changed = true。 如果没有变更, 返回 null, changed = false,
   *  @throws OperationException If some problems happened to contact service center or non http 200 returned.
   */
  ConfigurationsResponse queryConfigurations(ConfigurationsRequest request, String address);

  /**
   * Check kie isolation address available
   *
   * @param address isolation address
   */
  void checkAddressAvailable(String address);
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigurationChangedEvent.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

/**
 * This event is fired when configuration changed of kie.
 */
public class KieConfigurationChangedEvent {
  private final Map<String, Object> added;

  private final Map<String, Object> deleted;

  private final Map<String, Object> updated;

  private Set<String> changed;

  private KieConfigurationChangedEvent(Map<String, Object> added, Map<String, Object> updated,
      Map<String, Object> deleted) {
    this.added = added;
    this.deleted = deleted;
    this.updated = updated;
    this.changed = new HashSet<>();
    this.changed.addAll(added.keySet());
    this.changed.addAll(updated.keySet());
    this.changed.addAll(deleted.keySet());
  }

  public static KieConfigurationChangedEvent createIncremental(Map<String, Object> latest, Map<String, Object> last) {
    Map<String, Object> itemsCreated = new HashMap<>();
    Map<String, Object> itemsDeleted = new HashMap<>();
    Map<String, Object> itemsModified = new HashMap<>();

    for (Map.Entry<String, Object> entry : latest.entrySet()) {
      String itemKey = entry.getKey();
      if (!last.containsKey(itemKey)) {
        itemsCreated.put(itemKey, entry.getValue());
      } else if (!Objects.equals(last.get(itemKey), latest.get(itemKey))) {
        itemsModified.put(itemKey, entry.getValue());
      }
    }
    for (String itemKey : last.keySet()) {
      if (!latest.containsKey(itemKey)) {
        itemsDeleted.put(itemKey, null);
      }
    }
    KieConfigurationChangedEvent event = KieConfigurationChangedEvent
        .createIncremental(itemsCreated, itemsModified, itemsDeleted);
    return event;
  }

  public static KieConfigurationChangedEvent createIncremental(Map<String, Object> added, Map<String, Object> updated,
      Map<String, Object> deleted) {
    return new KieConfigurationChangedEvent(added, updated, deleted);
  }

  public static KieConfigurationChangedEvent createIncremental(Map<String, Object> updated) {
    return new KieConfigurationChangedEvent(new HashMap<>(), updated, new HashMap<>());
  }

  public final Map<String, Object> getAdded() {
    return added;
  }


  public final Map<String, Object> getUpdated() {
    return updated;
  }


  public final Map<String, Object> getDeleted() {
    return deleted;
  }

  public final Set<String> getChanged() {
    return changed;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigConstants.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;


public class ConfigConstants {

  public static final String LABEL_ENV = "environment";

  public static final String LABEL_APP = "app";

  public static final String LABEL_SERVICE = "service";

  public static final String LABEL_VERSION = "version";

  public static final String STATUS_ENABLED = "enabled";

  public static final String KEY_PROJECT = "project";

  // ###### kie config center polling configuration############### //
  public static final String KEY_ENABLELONGPOLLING = "enableLongPolling";

  public static final String KEY_POLLINGWAITSEC = "pollingWaitInSeconds";

}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import java.util.HashMap;
import java.util.Map;

public class ConfigurationsRequest implements Comparable<ConfigurationsRequest> {
  public static final String INITIAL_REVISION = "-1";

  private int order;

  private String revision = INITIAL_REVISION;

  private boolean withExact;

  private String labelsQuery;

  private Map<String, Object> lastRawData = new HashMap<>();

  public int getOrder() {
    return order;
  }

  public ConfigurationsRequest setOrder(int order) {
    this.order = order;
    return this;
  }

  public String getRevision() {
    return revision;
  }

  public ConfigurationsRequest setRevision(String revision) {
    this.revision = revision;
    return this;
  }

  public boolean isWithExact() {
    return withExact;
  }

  public ConfigurationsRequest setWithExact(boolean withExact) {
    this.withExact = withExact;
    return this;
  }

  public String getLabelsQuery() {
    return labelsQuery;
  }

  public ConfigurationsRequest setLabelsQuery(String labelsQuery) {
    this.labelsQuery = labelsQuery;
    return this;
  }

  public Map<String, Object> getLastRawData() {
    return lastRawData;
  }

  public ConfigurationsRequest setLastRawData(Map<String, Object> lastRawData) {
    this.lastRawData = lastRawData;
    return this;
  }

  @Override
  public int compareTo(ConfigurationsRequest o) {
    // Higher priority, query the last
    return o.getOrder() - this.order;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.servicecomb.http.client.common.HttpUtils;

public class ConfigurationsRequestFactory {
  private static final String KEY_APP = "app";

  private static final String KEY_ENVIRONMENT = "environment";

  private static final String KEY_SERVICE = "service";

  private static final String KEY_VERSION = "version";

  private static final int CUSTOM_ORDER = 100;

  private static final int VERSION_ORDER = 200;

  private static final int SERVICE_ORDER = 300;

  private static final int APP_ORDER = 400;

  public static List<ConfigurationsRequest> buildConfigurationRequests(KieConfiguration configuration) {
    List<ConfigurationsRequest> result = new ArrayList<>();
    if (configuration.isEnableAppConfig()) {
      result.add(createAppConfigurationsRequest(configuration));
    }
    if (configuration.isEnableServiceConfig()) {
      result.add(createServiceConfigurationsRequest(configuration));
    }
    if (configuration.isEnableVersionConfig()) {
      result.add(createVersionConfigurationsRequest(configuration));
    }
    if (configuration.isEnableCustomConfig()) {
      result.add(createCustomConfigurationsRequest(configuration));
    }
    return result;
  }

  private static ConfigurationsRequest createAppConfigurationsRequest(KieConfiguration configuration) {
    return new ConfigurationsRequest()
        .setOrder(APP_ORDER)
        .setWithExact(true)
        .setLabelsQuery(buildLabelQuery(buildLabelQueryItem(KEY_APP, configuration.getAppName()),
            buildLabelQueryItem(KEY_ENVIRONMENT, configuration.getEnvironment())));
  }

  private static ConfigurationsRequest createServiceConfigurationsRequest(KieConfiguration configuration) {
    return new ConfigurationsRequest()
        .setOrder(SERVICE_ORDER)
        .setWithExact(true)
        .setLabelsQuery(buildLabelQuery(buildLabelQueryItem(KEY_APP, configuration.getAppName()),
            buildLabelQueryItem(KEY_SERVICE, configuration.getServiceName()),
            buildLabelQueryItem(KEY_ENVIRONMENT, configuration.getEnvironment())));
  }

  private static ConfigurationsRequest createVersionConfigurationsRequest(KieConfiguration configuration) {
    return new ConfigurationsRequest()
        .setOrder(VERSION_ORDER)
        .setWithExact(true)
        .setLabelsQuery(buildLabelQuery(buildLabelQueryItem(KEY_APP, configuration.getAppName()),
            buildLabelQueryItem(KEY_SERVICE, configuration.getServiceName()),
            buildLabelQueryItem(KEY_ENVIRONMENT, configuration.getEnvironment()),
            buildLabelQueryItem(KEY_VERSION, configuration.getVersion())));
  }

  private static ConfigurationsRequest createCustomConfigurationsRequest(KieConfiguration configuration) {
    return new ConfigurationsRequest()
        .setOrder(CUSTOM_ORDER)
        .setWithExact(false)
        .setLabelsQuery(
            buildLabelQuery(buildLabelQueryItem(configuration.getCustomLabel(), configuration.getCustomLabelValue())));
  }

  private static String buildLabelQuery(String... labels) {
    StringBuilder result = new StringBuilder();
    for (String label : labels) {
      result.append(label);
      result.append("&");
    }
    return result.toString();
  }

  private static String buildLabelQueryItem(String key, String value) {
    try {
      return "label=" + HttpUtils.encodeURLParam(key + ":" + value);
    } catch (IOException e) {
      throw new IllegalArgumentException("unexpected param", e);
    }
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsResponse.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import java.util.Map;

public class ConfigurationsResponse {
  private String revision;

  private boolean changed;

  private Map<String, Object> configurations;

  public String getRevision() {
    return revision;
  }

  public ConfigurationsResponse setRevision(String revision) {
    this.revision = revision;
    return this;
  }

  public boolean isChanged() {
    return changed;
  }

  public ConfigurationsResponse setChanged(boolean changed) {
    this.changed = changed;
    return this;
  }

  public Map<String, Object> getConfigurations() {
    return configurations;
  }

  public ConfigurationsResponse setConfigurations(
      Map<String, Object> configurations) {
    this.configurations = configurations;
    return this;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KVDoc.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import com.fasterxml.jackson.annotation.JsonAlias;

import java.util.HashMap;
import java.util.Map;

public class KVDoc {

  private String id;

  private String check;

  private String domain;

  private String key;

  @JsonAlias("label_id")
  private String labelId;

  private Map<String, String> labels = new HashMap<>();

  private String value;

  @JsonAlias("value_type")
  private String valueType;

  private String status;

  @JsonAlias("update_time")
  private long updateTime;

  public String getStatus() {
    return status;
  }

  public void setStatus(String status) {
    this.status = status;
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public String getKey() {
    return key;
  }

  public void setKey(String key) {
    this.key = key;
  }

  public String getCheck() {
    return check;
  }

  public String getDomain() {
    return domain;
  }

  public String getLabelId() {
    return labelId;
  }

  public Map<String, String> getLabels() {
    return labels;
  }

  public String getValue() {
    return value;
  }

  public void setCheck(String check) {
    this.check = check;
  }

  public void setDomain(String domain) {
    this.domain = domain;
  }

  public void setLabelId(String labelId) {
    this.labelId = labelId;
  }

  public void setLabels(Map<String, String> labels) {
    this.labels = labels;
  }

  public void setValueType(String valueType) {
    this.valueType = valueType;
  }

  public void setValue(String value) {
    this.value = value;
  }

  public String getValueType() {
    return valueType;
  }

  public long getUpdateTime() {
    return updateTime;
  }

  public void setUpdateTime(long updateTime) {
    this.updateTime = updateTime;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KVResponse.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import java.util.List;

public class KVResponse {

  private List<KVDoc> data;

  private LabelDocResponse label;

  private Integer total;

  public Integer getTotal() {
    return total;
  }

  public void setTotal(Integer total) {
    this.total = total;
  }

  public List<KVDoc> getData() {
    return data;
  }

  public LabelDocResponse getLabel() {
    return label;
  }

  public void setData(List<KVDoc> data) {
    this.data = data;
  }

  public void setLabel(LabelDocResponse label) {
    this.label = label;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieAddressManager.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import java.util.List;

import org.apache.servicecomb.http.client.common.AbstractAddressManager;
import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

public class KieAddressManager extends AbstractAddressManager {

  public KieAddressManager(List<String> addresses, EventBus eventBus, String region, String availableZone) {
    super(addresses, region, availableZone);
    eventBus.register(this);
  }

  @Subscribe
  public void onRefreshEndpointEvent(RefreshEndpointEvent event) {
    refreshEndpoint(event, RefreshEndpointEvent.KIE_NAME);
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

public class KieConfiguration {
  private boolean enableLongPolling;

  private int pollingWaitInSeconds;

  private int refreshIntervalInMillis = 15000;

  private String project;

  private String appName;

  private String serviceName;

  private String environment;

  private String version;

  private boolean enableAppConfig;

  private boolean enableServiceConfig;

  private boolean enableVersionConfig;

  private boolean enableCustomConfig;

  private String customLabelValue;

  private String customLabel;

  private boolean firstPullRequired;

  public String getAppName() {
    return appName;
  }

  public KieConfiguration setAppName(String appName) {
    this.appName = appName;
    return this;
  }

  public String getServiceName() {
    return serviceName;
  }

  public KieConfiguration setServiceName(String serviceName) {
    this.serviceName = serviceName;
    return this;
  }

  public String getEnvironment() {
    return environment;
  }

  public KieConfiguration setEnvironment(String environment) {
    this.environment = environment;
    return this;
  }

  public String getCustomLabelValue() {
    return customLabelValue;
  }

  public KieConfiguration setCustomLabelValue(String customLabelValue) {
    this.customLabelValue = customLabelValue;
    return this;
  }

  public boolean isEnableAppConfig() {
    return enableAppConfig;
  }

  public KieConfiguration setEnableAppConfig(boolean enableAppConfig) {
    this.enableAppConfig = enableAppConfig;
    return this;
  }

  public boolean isEnableServiceConfig() {
    return enableServiceConfig;
  }

  public KieConfiguration setEnableServiceConfig(boolean enableServiceConfig) {
    this.enableServiceConfig = enableServiceConfig;
    return this;
  }

  public boolean isEnableCustomConfig() {
    return enableCustomConfig;
  }

  public KieConfiguration setEnableCustomConfig(boolean enableCustomConfig) {
    this.enableCustomConfig = enableCustomConfig;
    return this;
  }

  public String getCustomLabel() {
    return customLabel;
  }

  public KieConfiguration setCustomLabel(String customLabel) {
    this.customLabel = customLabel;
    return this;
  }

  public boolean isEnableLongPolling() {
    return enableLongPolling;
  }

  public KieConfiguration setEnableLongPolling(boolean enableLongPolling) {
    this.enableLongPolling = enableLongPolling;
    return this;
  }

  public boolean isEnableVersionConfig() {
    return enableVersionConfig;
  }

  public KieConfiguration setEnableVersionConfig(boolean enableVersionConfig) {
    this.enableVersionConfig = enableVersionConfig;
    return this;
  }

  public int getPollingWaitInSeconds() {
    return pollingWaitInSeconds;
  }

  public KieConfiguration setPollingWaitInSeconds(int pollingWaitInSeconds) {
    this.pollingWaitInSeconds = pollingWaitInSeconds;
    return this;
  }

  public String getProject() {
    return project;
  }

  public KieConfiguration setProject(String project) {
    this.project = project;
    return this;
  }

  public boolean isFirstPullRequired() {
    return firstPullRequired;
  }

  public KieConfiguration setFirstPullRequired(boolean firstPullRequired) {
    this.firstPullRequired = firstPullRequired;
    return this;
  }

  public int getRefreshIntervalInMillis() {
    return refreshIntervalInMillis;
  }

  public KieConfiguration setRefreshIntervalInMillis(int refreshIntervallnMillis) {
    this.refreshIntervalInMillis = refreshIntervallnMillis;
    return this;
  }

  public String getVersion() {
    return version;
  }

  public KieConfiguration setVersion(String version) {
    this.version = version;
    return this;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/LabelDocResponse.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import com.fasterxml.jackson.annotation.JsonAlias;

import java.util.HashMap;
import java.util.Map;

public class LabelDocResponse {

  @JsonAlias("label_id")
  private String labelId;

  private Map<String, String> labels = new HashMap<>();

  public String getLabelId() {
    return labelId;
  }

  public Map<String, String> getLabels() {
    return labels;
  }

  public void setLabelId(String labelId) {
    this.labelId = labelId;
  }

  public void setLabels(Map<String, String> labels) {
    this.labels = labels;
  }
}


================================================
FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ValueType.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

public enum ValueType {
  yml,
  yaml,
  ini,
  string,
  text,
  json,
  properties,
  xml
}


================================================
FILE: clients/config-kie-client/src/test/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.Map;

class ConfigurationsRequestTest {

  @Test
  void getLastRawData() {
    ConfigurationsRequest configurationsRequest = new ConfigurationsRequest();
    Map<String, Object> lastRawData = configurationsRequest.getLastRawData();
    Assertions.assertEquals(lastRawData.size(), 0);
  }
}


================================================
FILE: clients/config-kie-client/src/test/java/org/apache/servicecomb/config/kie/client/model/KieAddressManagerTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.config.kie.client.model;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;

import com.google.common.eventbus.EventBus;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

class KieAddressManagerTest {

  private static final List<String> addresses = new ArrayList<>();

  private static KieAddressManager addressManager1;

  @Test
  public void kieAddressManagerTest() throws NoSuchFieldException, IllegalAccessException {
    addresses.add("http://127.0.0.1:30103");
    addresses.add("https://127.0.0.2:30103");
    addressManager1 = new KieAddressManager(addresses, new EventBus(), "", "");
    Field addressManagerField = addressManager1.getClass().getSuperclass().getDeclaredField("index");
    addressManagerField.setAccessible(true);
    addressManagerField.set(addressManager1, 0);

    Assertions.assertNotNull(addressManager1);

    List<String> addresses = addressManager1.getAddresses();
    Assertions.assertEquals(2, addresses.size());
    Assertions.assertEquals("http://127.0.0.1:30103", addresses.get(0));

    Assertions.assertEquals("https://127.0.0.2:30103", addressManager1.address());
    Assertions.assertEquals("http://127.0.0.1:30103", addressManager1.address());
  }

  @Test
  public void onRefreshEndpointEvent() {
    List<String> addressAZ = new ArrayList<>();
    addressAZ.add("http://127.0.0.3:30100");
    List<String> addressRG = new ArrayList<>();
    addressRG.add("http://127.0.0.4:30100");
    Map<String, List<String>> zoneAndRegion = new HashMap<>();
    zoneAndRegion.put("sameZone", addressAZ);
    zoneAndRegion.put("sameRegion", addressRG);
    addressManager1 = new KieAddressManager(addresses, new EventBus(), "", "");
    RefreshEndpointEvent event = new RefreshEndpointEvent(zoneAndRegion, "KIE");
    addressManager1.refreshEndpoint(event, "KIE");

    List<String> availableZone = addressManager1.getAvailableZone();
    Assertions.assertEquals("http://127.0.0.3:30100", availableZone.get(0));

    List<String> availableRegion = addressManager1.getAvailableRegion();
    Assertions.assertEquals("http://127.0.0.4:30100", availableRegion.get(0));
  }
}


================================================
FILE: clients/dashboard-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>clients</artifactId>
        <groupId>org.apache.servicecomb</groupId>
        <version>3.4.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dashboard-client</artifactId>
    <name>ServiceComb::Clients::Dashboard Client</name>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicecomb</groupId>
            <artifactId>http-client-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>failureaccess</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>


================================================
FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardAddressManager.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.dashboard.client;


import java.util.List;

import org.apache.servicecomb.http.client.common.AbstractAddressManager;
import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;


public class DashboardAddressManager extends AbstractAddressManager {

  public DashboardAddressManager(List<String> addresses, EventBus eventBus, String region, String availableZone) {
    super(addresses, region, availableZone);
    eventBus.register(this);
  }

  @Subscribe
  public void onRefreshEndpointEvent(RefreshEndpointEvent event) {
    refreshEndpoint(event, RefreshEndpointEvent.CSE_MONITORING_NAME);
  }
}


================================================
FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardClient.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.dashboard.client;

import org.apache.http.HttpStatus;
import org.apache.servicecomb.dashboard.client.model.MonitorData;
import org.apache.servicecomb.http.client.common.HttpRequest;
import org.apache.servicecomb.http.client.common.HttpResponse;
import org.apache.servicecomb.http.client.common.HttpTransport;
import org.apache.servicecomb.http.client.common.HttpUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DashboardClient implements DashboardOperation {
  private static final Logger LOGGER = LoggerFactory.getLogger(DashboardClient.class);

  protected HttpTransport httpTransport;

  private final DashboardAddressManager addressManager;

  public DashboardClient(DashboardAddressManager addressManager, HttpTransport httpTransport) {
    this.httpTransport = httpTransport;
    this.addressManager = addressManager;
  }

  @Override
  public void sendData(String url, MonitorData data) {
    String address = addressManager.address();
    try {
      HttpRequest httpRequest = new HttpRequest(address + url, null, HttpUtils.serialize(data), HttpRequest.POST);
      HttpResponse httpResponse = httpTransport.doRequest(httpRequest);
      if (httpResponse.getStatusCode() != HttpStatus.SC_OK) {
        LOGGER.error("send data to [{}] failed, status code [{}], message [{}]", url, httpResponse.getStatusCode()
            , httpResponse.getContent());
      }
    } catch (Exception e) {
      LOGGER.error("send data to [{}] failed", url, e);
    }
  }
}


================================================
FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardOperation.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.dashboard.client;

import org.apache.servicecomb.dashboard.client.model.MonitorData;

public interface DashboardOperation {
  void sendData(String url, MonitorData monitorData);
}


================================================
FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/model/InterfaceInfo.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.dashboard.client.model;

public class InterfaceInfo {
  private String name;

  private String desc;

  private double qps;

  private int latency;

  private int l995;

  private int l99;

  private int l90;

  private int l75;

  private int l50;

  private int l25;

  private int l5;

  private double rate;

  private double failureRate;

  private long total;

  private boolean isCircuitBreakerOpen;

  private long failure;

  private long shortCircuited;

  private long semaphoreRejected;

  private long threadPoolRejected;

  private long countTimeout;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getDesc() {
    return desc;
  }

  public void setDesc(String desc) {
    this.desc = desc;
  }

  public double getQps() {
    return qps;
  }

  public void setQps(double qps) {
    this.qps = qps;
  }

  public int getLatency() {
    return latency;
  }

  public void setLatency(int latency) {
    this.latency = latency;
  }

  public int getL995() {
    return l995;
  }

  public void setL995(int l995) {
    this.l995 = l995;
  }

  public int getL99() {
    return l99;
  }

  public void setL99(int l99) {
    this.l99 = l99;
  }

  public int getL90() {
    return l90;
  }

  public void setL90(int l90) {
    this.l90 = l90;
  }

  public int getL75() {
    return l75;
  }

  public void setL75(int l75) {
    this.l75 = l75;
  }

  public int getL50() {
    return l50;
  }

  public void setL50(int l50) {
    this.l50 = l50;
  }

  public int getL25() {
    return l25;
  }

  public void setL25(int l25) {
    this.l25 = l25;
  }

  public int getL5() {
    return l5;
  }

  public void setL5(int l5) {
    this.l5 = l5;
  }

  public double getRate() {
    return rate;
  }

  public void setRate(double rate) {
    this.rate = rate;
  }

  public double getFailureRate() {
    return failureRate;
  }

  public void setFailureRate(double failureRate) {
    this.failureRate = failureRate;
  }

  public long getTotal() {
    return total;
  }

  public void setTotal(long total) {
    this.total = total;
  }

  public boolean isCircuitBreakerOpen() {
    return isCircuitBreakerOpen;
  }

  public void setCircuitBreakerOpen(boolean circuitBreakerOpen) {
    isCircuitBreakerOpen = circuitBreakerOpen;
  }

  public long getFailure() {
    return failure;
  }

  public void setFailure(long failure) {
    this.failure = failure;
  }

  public long getShortCircuited() {
    return shortCircuited;
  }

  public void setShortCircuited(long shortCircuited) {
    this.shortCircuited = shortCircuited;
  }

  public long getSemaphoreRejected() {
    return semaphoreRejected;
  }

  public void setSemaphoreRejected(long semaphoreRejected) {
    this.semaphoreRejected = semaphoreRejected;
  }

  public long getThreadPoolRejected() {
    return threadPoolRejected;
  }

  public void setThreadPoolRejected(long threadPoolRejected) {
    this.threadPoolRejected = threadPoolRejected;
  }

  public long getCountTimeout() {
    return countTimeout;
  }

  public void setCountTimeout(long countTimeout) {
    this.countTimeout = countTimeout;
  }
}


================================================
FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/model/MonitorData.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.dashboard.client.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class MonitorData {
  public static final double PERCENTAGE_995 = 99.5;

  public static final double PERCENTAGE_99 = 99;

  public static final double PERCENTAGE_90 = 90;

  public static final double PERCENTAGE_75 = 75;

  public static final double PERCENTAGE_50 = 50;

  public static final double PERCENTAGE_25 = 25;

  public static final double PERCENTAGE_5 = 5;

  public static final int SCALE_VAL = 1;

  public static final double DEFAULT_SUCCESS_RATE = 1.0d;

  public static final int CONVERSION = 1000;

  private String appId;

  private String version;

  private String name;

  private String serviceId;

  private String environment;

  private String instance;

  private String instanceId;

  private int thread;

  private double cpu;

  private double loadAverage;

  private long uptime;

  private Map<String, Long> memory;

  private List<InterfaceInfo> interfaces = new ArrayList<>();

  private Map<String, Object> customs;

  public void addInterfaceInfo(InterfaceInfo interfaceInfo) {
    interfaces.add(interfaceInfo);
  }

  public String getAppId() {
    return appId;
  }

  public void setAppId(String appId) {
    this.appId = appId;
  }

  public String getVersion() {
    return version;
  }

  public void setVersion(String version) {
    this.version = version;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getServiceId() {
    return serviceId;
  }

  public void setServiceId(String serviceId) {
    this.serviceId = serviceId;
  }

  public String getInstance() {
    return instance;
  }

  public void setInstance(String instance) {
    this.instance = instance;
  }

  public String getInstanceId() {
    return instanceId;
  }

  public void setInstanceId(String instanceId) {
    this.instanceId = instanceId;
  }

  public int getThreadCount() {
    return thread;
  }

  public void setThreadCount(int threadCount) {
    this.thread = threadCount;
  }

  public double getCpu() {
    return cpu;
  }

  public void setCpu(double cpu) {
    this.cpu = cpu;
  }

  public double getLoadAverage() {
    return loadAverage;
  }

  public void setLoadAverage(double loadAverage) {
    this.loadAverage = loadAverage;
  }

  public long getUptime() {
    return uptime;
  }

  public void setUptime(long uptime) {
    this.uptime = uptime;
  }

  public Map<String, Long> getMemory() {
    return memory;
  }

  public void setMemory(Map<String, Long> memory) {
    this.memory = memory;
  }

  public List<InterfaceInfo> getInterfaces() {
    return interfaces;
  }

  public void setInterfaces(List<InterfaceInfo> interfaces) {
    this.interfaces = interfaces;
  }

  public Map<String, Object> getCustoms() {
    return customs;
  }

  public void setCustoms(Map<String, Object> customs) {
    this.customs = customs;
  }

  public String getEnvironment() {
    return environment;
  }

  public void setEnvironment(String environment) {
    this.environment = environment;
  }
}


================================================
FILE: clients/dashboard-client/src/test/java/org/apache/servicecomb/dashboard/client/AddressManagerTest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.dashboard.client;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import com.google.common.eventbus.EventBus;

class AddressManagerTest {

  private static final List<String> addresses = new ArrayList<>();

  private static DashboardAddressManager addressManager1;

  @Test
  public void kieAddressManagerTest() throws IllegalAccessException, NoSuchFieldException {
    addresses.add("http://127.0.0.1:30103");
    addresses.add("https://127.0.0.2:30103");
    addressManager1 = new DashboardAddressManager(addresses, new EventBus(), "", "");
    Field addressManagerField = addressManager1.getClass().getSuperclass().getDeclaredField("index");
    addressManagerField.setAccessible(true);
    addressManagerField.set(addressManager1, 0);

    Assertions.assertNotNull(addressManager1);

    List<String> addresses = addressManager1.getAddresses();
    Assertions.assertEquals(2, addresses.size());
    Assertions.assertEquals("http://127.0.0.1:30103", addresses.get(0));

    Assertions.assertEquals("https://127.0.0.2:30103", addressManager1.address());
    Assertions.assertEquals("http://127.0.0.1:30103", addressManager1.address());
  }

  @Test
  public void onRefreshEndpointEvent() {
    List<String> addressAZ = new ArrayList<>();
    addressAZ.add("http://127.0.0.3:30100");
    List<String> addressRG = new ArrayList<>();
    addressRG.add("http://127.0.0.4:30100");
    Map<String, List<String>> zoneAndRegion = new HashMap<>();
    zoneAndRegion.put("sameZone", addressAZ);
    zoneAndRegion.put("sameRegion", addressRG);
    addressManager1 = new DashboardAddressManager(addresses, new EventBus(), "", "");
    RefreshEndpointEvent event = new RefreshEndpointEvent(zoneAndRegion, "CseMonitoring");
    addressManager1.refreshEndpoint(event, "CseMonitoring");

    List<String> availableZone = addressManager1.getAvailableZone();
    Assertions.assertEquals("http://127.0.0.3:30100", availableZone.get(0));

    List<String> availableRegion = addressManager1.getAvailableRegion();
    Assertions.assertEquals("http://127.0.0.4:30100", availableRegion.get(0));
  }
}


================================================
FILE: clients/http-client-common/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>clients</artifactId>
    <groupId>org.apache.servicecomb</groupId>
    <version>3.4.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>http-client-common</artifactId>
  <name>ServiceComb::Clients::HTTP Client Common</name>

  <dependencies>
    <!-- Make this client simple and portable to many frameworks.
       Do not import other dependencies if really need. -->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.servicecomb</groupId>
      <artifactId>foundation-ssl</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.servicecomb</groupId>
      <artifactId>foundation-spi</artifactId>
    </dependency>

    <dependency>
      <groupId>org.java-websocket</groupId>
      <artifactId>Java-WebSocket</artifactId>
    </dependency>
  </dependencies>
</project>


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/auth/DefaultRequestAuthHeaderProvider.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.auth;

import java.util.HashMap;
import java.util.Map;

import org.apache.servicecomb.foundation.auth.SignRequest;

public class DefaultRequestAuthHeaderProvider implements RequestAuthHeaderProvider {
  @Override
  public Map<String, String> loadAuthHeader(SignRequest signRequest) {
    return new HashMap<>(0);
  }
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/auth/RequestAuthHeaderProvider.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.auth;

import java.util.Map;

import org.apache.servicecomb.foundation.auth.SignRequest;

public interface RequestAuthHeaderProvider {
  Map<String, String> loadAuthHeader(SignRequest signRequest);
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/AbstractAddressManager.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;

import org.apache.commons.lang3.StringUtils;
import org.apache.servicecomb.http.client.event.EngineConnectChangedEvent;
import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;

import com.google.common.annotations.VisibleForTesting;
import com.google.common.eventbus.EventBus;

public class AbstractAddressManager {
  private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAddressManager.class);

  public static final String DEFAULT_PROJECT = "default";

  public static final String V4_PREFIX = "/v4/";

  private static final String V3_PREFIX = "/v3/";

  private static final String ZONE = "availableZone";

  private static final String REGION = "region";

  private static final int ISOLATION_THRESHOLD = 3;

  private volatile List<String> addresses = new ArrayList<>();

  // when all addresses are isolation, it will use this for polling.
  private final List<String> defaultAddress = new ArrayList<>();

  private final List<String> defaultIsolationAddress = new ArrayList<>();

  private int index;

  private String projectName;

  // recording continuous times of failure of an address.
  private final Map<String, Integer> addressFailureStatus = new ConcurrentHashMap<>();

  private volatile List<String> availableZone = new ArrayList<>();

  private final List<String> isolationZoneAddress = new ArrayList<>();

  private volatile List<String> availableRegion = new ArrayList<>();

  private final List<String> isolationRegionAddress = new ArrayList<>();

  private volatile boolean addressAutoRefreshed = false;

  private final Object lock = new Object();

  private final Random random = new Random();

  private EventBus eventBus;

  public AbstractAddressManager(List<String> addresses, String ownRegion, String ownAvailableZone) {
    this.projectName = DEFAULT_PROJECT;
    parseAndInitAddresses(addresses, ownRegion, ownAvailableZone, false);
    this.index = !addresses.isEmpty() ? getRandomIndex() : 0;
  }

  /**
   * address support config with region/availableZone info, to enable engine affinity calls during startup
   * address may be like:
   *   https://192.168.20.13:30110?region=region1&availableZone=az
   *   https://192.168.20.13:30100?region=region1&availableZone=az
   * When address have no datacenter information, roundRobin using address
   *
   * @param addresses engine addresses
   * @param ownRegion microservice region
   * @param ownAvailableZone microservice zone
   * @param isFormat is need format
   */
  private void parseAndInitAddresses(List<String> addresses, String ownRegion, String ownAvailableZone,
      boolean isFormat) {
    if (CollectionUtils.isEmpty(addresses)) {
      return;
    }
    List<String> tempList = new ArrayList<>();
    addressAutoRefreshed = addresses.stream().anyMatch(addr -> addr.contains(ZONE) || addr.contains(REGION));
    for (String address : addresses) {
      // Compatible IpPortManager init address is 127.0.0.1:30100
      if (!address.startsWith("http")) {
        tempList.add(address);
        continue;
      }
      URLEndPoint endpoint = new URLEndPoint(address);
      tempList.add(endpoint.toString());
      buildAffinityAddress(endpoint, ownRegion, ownAvailableZone);
    }
    this.addresses.addAll(isFormat ? this.transformAddress(tempList) : tempList);
    this.defaultAddress.addAll(isFormat ? this.transformAddress(tempList) : tempList);
  }

  private void buildAffinityAddress(URLEndPoint endpoint, String ownRegion, String ownAvailableZone) {
    if (addressAutoRefreshed) {
      if (regionAndAZMatch(ownRegion, ownAvailableZone, endpoint.getFirst(REGION), endpoint.getFirst(ZONE))) {
        availableZone.add(endpoint.toString());
      } else {
        availableRegion.add(endpoint.toString());
      }
    }
  }

  private boolean regionAndAZMatch(String ownRegion, String ownAvailableZone, String engineRegion,
      String engineAvailableZone) {
    return ownRegion.equalsIgnoreCase(engineRegion) && ownAvailableZone.equals(engineAvailableZone);
  }

  public AbstractAddressManager(String projectName, List<String> addresses, String ownRegion, String ownAvailableZone) {
    this.projectName = StringUtils.isEmpty(projectName) ? DEFAULT_PROJECT : projectName;
    parseAndInitAddresses(addresses, ownRegion, ownAvailableZone, true);
    this.index = !addresses.isEmpty() ? getRandomIndex() : 0;
  }

  private int getRandomIndex() {
    return random.nextInt(addresses.size());
  }

  public void refreshEndpoint(RefreshEndpointEvent event, String key) {
    if (null == event || !event.getName().equals(key)) {
      return;
    }

    availableZone = event.getSameZone().stream().map(this::normalizeUri).collect(Collectors.toList());
    availableRegion = event.getSameRegion().stream().map(this::normalizeUri).collect(Collectors.toList());
    addressAutoRefreshed = true;
  }

  protected String normalizeUri(String endpoint) {
    return new URLEndPoint(endpoint).toString();
  }

  @VisibleForTesting
  Map<String, Integer> getAddressFailureStatus() {
    return addressFailureStatus;
  }

  public List<String> getAddresses() {
    return addresses;
  }

  public List<String> getAvailableZone() {
    return availableZone;
  }

  public List<String> getAvailableRegion() {
    return availableRegion;
  }

  public String formatUrl(String url, boolean absoluteUrl, String address) {
    return absoluteUrl ? address + url : formatAddress(address) + url;
  }

  public boolean sslEnabled() {
    return address().startsWith("https://");
  }

  protected List<String> transformAddress(List<String> addresses) {
    return addresses.stream().map(this::formatAddress).collect(Collectors.toList());
  }

  protected String formatAddress(String address) {
    try {
      return getUrlPrefix(address) + HttpUtils.encodeURLParam(this.projectName);
    } catch (Exception e) {
      throw new IllegalStateException("not possible");
    }
  }

  protected String getUrlPrefix(String address) {
    return address + V3_PREFIX;
  }

  public String address() {
    if (!addressAutoRefreshed) {
      return getDefaultAddress();
    } else {
      return getAvailableZoneAddress();
    }
  }

  private String getDefaultAddress() {
    if (!addresses.isEmpty()) {
      return getCurrentAddress(addresses);
    }
    LOGGER.warn("all addresses are isolation, please check server status.");
    // when all addresses are isolation, it will use all default address for polling.
    return getCurrentAddress(defaultAddress);
  }

  private String getAvailableZoneAddress() {
    List<String> zoneOrRegionAddress = getZoneOrRegionAddress();
    if (!zoneOrRegionAddress.isEmpty()) {
      return getCurrentAddress(zoneOrRegionAddress);
    }
    LOGGER.warn("all auto discovery addresses are isolation, please check server status.");
    // when all available address are isolation, it will use config addresses for polling.
    return getCurrentAddress(addresses);
  }

  private String getCurrentAddress(List<String> addresses) {
    synchronized (this) {
      this.index++;
      if (this.index >= addresses.size()) {
        this.index = 0;
      }
      return addresses.get(index);
    }
  }

  private List<String> getZoneOrRegionAddress() {
    List<String> results = new ArrayList<>();
    if (!availableZone.isEmpty()) {
      results.addAll(availableZone);
    } else {
      results.addAll(availableRegion);
    }
    return results;
  }

  public void recordSuccessState(String address) {
    resetFailureStatus(address);
    if (addressAutoRefreshed) {
      if (isolationZoneAddress.remove(address)) {
        LOGGER.warn("restore same region address [{}]", address);
        if (eventBus != null && availableZone.isEmpty()) {
          eventBus.post(new EngineConnectChangedEvent());
        }
        availableZone.add(address);
        return;
      }
      if (isolationRegionAddress.remove(address)) {
        LOGGER.warn("restore same zone address [{}]", address);
        availableRegion.add(address);
      }
      return;
    }
    if (defaultIsolationAddress.remove(address)) {
      LOGGER.warn("restore default address [{}]", address);
      addresses.add(address);
    }
  }

  public void resetFailureStatus(String address) {
    addressFailureStatus.put(address, 0);
  }

  public void recordFailState(String address) {
    synchronized (lock) {
      if (!addressFailureStatus.containsKey(address)) {
        addressFailureStatus.put(address, 1);
        return;
      }
      int number = addressFailureStatus.get(address) + 1;
      if (number < ISOLATION_THRESHOLD) {
        addressFailureStatus.put(address, number);
      } else {
        removeAddress(address);
      }
    }
  }

  //Query whether the current address belongs to the same AZ or the same region through AZMap,
  // and delete it from the record. At the same time, add records in history and cache
  @VisibleForTesting
  void removeAddress(String address) {
    if (!addressAutoRefreshed) {
      if (addresses.remove(address)) {
        LOGGER.warn("isolation default address [{}]", address);
        defaultIsolationAddress.add(address);
      }
      return;
    }
    if (availableZone.remove(address)) {
      LOGGER.warn("isolation same zone address [{}]", address);
      isolationZoneAddress.add(address);
      if (eventBus != null && availableZone.isEmpty() && !availableRegion.isEmpty()) {
        eventBus.post(new EngineConnectChangedEvent());
      }
      return;
    }
    if (availableRegion.remove(address)) {
      LOGGER.warn("isolation same region address [{}]", address);
      isolationRegionAddress.add(address);
    }
  }

  public void setEventBus(EventBus eventBus) {
    this.eventBus = eventBus;
  }

  public List<String> getIsolationAddresses() {
    List<String> isolationAddresses = new ArrayList<>(defaultIsolationAddress);
    isolationAddresses.addAll(isolationZoneAddress);
    isolationAddresses.addAll(isolationRegionAddress);
    return isolationAddresses;
  }

  public String compareAndGetAddress(String host) {
    for (String address : defaultAddress) {
      if (isAddressHostSame(address, host)) {
        return address;
      }
    }
    return "";
  }

  private boolean isAddressHostSame(String address, String host) {
    if (StringUtils.isEmpty(host)) {
      return false;
    }
    try {
      URI uri = new URI(address);
      return host.equals(uri.getHost());
    } catch (Exception e) {
      LOGGER.warn("Exception occurred while constructing URI using the address [{}]", address);
    }
    return false;
  }
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpConfiguration.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import org.apache.servicecomb.foundation.ssl.SSLCustom;
import org.apache.servicecomb.foundation.ssl.SSLOption;

public interface HttpConfiguration {
  class SSLProperties {
    private boolean enabled;

    private SSLOption sslOption;

    private SSLCustom sslCustom;

    public boolean isEnabled() {
      return enabled;
    }

    public void setEnabled(boolean enabled) {
      this.enabled = enabled;
    }

    public SSLOption getSslOption() {
      return sslOption;
    }

    public void setSslOption(SSLOption sslOption) {
      this.sslOption = sslOption;
    }

    public SSLCustom getSslCustom() {
      return sslCustom;
    }

    public void setSslCustom(SSLCustom sslCustom) {
      this.sslCustom = sslCustom;
    }
  }
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpRequest.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.StringEntity;

public class HttpRequest {

  public static final String GET = "GET";

  public static final String POST = "POST";

  public static final String DELETE = "DELETE";

  public static final String PUT = "PUT";

  private String method;

  private final String url;

  private Map<String, String> headers;

  private final String content;

  public HttpRequest(String url, Map<String, String> headers, String content, String method) {
    this.url = url;
    this.headers = headers;
    this.content = content;
    this.method = method;
  }

  public String getUrl() {
    return url;
  }

  public Map<String, String> getHeaders() {
    return headers;
  }

  public void addHeader(String name, String value) {
    if (headers == null) {
      headers = new HashMap<>();
    }
    headers.put(name, value);
  }

  public String getContent() {
    return content;
  }

  public String getMethod() {
    return method;
  }

  public void setMethod(String method) {
    this.method = method;
  }

  public HttpUriRequest getRealRequest() {

    HttpUriRequest httpUriRequest = null;

    switch (method) {
      case GET: {
        httpUriRequest = new HttpGet(url);
        break;
      }
      case POST: {
        httpUriRequest = new HttpPost(url);
        if (content != null) {
          ((HttpPost) httpUriRequest).setEntity(new StringEntity(content, "UTF-8"));
        }
        break;
      }
      case DELETE: {
        httpUriRequest = new HttpDelete(url);
        break;
      }
      case PUT: {
        httpUriRequest = new HttpPut(url);
        if (content != null) {
          ((HttpPut) httpUriRequest).setEntity(new StringEntity(content, "UTF-8"));
        }
        break;
      }
      default: {
        httpUriRequest = RequestBuilder.create(method).build();
      }
    }

    Optional.ofNullable(httpUriRequest).ifPresent(request -> headers.forEach(request::addHeader));

    return httpUriRequest;
  }
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpResponse.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import org.apache.http.Header;

public class HttpResponse {

  private int statusCode;

  private String message;

  private String content;

  private Header[] headers;

  public HttpResponse() {

  }

  HttpResponse(int statusCode, String message, String content, Header[] headers) {
    this.statusCode = statusCode;
    this.content = content;
    this.message = message;
    this.headers = headers;
  }

  public int getStatusCode() {
    return statusCode;
  }

  public void setStatusCode(int statusCode) {
    this.statusCode = statusCode;
  }

  public String getMessage() {
    return message;
  }

  public void setMessage(String message) {
    this.message = message;
  }

  public String getContent() {
    return content;
  }

  public void setContent(String content) {
    this.content = content;
  }

  public String getHeader(String key) {
    if (headers == null) {
      return null;
    }
    for (Header header : headers) {
      if (header.getName().equals(key)) {
        return header.getValue();
      }
    }
    return null;
  }
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransport.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import java.io.IOException;
import java.util.Map;

/**
 * Created by   on 2019/10/16.
 */
public interface HttpTransport {

  HttpResponse get(HttpRequest request) throws IOException;

  HttpResponse post(HttpRequest request) throws IOException;

  HttpResponse put(HttpRequest request) throws IOException;

  HttpResponse delete(HttpRequest request) throws IOException;

  HttpResponse doRequest(HttpRequest request) throws IOException;

  void addHeaders(Map<String, String> headers);
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.servicecomb.foundation.ssl.SSLManager;
import org.apache.servicecomb.http.client.auth.RequestAuthHeaderProvider;
import org.apache.servicecomb.http.client.common.HttpConfiguration.SSLProperties;

public class HttpTransportFactory {
  // All parameters set to 5 seconds now.
  public static final int CONNECT_TIMEOUT = 5000;

  public static final int CONNECTION_REQUEST_TIMEOUT = 5000;

  public static final int SOCKET_TIMEOUT = 5000;

  public static final int MAX_TOTAL = 100;

  public static final int DEFAULT_MAX_PER_ROUTE = 10;

  private HttpTransportFactory() {
  }

  public static HttpTransport createHttpTransport(HttpConfiguration.SSLProperties sslProperties,
      RequestAuthHeaderProvider requestAuthHeaderProvider, HttpClientBuilder httpClientBuilder) {
    PoolingHttpClientConnectionManager connectionManager = getPoolingHttpClientConnectionManager(sslProperties);
    httpClientBuilder.setConnectionManager(connectionManager).disableCookieManagement();
    return new HttpTransportImpl(httpClientBuilder.build(), requestAuthHeaderProvider);
  }

  public static HttpTransport createHttpTransport(HttpConfiguration.SSLProperties sslProperties,
      RequestAuthHeaderProvider requestAuthHeaderProvider, RequestConfig config) {
    PoolingHttpClientConnectionManager connectionManager = getPoolingHttpClientConnectionManager(sslProperties);

    HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().
        setDefaultRequestConfig(config).
        setConnectionManager(connectionManager).
        disableCookieManagement();

    return new HttpTransportImpl(httpClientBuilder.build(), requestAuthHeaderProvider);
  }

  private static PoolingHttpClientConnectionManager getPoolingHttpClientConnectionManager(SSLProperties sslProperties) {
    //register http/https socket factory
    RegistryBuilder<ConnectionSocketFactory> builder = RegistryBuilder.<ConnectionSocketFactory>create();
    builder.register("http", PlainConnectionSocketFactory.INSTANCE);
    if (sslProperties.isEnabled()) {
      builder.register("https",
          new SSLConnectionSocketFactory(
              SSLManager.createSSLContext(sslProperties.getSslOption(), sslProperties.getSslCustom()),
              NoopHostnameVerifier.INSTANCE));
    }
    Registry<ConnectionSocketFactory> connectionSocketFactoryRegistry = builder.build();

    //connection pool management
    PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(
        connectionSocketFactoryRegistry);
    connectionManager.setMaxTotal(MAX_TOTAL);
    connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_PER_ROUTE);
    return connectionManager;
  }

  public static HttpTransport createHttpTransport(HttpConfiguration.SSLProperties sslProperties,
      RequestAuthHeaderProvider requestAuthHeaderProvider) {
    return createHttpTransport(sslProperties, requestAuthHeaderProvider, defaultRequestConfig().build());
  }

  public static RequestConfig.Builder defaultRequestConfig() {
    return RequestConfig.custom()
        .setConnectTimeout(CONNECT_TIMEOUT)
        .setConnectionRequestTimeout(
            CONNECTION_REQUEST_TIMEOUT)
        .setSocketTimeout(SOCKET_TIMEOUT);
  }
}


================================================
FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportImpl.java
================================================
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.servicecomb.http.client.common;

import java.io.IOException;
import java.net.URI;
import java.util.Map;

import org.apache.http.client.HttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.servicecomb.foundation.auth.SignRequest;
import org.apache.servicecomb.http.client.auth.RequestAuthHeaderProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by   on 2019/10/16.
 */
public class HttpTransportImpl implements HttpTransport {
  private static final Logger LOGGER = LoggerFactory.getLogger(HttpTransportImpl.class);

  private static final String HEADER_CONTENT_TYPE = "Content-Type";

  private static final String HEADER_USER_AGENT = "User-Agent";

  private HttpClient httpClient;

  private Map<String, String> globalHeaders;

  private final RequestAuthHeaderProvider requestAuthHeaderProvider;

  public HttpTransportImpl(HttpClient httpClient, RequestAuthHeaderProvider requestAuthHeaderProvider) {
    this.httpClient = httpClient;
    this.requestAuthHeaderProvider = requestAuthHeaderProvider;
  }

  public HttpClient getHttpClient() {
    return httpClient;
  }

  // for testing.
  void setHttpClient(HttpClient httpClient) {
    this.httpClient = httpClient;
  }

  @Override
  public HttpResponse get(HttpRequest request) throws IOException {
    request.setMethod(HttpRequest.GET);
    return doRequest(request);
  }

  @Override
  public HttpResponse post(HttpRequest request) throws IOException {
    request.setMethod(HttpRequest.POST);
    return doRequest(request);
  }

  @Override
  public HttpResponse put(HttpRequest request) throws IOException {
    request.setMethod(HttpRequest.PUT);
    return doRequest(request);
  }

  @Override
  public HttpResponse delete(HttpRequest request) throws IOException {
    request.setMethod(HttpRequest.DELETE);
    return doRequest(request);
  }

  public HttpResponse doRequest(HttpRequest httpRequest) throws IOException {
    //add header
    httpRequest.addHeader(HEADER_CONTENT_TYPE, "application/json");
    httpRequest.addHeader(HEADER_USER_AGENT, "microservice-client/1.0.0");

    if (globalHeaders != null) {
      globalHeaders.forEach(httpRequest::addHeader);
    }

    httpRequest.getHeaders().putAll(requestAuthHeaderProvider.loadAuthHeader(createSignRequest(httpRequest.getUrl())));

    //get Http response
    org.apache.http.HttpResponse response = httpClient.execute(httpRequest.getRealRequest());

    return new HttpResponse(response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase(),
        response.getEntity() == null ? null :
            EntityUtils.toString(response.getEntity(), "UTF-8"),
        response.getAllHeaders());
  }

  private static SignRequest createSi
Download .txt
Showing preview only (401K chars total). Download the full file or copy to clipboard to get everything.
gitextract_c_qmn9s_/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── documentation_issue.yml
│   │   ├── feature_request.yml
│   │   └── question.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── checkstyle.yml
│       ├── linelint.yml
│       ├── maven.yml
│       ├── rat_check.yml
│       └── typo_check.yml
├── .gitignore
├── .typos.toml
├── LICENSE
├── NOTICE
├── README.md
├── README_ZH.md
├── ci/
│   ├── README.md
│   ├── checkstyle/
│   │   ├── checkstyle.xml
│   │   └── suppressions.xml
│   └── spotbugs/
│       └── exclude.xml
├── clients/
│   ├── README.md
│   ├── config-center-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── config/
│   │                               └── center/
│   │                                   └── client/
│   │                                       ├── ConfigCenterAddressManager.java
│   │                                       ├── ConfigCenterClient.java
│   │                                       ├── ConfigCenterConfigurationChangedEvent.java
│   │                                       ├── ConfigCenterManager.java
│   │                                       ├── ConfigCenterOperation.java
│   │                                       └── model/
│   │                                           ├── ConfigCenterConfiguration.java
│   │                                           ├── QueryConfigurationsRequest.java
│   │                                           └── QueryConfigurationsResponse.java
│   ├── config-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── config/
│   │                               └── common/
│   │                                   ├── ConfigConverter.java
│   │                                   └── exception/
│   │                                       └── OperationException.java
│   ├── config-kie-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── config/
│   │       │                       └── kie/
│   │       │                           └── client/
│   │       │                               ├── KieClient.java
│   │       │                               ├── KieConfigManager.java
│   │       │                               ├── KieConfigOperation.java
│   │       │                               ├── KieConfigurationChangedEvent.java
│   │       │                               └── model/
│   │       │                                   ├── ConfigConstants.java
│   │       │                                   ├── ConfigurationsRequest.java
│   │       │                                   ├── ConfigurationsRequestFactory.java
│   │       │                                   ├── ConfigurationsResponse.java
│   │       │                                   ├── KVDoc.java
│   │       │                                   ├── KVResponse.java
│   │       │                                   ├── KieAddressManager.java
│   │       │                                   ├── KieConfiguration.java
│   │       │                                   ├── LabelDocResponse.java
│   │       │                                   └── ValueType.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── config/
│   │                               └── kie/
│   │                                   └── client/
│   │                                       └── model/
│   │                                           ├── ConfigurationsRequestTest.java
│   │                                           └── KieAddressManagerTest.java
│   ├── dashboard-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── dashboard/
│   │       │                       └── client/
│   │       │                           ├── DashboardAddressManager.java
│   │       │                           ├── DashboardClient.java
│   │       │                           ├── DashboardOperation.java
│   │       │                           └── model/
│   │       │                               ├── InterfaceInfo.java
│   │       │                               └── MonitorData.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── dashboard/
│   │                               └── client/
│   │                                   └── AddressManagerTest.java
│   ├── http-client-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── http/
│   │       │                       └── client/
│   │       │                           ├── auth/
│   │       │                           │   ├── DefaultRequestAuthHeaderProvider.java
│   │       │                           │   └── RequestAuthHeaderProvider.java
│   │       │                           ├── common/
│   │       │                           │   ├── AbstractAddressManager.java
│   │       │                           │   ├── HttpConfiguration.java
│   │       │                           │   ├── HttpRequest.java
│   │       │                           │   ├── HttpResponse.java
│   │       │                           │   ├── HttpTransport.java
│   │       │                           │   ├── HttpTransportFactory.java
│   │       │                           │   ├── HttpTransportImpl.java
│   │       │                           │   ├── HttpUtils.java
│   │       │                           │   ├── MessageObjectMapper.java
│   │       │                           │   ├── SSLSocketFactoryExt.java
│   │       │                           │   ├── URLEndPoint.java
│   │       │                           │   ├── WebSocketListener.java
│   │       │                           │   └── WebSocketTransport.java
│   │       │                           ├── event/
│   │       │                           │   ├── EngineConnectChangedEvent.java
│   │       │                           │   ├── OperationEvents.java
│   │       │                           │   └── RefreshEndpointEvent.java
│   │       │                           ├── task/
│   │       │                           │   ├── AbstractTask.java
│   │       │                           │   └── Task.java
│   │       │                           └── utils/
│   │       │                               └── ServiceCombServiceAvailableUtils.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── http/
│   │           │                   └── client/
│   │           │                       └── common/
│   │           │                           ├── AbstractAddressManagerTest.java
│   │           │                           └── HttpTransportImplTest.java
│   │           └── resources/
│   │               └── tls/
│   │                   ├── client.p12
│   │                   └── server.jks
│   ├── pom.xml
│   └── service-center-client/
│       ├── README.md
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   └── java/
│           │       └── org/
│           │           └── apache/
│           │               └── servicecomb/
│           │                   └── service/
│           │                       └── center/
│           │                           └── client/
│           │                               ├── CacheableServiceCenterOperation.java
│           │                               ├── DiscoveryEvents.java
│           │                               ├── RegistrationEvents.java
│           │                               ├── ServiceCenterAddressManager.java
│           │                               ├── ServiceCenterClient.java
│           │                               ├── ServiceCenterDiscovery.java
│           │                               ├── ServiceCenterOperation.java
│           │                               ├── ServiceCenterRawClient.java
│           │                               ├── ServiceCenterRegistration.java
│           │                               ├── ServiceCenterWatch.java
│           │                               ├── exception/
│           │                               │   └── OperationException.java
│           │                               └── model/
│           │                                   ├── BasePath.java
│           │                                   ├── CreateMicroserviceInstanceRequest.java
│           │                                   ├── CreateMicroserviceRequest.java
│           │                                   ├── CreateSchemaRequest.java
│           │                                   ├── DataCenterInfo.java
│           │                                   ├── ErrorMessage.java
│           │                                   ├── FindMicroserviceInstancesResponse.java
│           │                                   ├── Framework.java
│           │                                   ├── GetSchemaListResponse.java
│           │                                   ├── GetSchemaResponse.java
│           │                                   ├── HealthCheck.java
│           │                                   ├── HealthCheckMode.java
│           │                                   ├── HeartbeatsRequest.java
│           │                                   ├── InstancesRequest.java
│           │                                   ├── Microservice.java
│           │                                   ├── MicroserviceInstance.java
│           │                                   ├── MicroserviceInstanceResponse.java
│           │                                   ├── MicroserviceInstanceStatus.java
│           │                                   ├── MicroserviceInstancesResponse.java
│           │                                   ├── MicroserviceResponse.java
│           │                                   ├── MicroserviceStatus.java
│           │                                   ├── MicroservicesResponse.java
│           │                                   ├── ModifySchemasRequest.java
│           │                                   ├── RbacTokenRequest.java
│           │                                   ├── RbacTokenResponse.java
│           │                                   ├── RegisteredMicroserviceInstanceResponse.java
│           │                                   ├── RegisteredMicroserviceResponse.java
│           │                                   ├── SchemaInfo.java
│           │                                   ├── ServiceCenterConfiguration.java
│           │                                   └── UpdatePropertiesRequest.java
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── apache/
│               │           └── servicecomb/
│               │               └── service/
│               │                   └── center/
│               │                       └── client/
│               │                           ├── ServiceCenterAddressManagerTest.java
│               │                           ├── ServiceCenterClientTest.java
│               │                           └── ServiceCenterRawClientTest.java
│               └── resources/
│                   └── tls/
│                       ├── client.p12
│                       └── server.jks
├── common/
│   ├── common-access-log/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── common/
│   │       │   │                   └── accessLog/
│   │       │   │                       ├── AccessLogBootListener.java
│   │       │   │                       ├── AccessLogBootstrap.java
│   │       │   │                       ├── AccessLogConfig.java
│   │       │   │                       ├── AccessLogConfiguration.java
│   │       │   │                       ├── AccessLogInitializer.java
│   │       │   │                       ├── client/
│   │       │   │                       │   └── ClientDefaultInitializer.java
│   │       │   │                       ├── core/
│   │       │   │                       │   ├── AccessLogGenerator.java
│   │       │   │                       │   ├── element/
│   │       │   │                       │   │   ├── AccessLogItem.java
│   │       │   │                       │   │   └── impl/
│   │       │   │                       │   │       ├── ConfigurableDatetimeAccessItem.java
│   │       │   │                       │   │       ├── CookieAccessItem.java
│   │       │   │                       │   │       ├── DurationMillisecondAccessItem.java
│   │       │   │                       │   │       ├── DurationSecondAccessItem.java
│   │       │   │                       │   │       ├── FirstLineOfRequestAccessItem.java
│   │       │   │                       │   │       ├── HttpMethodAccessItem.java
│   │       │   │                       │   │       ├── HttpStatusAccessItem.java
│   │       │   │                       │   │       ├── InvocationContextAccessItem.java
│   │       │   │                       │   │       ├── LocalHostAccessItem.java
│   │       │   │                       │   │       ├── LocalPortAccessItem.java
│   │       │   │                       │   │       ├── PlainTextAccessItem.java
│   │       │   │                       │   │       ├── QueryStringAccessItem.java
│   │       │   │                       │   │       ├── RemoteHostAccessItem.java
│   │       │   │                       │   │       ├── RequestHeaderAccessItem.java
│   │       │   │                       │   │       ├── RequestProtocolAccessItem.java
│   │       │   │                       │   │       ├── ResponseHeaderAccessItem.java
│   │       │   │                       │   │       ├── ResponseSizeAccessItem.java
│   │       │   │                       │   │       ├── TraceIdAccessItem.java
│   │       │   │                       │   │       ├── TransportAccessItem.java
│   │       │   │                       │   │       ├── UrlPathAccessItem.java
│   │       │   │                       │   │       └── UrlPathWithQueryAccessItem.java
│   │       │   │                       │   ├── parser/
│   │       │   │                       │   │   ├── AccessLogItemCreator.java
│   │       │   │                       │   │   ├── AccessLogItemMeta.java
│   │       │   │                       │   │   ├── AccessLogPatternParser.java
│   │       │   │                       │   │   ├── CompositeVertxRestAccessLogItemMeta.java
│   │       │   │                       │   │   ├── VertxRestAccessLogItemMeta.java
│   │       │   │                       │   │   └── impl/
│   │       │   │                       │   │       ├── DefaultCompositeVertxRestAccessLogItemMeta.java
│   │       │   │                       │   │       └── VertxRestAccessLogPatternParser.java
│   │       │   │                       │   └── placeholder/
│   │       │   │                       │       └── AccessLogItemTypeEnum.java
│   │       │   │                       └── server/
│   │       │   │                           └── ServerDefaultInitializer.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── org.apache.servicecomb.common.accessLog.AccessLogInitializer
│   │       │           │   └── org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── common/
│   │           │                   └── accessLog/
│   │           │                       └── core/
│   │           │                           ├── AccessLogGeneratorTest.java
│   │           │                           ├── element/
│   │           │                           │   └── impl/
│   │           │                           │       ├── CookieItemTest.java
│   │           │                           │       ├── DatetimeConfigurableItemTest.java
│   │           │                           │       ├── DurationMillisecondItemTest.java
│   │           │                           │       ├── DurationSecondItemTest.java
│   │           │                           │       ├── FirstLineOfRequestItemTest.java
│   │           │                           │       ├── HttpMethodItemTest.java
│   │           │                           │       ├── HttpStatusItemTest.java
│   │           │                           │       ├── InvocationContextItemTest.java
│   │           │                           │       ├── LocalHostItemTest.java
│   │           │                           │       ├── LocalPortItemTest.java
│   │           │                           │       ├── PlainTextItemTest.java
│   │           │                           │       ├── QueryStringItemTest.java
│   │           │                           │       ├── RemoteHostItemTest.java
│   │           │                           │       ├── RequestHeaderItemTest.java
│   │           │                           │       ├── RequestProtocolItemTest.java
│   │           │                           │       ├── ResponseHeaderItemTest.java
│   │           │                           │       ├── ResponseSizeItemTest.java
│   │           │                           │       ├── TraceIdItemTest.java
│   │           │                           │       ├── TransportItemTest.java
│   │           │                           │       ├── UrlPathItemTest.java
│   │           │                           │       ├── UrlPathWithQueryItemTest.java
│   │           │                           │       ├── UserDefinedAccessLogItem.java
│   │           │                           │       └── UserDefinedAccessLogItemLowPriority.java
│   │           │                           └── parser/
│   │           │                               └── impl/
│   │           │                                   ├── TestCompositeExtendedAccessLogItemMeta.java
│   │           │                                   ├── TestSingleExtendedAccessLogItemMeta.java
│   │           │                                   └── VertxRestAccessLogPatternParserTest.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
│   ├── common-protobuf/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── codec/
│   │       │                       └── protobuf/
│   │       │                           ├── definition/
│   │       │                           │   ├── HighwayJsonUtils.java
│   │       │                           │   ├── OperationProtobuf.java
│   │       │                           │   ├── ProtobufManager.java
│   │       │                           │   ├── RequestRootDeserializer.java
│   │       │                           │   ├── RequestRootSerializer.java
│   │       │                           │   ├── ResponseRootDeserializer.java
│   │       │                           │   └── ResponseRootSerializer.java
│   │       │                           ├── internal/
│   │       │                           │   └── converter/
│   │       │                           │       ├── ProtoMethod.java
│   │       │                           │       ├── ProtoResponse.java
│   │       │                           │       ├── ProtoToStringGenerator.java
│   │       │                           │       ├── SchemaSwaggerTypeAdapter.java
│   │       │                           │       ├── SwaggerToProtoGenerator.java
│   │       │                           │       └── SwaggerTypeAdapter.java
│   │       │                           ├── schema/
│   │       │                           │   └── SchemaToProtoGenerator.java
│   │       │                           └── utils/
│   │       │                               └── ScopedProtobufSchemaManager.java
│   │       └── test/
│   │           ├── java/
│   │           │   ├── io/
│   │           │   │   └── protostuff/
│   │           │   │       └── runtime/
│   │           │   │           └── model/
│   │           │   │               ├── ModelProtostuff.java
│   │           │   │               └── User.java
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── codec/
│   │           │                   └── protobuf/
│   │           │                       ├── definition/
│   │           │                       │   └── TestResponseRootDeserializer.java
│   │           │                       ├── internal/
│   │           │                       │   └── converter/
│   │           │                       │       ├── TestProtoToStringGenerator.java
│   │           │                       │       ├── TestSchemaMetaCodec.java
│   │           │                       │       ├── TestSchemaMetaCodecRestTemplate.java
│   │           │                       │       ├── TestSwaggerToProtoGenerator.java
│   │           │                       │       └── model/
│   │           │                       │           ├── FieldNeedWrap.java
│   │           │                       │           ├── ProtoSchema.java
│   │           │                       │           ├── ProtoSchemaIntf.java
│   │           │                       │           ├── ProtoSchemaPojo.java
│   │           │                       │           ├── Ref1.java
│   │           │                       │           └── Ref2.java
│   │           │                       └── schema/
│   │           │                           ├── TestSchemaCodec.java
│   │           │                           ├── TestSchemaToProtoGenerator.java
│   │           │                           └── model/
│   │           │                               ├── CyclicInfo.java
│   │           │                               ├── DeptInfo.java
│   │           │                               ├── SchemaService.java
│   │           │                               ├── ScoreInfo.java
│   │           │                               └── UserInfo.java
│   │           ├── proto/
│   │           │   └── ModelProtobuf.proto
│   │           └── resources/
│   │               └── ProtoSchema.proto
│   ├── common-rest/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── common/
│   │       │   │                   └── rest/
│   │       │   │                       ├── CommonRestConfiguration.java
│   │       │   │                       ├── EdgeServerWebSocketInvocationCreator.java
│   │       │   │                       ├── HttpTransportContext.java
│   │       │   │                       ├── ProviderServerWebSocketInvocationCreator.java
│   │       │   │                       ├── RestConst.java
│   │       │   │                       ├── RestEngineSchemaListener.java
│   │       │   │                       ├── RestProducerInvocationCreator.java
│   │       │   │                       ├── RestProducerInvocationFlow.java
│   │       │   │                       ├── RestVertxProducerInvocationCreator.java
│   │       │   │                       ├── ServerWebSocketInvocationCreator.java
│   │       │   │                       ├── UploadConfig.java
│   │       │   │                       ├── VertxHttpTransportContext.java
│   │       │   │                       ├── WebSocketTransportContext.java
│   │       │   │                       ├── codec/
│   │       │   │                       │   ├── RestClientRequest.java
│   │       │   │                       │   ├── RestCodec.java
│   │       │   │                       │   ├── RestObjectMapperFactory.java
│   │       │   │                       │   ├── header/
│   │       │   │                       │   │   ├── HeaderCodec.java
│   │       │   │                       │   │   ├── HeaderCodecCsv.java
│   │       │   │                       │   │   ├── HeaderCodecMulti.java
│   │       │   │                       │   │   ├── HeaderCodecPipes.java
│   │       │   │                       │   │   ├── HeaderCodecSimple.java
│   │       │   │                       │   │   ├── HeaderCodecSsv.java
│   │       │   │                       │   │   ├── HeaderCodecWithDelimiter.java
│   │       │   │                       │   │   └── HeaderCodecsUtils.java
│   │       │   │                       │   ├── param/
│   │       │   │                       │   │   ├── AbstractParamProcessor.java
│   │       │   │                       │   │   ├── BodyProcessorCreator.java
│   │       │   │                       │   │   ├── CookieProcessorCreator.java
│   │       │   │                       │   │   ├── FormProcessorCreator.java
│   │       │   │                       │   │   ├── HeaderProcessorCreator.java
│   │       │   │                       │   │   ├── ParamValueProcessor.java
│   │       │   │                       │   │   ├── ParamValueProcessorCreator.java
│   │       │   │                       │   │   ├── ParamValueProcessorCreatorManager.java
│   │       │   │                       │   │   ├── PathProcessorCreator.java
│   │       │   │                       │   │   └── QueryProcessorCreator.java
│   │       │   │                       │   ├── produce/
│   │       │   │                       │   │   ├── ProduceEventStreamProcessor.java
│   │       │   │                       │   │   ├── ProduceJsonProcessor.java
│   │       │   │                       │   │   ├── ProduceProcessor.java
│   │       │   │                       │   │   ├── ProduceProcessorManager.java
│   │       │   │                       │   │   ├── ProduceProtoBufferProcessor.java
│   │       │   │                       │   │   └── ProduceTextPlainProcessor.java
│   │       │   │                       │   └── query/
│   │       │   │                       │       ├── AbstractQueryCodec.java
│   │       │   │                       │       ├── QueryCodec.java
│   │       │   │                       │       ├── QueryCodecCsv.java
│   │       │   │                       │       ├── QueryCodecMulti.java
│   │       │   │                       │       ├── QueryCodecPipes.java
│   │       │   │                       │       ├── QueryCodecSsv.java
│   │       │   │                       │       ├── QueryCodecWithDelimiter.java
│   │       │   │                       │       ├── QueryCodecs.java
│   │       │   │                       │       └── QueryCodecsUtils.java
│   │       │   │                       ├── definition/
│   │       │   │                       │   ├── RestMetaUtils.java
│   │       │   │                       │   ├── RestOperationComparator.java
│   │       │   │                       │   ├── RestOperationMeta.java
│   │       │   │                       │   ├── RestParam.java
│   │       │   │                       │   └── path/
│   │       │   │                       │       ├── AbstractUrlParamWriter.java
│   │       │   │                       │       ├── PathRegExp.java
│   │       │   │                       │       ├── PathVarParamWriter.java
│   │       │   │                       │       ├── QueryVarParamWriter.java
│   │       │   │                       │       ├── StaticUrlParamWriter.java
│   │       │   │                       │       ├── URLPathBuilder.java
│   │       │   │                       │       └── UrlParamWriter.java
│   │       │   │                       ├── filter/
│   │       │   │                       │   └── inner/
│   │       │   │                       │       ├── RestServerCodecFilter.java
│   │       │   │                       │       └── WebSocketServerCodecFilter.java
│   │       │   │                       ├── locator/
│   │       │   │                       │   ├── MicroservicePaths.java
│   │       │   │                       │   ├── OperationGroup.java
│   │       │   │                       │   ├── OperationLocator.java
│   │       │   │                       │   └── ServicePathManager.java
│   │       │   │                       ├── resource/
│   │       │   │                       │   ├── ClassPathStaticResourceHandler.java
│   │       │   │                       │   └── StaticResourceHandler.java
│   │       │   │                       └── route/
│   │       │   │                           ├── URLMappedConfigurationItem.java
│   │       │   │                           ├── URLMappedConfigurationLoader.java
│   │       │   │                           └── Utils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── com.fasterxml.jackson.databind.Module
│   │       │           │   ├── org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor
│   │       │           │   └── org.apache.servicecomb.core.filter.FilterProvider
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── common/
│   │           │                   └── rest/
│   │           │                       ├── RestProducerInvocationCreatorTest.java
│   │           │                       ├── TestDefPath.java
│   │           │                       ├── TestRestEngineSchemaListener.java
│   │           │                       ├── codec/
│   │           │                       │   ├── PojoModel.java
│   │           │                       │   ├── TestRestCodec.java
│   │           │                       │   ├── TestRestObjectMapper.java
│   │           │                       │   ├── fix/
│   │           │                       │   │   └── TestDoSFix.java
│   │           │                       │   ├── param/
│   │           │                       │   │   ├── TestBodyProcessor.java
│   │           │                       │   │   ├── TestBodyProcessorCreator.java
│   │           │                       │   │   ├── TestCookieProcessor.java
│   │           │                       │   │   ├── TestCookieProcessorCreator.java
│   │           │                       │   │   ├── TestFormProcessor.java
│   │           │                       │   │   ├── TestFormProcessorCreator.java
│   │           │                       │   │   ├── TestHeaderProcessor.java
│   │           │                       │   │   ├── TestHeaderProcessorCreator.java
│   │           │                       │   │   ├── TestPathProcessor.java
│   │           │                       │   │   ├── TestPathProcessorCreator.java
│   │           │                       │   │   ├── TestQueryProcessor.java
│   │           │                       │   │   └── TestQueryProcessorCreator.java
│   │           │                       │   ├── produce/
│   │           │                       │   │   ├── TestProduceJsonProcessor.java
│   │           │                       │   │   ├── TestProduceProcessorManager.java
│   │           │                       │   │   └── TestProduceTextPlainProcessor.java
│   │           │                       │   └── query/
│   │           │                       │       ├── QueryCodecCsvTest.java
│   │           │                       │       ├── QueryCodecMultiTest.java
│   │           │                       │       ├── QueryCodecPipesTest.java
│   │           │                       │       ├── QueryCodecSsvTest.java
│   │           │                       │       ├── QueryCodecTestBase.java
│   │           │                       │       └── QueryCodecsTest.java
│   │           │                       ├── definition/
│   │           │                       │   ├── TestPath.java
│   │           │                       │   ├── TestRestOperationComparator.java
│   │           │                       │   ├── TestRestOperationMeta.java
│   │           │                       │   └── path/
│   │           │                       │       ├── PathVarParamWriterTest.java
│   │           │                       │       ├── QueryVarParamWriterTest.java
│   │           │                       │       ├── URLPathBuilderTest.java
│   │           │                       │       └── URLPathStringBuilderTest.java
│   │           │                       ├── filter/
│   │           │                       │   └── inner/
│   │           │                       │       └── RestServerCodecFilterTest.java
│   │           │                       ├── locator/
│   │           │                       │   ├── TestMicroservicePaths.java
│   │           │                       │   ├── TestPathSchema.java
│   │           │                       │   └── TestServicePathManager.java
│   │           │                       └── resource/
│   │           │                           └── TestClassPathStaticResourceHandler.java
│   │           └── resources/
│   │               ├── log4j2.xml
│   │               ├── microservice.yaml
│   │               └── web-root/
│   │                   └── index.html
│   └── pom.xml
├── core/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── servicecomb/
│       │   │               └── core/
│       │   │                   ├── BootListener.java
│       │   │                   ├── CoreConst.java
│       │   │                   ├── Endpoint.java
│       │   │                   ├── Invocation.java
│       │   │                   ├── NonSwaggerInvocation.java
│       │   │                   ├── ProducerProvider.java
│       │   │                   ├── SCBApplicationListener.java
│       │   │                   ├── SCBEngine.java
│       │   │                   ├── SCBStatus.java
│       │   │                   ├── ServiceCombCoreConfiguration.java
│       │   │                   ├── Transport.java
│       │   │                   ├── annotation/
│       │   │                   │   └── Transport.java
│       │   │                   ├── bootstrap/
│       │   │                   │   ├── SCBBootstrap.java
│       │   │                   │   └── SCBEngineForTest.java
│       │   │                   ├── bootup/
│       │   │                   │   ├── BootUpInformationCollector.java
│       │   │                   │   ├── ConfigurationProblemsAlarmEvent.java
│       │   │                   │   ├── ConfigurationProblemsCollector.java
│       │   │                   │   ├── FilterChainCollector.java
│       │   │                   │   └── ServiceInformationCollector.java
│       │   │                   ├── definition/
│       │   │                   │   ├── ConsumerMicroserviceVersionsMeta.java
│       │   │                   │   ├── CoreMetaUtils.java
│       │   │                   │   ├── InvocationRuntimeType.java
│       │   │                   │   ├── MicroserviceMeta.java
│       │   │                   │   ├── MicroserviceVersionsMeta.java
│       │   │                   │   ├── OperationConfig.java
│       │   │                   │   ├── OperationMeta.java
│       │   │                   │   └── SchemaMeta.java
│       │   │                   ├── event/
│       │   │                   │   ├── InvocationBaseEvent.java
│       │   │                   │   ├── InvocationBusinessFinishEvent.java
│       │   │                   │   ├── InvocationBusinessMethodFinishEvent.java
│       │   │                   │   ├── InvocationBusinessMethodStartEvent.java
│       │   │                   │   ├── InvocationEncodeResponseStartEvent.java
│       │   │                   │   ├── InvocationFinishEvent.java
│       │   │                   │   ├── InvocationStartEvent.java
│       │   │                   │   ├── InvocationStartSendRequestEvent.java
│       │   │                   │   ├── InvocationTimeoutCheckEvent.java
│       │   │                   │   ├── InvocationWithResponseEvent.java
│       │   │                   │   └── ServerAccessLogEvent.java
│       │   │                   ├── exception/
│       │   │                   │   ├── CoreExceptionConfiguration.java
│       │   │                   │   ├── CseException.java
│       │   │                   │   ├── DefaultExceptionProcessor.java
│       │   │                   │   ├── ExceptionCodes.java
│       │   │                   │   ├── ExceptionConverter.java
│       │   │                   │   ├── ExceptionProcessor.java
│       │   │                   │   ├── ExceptionUtils.java
│       │   │                   │   ├── Exceptions.java
│       │   │                   │   └── converter/
│       │   │                   │       ├── ConnectTimeoutExceptionConverter.java
│       │   │                   │       ├── ConstraintViolationExceptionConverter.java
│       │   │                   │       ├── DefaultExceptionConverter.java
│       │   │                   │       ├── IllegalArgumentExceptionConverter.java
│       │   │                   │       ├── InvocationExceptionConverter.java
│       │   │                   │       ├── ServiceCombExceptionConverter.java
│       │   │                   │       ├── TimeoutExceptionConverter.java
│       │   │                   │       └── ValidateDetail.java
│       │   │                   ├── executor/
│       │   │                   │   ├── ExecutorManager.java
│       │   │                   │   ├── GroupExecutor.java
│       │   │                   │   ├── GroupThreadFactory.java
│       │   │                   │   ├── LinkedBlockingQueueEx.java
│       │   │                   │   ├── ReactiveExecutor.java
│       │   │                   │   └── ThreadPoolExecutorEx.java
│       │   │                   ├── filter/
│       │   │                   │   ├── AbstractFilter.java
│       │   │                   │   ├── ConsumerFilter.java
│       │   │                   │   ├── CoreFilterConfiguration.java
│       │   │                   │   ├── EdgeFilter.java
│       │   │                   │   ├── Filter.java
│       │   │                   │   ├── FilterChainsManager.java
│       │   │                   │   ├── FilterNode.java
│       │   │                   │   ├── InvocationFilterChains.java
│       │   │                   │   ├── ProviderFilter.java
│       │   │                   │   └── impl/
│       │   │                   │       ├── ContextMapperFilter.java
│       │   │                   │       ├── EmptyFilter.java
│       │   │                   │       ├── JacksonPropertyNodeNameProvider.java
│       │   │                   │       ├── ParameterValidatorFilter.java
│       │   │                   │       ├── ProviderOperationFilter.java
│       │   │                   │       ├── RetryFilter.java
│       │   │                   │       └── ScheduleFilter.java
│       │   │                   ├── governance/
│       │   │                   │   ├── CoreGovernanceConfiguration.java
│       │   │                   │   ├── GovernanceConfiguration.java
│       │   │                   │   ├── MatchType.java
│       │   │                   │   ├── RetryContext.java
│       │   │                   │   ├── ServiceCombCircuitBreakerExtension.java
│       │   │                   │   ├── ServiceCombConfigurationEventAdapter.java
│       │   │                   │   ├── ServiceCombInstanceIsolationExtension.java
│       │   │                   │   ├── ServiceCombMicroserviceMeta.java
│       │   │                   │   └── ServiceCombRetryExtension.java
│       │   │                   ├── invocation/
│       │   │                   │   ├── CoreInvocationConfiguration.java
│       │   │                   │   ├── InvocationCreator.java
│       │   │                   │   ├── InvocationFactory.java
│       │   │                   │   ├── InvocationStageTrace.java
│       │   │                   │   ├── InvocationTimeoutBootListener.java
│       │   │                   │   ├── InvocationTimeoutStrategy.java
│       │   │                   │   ├── ProducerInvocationFlow.java
│       │   │                   │   ├── endpoint/
│       │   │                   │   │   ├── EndpointCacheUtils.java
│       │   │                   │   │   ├── EndpointContextRegister.java
│       │   │                   │   │   ├── EndpointMapper.java
│       │   │                   │   │   ├── EndpointMapperFactory.java
│       │   │                   │   │   └── EndpointUtils.java
│       │   │                   │   └── timeout/
│       │   │                   │       ├── PassingTimeStrategy.java
│       │   │                   │       └── ProcessingTimeStrategy.java
│       │   │                   ├── provider/
│       │   │                   │   ├── LocalOpenAPIRegistry.java
│       │   │                   │   ├── OpenAPIRegistry.java
│       │   │                   │   ├── OpenAPIRegistryManager.java
│       │   │                   │   ├── RegistryOpenAPIRegistry.java
│       │   │                   │   ├── consumer/
│       │   │                   │   │   ├── ConsumerProviderManager.java
│       │   │                   │   │   ├── InvokerUtils.java
│       │   │                   │   │   ├── MicroserviceReferenceConfig.java
│       │   │                   │   │   ├── ReactiveResponseExecutor.java
│       │   │                   │   │   ├── ReferenceConfig.java
│       │   │                   │   │   ├── ReferenceConfigManager.java
│       │   │                   │   │   └── SyncResponseExecutor.java
│       │   │                   │   └── producer/
│       │   │                   │       ├── AbstractProducerProvider.java
│       │   │                   │       ├── ProducerBootListener.java
│       │   │                   │       ├── ProducerMeta.java
│       │   │                   │       └── ProducerProviderManager.java
│       │   │                   ├── registry/
│       │   │                   │   └── discovery/
│       │   │                   │       └── EndpointDiscoveryFilter.java
│       │   │                   ├── tracing/
│       │   │                   │   ├── BraveTraceIdGenerator.java
│       │   │                   │   ├── ScbMarker.java
│       │   │                   │   ├── TraceIdGenerator.java
│       │   │                   │   └── TraceIdLogger.java
│       │   │                   └── transport/
│       │   │                       ├── AbstractTransport.java
│       │   │                       ├── TransportClassAnnotationProcessor.java
│       │   │                       ├── TransportManager.java
│       │   │                       └── TransportMethodAnnotationProcessor.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── services/
│       │       │   │   ├── org.apache.servicecomb.core.exception.ExceptionConverter
│       │       │   │   ├── org.apache.servicecomb.core.filter.FilterProvider
│       │       │   │   ├── org.apache.servicecomb.core.tracing.TraceIdGenerator
│       │       │   │   ├── org.apache.servicecomb.swagger.generator.ClassAnnotationProcessor
│       │       │   │   ├── org.apache.servicecomb.swagger.generator.MethodAnnotationProcessor
│       │       │   │   ├── org.apache.servicecomb.swagger.generator.SwaggerContextRegister
│       │       │   │   └── org.apache.servicecomb.swagger.invocation.arguments.consumer.ConsumerContextArgumentMapperFactory
│       │       │   └── spring/
│       │       │       └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │       └── microservice.yaml
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── apache/
│           │           └── servicecomb/
│           │               └── core/
│           │                   ├── Config.java
│           │                   ├── TestConfig.java
│           │                   ├── TestConfigurationSpringInitializer.java
│           │                   ├── TestEndpoint.java
│           │                   ├── TestException.java
│           │                   ├── TestInvocation.java
│           │                   ├── TestSCBApplicationListener.java
│           │                   ├── TestTransport.java
│           │                   ├── consumer/
│           │                   │   ├── TestReactiveResponseExecutor.java
│           │                   │   └── TestSyncResponseExecutor.java
│           │                   ├── definition/
│           │                   │   ├── MicroServicePropertyExtendedStub.java
│           │                   │   ├── OperationConfigTest.java
│           │                   │   └── TestMicroserviceMetaManager.java
│           │                   ├── event/
│           │                   │   └── TestInvocationStartEvent.java
│           │                   ├── exception/
│           │                   │   ├── ExceptionsTest.java
│           │                   │   └── converter/
│           │                   │       └── TimeoutExceptionConverterTest.java
│           │                   ├── executor/
│           │                   │   ├── TestExecutorManager.java
│           │                   │   ├── TestGroupExecutor.java
│           │                   │   └── TestThreadPoolExecutorEx.java
│           │                   ├── filter/
│           │                   │   ├── FilterChainTest.java
│           │                   │   └── impl/
│           │                   │       ├── ParameterValidatorFilterTest.java
│           │                   │       └── ProducerOperationFilterTest.java
│           │                   ├── invocation/
│           │                   │   ├── ProducerInvocationFlowTest.java
│           │                   │   ├── TestInvocationStageTrace.java
│           │                   │   ├── endpoint/
│           │                   │   │   ├── EndpointTest.java
│           │                   │   │   └── EndpointUtilsTest.java
│           │                   │   └── timeout/
│           │                   │       ├── PassingTimeStrategyTest.java
│           │                   │       └── ProcessingTimeStrategyTest.java
│           │                   ├── provider/
│           │                   │   ├── Person.java
│           │                   │   ├── consumer/
│           │                   │   │   └── TestInvokerUtils.java
│           │                   │   └── producer/
│           │                   │       ├── TestProducerBootListener.java
│           │                   │       ├── TestProducerMeta.java
│           │                   │       └── TestProducerProviderManager.java
│           │                   ├── registry/
│           │                   │   └── discovery/
│           │                   │       └── TestEndpointDiscoveryFilter.java
│           │                   ├── tracing/
│           │                   │   └── BraveTraceIdGeneratorTest.java
│           │                   └── transport/
│           │                       ├── TestAbstractTransport.java
│           │                       └── TestTransportManager.java
│           └── resources/
│               ├── META-INF/
│               │   └── spring/
│               │       └── cse.bean.xml
│               ├── log4j2.xml
│               ├── microservice.yaml
│               └── test/
│                   └── test/
│                       ├── microservice.yaml
│                       └── schema.yaml
├── coverage-reports/
│   └── pom.xml
├── demo/
│   ├── README.md
│   ├── assembly/
│   │   └── assembly.xml
│   ├── demo-consul/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ClientWebsocketController.java
│   │   │           │                   ├── ConsulConsumerApplication.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   ├── ConsumerReactiveStreamController.java
│   │   │           │                   ├── ProviderService.java
│   │   │           │                   └── User.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsulProviderApplication.java
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderController.java
│   │   │           │                   ├── ReactiveStreamController.java
│   │   │           │                   ├── User.java
│   │   │           │                   └── WebsocketController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── ConsulConfigIT.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   ├── ProviderIT.java
│   │           │   │                   ├── ReactiveStreamIT.java
│   │           │   │                   ├── TestClientApplication.java
│   │           │   │                   ├── ThirdSvcConfiguration.java
│   │           │   │                   ├── User.java
│   │           │   │                   └── WebsocketIT.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── ConsulIT.java
│   ├── demo-crossapp/
│   │   ├── crossapp-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── crossapp/
│   │   │       │   │                       ├── CrossappClient.java
│   │   │       │   │                       └── HelloWorld.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── crossapp/
│   │   │                                   └── CrossAppIT.java
│   │   ├── crossapp-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── crossapp/
│   │   │           │                       ├── CrossappServer.java
│   │   │           │                       └── HelloWorldImpl.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-cse-v1/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerConfigController.java
│   │   │           │                   ├── ConsumerConfigurationProperties.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── provider-canary/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── servicecomb/
│   │               │               └── samples/
│   │               │                   ├── Config.java
│   │               │                   ├── ConsumerConfigIT.java
│   │               │                   ├── HelloWorldIT.java
│   │               │                   └── TestClientApplication.java
│   │               └── resources/
│   │                   ├── application.yml
│   │                   └── log4j2.xml
│   ├── demo-cse-v2/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerConfigController.java
│   │   │           │                   ├── ConsumerConfigurationProperties.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── servicecomb/
│   │               │               └── samples/
│   │               │                   ├── Config.java
│   │               │                   ├── ConsumerConfigIT.java
│   │               │                   ├── HelloWorldIT.java
│   │               │                   └── TestClientApplication.java
│   │               └── resources/
│   │                   ├── application.yml
│   │                   └── log4j2.xml
│   ├── demo-edge/
│   │   ├── README.md
│   │   ├── authentication/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── authentication/
│   │   │           │                           ├── AuthImpl.java
│   │   │           │                           ├── AuthMain.java
│   │   │           │                           └── encrypt/
│   │   │           │                               ├── EncryptImpl.java
│   │   │           │                               └── Hcr.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── business-1-1-0/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── business/
│   │   │           │                           ├── BusinessMain_V1_1_0.java
│   │   │           │                           └── Impl.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── business-1.0.0/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── business/
│   │   │           │                           ├── BusinessMain_V1_0_0.java
│   │   │           │                           └── Impl.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── business-2.0.0/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       └── business/
│   │   │           │                           ├── BusinessMain_V2_0_0.java
│   │   │           │                           ├── EdgeServiceGovernanceService.java
│   │   │           │                           ├── Impl.java
│   │   │           │                           ├── ImplV2.java
│   │   │           │                           └── error/
│   │   │           │                               ├── CustomExceptionToProducerResponseConverter.java
│   │   │           │                               ├── ErrorData.java
│   │   │           │                               ├── ErrorService.java
│   │   │           │                               └── IllegalStateErrorData.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.apache.servicecomb.core.exception.ExceptionConverter
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── edge/
│   │   │       │   │                       └── consumer/
│   │   │       │   │                           ├── Consumer.java
│   │   │       │   │                           ├── ConsumerMain.java
│   │   │       │   │                           └── EdgeServiceGovernanceTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── edge/
│   │   │                                   └── consumer/
│   │   │                                       └── EdgeDemoIT.java
│   │   ├── edge-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── edge/
│   │   │           │                       ├── EdgeMain.java
│   │   │           │                       ├── authentication/
│   │   │           │                       │   └── encrypt/
│   │   │           │                       │       └── Hcr.java
│   │   │           │                       └── service/
│   │   │           │                           ├── CustomResponseMetaMapper.java
│   │   │           │                           ├── EdgeConst.java
│   │   │           │                           ├── EdgeDispatcher.java
│   │   │           │                           ├── IllegalStateErrorData.java
│   │   │           │                           ├── encrypt/
│   │   │           │                           │   ├── Encrypt.java
│   │   │           │                           │   ├── EncryptContext.java
│   │   │           │                           │   ├── EncryptEdgeDispatcher.java
│   │   │           │                           │   └── filter/
│   │   │           │                           │       ├── DecodeBodyFilter.java
│   │   │           │                           │       ├── EdgeSignatureRequestFilter.java
│   │   │           │                           │       ├── EdgeSignatureResponseFilter.java
│   │   │           │                           │       └── UserIdFilter.java
│   │   │           │                           └── handler/
│   │   │           │                               ├── Auth.java
│   │   │           │                               └── AuthHandler.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       ├── org.apache.servicecomb.swagger.invocation.response.ResponseMetaMapper
│   │   │               │       └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── model/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── edge/
│   │   │                                   └── model/
│   │   │                                       ├── AppClientDataRsp.java
│   │   │                                       ├── ChannelRequestBase.java
│   │   │                                       ├── DependTypeA.java
│   │   │                                       ├── DependTypeB.java
│   │   │                                       ├── RecursiveSelfType.java
│   │   │                                       ├── ResultWithInstance.java
│   │   │                                       └── User.java
│   │   └── pom.xml
│   ├── demo-etcd/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ClientWebsocketController.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   ├── ConsumerReactiveStreamController.java
│   │   │           │                   ├── EtcdConsumerApplication.java
│   │   │           │                   ├── ProviderService.java
│   │   │           │                   └── User.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── EtcdProviderApplication.java
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderController.java
│   │   │           │                   ├── ReactiveStreamController.java
│   │   │           │                   ├── User.java
│   │   │           │                   └── WebsocketController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── EtcdConfigIT.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   ├── ProviderIT.java
│   │           │   │                   ├── ReactiveStreamIT.java
│   │           │   │                   ├── TestClientApplication.java
│   │           │   │                   ├── ThirdSvcConfiguration.java
│   │           │   │                   ├── User.java
│   │           │   │                   └── WebsocketIT.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── EtcdIT.java
│   ├── demo-filter/
│   │   ├── filter-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── filter/
│   │   │           │                       ├── FilterClient.java
│   │   │           │                       └── client/
│   │   │           │                           ├── ClientExceptionSchema.java
│   │   │           │                           ├── GovernanceConsumerSchema.java
│   │   │           │                           └── RetryClientSchema.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── filter-edge/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── filter/
│   │   │           │                       └── FilterEdge.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── filter-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── filter/
│   │   │           │                       ├── FilterServer.java
│   │   │           │                       └── server/
│   │   │           │                           ├── ExceptionSchema.java
│   │   │           │                           ├── GovernanceProviderSchema.java
│   │   │           │                           └── RetrySchema.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── filter-tests/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── filter/
│   │   │       │   │                       ├── FilterTests.java
│   │   │       │   │                       └── tests/
│   │   │       │   │                           ├── TestExceptionSchemaFromClient.java
│   │   │       │   │                           ├── TestGovernanceSchemaFromEdge.java
│   │   │       │   │                           ├── TestRetrySchemaFromClient.java
│   │   │       │   │                           └── TestRetrySchemaFromEdge.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       ├── microservice.yaml
│   │   │       │       ├── microservices/
│   │   │       │       │   └── com.servicecomb.filterEdge/
│   │   │       │       │       ├── GovernanceConsumerSchema.yaml
│   │   │       │       │       └── RetryClientSchema.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── filter/
│   │   │                                   └── retry/
│   │   │                                       └── FilterTestsIT.java
│   │   └── pom.xml
│   ├── demo-jaxrs/
│   │   ├── jaxrs-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── jaxrs/
│   │   │       │   │                       ├── JaxrsClient.java
│   │   │       │   │                       ├── client/
│   │   │       │   │                       │   ├── CodeFirstRestTemplateJaxrs.java
│   │   │       │   │                       │   ├── CustomLoadbalanceExtensionsFactory.java
│   │   │       │   │                       │   ├── MultiErrorCodeServiceClient.java
│   │   │       │   │                       │   ├── SchemeInterfaceJaxrs.java
│   │   │       │   │                       │   ├── TestClientTimeout.java
│   │   │       │   │                       │   ├── TestCodeFirstJaxrs.java
│   │   │       │   │                       │   ├── TestCodeFirstJaxrsReactive.java
│   │   │       │   │                       │   ├── TestDynamicConfig.java
│   │   │       │   │                       │   ├── TestFileUploadSchema.java
│   │   │       │   │                       │   ├── TestFormRequestSchema.java
│   │   │       │   │                       │   ├── TestQueryParamSchema.java
│   │   │       │   │                       │   ├── TestQueryParamWithListSchema.java
│   │   │       │   │                       │   ├── TestReactiveSchema.java
│   │   │       │   │                       │   ├── TestSchemeInterfaceJaxrs.java
│   │   │       │   │                       │   ├── beanParam/
│   │   │       │   │                       │   │   ├── BeanParamPojoClient.java
│   │   │       │   │                       │   │   ├── BeanParamRestTemplateClient.java
│   │   │       │   │                       │   │   └── BeanParamTestServiceIntf.java
│   │   │       │   │                       │   ├── injectBean/
│   │   │       │   │                       │   │   └── TestInjectBeanSchema.java
│   │   │       │   │                       │   ├── pojoDefault/
│   │   │       │   │                       │   │   ├── DefaultModel.java
│   │   │       │   │                       │   │   └── DefaultModelServiceClient.java
│   │   │       │   │                       │   └── validation/
│   │   │       │   │                       │       └── ValidationServiceClient.java
│   │   │       │   │                       └── server/
│   │   │       │   │                           └── pojoDefault/
│   │   │       │   │                               └── DefaultResponseModel.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── jaxrs/
│   │   │                                   └── JaxrsIT.java
│   │   ├── jaxrs-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── jaxrs/
│   │   │           │                       ├── JaxrsServer.java
│   │   │           │                       └── server/
│   │   │           │                           ├── CodeFirstJaxrs.java
│   │   │           │                           ├── ComputeImpl.java
│   │   │           │                           ├── FileUploadSchema.java
│   │   │           │                           ├── FormRequestSchema.java
│   │   │           │                           ├── JaxRSDefaultValues.java
│   │   │           │                           ├── QueryParamSchema.java
│   │   │           │                           ├── QueryParamWithListSchema.java
│   │   │           │                           ├── ReactiveSchema.java
│   │   │           │                           ├── RequestClientTimeOut.java
│   │   │           │                           ├── SchemeInterfaceJaxrs.java
│   │   │           │                           ├── SchemeInterfaceJaxrsImpl.java
│   │   │           │                           ├── Validator.java
│   │   │           │                           ├── beanParam/
│   │   │           │                           │   ├── BeanParamTestService.java
│   │   │           │                           │   ├── TestBeanParameter.java
│   │   │           │                           │   └── TestBeanParameterWithUpload.java
│   │   │           │                           ├── injectBean/
│   │   │           │                           │   ├── InjectBean.java
│   │   │           │                           │   ├── InjectBeanSchema.java
│   │   │           │                           │   └── InjectBeanVertxHttpDispatcher.java
│   │   │           │                           ├── multiErrorCode/
│   │   │           │                           │   ├── MultiErrorCodeService.java
│   │   │           │                           │   ├── NoClientErrorCode200.java
│   │   │           │                           │   └── NoClientErrorCode400.java
│   │   │           │                           ├── pojoDefault/
│   │   │           │                           │   ├── DefaultModelService.java
│   │   │           │                           │   ├── DefaultRequestModel.java
│   │   │           │                           │   └── DefaultResponseModel.java
│   │   │           │                           └── validation/
│   │   │           │                               └── ValidationService.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-local-registry/
│   │   ├── README.md
│   │   ├── demo-local-registry-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── localRegistryClient/
│   │   │       │   │                       ├── CodeFirstService.java
│   │   │       │   │                       ├── LocalRegistryClientApplication.java
│   │   │       │   │                       ├── LocalRegistryServerTest.java
│   │   │       │   │                       ├── RegistryBeansConfiguration.java
│   │   │       │   │                       └── ServerService.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── log4j2.xml
│   │   │       │       ├── microservices/
│   │   │       │       │   ├── demo-local-registry-server/
│   │   │       │       │   │   └── ServerEndpoint.yaml
│   │   │       │       │   ├── demo-local-registry-server-bean/
│   │   │       │       │   │   └── ServerEndpoint.yaml
│   │   │       │       │   └── demo-local-registry-server-bean2/
│   │   │       │       │       └── ServerEndpoint.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── localRegistryClient/
│   │   │                                   └── LocalRegistryIT.java
│   │   ├── demo-local-registry-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── localRegistryServer/
│   │   │           │                       ├── CodeFirstEndpoint.java
│   │   │           │                       ├── LocalRegistryServerApplication.java
│   │   │           │                       ├── SelfServiceInvoker.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   ├── demo-multi-registries/
│   │   ├── README.md
│   │   ├── demo-multi-registries-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── registry/
│   │   │       │   │                       ├── IServerEndpoint.java
│   │   │       │   │                       ├── IServiceCenterEndpoint.java
│   │   │       │   │                       ├── MultiRegistriesClientApplication.java
│   │   │       │   │                       ├── MultiRegistriesServerTestCase.java
│   │   │       │   │                       ├── SchemaDiscoveryTestCase.java
│   │   │       │   │                       ├── ServiceCenterEndpoint.java
│   │   │       │   │                       └── ServiceCenterTestCase.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── log4j2.xml
│   │   │       │       ├── microservices/
│   │   │       │       │   └── thirdParty-service-center/
│   │   │       │       │       └── ServiceCenterEndpoint.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── registry/
│   │   │                                   └── MultiRegistriesIT.java
│   │   ├── demo-multi-registries-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── registry/
│   │   │           │                       ├── MultiRegistriesServerApplication.java
│   │   │           │                       ├── SelfServiceInvoker.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── pom.xml
│   ├── demo-multi-service-center/
│   │   ├── demo-multi-service-center-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── multiServiceCenterClient/
│   │   │       │   │                       ├── Application.java
│   │   │       │   │                       ├── IConfigurationEndpoint.java
│   │   │       │   │                       ├── IServerEndpoint.java
│   │   │       │   │                       ├── RegistryClientTest.java
│   │   │       │   │                       ├── SC2Configuration.java
│   │   │       │   │                       ├── SC2Discovery.java
│   │   │       │   │                       ├── SC2Registration.java
│   │   │       │   │                       ├── ServerATest.java
│   │   │       │   │                       └── ServerBTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       └── log4j2.xml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── multiServiceCenterClient/
│   │   │                                   └── MultiServiceCenterIT.java
│   │   ├── demo-multi-service-center-serverA/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiServiceCenter/
│   │   │           │                       ├── ServerApplication.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-multi-service-center-serverB/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiServiceCenterServerB/
│   │   │           │                       ├── ConfigurationEndpoint.java
│   │   │           │                       ├── ServerApplication.java
│   │   │           │                       └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.properties
│   │   │               ├── application.yml
│   │   │               ├── log4j2.xml
│   │   │               ├── mapping.yaml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-multiple/
│   │   ├── a-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── a/
│   │   │           │                           └── client/
│   │   │           │                               ├── AClient.java
│   │   │           │                               ├── AClientMain.java
│   │   │           │                               └── AIntf.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── a-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── a/
│   │   │           │                           └── server/
│   │   │           │                               ├── AImpl.java
│   │   │           │                               └── AServerMain.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── b-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── b/
│   │   │           │                           └── client/
│   │   │           │                               ├── BClient.java
│   │   │           │                               ├── BClientMain.java
│   │   │           │                               └── BIntf.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── b-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── b/
│   │   │           │                           └── server/
│   │   │           │                               ├── BImpl.java
│   │   │           │                               └── BServerMain.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   ├── multiple-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── multiple/
│   │   │       │   │                       └── client/
│   │   │       │   │                           └── MultipleClient.java
│   │   │       │   └── resources/
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── multiple/
│   │   │                                   └── client/
│   │   │                                       └── MultipleIT.java
│   │   ├── multiple-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── multiple/
│   │   │           │                       └── server/
│   │   │           │                           └── MultipleServer.java
│   │   │           └── resources/
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-nacos/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   └── ProviderController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   └── TestClientApplication.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── NocasIT.java
│   ├── demo-pojo/
│   │   ├── pojo-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── pojo/
│   │   │       │   │                       └── client/
│   │   │       │   │                           ├── BeanRpcTest.java
│   │   │       │   │                           ├── ClientInterfaceForServerTest.java
│   │   │       │   │                           ├── CodeFirstPojoClient.java
│   │   │       │   │                           ├── CodeFirstPojoClientIntf.java
│   │   │       │   │                           ├── PojoClient.java
│   │   │       │   │                           ├── SchemaInterface.java
│   │   │       │   │                           ├── SchemeInterfacePojo.java
│   │   │       │   │                           ├── TestFlowControl.java
│   │   │       │   │                           ├── TestNotRecommendedService.java
│   │   │       │   │                           ├── TestRpcReferenceMethodInjection.java
│   │   │       │   │                           ├── TestSameService.java
│   │   │       │   │                           ├── TestSchemeInterface.java
│   │   │       │   │                           ├── TestSchemeInterfacePojo.java
│   │   │       │   │                           ├── TestTestImpl.java
│   │   │       │   │                           ├── TestWeakPojo.java
│   │   │       │   │                           └── invoker/
│   │   │       │   │                               ├── ClientModel.java
│   │   │       │   │                               └── TestInvokerEndpoint.java
│   │   │       │   └── resources/
│   │   │       │       ├── META-INF/
│   │   │       │       │   └── spring/
│   │   │       │       │       └── pojo.client.bean.xml
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── pojo/
│   │   │                                   └── PojoIT.java
│   │   ├── pojo-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── pojo/
│   │   │           │                       └── server/
│   │   │           │                           ├── CodeFirstPojo.java
│   │   │           │                           ├── FlowControlClientSchema.java
│   │   │           │                           ├── FlowControlSchema.java
│   │   │           │                           ├── HelloImpl.java
│   │   │           │                           ├── NotRecommendedService.java
│   │   │           │                           ├── PojoProducersCustomized.java
│   │   │           │                           ├── PojoServer.java
│   │   │           │                           ├── SchemaInterface.java
│   │   │           │                           ├── SchemaInterfaceImpl.java
│   │   │           │                           ├── SchemeInterfacePojo.java
│   │   │           │                           ├── SchemeInterfacePojoImpl.java
│   │   │           │                           ├── SmartCareImpl.java
│   │   │           │                           ├── TestImpl.java
│   │   │           │                           ├── WeakPojo.java
│   │   │           │                           ├── invoker/
│   │   │           │                           │   ├── InvokerEndpoint.java
│   │   │           │                           │   └── ServerModel.java
│   │   │           │                           └── same/
│   │   │           │                               ├── pk1/
│   │   │           │                               │   ├── SameInterface.java
│   │   │           │                               │   ├── SameInterfaceImpl.java
│   │   │           │                               │   └── SameService.java
│   │   │           │                               └── pk2/
│   │   │           │                                   ├── SameInterface.java
│   │   │           │                                   ├── SameInterfaceImpl.java
│   │   │           │                                   └── SameService.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── spring/
│   │   │               │       └── pojo.server.bean.xml
│   │   │               ├── log4j2.xml
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-register-url-prefix/
│   │   ├── README.md
│   │   ├── demo-register-url-prefix-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── prefix/
│   │   │       │   │                       └── Application.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       └── log4j2.xml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── prefix/
│   │   │                                   └── RegisterUrlPrefixIT.java
│   │   ├── demo-register-url-prefix-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── prefix/
│   │   │           │                       ├── PrefixApplication.java
│   │   │           │                       └── RegisterUrlPrefixEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               ├── log4j2.xml
│   │   │               └── logback.xml
│   │   └── pom.xml
│   ├── demo-schema/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── demo/
│   │           │                   ├── CategorizedTestCase.java
│   │           │                   ├── CategorizedTestCaseRunner.java
│   │           │                   ├── CodeFirstPojoIntf.java
│   │           │                   ├── CodeFirstRestTemplate.java
│   │           │                   ├── CommonSchemaInterface.java
│   │           │                   ├── DemoConst.java
│   │           │                   ├── DemoSSLCustom.java
│   │           │                   ├── EmptyObject.java
│   │           │                   ├── Generic.java
│   │           │                   ├── RestObjectMapperWithStringMapper.java
│   │           │                   ├── RestObjectMapperWithStringMapperNotWriteNull.java
│   │           │                   ├── TestMgr.java
│   │           │                   ├── api/
│   │           │                   │   ├── IHeaderParamWithListSchema.java
│   │           │                   │   └── IHeaderParamWithListSchemaSpringMvc.java
│   │           │                   ├── compute/
│   │           │                   │   ├── Compute.java
│   │           │                   │   ├── GenericParam.java
│   │           │                   │   ├── GenericParamExtended.java
│   │           │                   │   ├── GenericParamWithJsonIgnore.java
│   │           │                   │   └── Person.java
│   │           │                   ├── controller/
│   │           │                   │   ├── Controller.java
│   │           │                   │   ├── Person.java
│   │           │                   │   └── PersonAlias.java
│   │           │                   ├── helloworld/
│   │           │                   │   └── greeter/
│   │           │                   │       └── Hello.java
│   │           │                   ├── ignore/
│   │           │                   │   ├── IgnoreInterface.java
│   │           │                   │   ├── InputModelForTestIgnore.java
│   │           │                   │   └── OutputModelForTestIgnore.java
│   │           │                   ├── jaxbbean/
│   │           │                   │   ├── JAXBJob.java
│   │           │                   │   └── JAXBPerson.java
│   │           │                   ├── jaxrs/
│   │           │                   │   └── server/
│   │           │                   │       └── validation/
│   │           │                   │           └── ValidationModel.java
│   │           │                   ├── mapnull/
│   │           │                   │   ├── ParseRequest.java
│   │           │                   │   └── ParseResponse.java
│   │           │                   ├── model/
│   │           │                   │   └── SpecialNameModel.java
│   │           │                   ├── multiErrorCode/
│   │           │                   │   ├── MultiRequest.java
│   │           │                   │   ├── MultiResponse200.java
│   │           │                   │   ├── MultiResponse400.java
│   │           │                   │   └── MultiResponse500.java
│   │           │                   ├── produceprocessor/
│   │           │                   │   ├── ProduceAppXmlProcessor.java
│   │           │                   │   └── override/
│   │           │                   │       └── ProduceAppXmlProcessor.java
│   │           │                   ├── server/
│   │           │                   │   ├── AbstractModel.java
│   │           │                   │   ├── DefaultAbstractModel.java
│   │           │                   │   ├── GenericsModel.java
│   │           │                   │   ├── MapModel.java
│   │           │                   │   ├── NotRecommendedServiceInf.java
│   │           │                   │   ├── SecondAbstractModel.java
│   │           │                   │   ├── Test.java
│   │           │                   │   ├── TestRequest.java
│   │           │                   │   ├── TestResponse.java
│   │           │                   │   ├── User.java
│   │           │                   │   └── WrappedAbstractModel.java
│   │           │                   ├── smartcare/
│   │           │                   │   ├── Application.java
│   │           │                   │   ├── Group.java
│   │           │                   │   ├── Response.java
│   │           │                   │   └── SmartCare.java
│   │           │                   ├── utils/
│   │           │                   │   └── JAXBUtils.java
│   │           │                   └── validator/
│   │           │                       ├── Student.java
│   │           │                       └── Teacher.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       └── org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor
│   │               └── microservice.yaml
│   ├── demo-spring-boot-transport/
│   │   ├── demo-spring-boot-pojo-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── springboot/
│   │   │       │   │                       └── pojo/
│   │   │       │   │                           ├── client/
│   │   │       │   │                           │   ├── DemoConst.java
│   │   │       │   │                           │   ├── PojoClient.java
│   │   │       │   │                           │   ├── PojoClientTest.java
│   │   │       │   │                           │   └── TestMgr.java
│   │   │       │   │                           └── server/
│   │   │       │   │                               └── schema/
│   │   │       │   │                                   └── server/
│   │   │       │   │                                       ├── Test.java
│   │   │       │   │                                       ├── TestRequest.java
│   │   │       │   │                                       ├── TestResponse.java
│   │   │       │   │                                       └── User.java
│   │   │       │   └── resources/
│   │   │       │       ├── META-INF/
│   │   │       │       │   └── spring/
│   │   │       │       │       └── pojo.client.bean.xml
│   │   │       │       └── application.yml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── springboot/
│   │   │                                   └── pojo/
│   │   │                                       └── client/
│   │   │                                           └── PojoClientIT.java
│   │   ├── demo-spring-boot-pojo-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── springboot/
│   │   │           │                       └── pojo/
│   │   │           │                           └── server/
│   │   │           │                               ├── PojoServer.java
│   │   │           │                               ├── handler/
│   │   │           │                               │   └── MyHandler.java
│   │   │           │                               └── schema/
│   │   │           │                                   ├── greeter/
│   │   │           │                                   │   └── Hello.java
│   │   │           │                                   └── server/
│   │   │           │                                       ├── HelloImpl.java
│   │   │           │                                       ├── Test.java
│   │   │           │                                       ├── TestImpl.java
│   │   │           │                                       ├── TestRequest.java
│   │   │           │                                       ├── TestResponse.java
│   │   │           │                                       └── User.java
│   │   │           └── resources/
│   │   │               └── application.yml
│   │   ├── demo-spring-boot-springmvc-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── springboot/
│   │   │       │   │                   └── springmvc/
│   │   │       │   │                       └── client/
│   │   │       │   │                           ├── PlaceHolderSchemaTest.java
│   │   │       │   │                           ├── ReactiveStreamIT.java
│   │   │       │   │                           ├── SpringMvcClient.java
│   │   │       │   │                           ├── TestAnnotationsSchema.java
│   │   │       │   │                           ├── ThirdSvcConfiguration.java
│   │   │       │   │                           └── UploadDownloadSchemaTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── certificates/
│   │   │       │       │   ├── server.p12
│   │   │       │       │   └── trust.jks
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── springboot/
│   │   │                               └── springmvc/
│   │   │                                   └── client/
│   │   │                                       └── SpringMvcClientIT.java
│   │   ├── demo-spring-boot-springmvc-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── springboot/
│   │   │           │                   └── springmvc/
│   │   │           │                       └── server/
│   │   │           │                           ├── AnnotationsSchema.java
│   │   │           │                           ├── PlaceHolderSchema.java
│   │   │           │                           ├── ReactiveStreamController.java
│   │   │           │                           ├── SpringmvcServer.java
│   │   │           │                           └── UploadDownloadSchema.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               ├── certificates/
│   │   │               │   ├── server.p12
│   │   │               │   └── trust.jks
│   │   │               └── microservice.yaml
│   │   └── pom.xml
│   ├── demo-springmvc/
│   │   ├── pom.xml
│   │   ├── springmvc-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── springmvc/
│   │   │       │   │                       ├── SpringmvcClient.java
│   │   │       │   │                       ├── client/
│   │   │       │   │                       │   ├── CodeFirstRestTemplateSpringmvc.java
│   │   │       │   │                       │   ├── CodeFirstSpringmvcIntf.java
│   │   │       │   │                       │   ├── CustomEndpointDiscoveryFilter.java
│   │   │       │   │                       │   ├── ICompatible1xTestSchema.java
│   │   │       │   │                       │   ├── ResponseOKData.java
│   │   │       │   │                       │   ├── SchemeInterfaceSpringmvc.java
│   │   │       │   │                       │   ├── SpringMVCSchema.java
│   │   │       │   │                       │   ├── TestAnnotationsSchema.java
│   │   │       │   │                       │   ├── TestBigNumberSchema.java
│   │   │       │   │                       │   ├── TestContentType.java
│   │   │       │   │                       │   ├── TestControllerImpl.java
│   │   │       │   │                       │   ├── TestDataTypesAnnotationsSchema.java
│   │   │       │   │                       │   ├── TestDateTimeSchema.java
│   │   │       │   │                       │   ├── TestDownloadSchema.java
│   │   │       │   │                       │   ├── TestFactoryBean.java
│   │   │       │   │                       │   ├── TestGeneric.java
│   │   │       │   │                       │   ├── TestInvokeWhenServerNotReady.java
│   │   │       │   │                       │   ├── TestManagementEndpoint.java
│   │   │       │   │                       │   ├── TestMaxHttpUrlLength.java
│   │   │       │   │                       │   ├── TestObject.java
│   │   │       │   │                       │   ├── TestResponse.java
│   │   │       │   │                       │   ├── TestRestTemplate.java
│   │   │       │   │                       │   ├── TestRetrySchema.java
│   │   │       │   │                       │   ├── TestSchemeInterfaceSpringmvc.java
│   │   │       │   │                       │   ├── TestSpringMVCCommonSchemaInterface.java
│   │   │       │   │                       │   ├── TestThirdPartyRegistration.java
│   │   │       │   │                       │   ├── TestThirdSvc.java
│   │   │       │   │                       │   ├── TestTransportSchema.java
│   │   │       │   │                       │   ├── TestUploadSchema.java
│   │   │       │   │                       │   ├── TestWeakSpringmvc.java
│   │   │       │   │                       │   ├── ThirdPartyService.java
│   │   │       │   │                       │   ├── ThirdSvc.java
│   │   │       │   │                       │   └── factory/
│   │   │       │   │                       │       ├── ServiceBean.java
│   │   │       │   │                       │       ├── ServiceFactoryBean.java
│   │   │       │   │                       │       ├── ServiceWithReference.java
│   │   │       │   │                       │       └── ServiceWithReferenceImpl.java
│   │   │       │   │                       └── decoderesponse/
│   │   │       │   │                           └── DecodeTestResponse.java
│   │   │       │   └── resources/
│   │   │       │       ├── META-INF/
│   │   │       │       │   └── spring/
│   │   │       │       │       └── springmvc.client.bean.xml
│   │   │       │       ├── SpringMVCSchema.yaml
│   │   │       │       ├── certificates/
│   │   │       │       │   ├── server.p12
│   │   │       │       │   └── trust.jks
│   │   │       │       ├── log4j2.xml
│   │   │       │       └── microservice.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── springmvc/
│   │   │                                   └── SpringMvcIT.java
│   │   └── springmvc-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── apache/
│   │               │           └── servicecomb/
│   │               │               └── demo/
│   │               │                   └── springmvc/
│   │               │                       ├── SpringmvcServer.java
│   │               │                       ├── decoderesponse/
│   │               │                       │   └── DecodeTestResponse.java
│   │               │                       ├── filter/
│   │               │                       │   └── ProviderTestFilter.java
│   │               │                       ├── server/
│   │               │                       │   ├── AnnotationsSchema.java
│   │               │                       │   ├── BigNumberSchema.java
│   │               │                       │   ├── BizkeeperTest.java
│   │               │                       │   ├── CodeFirstSpringmvc.java
│   │               │                       │   ├── CodeFirstSpringmvcForSchema.java
│   │               │                       │   ├── Compatible1xTestSchema.java
│   │               │                       │   ├── CompatibleQueryBean.java
│   │               │                       │   ├── ConfigurationProblemsCollectorTest.java
│   │               │                       │   ├── ContentTypeSpringmvc.java
│   │               │                       │   ├── ContentTypeSpringmvcOverwrite.java
│   │               │                       │   ├── ControllerImpl.java
│   │               │                       │   ├── DataTypesAnnotationsSchema.java
│   │               │                       │   ├── DateTimeSchema.java
│   │               │                       │   ├── DownloadSchema.java
│   │               │                       │   ├── MyStrategy.java
│   │               │                       │   ├── MyStrategyFactory.java
│   │               │                       │   ├── ProducerTestsAfterBootup.java
│   │               │                       │   ├── ReadFileSource.java
│   │               │                       │   ├── ResponseOKData.java
│   │               │                       │   ├── ResponseOKException.java
│   │               │                       │   ├── ResponseOKExceptionConverter.java
│   │               │                       │   ├── RestProducersCustomized.java
│   │               │                       │   ├── RetrySchema.java
│   │               │                       │   ├── SchemeInterfaceSpringmvc.java
│   │               │                       │   ├── SchemeInterfaceSpringmvcImpl.java
│   │               │                       │   ├── SpringMVCCommonSchemaInterface.java
│   │               │                       │   ├── SpringMvcDefaultValues.java
│   │               │                       │   ├── TransportSchema.java
│   │               │                       │   ├── UploadSchema.java
│   │               │                       │   └── WeakSpringmvc.java
│   │               │                       └── third/
│   │               │                           ├── EarlyConsumer.java
│   │               │                           ├── HealthSchema.java
│   │               │                           ├── HeartBeatService.java
│   │               │                           ├── NormalConsumer.java
│   │               │                           └── Register.java
│   │               └── resources/
│   │                   ├── META-INF/
│   │                   │   └── services/
│   │                   │       ├── org.apache.servicecomb.core.exception.ExceptionConverter
│   │                   │       └── org.apache.servicecomb.qps.strategy.IStrategyFactory
│   │                   ├── certificates/
│   │                   │   ├── server.p12
│   │                   │   └── trust.jks
│   │                   ├── log4j2.xml
│   │                   ├── microservice.yaml
│   │                   └── schemas/
│   │                       └── CodeFirstSpringmvcForSchema.yaml
│   ├── demo-zeroconfig-registry/
│   │   ├── README.md
│   │   ├── demo-zeroconfig-registry-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── zeroconfig/
│   │   │           │                       └── client/
│   │   │           │                           ├── ClientApplication.java
│   │   │           │                           ├── ClientModel.java
│   │   │           │                           ├── ClientServerEndpoint.java
│   │   │           │                           ├── GovernanceEndpoint.java
│   │   │           │                           ├── IRpcEndpoint.java
│   │   │           │                           └── IServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-zeroconfig-registry-edge/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── zeroconfig/
│   │   │           │                       └── edge/
│   │   │           │                           ├── EdgeApplication.java
│   │   │           │                           ├── SelfServiceInvoker.java
│   │   │           │                           └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-zeroconfig-registry-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── demo/
│   │   │           │                   └── zeroconfig/
│   │   │           │                       └── server/
│   │   │           │                           ├── GovernanceEndpoint.java
│   │   │           │                           ├── GovernanceNoPrefixEndpoint.java
│   │   │           │                           ├── RpcEndpoint.java
│   │   │           │                           ├── SelfServiceInvoker.java
│   │   │           │                           ├── ServerApplication.java
│   │   │           │                           └── ServerEndpoint.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── demo-zeroconfig-registry-tests/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── apache/
│   │   │       │   │           └── servicecomb/
│   │   │       │   │               └── demo/
│   │   │       │   │                   └── zeroconfig/
│   │   │       │   │                       └── tests/
│   │   │       │   │                           ├── Application.java
│   │   │       │   │                           ├── ClientModel.java
│   │   │       │   │                           ├── GovernanceTest.java
│   │   │       │   │                           └── ServerTest.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── logback.xml
│   │   │       │       ├── microservices/
│   │   │       │       │   ├── demo-zeroconfig-registry-client/
│   │   │       │       │   │   ├── ClientServerEndpoint.yaml
│   │   │       │       │   │   ├── GovernanceEndpoint.yaml
│   │   │       │       │   │   └── SchemaDiscoveryEndpoint.yaml
│   │   │       │       │   └── demo-zeroconfig-registry-edge/
│   │   │       │       │       ├── ClientServerEndpoint.yaml
│   │   │       │       │       └── SchemaDiscoveryEndpoint.yaml
│   │   │       │       └── registry.yaml
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── apache/
│   │   │                       └── servicecomb/
│   │   │                           └── demo/
│   │   │                               └── zeroconfig/
│   │   │                                   └── tests/
│   │   │                                       └── ZeroConfigRegistryIT.java
│   │   └── pom.xml
│   ├── demo-zookeeper/
│   │   ├── README.md
│   │   ├── consumer/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── ClientWebsocketController.java
│   │   │           │                   ├── ConsumerApplication.java
│   │   │           │                   ├── ConsumerController.java
│   │   │           │                   ├── ConsumerHeaderParamWithListSchema.java
│   │   │           │                   ├── ConsumerReactiveStreamController.java
│   │   │           │                   └── ProviderService.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   └── GatewayApplication.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   ├── pom.xml
│   │   ├── provider/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── apache/
│   │   │           │           └── servicecomb/
│   │   │           │               └── samples/
│   │   │           │                   ├── HeaderParamWithListSchema.java
│   │   │           │                   ├── ProviderApplication.java
│   │   │           │                   ├── ProviderController.java
│   │   │           │                   ├── ReactiveStreamController.java
│   │   │           │                   └── WebsocketController.java
│   │   │           └── resources/
│   │   │               ├── application.yml
│   │   │               └── log4j2.xml
│   │   └── test-client/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── apache/
│   │           │   │           └── servicecomb/
│   │           │   │               └── samples/
│   │           │   │                   ├── Config.java
│   │           │   │                   ├── HeaderParamWithListSchemaIT.java
│   │           │   │                   ├── HelloWorldIT.java
│   │           │   │                   ├── ReactiveStreamIT.java
│   │           │   │                   ├── TestClientApplication.java
│   │           │   │                   ├── ThirdSvcConfiguration.java
│   │           │   │                   └── WebsocketIT.java
│   │           │   └── resources/
│   │           │       ├── application.yml
│   │           │       └── log4j2.xml
│   │           └── test/
│   │               └── java/
│   │                   └── org/
│   │                       └── apache/
│   │                           └── servicecomb/
│   │                               └── samples/
│   │                                   └── ZookeeperIT.java
│   └── pom.xml
├── dependencies/
│   ├── bom/
│   │   └── pom.xml
│   ├── default/
│   │   └── pom.xml
│   └── pom.xml
├── distribution/
│   ├── pom.xml
│   └── src/
│       ├── assembly/
│       │   ├── bin.xml
│       │   └── src.xml
│       └── release/
│           ├── LICENSE
│           ├── NOTICE
│           └── licenses/
│               ├── LICENSE-abego
│               ├── LICENSE-animalsniffer
│               ├── LICENSE-antlr
│               ├── LICENSE-asm
│               ├── LICENSE-bouncycastle
│               ├── LICENSE-cc0
│               ├── LICENSE-cddl
│               ├── LICENSE-checkerqual
│               ├── LICENSE-edl-v10
│               ├── LICENSE-epl-v10
│               ├── LICENSE-epl-v20
│               ├── LICENSE-hamcrest
│               ├── LICENSE-hdrhistogram
│               ├── LICENSE-icu4j
│               ├── LICENSE-jcodings
│               ├── LICENSE-joni
│               ├── LICENSE-jopt
│               ├── LICENSE-jsonp
│               ├── LICENSE-jsoup
│               ├── LICENSE-jsr311-api
│               ├── LICENSE-logback
│               ├── LICENSE-mozilla-v20
│               ├── LICENSE-protobuf
│               ├── LICENSE-slf4j
│               ├── LICENSE-woodstox-stax2-api
│               ├── NOTICE-apache-commons-codec
│               ├── NOTICE-netty
│               ├── NOTICE-prometheus
│               ├── NOTICE-protostuff
│               └── NOTICE-tomcat
├── dynamic-config/
│   ├── config-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── apollo/
│   │       │   │                       ├── ApolloClient.java
│   │       │   │                       ├── ApolloConfig.java
│   │       │   │                       ├── ApolloConfiguration.java
│   │       │   │                       ├── ApolloDynamicPropertiesSource.java
│   │       │   │                       └── ConfigurationAction.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── apollo/
│   │           │                       └── ApolloClientTest.java
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-cc/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── cc/
│   │       │   │                       ├── ConfigCenterConfig.java
│   │       │   │                       ├── ConfigCenterConfiguration.java
│   │       │   │                       ├── ConfigCenterDynamicPropertiesSource.java
│   │       │   │                       ├── ConfigCenterInformationCollector.java
│   │       │   │                       └── TransportUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │           │   └── org.apache.servicecomb.core.bootup.BootUpInformationCollector
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── cc/
│   │           │                       ├── ConfigCenterAddressManagerTest.java
│   │           │                       └── ConfigCenterConfigurationSourceImplTest.java
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-consul/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── consul/
│   │           │                       ├── ConsulConfig.java
│   │           │                       ├── ConsulConfigClient.java
│   │           │                       ├── ConsulConfigProperties.java
│   │           │                       └── ConsulDynamicPropertiesSource.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.config.DynamicPropertiesSource
│   ├── config-etcd/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── etcd/
│   │           │                       ├── EtcdClient.java
│   │           │                       ├── EtcdConfig.java
│   │           │                       └── EtcdDynamicPropertiesSource.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.config.DynamicPropertiesSource
│   ├── config-kie/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── kie/
│   │       │   │                       ├── KieConfig.java
│   │       │   │                       ├── KieConfigConfiguration.java
│   │       │   │                       ├── KieDynamicPropertiesSource.java
│   │       │   │                       ├── TransportUtils.java
│   │       │   │                       └── collect/
│   │       │   │                           └── KieClientInformationCollector.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   ├── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │           │   └── org.apache.servicecomb.core.bootup.BootUpInformationCollector
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-nacos/
│   │   ├── README.md
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   └── nacos/
│   │       │   │                       ├── NacosClient.java
│   │       │   │                       ├── NacosConfig.java
│   │       │   │                       └── NacosDynamicPropertiesSource.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       └── test/
│   │           └── resources/
│   │               └── microservice.yaml
│   ├── config-zookeeper/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   └── zookeeper/
│   │           │                       ├── ZookeeperClient.java
│   │           │                       ├── ZookeeperConfig.java
│   │           │                       └── ZookeeperDynamicPropertiesSource.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.config.DynamicPropertiesSource
│   └── pom.xml
├── edge/
│   ├── edge-core/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── edge/
│   │       │   │                   └── core/
│   │       │   │                       ├── AbstractEdgeDispatcher.java
│   │       │   │                       ├── CommonHttpEdgeDispatcher.java
│   │       │   │                       ├── DefaultEdgeDispatcher.java
│   │       │   │                       ├── EdgeAddHeaderFilter.java
│   │       │   │                       ├── EdgeBootListener.java
│   │       │   │                       ├── EdgeCoreConfiguration.java
│   │       │   │                       ├── EdgeInvocationCreator.java
│   │       │   │                       ├── EdgeRestServerVerticle.java
│   │       │   │                       └── URLMappedEdgeDispatcher.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── microservice.yaml
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── edge/
│   │                               └── core/
│   │                                   ├── TestAbstractEdgeDispatcher.java
│   │                                   ├── TestURLMappedEdgeDispatcher.java
│   │                                   └── TestUtils.java
│   └── pom.xml
├── etc/
│   ├── code-templates.xml
│   ├── eclipse-java-google-style.xml
│   └── intellij-java-google-style.xml
├── foundations/
│   ├── foundation-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── foundation/
│   │       │   │                   ├── auth/
│   │       │   │                   │   ├── Cipher.java
│   │       │   │                   │   ├── DefaultCipher.java
│   │       │   │                   │   ├── FoundationCommonAuthConfiguration.java
│   │       │   │                   │   └── ShaAKSKCipher.java
│   │       │   │                   ├── common/
│   │       │   │                   │   ├── AbstractObjectManager.java
│   │       │   │                   │   ├── CommonThread.java
│   │       │   │                   │   ├── DynamicObject.java
│   │       │   │                   │   ├── Holder.java
│   │       │   │                   │   ├── LegacyPropertyFactory.java
│   │       │   │                   │   ├── NamedThreadFactory.java
│   │       │   │                   │   ├── ParameterizedTypeUtil.java
│   │       │   │                   │   ├── RegisterManager.java
│   │       │   │                   │   ├── VendorExtensions.java
│   │       │   │                   │   ├── Version.java
│   │       │   │                   │   ├── base/
│   │       │   │                   │   │   ├── DescriptiveRunnable.java
│   │       │   │                   │   │   ├── DynamicEnum.java
│   │       │   │                   │   │   ├── DynamicEnumCache.java
│   │       │   │                   │   │   ├── EnumUtils.java
│   │       │   │                   │   │   └── ServiceCombConstants.java
│   │       │   │                   │   ├── cache/
│   │       │   │                   │   │   └── VersionedCache.java
│   │       │   │                   │   ├── concurrency/
│   │       │   │                   │   │   └── SuppressedRunnableWrapper.java
│   │       │   │                   │   ├── concurrent/
│   │       │   │                   │   │   └── ConcurrentHashMapEx.java
│   │       │   │                   │   ├── config/
│   │       │   │                   │   │   ├── ConfigLoader.java
│   │       │   │                   │   │   ├── PaaSResourceUtils.java
│   │       │   │                   │   │   └── impl/
│   │       │   │                   │   │       ├── AbstractLoader.java
│   │       │   │                   │   │       ├── PaaSPropertiesLoaderUtils.java
│   │       │   │                   │   │       ├── PropertiesLoader.java
│   │       │   │                   │   │       └── XmlLoaderUtils.java
│   │       │   │                   │   ├── encrypt/
│   │       │   │                   │   │   ├── Encryption.java
│   │       │   │                   │   │   ├── Encryptions.java
│   │       │   │                   │   │   └── NoEncryption.java
│   │       │   │                   │   ├── event/
│   │       │   │                   │   │   ├── AlarmEvent.java
│   │       │   │                   │   │   ├── EnableExceptionPropagation.java
│   │       │   │                   │   │   ├── EventManager.java
│   │       │   │                   │   │   ├── SimpleEventBus.java
│   │       │   │                   │   │   ├── SimpleSubscriber.java
│   │       │   │                   │   │   └── SubscriberOrder.java
│   │       │   │                   │   ├── exceptions/
│   │       │   │                   │   │   └── ServiceCombException.java
│   │       │   │                   │   ├── http/
│   │       │   │                   │   │   ├── HttpStatus.java
│   │       │   │                   │   │   ├── HttpStatusManager.java
│   │       │   │                   │   │   ├── HttpStatusUtils.java
│   │       │   │                   │   │   └── HttpUtils.java
│   │       │   │                   │   ├── io/
│   │       │   │                   │   │   └── AsyncCloseable.java
│   │       │   │                   │   ├── log/
│   │       │   │                   │   │   └── AbstractMarker.java
│   │       │   │                   │   ├── net/
│   │       │   │                   │   │   ├── IpPort.java
│   │       │   │                   │   │   ├── NetUtils.java
│   │       │   │                   │   │   └── URIEndpointObject.java
│   │       │   │                   │   ├── part/
│   │       │   │                   │   │   ├── AbstractPart.java
│   │       │   │                   │   │   ├── FilePart.java
│   │       │   │                   │   │   ├── FilePartForSend.java
│   │       │   │                   │   │   ├── InputStreamPart.java
│   │       │   │                   │   │   └── ResourcePart.java
│   │       │   │                   │   ├── spring/
│   │       │   │                   │   │   └── PaasNamespaceHandler.java
│   │       │   │                   │   └── utils/
│   │       │   │                   │       ├── AbstractRestObjectMapper.java
│   │       │   │                   │       ├── AsyncUtils.java
│   │       │   │                   │       ├── BeanUtils.java
│   │       │   │                   │       ├── ClassLoaderScopeContext.java
│   │       │   │                   │       ├── ConditionWaiter.java
│   │       │   │                   │       ├── ExceptionUtils.java
│   │       │   │                   │       ├── FilePerm.java
│   │       │   │                   │       ├── FortifyUtils.java
│   │       │   │                   │       ├── GenericsUtils.java
│   │       │   │                   │       ├── IOUtils.java
│   │       │   │                   │       ├── JsonUtils.java
│   │       │   │                   │       ├── JvmUtils.java
│   │       │   │                   │       ├── KeyPairEntry.java
│   │       │   │                   │       ├── KeyPairUtils.java
│   │       │   │                   │       ├── LambdaMetafactoryUtils.java
│   │       │   │                   │       ├── LambdaUtils.java
│   │       │   │                   │       ├── MimeTypesUtils.java
│   │       │   │                   │       ├── MuteExceptionUtil.java
│   │       │   │                   │       ├── PartUtils.java
│   │       │   │                   │       ├── ReflectUtils.java
│   │       │   │                   │       ├── ResourceUtil.java
│   │       │   │                   │       ├── RestObjectMapper.java
│   │       │   │                   │       ├── StringBuilderUtils.java
│   │       │   │                   │       ├── TimeUtils.java
│   │       │   │                   │       ├── TypesUtil.java
│   │       │   │                   │       ├── bean/
│   │       │   │                   │       │   ├── ArrayGetter.java
│   │       │   │                   │       │   ├── ArraySetter.java
│   │       │   │                   │       │   ├── BoolGetter.java
│   │       │   │                   │       │   ├── BoolSetter.java
│   │       │   │                   │       │   ├── ByteGetter.java
│   │       │   │                   │       │   ├── ByteSetter.java
│   │       │   │                   │       │   ├── CharGetter.java
│   │       │   │                   │       │   ├── CharSetter.java
│   │       │   │                   │       │   ├── DoubleGetter.java
│   │       │   │                   │       │   ├── DoubleSetter.java
│   │       │   │                   │       │   ├── FloatGetter.java
│   │       │   │                   │       │   ├── FloatSetter.java
│   │       │   │                   │       │   ├── Getter.java
│   │       │   │                   │       │   ├── IntGetter.java
│   │       │   │                   │       │   ├── IntSetter.java
│   │       │   │                   │       │   ├── LongGetter.java
│   │       │   │                   │       │   ├── LongSetter.java
│   │       │   │                   │       │   ├── MapGetter.java
│   │       │   │                   │       │   ├── MapSetter.java
│   │       │   │                   │       │   ├── Setter.java
│   │       │   │                   │       │   ├── ShortGetter.java
│   │       │   │                   │       │   └── ShortSetter.java
│   │       │   │                   │       └── json/
│   │       │   │                   │           ├── JavaxServletPartDeserializer.java
│   │       │   │                   │           ├── JavaxServletPartSerializer.java
│   │       │   │                   │           └── PartModule.java
│   │       │   │                   └── token/
│   │       │   │                       └── Keypair4Auth.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── mime.types
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.foundation.common.encrypt.Encryption
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── common/
│   │           │                       ├── DynamicObjectTest.java
│   │           │                       ├── base/
│   │           │                       │   └── DynamicEnumTest.java
│   │           │                       ├── cache/
│   │           │                       │   └── TestVersionedCache.java
│   │           │                       ├── concurrency/
│   │           │                       │   └── RunnableWrapperTest.java
│   │           │                       ├── config/
│   │           │                       │   └── BeanProp.java
│   │           │                       ├── encrypt/
│   │           │                       │   └── TestEncryptions.java
│   │           │                       ├── event/
│   │           │                       │   ├── TestEventBus.java
│   │           │                       │   └── TestEventManager.java
│   │           │                       ├── http/
│   │           │                       │   ├── TestHttpStatus.java
│   │           │                       │   ├── TestHttpStatusUtils.java
│   │           │                       │   └── TestHttpUtils.java
│   │           │                       ├── net/
│   │           │                       │   ├── TestIpPort.java
│   │           │                       │   ├── TestNetUtils.java
│   │           │                       │   └── TestURIEndpointObject.java
│   │           │                       ├── part/
│   │           │                       │   ├── TestAbstractPart.java
│   │           │                       │   ├── TestFilePart.java
│   │           │                       │   ├── TestInputStreamPart.java
│   │           │                       │   └── TestResourcePart.java
│   │           │                       ├── spring/
│   │           │                       │   └── TestPaasNamespaceHandler.java
│   │           │                       └── utils/
│   │           │                           ├── AsyncUtilsTest.java
│   │           │                           ├── JsonUtilsTest.java
│   │           │                           ├── ResourceUtilTest.java
│   │           │                           ├── TestExceptionUtils.java
│   │           │                           ├── TestFileNameTooLong.java
│   │           │                           ├── TestFortifyUtils.java
│   │           │                           ├── TestGenericsUtils.java
│   │           │                           ├── TestIOUtils.java
│   │           │                           ├── TestJvmUtils.java
│   │           │                           ├── TestLambdaMetafactoryUtils.java
│   │           │                           ├── TestLambdaPerformance.java
│   │           │                           ├── TestMimeTypesUtils.java
│   │           │                           ├── TestRSAUtil.java
│   │           │                           └── TestTypesUtil.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── spring/
│   │               │       └── config.bean.xml
│   │               └── log4j2.xml
│   ├── foundation-config/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── config/
│   │       │   │                   ├── BootStrapProperties.java
│   │       │   │                   ├── ConfigEnvironmentPostProcessor.java
│   │       │   │                   ├── ConfigMapping.java
│   │       │   │                   ├── ConfigUtil.java
│   │       │   │                   ├── ConfigurationChangedEvent.java
│   │       │   │                   ├── DataCenterProperties.java
│   │       │   │                   ├── DynamicProperties.java
│   │       │   │                   ├── DynamicPropertiesImpl.java
│   │       │   │                   ├── DynamicPropertiesSource.java
│   │       │   │                   ├── FoundationConfigConfiguration.java
│   │       │   │                   ├── InMemoryDynamicPropertiesSource.java
│   │       │   │                   ├── YAMLUtil.java
│   │       │   │                   ├── file/
│   │       │   │                   │   ├── AbstractConfigLoader.java
│   │       │   │                   │   ├── ConfigModel.java
│   │       │   │                   │   ├── MicroserviceConfigLoader.java
│   │       │   │                   │   └── YAMLConfigLoader.java
│   │       │   │                   ├── inject/
│   │       │   │                   │   ├── InjectBeanPostProcessor.java
│   │       │   │                   │   ├── InjectProperties.java
│   │       │   │                   │   ├── InjectProperty.java
│   │       │   │                   │   └── PlaceholderResolver.java
│   │       │   │                   ├── parser/
│   │       │   │                   │   ├── Parser.java
│   │       │   │                   │   ├── PropertiesParser.java
│   │       │   │                   │   ├── RawParser.java
│   │       │   │                   │   └── YamlParser.java
│   │       │   │                   └── priority/
│   │       │   │                       ├── ConfigObject.java
│   │       │   │                       ├── ConfigObjectFactory.java
│   │       │   │                       ├── ConfigObjectProperty.java
│   │       │   │                       ├── DynamicProperty.java
│   │       │   │                       ├── PriorityProperty.java
│   │       │   │                       ├── PriorityPropertyFactory.java
│   │       │   │                       ├── PriorityPropertyManager.java
│   │       │   │                       └── PriorityPropertyType.java
│   │       │   └── resources/
│   │       │       ├── META-INF/
│   │       │       │   ├── services/
│   │       │       │   │   └── org.apache.servicecomb.config.DynamicPropertiesSource
│   │       │       │   ├── spring/
│   │       │       │   │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       │       │   └── spring.factories
│   │       │       └── mapping.yaml
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── config/
│   │           │                   ├── BootStrapPropertiesTest.java
│   │           │                   ├── DynamicPropertiesTest.java
│   │           │                   ├── TestConfigMapping.java
│   │           │                   ├── TestYAMLUtil.java
│   │           │                   ├── file/
│   │           │                   │   └── TestMicroserviceConfigLoader.java
│   │           │                   ├── inject/
│   │           │                   │   ├── TestConfigObjectFactory.java
│   │           │                   │   └── TestPlaceholderResolver.java
│   │           │                   ├── parser/
│   │           │                   │   └── TestParser.java
│   │           │                   └── priority/
│   │           │                       ├── TestPriorityProperty.java
│   │           │                       ├── TestPriorityPropertyBase.java
│   │           │                       ├── TestPriorityPropertyFactory.java
│   │           │                       └── TestPriorityPropertyManager.java
│   │           └── resources/
│   │               ├── empty.yaml
│   │               ├── m1.yaml
│   │               ├── mapping.yaml
│   │               ├── microservice.yaml
│   │               ├── test1.yaml
│   │               └── test2.yaml
│   ├── foundation-metrics/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       └── metrics/
│   │       │                           ├── MetricsBootstrap.java
│   │       │                           ├── MetricsBootstrapConfig.java
│   │       │                           ├── MetricsInitializer.java
│   │       │                           ├── PolledEvent.java
│   │       │                           ├── health/
│   │       │                           │   ├── HealthCheckResult.java
│   │       │                           │   ├── HealthChecker.java
│   │       │                           │   └── HealthCheckerManager.java
│   │       │                           ├── meter/
│   │       │                           │   ├── LatencyDistributionConfig.java
│   │       │                           │   ├── LatencyScopeConfig.java
│   │       │                           │   └── PeriodMeter.java
│   │       │                           └── publish/
│   │       │                               ├── DefaultTagFinder.java
│   │       │                               ├── MeasurementGroupConfig.java
│   │       │                               ├── MeasurementNode.java
│   │       │                               ├── MeasurementTree.java
│   │       │                               └── TagFinder.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── foundation/
│   │                               └── metrics/
│   │                                   ├── TestMetricsBootstrap.java
│   │                                   ├── health/
│   │                                   │   └── TestHealthCheckerManager.java
│   │                                   ├── meter/
│   │                                   │   └── TestLatencyDistributionConfig.java
│   │                                   └── publish/
│   │                                       └── spectator/
│   │                                           ├── TestDefaultTagFinder.java
│   │                                           ├── TestMeasurementGroupConfig.java
│   │                                           ├── TestMeasurementNode.java
│   │                                           ├── TestMeasurementTree.java
│   │                                           └── TestTagFinder.java
│   ├── foundation-protobuf/
│   │   ├── README.md
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   ├── io/
│   │       │   │   │   └── protostuff/
│   │       │   │   │       ├── ByteArrayInputEx.java
│   │       │   │   │       ├── InputEx.java
│   │       │   │   │       ├── OutputEx.java
│   │       │   │   │       ├── ProtobufOutputEx.java
│   │       │   │   │       ├── SchemaEx.java
│   │       │   │   │       ├── SchemaReader.java
│   │       │   │   │       ├── SchemaWriter.java
│   │       │   │   │       ├── package-info.java
│   │       │   │   │       └── runtime/
│   │       │   │   │           ├── ArrayFieldMapEx.java
│   │       │   │   │           ├── FieldMapEx.java
│   │       │   │   │           ├── FieldSchema.java
│   │       │   │   │           ├── FieldTypeUtils.java
│   │       │   │   │           └── HashFieldMapEx.java
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── foundation/
│   │       │   │                   └── protobuf/
│   │       │   │                       ├── ProtoMapper.java
│   │       │   │                       ├── ProtoMapperFactory.java
│   │       │   │                       ├── RootDeserializer.java
│   │       │   │                       ├── RootSerializer.java
│   │       │   │                       ├── internal/
│   │       │   │                       │   ├── ProtoConst.java
│   │       │   │                       │   ├── ProtoUtils.java
│   │       │   │                       │   ├── bean/
│   │       │   │                       │   │   ├── BeanDescriptor.java
│   │       │   │                       │   │   ├── BeanDescriptorManager.java
│   │       │   │                       │   │   ├── PropertyDescriptor.java
│   │       │   │                       │   │   └── PropertyWrapper.java
│   │       │   │                       │   ├── parser/
│   │       │   │                       │   │   ├── ContentFileReader.java
│   │       │   │                       │   │   └── ProtoParser.java
│   │       │   │                       │   └── schema/
│   │       │   │                       │       ├── EnumMeta.java
│   │       │   │                       │       ├── MessageAsFieldSchema.java
│   │       │   │                       │       ├── PropertyWrapperAsFieldSchema.java
│   │       │   │                       │       ├── SchemaManager.java
│   │       │   │                       │       ├── any/
│   │       │   │                       │       │   ├── AnyEntry.java
│   │       │   │                       │       │   ├── AnyEntrySchema.java
│   │       │   │                       │       │   └── AnySchema.java
│   │       │   │                       │       ├── deserializer/
│   │       │   │                       │       │   ├── DeserializerSchemaManager.java
│   │       │   │                       │       │   ├── MessageReadSchema.java
│   │       │   │                       │       │   ├── repeated/
│   │       │   │                       │       │   │   ├── AbstractPrimitiveReaders.java
│   │       │   │                       │       │   │   ├── AbstractReaders.java
│   │       │   │                       │       │   │   ├── PrimitiveArrayBuilderWrapper.java
│   │       │   │                       │       │   │   ├── RepeatedReadSchemas.java
│   │       │   │                       │       │   │   ├── RepeatedReader.java
│   │       │   │                       │       │   │   └── impl/
│   │       │   │                       │       │   │       ├── AnyRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── BytesRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── MessageRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── PropertyWrapperRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── StringRepeatedReadSchemas.java
│   │       │   │                       │       │   │       ├── bools/
│   │       │   │                       │       │   │       │   ├── BoolRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── BoolNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── BoolPackedReadSchemas.java
│   │       │   │                       │       │   │       ├── doubles/
│   │       │   │                       │       │   │       │   ├── DoubleRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── DoubleNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── DoublePackedReadSchemas.java
│   │       │   │                       │       │   │       ├── enums/
│   │       │   │                       │       │   │       │   ├── EnumNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │   ├── EnumPackedReadSchemas.java
│   │       │   │                       │       │   │       │   └── EnumSchemaUtils.java
│   │       │   │                       │       │   │       ├── floats/
│   │       │   │                       │       │   │       │   ├── FloatRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── FloatNotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── FloatPackedReadSchemas.java
│   │       │   │                       │       │   │       ├── ints/
│   │       │   │                       │       │   │       │   ├── IntRepeatedReadSchemas.java
│   │       │   │                       │       │   │       │   └── impl/
│   │       │   │                       │       │   │       │       ├── Fixed32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── Fixed32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── Int32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── Int32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SFixed32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SFixed32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SInt32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── SInt32PackedReadSchemas.java
│   │       │   │                       │       │   │       │       ├── UInt32NotPackedReadSchemas.java
│   │       │   │                       │       │   │       │       └── UInt32PackedReadSchemas.java
│   │       │   │                       │       │   │       └── longs/
│   │       │   │                       │       │   │           ├── LongRepeatedReadSchemas.java
│   │       │   │                       │       │   │           └── impl/
│   │       │   │                       │       │   │               ├── Fixed64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── Fixed64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── Int64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── Int64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SFixed64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SFixed64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SInt64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               ├── SInt64PackedReadSchemas.java
│   │       │   │                       │       │   │               ├── UInt64NotPackedReadSchemas.java
│   │       │   │                       │       │   │               └── UInt64PackedReadSchemas.java
│   │       │   │                       │       │   └── scalar/
│   │       │   │                       │       │       ├── AbstractScalarReadSchemas.java
│   │       │   │                       │       │       ├── BoolReadSchemas.java
│   │       │   │                       │       │       ├── BytesReadSchemas.java
│   │       │   │                       │       │       ├── DoubleReadSchemas.java
│   │       │   │                       │       │       ├── EnumsReadSchemas.java
│   │       │   │                       │       │       ├── Fixed32ReadSchemas.java
│   │       │   │                       │       │       ├── Fixed64ReadSchemas.java
│   │       │   │                       │       │       ├── FloatReadSchemas.java
│   │       │   │                       │       │       ├── Int32ReadSchemas.java
│   │       │   │                       │       │       ├── Int64ReadSchemas.java
│   │       │   │                       │       │       ├── SFixed32ReadSchemas.java
│   │       │   │                       │       │       ├── SFixed64ReadSchemas.java
│   │       │   │                       │       │       ├── SInt32ReadSchemas.java
│   │       │   │                       │       │       ├── SInt64ReadSchemas.java
│   │       │   │                       │       │       ├── StringReadSchemas.java
│   │       │   │                       │       │       ├── UInt32ReadSchemas.java
│   │       │   │                       │       │       └── UInt64ReadSchemas.java
│   │       │   │                       │       ├── map/
│   │       │   │                       │       │   ├── MapEntry.java
│   │       │   │                       │       │   ├── MapEntrySchema.java
│   │       │   │                       │       │   └── MapSchema.java
│   │       │   │                       │       └── serializer/
│   │       │   │                       │           ├── MessageWriteSchema.java
│   │       │   │                       │           ├── SerializerSchemaManager.java
│   │       │   │                       │           ├── repeated/
│   │       │   │                       │           │   ├── AbstractPrimitiveWriters.java
│   │       │   │                       │           │   ├── AbstractWriters.java
│   │       │   │                       │           │   ├── RepeatedPrimitiveWriteSchemas.java
│   │       │   │                       │           │   ├── RepeatedWriteSchemas.java
│   │       │   │                       │           │   └── impl/
│   │       │   │                       │           │       ├── AnyRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── BytesRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── MessagesRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── PropertyWrapperRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── StringsRepeatedWriteSchemas.java
│   │       │   │                       │           │       ├── bools/
│   │       │   │                       │           │       │   ├── BoolNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── BoolPackedWriteSchemas.java
│   │       │   │                       │           │       ├── doubles/
│   │       │   │                       │           │       │   ├── DoubleNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── DoublePackedWriteSchemas.java
│   │       │   │                       │           │       ├── enums/
│   │       │   │                       │           │       │   ├── EnumNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── EnumPackedWriteSchemas.java
│   │       │   │                       │           │       ├── floats/
│   │       │   │                       │           │       │   ├── FloatNotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── FloatPackedWriteSchemas.java
│   │       │   │                       │           │       ├── ints/
│   │       │   │                       │           │       │   ├── Fixed32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── Fixed32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── Int32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── Int32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SFixed32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SFixed32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SInt32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── SInt32PackedWriteSchemas.java
│   │       │   │                       │           │       │   ├── UInt32NotPackedWriteSchemas.java
│   │       │   │                       │           │       │   └── UInt32PackedWriteSchemas.java
│   │       │   │                       │           │       └── longs/
│   │       │   │                       │           │           ├── Fixed64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── Fixed64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── Int64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── Int64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── SFixed64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── SFixed64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── SInt64NotPackedWriteSchemas.java
│   │       │   │                       │           │           ├── SInt64PackedWriteSchemas.java
│   │       │   │                       │           │           ├── UInt64NotPackedWriteSchemas.java
│   │       │   │                       │           │           └── UInt64PackedWriteSchemas.java
│   │       │   │                       │           └── scalar/
│   │       │   │                       │               ├── BoolWriteSchemas.java
│   │       │   │                       │               ├── BytesWriteSchemas.java
│   │       │   │                       │               ├── DoubleWriteSchemas.java
│   │       │   │                       │               ├── EnumWriteSchemas.java
│   │       │   │                       │               ├── Fixed32WriteSchemas.java
│   │       │   │                       │               ├── Fixed64WriteSchemas.java
│   │       │   │                       │               ├── FloatWriteSchemas.java
│   │       │   │                       │               ├── Int32WriteSchemas.java
│   │       │   │                       │               ├── Int64WriteSchemas.java
│   │       │   │                       │               ├── SFixed32WriteSchemas.java
│   │       │   │                       │               ├── SFixed64WriteSchemas.java
│   │       │   │                       │               ├── SInt32WriteSchemas.java
│   │       │   │                       │               ├── SInt64WriteSchemas.java
│   │       │   │                       │               ├── StringWriteSchemas.java
│   │       │   │                       │               ├── UInt32WriteSchemas.java
│   │       │   │                       │               └── UInt64WriteSchemas.java
│   │       │   │                       └── notice.txt
│   │       │   └── resources/
│   │       │       └── google/
│   │       │           └── protobuf/
│   │       │               ├── any.proto
│   │       │               └── empty.proto
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── protobuf/
│   │           │                       ├── TestISODateTimeParsing.java
│   │           │                       ├── compatibility/
│   │           │                       │   └── TestCompatibilityOfImplementations.java
│   │           │                       ├── internal/
│   │           │                       │   ├── TestModelWrap.java
│   │           │                       │   ├── TestSchemaBase.java
│   │           │                       │   ├── bean/
│   │           │                       │   │   └── TestBeanDescriptorManager.java
│   │           │                       │   ├── model/
│   │           │                       │   │   ├── CustomGeneric.java
│   │           │                       │   │   ├── PrimitiveArrays.java
│   │           │                       │   │   ├── PrimitiveWrapperArrays.java
│   │           │                       │   │   ├── Root.java
│   │           │                       │   │   └── User.java
│   │           │                       │   ├── parser/
│   │           │                       │   │   └── TestProtoParser.java
│   │           │                       │   └── schema/
│   │           │                       │       ├── TestAnySchema.java
│   │           │                       │       ├── TestMapSchema.java
│   │           │                       │       ├── TestMessageSchema.java
│   │           │                       │       ├── TestRepeatedSchema.java
│   │           │                       │       └── scalar/
│   │           │                       │           ├── TestBoolSchema.java
│   │           │                       │           ├── TestBytesSchema.java
│   │           │                       │           ├── TestDoubleSchema.java
│   │           │                       │           ├── TestEnumSchema.java
│   │           │                       │           ├── TestFixed32Schema.java
│   │           │                       │           ├── TestFixed64Schema.java
│   │           │                       │           ├── TestFloatSchema.java
│   │           │                       │           ├── TestInt32Schema.java
│   │           │                       │           ├── TestInt64Schema.java
│   │           │                       │           ├── TestNumberBaseSchema.java
│   │           │                       │           ├── TestSFixed32Schema.java
│   │           │                       │           ├── TestSFixed64Schema.java
│   │           │                       │           ├── TestSInt32Schema.java
│   │           │                       │           ├── TestSInt64Schema.java
│   │           │                       │           ├── TestStringSchema.java
│   │           │                       │           ├── TestUInt32Schema.java
│   │           │                       │           └── TestUInt64Schema.java
│   │           │                       └── performance/
│   │           │                           ├── ProtubufCodecEngine.java
│   │           │                           ├── TestBase.java
│   │           │                           ├── TestEngineResult.java
│   │           │                           ├── TestProtoPerformance.java
│   │           │                           ├── TestResult.java
│   │           │                           ├── cases/
│   │           │                           │   ├── Empty.java
│   │           │                           │   ├── Map.java
│   │           │                           │   ├── Mixed.java
│   │           │                           │   ├── Pojo.java
│   │           │                           │   ├── PojoList.java
│   │           │                           │   ├── Scalars.java
│   │           │                           │   └── SimpleList.java
│   │           │                           └── engine/
│   │           │                               ├── Jackson.java
│   │           │                               ├── Protobuf.java
│   │           │                               ├── Protostuff.java
│   │           │                               ├── SCB.java
│   │           │                               ├── ScbStrong.java
│   │           │                               └── ScbWeak.java
│   │           └── resources/
│   │               ├── jacksonRoot.proto
│   │               ├── method.proto
│   │               ├── model.proto
│   │               └── protobufRoot.proto
│   ├── foundation-registry/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── apache/
│   │       │   │           └── servicecomb/
│   │       │   │               └── registry/
│   │       │   │                   ├── DiscoveryManager.java
│   │       │   │                   ├── RegistrationId.java
│   │       │   │                   ├── RegistrationManager.java
│   │       │   │                   ├── RegistryConfiguration.java
│   │       │   │                   ├── api/
│   │       │   │                   │   ├── AbstractDiscoveryInstance.java
│   │       │   │                   │   ├── DataCenterInfo.java
│   │       │   │                   │   ├── Discovery.java
│   │       │   │                   │   ├── DiscoveryInstance.java
│   │       │   │                   │   ├── LifeCycle.java
│   │       │   │                   │   ├── MicroserviceInstance.java
│   │       │   │                   │   ├── MicroserviceInstanceStatus.java
│   │       │   │                   │   ├── MicroserviceKey.java
│   │       │   │                   │   ├── PropertyExtended.java
│   │       │   │                   │   ├── Registration.java
│   │       │   │                   │   └── RegistrationInstance.java
│   │       │   │                   ├── definition/
│   │       │   │                   │   ├── DefinitionConst.java
│   │       │   │                   │   └── MicroserviceNameParser.java
│   │       │   │                   └── discovery/
│   │       │   │                       ├── AbstractDiscoveryFilter.java
│   │       │   │                       ├── AbstractEndpointDiscoveryFilter.java
│   │       │   │                       ├── AbstractGroupDiscoveryFilter.java
│   │       │   │                       ├── DiscoveryContext.java
│   │       │   │                       ├── DiscoveryFilter.java
│   │       │   │                       ├── DiscoveryTree.java
│   │       │   │                       ├── DiscoveryTreeNode.java
│   │       │   │                       ├── InstancePing.java
│   │       │   │                       ├── InstanceStatusDiscoveryFilter.java
│   │       │   │                       ├── MicroserviceInstanceCache.java
│   │       │   │                       ├── StatefulDiscoveryInstance.java
│   │       │   │                       └── TelnetInstancePing.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           ├── services/
│   │       │           │   └── org.apache.servicecomb.registry.consumer.MicroserviceInstancePing
│   │       │           └── spring/
│   │       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── registry/
│   │           │                   ├── TestDiscoveryManager.java
│   │           │                   └── discovery/
│   │           │                       ├── TestAbstractDiscoveryFilter.java
│   │           │                       ├── TestAbstractTransportDiscoveryFilter.java
│   │           │                       ├── TestDiscoveryContext.java
│   │           │                       ├── TestDiscoveryTree.java
│   │           │                       ├── TestDiscoveryTreeNode.java
│   │           │                       └── TestInstanceStatusDiscoveryFilter.java
│   │           └── resources/
│   │               └── log4j2.xml
│   ├── foundation-spi/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       ├── auth/
│   │       │                       │   ├── AuthHeaderLoader.java
│   │       │                       │   ├── AuthHeaderProvider.java
│   │       │                       │   └── SignRequest.java
│   │       │                       ├── bootstrap/
│   │       │                       │   └── BootStrapService.java
│   │       │                       └── common/
│   │       │                           └── utils/
│   │       │                               ├── SPIEnabled.java
│   │       │                               ├── SPIOrder.java
│   │       │                               └── SPIServiceUtils.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── common/
│   │           │                       └── utils/
│   │           │                           ├── SPIServiceDef.java
│   │           │                           ├── SPIServiceDef0.java
│   │           │                           ├── SPIServiceDef0Impl.java
│   │           │                           ├── SPIServiceDefImpl.java
│   │           │                           └── TestSPIServiceUtils.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.apache.servicecomb.foundation.common.utils.SPIServiceDef
│   ├── foundation-ssl/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       └── ssl/
│   │       │                           ├── CertificateUtil.java
│   │       │                           ├── ClientAuth.java
│   │       │                           ├── KeyStoreUtil.java
│   │       │                           ├── SSLCustom.java
│   │       │                           ├── SSLManager.java
│   │       │                           ├── SSLOption.java
│   │       │                           ├── SSLOptionFactory.java
│   │       │                           ├── SSLSocketFactoryExt.java
│   │       │                           ├── TrustAllManager.java
│   │       │                           └── TrustManagerExt.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── apache/
│   │           │           └── servicecomb/
│   │           │               └── foundation/
│   │           │                   └── ssl/
│   │           │                       ├── CertificateUtilTest.java
│   │           │                       ├── KeyStoreUtilTest.java
│   │           │                       ├── MyOptionFactory.java
│   │           │                       ├── SSLManagerTest.java
│   │           │                       ├── SSLOptionTest.java
│   │           │                       ├── TestSSLOptionFactory.java
│   │           │                       ├── TestSSLSocketFactoryExt.java
│   │           │                       ├── TestTrustAllManager.java
│   │           │                       └── TrustManagerExtTest.java
│   │           └── resources/
│   │               ├── client.ssl.properties
│   │               ├── microservice.yaml
│   │               ├── server.ssl.properties
│   │               ├── server.ssl.resource.properties
│   │               └── ssl/
│   │                   ├── server.cer
│   │                   ├── server.p12
│   │                   ├── trust.cer
│   │                   ├── trust.jks
│   │                   └── white.list
│   ├── foundation-test-scaffolding/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── foundation/
│   │                               └── test/
│   │                                   └── scaffolding/
│   │                                       ├── AssertUtils.java
│   │                                       ├── exception/
│   │                                       │   └── RuntimeExceptionWithoutStackTrace.java
│   │                                       ├── log/
│   │                                       │   └── LogCollector.java
│   │                                       ├── model/
│   │                                       │   ├── Color.java
│   │                                       │   ├── Empty.java
│   │                                       │   ├── Media.java
│   │                                       │   ├── People.java
│   │                                       │   └── User.java
│   │                                       ├── spring/
│   │                                       │   └── SpringUtils.java
│   │                                       └── time/
│   │                                           ├── MockClock.java
│   │                                           ├── MockTicker.java
│   │                                           └── MockValues.java
│   ├── foundation-vertx/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── apache/
│   │       │               └── servicecomb/
│   │       │                   └── foundation/
│   │       │                       └── vertx/
│   │       │                           ├── AddressResolverConfig.java
│   │       │                           ├── AsyncResultCallback.java
│   │       │                           ├── ConnectionEvent.java
│   │       │                           ├── SharedVertxFactory.java
│   │       │                           ├── SimpleBodyHandler.java
│   │       │                           ├── SimpleJsonObject.java
│   │       │                           ├── TransportType.java
│   │       │                           ├── VertxConst.java
│   │       │                           ├── VertxTLSBuilder.java
│   │       │                           ├── VertxUtils.java
│   │       │                           ├── client/
│   │       │                           │   ├── ClientPoolFactory.java
│   │       │                           │   ├── ClientPoolManager.java
│   │       │                           │   ├── ClientVerticle.java
│   │       │                           │   ├── http/
│   │       │                           │   │   ├── HttpClientOptionsSPI.java
│   │       │                           │   │   ├── HttpClientPoolFactory.java
│   │       │                           │   │   ├── HttpClientWithContext.java
│   │       │                           │   │   └── HttpClients.java
│   │       │                           │   └── tcp/
│   │       │                           │       ├── AbstractTcpClientConnectionPool.java
│   │       │                           │       ├── AbstractTcpClientPackage.java
│   │       │                           │       ├── AbstractTcpClientPoolFactory.java
│   │       │                           │       ├── NetClientWrapper.java
│   │       │                           │       ├── TcpClientConfig.java
│   │       │                           │       ├── TcpClientConnection.java
│   │       │                           │       ├── TcpClientConnectionPool.java
│   │       │                           │       ├── TcpClientPackage.java
│   │       │                           │       ├── TcpClientPoolFactory.java
│   │       │                           │       ├── TcpData.java
│   │       │                           │       ├── TcpRequest.java
│   │       │                           │       └── TcpResponseCallback.java
│   │       │                           ├── executor/
│   │       │                           │   ├── SinglePoolBlockingExecutor.java
│   │       │                           │   ├── VertxContextExecutor.java
│   │       │                           │   └── VertxWorkerExecutor.java
│   │       │                           ├── http/
│   │       │                           │   ├── AbstractHttpServletRequest.java
│   │       │                           │   ├── AbstractHttpServletResponse.java
│   │       │                           │   ├── BodyBufferSupport.java
│   │       │                           │   ├── BodyBufferSupportImpl.java
│   │       │                           │   ├── DownloadUtils.java
│   │       │                           │   ├── EmptyAsyncContext.java
│   │       │                           │   ├── FileUploadPart.java
│   │       │                           │   ├── HttpServletRequestEx.java
│   │       │                           │   ├── HttpServletResponseEx.java
│   │       │                           │   ├── ReadStreamPart.java
│   │       │                           │   ├── StandardHttpServletRequestEx.java
│   │       │                           │   ├── StandardHttpServletResponseEx.java
│   │       │                           │   ├── VertxClientRequestToHttpServletRequest.java
│   │       │                           │   ├── VertxClientResponseToHttpServletResponse.java
│   │       │                           │   ├── VertxServerRequestToHttpServletRequest.java
│   │       │                           │   └── VertxServerResponseToHttpServletResponse.java
│   │       │                           ├── metrics/
│   │       │                           │   ├── DefaultClientMetrics.java
│   │       │                           │   ├── DefaultHttpClientMetrics.java
│   │       │                           │   ├── DefaultHttpServerMetrics.java
│   │       │                           │   ├── DefaultTcpClientMetrics.java
│   │       │                           │   ├── DefaultTcpServerMetrics.java
│   │       │                           │   ├── DefaultVertxMetrics.java
│   │       │                           │   ├── DefaultVertxMetricsFactory.java
│   │       │                           │   ├── MetricsOptionsEx.java
│   │       │                           │   └── metric/
│   │       │                           │       ├── DefaultClientEndpointMetric.java
│   │       │                           │       ├── DefaultClientEndpointMetricManager.java
│   │       │                           │       ├── DefaultClientTaskMetric.java
│   │       │                           │       ├── DefaultEndpointMetric.java
│   │       │                           │       ├── DefaultRequestMetric.java
│   │       │                           │       ├── DefaultServerEndpointMetric.java
│   │       │                           │       └── DefaultTcpSocketMetric.java
│   │       │                           ├── server/
│   │       │                           │   ├── TcpBufferHandler.java
│   │       │                           │   ├── TcpParser.java
│   │       │                           │   ├── TcpServer.java
│   │       │                           │   └── TcpServerConnection.java
│   │       │                           ├── stream/
│   │       │                           │   ├── BufferInputStream.java
│   │       │                           │   ├── BufferOutputStream.java
│   │       │                           │   ├── InputStreamToReadStream.java
│   │       │                           │   ├── OutputStreamToWriteStream.java
│   │       │                           │   ├── PumpCommon.java
│   │       │                           │   └── PumpFromPart.java
│   │       │                           └── tcp/
│   │       │                               ├── TcpConnection.java
│   │       │                               ├── TcpConst.java
│   │       │                               └── TcpOutputStream.java
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── apache/
│   │                       └── servicecomb/
│   │                           └── foundation/
│   │                               └── vertx/
│   │                                   ├── TestSharedVertxFactory.java
│   │                                   ├── TestSimpleBodyHandler.java
│   │                                   ├── TestSimpleJsonObject.java
│   │                                   ├── TestStream.java
│   │                                   ├── TestVertxTLSBuilder.java
│   │                                   ├── TestVertxUtils.java
│   │                                   ├── client/
│   │                                   │   ├── TestClientPoolManager.java
│   │                                   │   ├── TestClientVerticle.java
│   │                                   │   └── tcp/
│   │                                   │       ├── TestAbstractTcpClientPoolFactory.java
│   │                                   │       ├── TestTcpClientConfig.java
│   │                                   │       └── TestTcpClientConnection.java
│   │                                   ├── http/
│   │                                   │   ├── TestAbstractHttpServletRequest.java
│   │                                   │   ├── TestAbstractHttpServletResponse.java
│   │                                   │   ├── TestBodyBufferSupportImpl.java
│   │                                   │   ├── TestFileUploadPart.java
│   │                                   │   ├── TestStandardHttpServletRequestEx.java
│   │                                   │   ├── TestStandardHttpServletResponseEx.java
│   │                                   │   ├── TestVertxClientRequestToHttpServletRequest.java
│   │                                   │   ├── TestVertxClientResponseToHttpServletResponse.java
│   │                                   │   └── TestVertxServerRequestToHttpServletRequest.java
│   │                                   ├── metrics/
│   │                                   │   ├── TestDefaultHttpClientMetrics.java
│   │                                   │   ├── TestDefaultHttpServerMetrics.java
│   │                                   │   ├── TestDefaultTcpClientMetrics.java
│   │                                   │   ├── TestDefaultTcpServerMetrics.java
│   │                                   │   ├── TestDefaultVertxMetricsFactory.java
│   │                                   │   └── TestMetricsOptionsEx.java
│   │                                   ├── server/
│   │                                   │   ├── TestTcpParser.java
│   │                                   │   └── TestTcpServerConnection.java
│   │                                   └── stream/
│   │                                       └── TestBufferInputStream.java
│   └── pom.xml
├── governance/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── servicecomb/
│       │   │               ├── governance/
│       │   │               │   ├── GovernanceCommonConfiguration.java
│       │   │               │   ├── MatchersM
Download .txt
Showing preview only (1,593K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17127 symbols across 2585 files)

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterAddressManager.java
  class ConfigCenterAddressManager (line 29) | public class ConfigCenterAddressManager extends AbstractAddressManager {
    method ConfigCenterAddressManager (line 31) | public ConfigCenterAddressManager(String projectName, List<String> add...
    method normalizeUri (line 37) | @Override
    method onRefreshEndpointEvent (line 43) | @Subscribe

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
  class ConfigCenterClient (line 44) | public class ConfigCenterClient implements ConfigCenterOperation {
    method ConfigCenterClient (line 67) | public ConfigCenterClient(ConfigCenterAddressManager addressManager, H...
    method setEventBus (line 72) | public void setEventBus(EventBus eventBus) {
    method queryConfigurations (line 77) | @Override
    method recordAndSendUnAuthorizedEvent (line 155) | private void recordAndSendUnAuthorizedEvent(HttpResponse response, Str...
    method logConfigurationNames (line 172) | private void logConfigurationNames(String dimension, Map<String, Objec...
    method checkAddressAvailable (line 197) | @Override
    method buildDimensionsInfo (line 202) | private String buildDimensionsInfo(QueryConfigurationsRequest request,...
    method buildDarkLaunchDimensionsInfo (line 213) | private String buildDarkLaunchDimensionsInfo(QueryConfigurationsReques...

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterConfigurationChangedEvent.java
  class ConfigCenterConfigurationChangedEvent (line 29) | public class ConfigCenterConfigurationChangedEvent {
    method ConfigCenterConfigurationChangedEvent (line 38) | private ConfigCenterConfigurationChangedEvent(Map<String, Object> adde...
    method createIncremental (line 49) | public static ConfigCenterConfigurationChangedEvent createIncremental(...
    method createIncremental (line 73) | public static ConfigCenterConfigurationChangedEvent createIncremental(...
    method createIncremental (line 79) | public static ConfigCenterConfigurationChangedEvent createIncremental(...
    method getAdded (line 83) | public final Map<String, Object> getAdded() {
    method getUpdated (line 88) | public final Map<String, Object> getUpdated() {
    method getDeleted (line 93) | public final Map<String, Object> getDeleted() {
    method getChanged (line 97) | public final Set<String> getChanged() {

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
  class ConfigCenterManager (line 34) | public class ConfigCenterManager extends AbstractTask {
    method ConfigCenterManager (line 50) | public ConfigCenterManager(ConfigCenterClient configCenterClient, Even...
    method setQueryConfigurationsRequest (line 60) | public void setQueryConfigurationsRequest(QueryConfigurationsRequest q...
    method startConfigCenterManager (line 64) | public void startConfigCenterManager() {
    class PollConfigurationTask (line 70) | class PollConfigurationTask implements Task {
      method PollConfigurationTask (line 73) | public PollConfigurationTask(int failCount) {
      method execute (line 77) | @Override
    class CheckConfigCenterAddressTask (line 101) | class CheckConfigCenterAddressTask implements Runnable {
      method run (line 102) | @Override

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterOperation.java
  type ConfigCenterOperation (line 24) | public interface ConfigCenterOperation {
    method queryConfigurations (line 32) | QueryConfigurationsResponse queryConfigurations(QueryConfigurationsReq...
    method checkAddressAvailable (line 39) | void checkAddressAvailable(String address);

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java
  class ConfigCenterConfiguration (line 20) | public class ConfigCenterConfiguration {
    method getRefreshIntervalInMillis (line 24) | public long getRefreshIntervalInMillis() {
    method setRefreshIntervalInMillis (line 28) | public ConfigCenterConfiguration setRefreshIntervalInMillis(long refre...

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/QueryConfigurationsRequest.java
  class QueryConfigurationsRequest (line 20) | public class QueryConfigurationsRequest {
    method getEnvironment (line 31) | public String getEnvironment() {
    method setEnvironment (line 35) | public QueryConfigurationsRequest setEnvironment(String environment) {
    method getApplication (line 40) | public String getApplication() {
    method setApplication (line 44) | public QueryConfigurationsRequest setApplication(String application) {
    method getServiceName (line 49) | public String getServiceName() {
    method setServiceName (line 53) | public QueryConfigurationsRequest setServiceName(String serviceName) {
    method getVersion (line 58) | public String getVersion() {
    method setVersion (line 62) | public QueryConfigurationsRequest setVersion(String version) {
    method getRevision (line 67) | public String getRevision() {
    method setRevision (line 71) | public QueryConfigurationsRequest setRevision(String revision) {

FILE: clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/QueryConfigurationsResponse.java
  class QueryConfigurationsResponse (line 22) | public class QueryConfigurationsResponse {
    method getRevision (line 29) | public String getRevision() {
    method setRevision (line 33) | public QueryConfigurationsResponse setRevision(String revision) {
    method isChanged (line 38) | public boolean isChanged() {
    method setChanged (line 42) | public QueryConfigurationsResponse setChanged(boolean changed) {
    method getConfigurations (line 47) | public Map<String, Object> getConfigurations() {
    method setConfigurations (line 51) | public QueryConfigurationsResponse setConfigurations(

FILE: clients/config-common/src/main/java/org/apache/servicecomb/config/common/ConfigConverter.java
  class ConfigConverter (line 32) | public class ConfigConverter {
    method ConfigConverter (line 39) | public ConfigConverter(List<String> fileSources) {
    method getLastRawData (line 43) | public Map<String, Object> getLastRawData() {
    method getCurrentData (line 47) | public Map<String, Object> getCurrentData() {
    method updateData (line 51) | public Map<String, Object> updateData(Map<String, Object> rawData) {
    method createFileSource (line 75) | private Map<String, Object> createFileSource(Object v) {
    method propertiesToMap (line 81) | @SuppressWarnings("unchecked")

FILE: clients/config-common/src/main/java/org/apache/servicecomb/config/common/exception/OperationException.java
  class OperationException (line 20) | public class OperationException extends RuntimeException {
    method OperationException (line 23) | public OperationException(String message) {
    method OperationException (line 27) | public OperationException(String message, Throwable cause) {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
  class KieClient (line 57) | public class KieClient implements KieConfigOperation {
    method KieClient (line 77) | public KieClient(KieAddressManager addressManager, HttpTransport httpT...
    method setEventBus (line 83) | public void setEventBus(EventBus eventBus) {
    method queryConfigurations (line 88) | @Override
    method recordAndSendUnAuthorizedEvent (line 132) | private void recordAndSendUnAuthorizedEvent(HttpResponse response, Str...
    method logConfigurationNames (line 149) | private void logConfigurationNames(String dimension, List<KVDoc> data) {
    method checkAddressAvailable (line 174) | @Override
    method buildUrl (line 179) | private String buildUrl(ConfigurationsRequest request, String currentA...
    method getConfigByLabel (line 196) | private Map<String, Object> getConfigByLabel(KVResponse resp) {
    method processValueType (line 207) | private Map<String, Object> processValueType(KVDoc kvDoc) {
    method toMap (line 238) | @SuppressWarnings("unchecked")

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
  class KieConfigManager (line 38) | public class KieConfigManager extends AbstractTask {
    method KieConfigManager (line 56) | public KieConfigManager(KieConfigOperation configKieClient, EventBus e...
    method firstPull (line 68) | public void firstPull() {
    method firstQueryConfigurations (line 81) | private void firstQueryConfigurations(Map<String, Object> data) {
    method onDataChanged (line 106) | private void onDataChanged() {
    method initTaskPool (line 118) | @Override
    method startConfigKieManager (line 124) | public void startConfigKieManager() {
    class PollConfigurationTask (line 131) | class PollConfigurationTask implements Task {
      method PollConfigurationTask (line 136) | public PollConfigurationTask(int failCount, ConfigurationsRequest co...
      method execute (line 141) | @Override
    class CheckKieAddressTask (line 167) | class CheckKieAddressTask implements Runnable {
      method run (line 168) | @Override

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigOperation.java
  type KieConfigOperation (line 25) | public interface KieConfigOperation {
    method queryConfigurations (line 33) | ConfigurationsResponse queryConfigurations(ConfigurationsRequest reque...
    method checkAddressAvailable (line 40) | void checkAddressAvailable(String address);

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigurationChangedEvent.java
  class KieConfigurationChangedEvent (line 29) | public class KieConfigurationChangedEvent {
    method KieConfigurationChangedEvent (line 38) | private KieConfigurationChangedEvent(Map<String, Object> added, Map<St...
    method createIncremental (line 49) | public static KieConfigurationChangedEvent createIncremental(Map<Strin...
    method createIncremental (line 72) | public static KieConfigurationChangedEvent createIncremental(Map<Strin...
    method createIncremental (line 77) | public static KieConfigurationChangedEvent createIncremental(Map<Strin...
    method getAdded (line 81) | public final Map<String, Object> getAdded() {
    method getUpdated (line 86) | public final Map<String, Object> getUpdated() {
    method getDeleted (line 91) | public final Map<String, Object> getDeleted() {
    method getChanged (line 95) | public final Set<String> getChanged() {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigConstants.java
  class ConfigConstants (line 21) | public class ConfigConstants {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequest.java
  class ConfigurationsRequest (line 23) | public class ConfigurationsRequest implements Comparable<ConfigurationsR...
    method getOrder (line 36) | public int getOrder() {
    method setOrder (line 40) | public ConfigurationsRequest setOrder(int order) {
    method getRevision (line 45) | public String getRevision() {
    method setRevision (line 49) | public ConfigurationsRequest setRevision(String revision) {
    method isWithExact (line 54) | public boolean isWithExact() {
    method setWithExact (line 58) | public ConfigurationsRequest setWithExact(boolean withExact) {
    method getLabelsQuery (line 63) | public String getLabelsQuery() {
    method setLabelsQuery (line 67) | public ConfigurationsRequest setLabelsQuery(String labelsQuery) {
    method getLastRawData (line 72) | public Map<String, Object> getLastRawData() {
    method setLastRawData (line 76) | public ConfigurationsRequest setLastRawData(Map<String, Object> lastRa...
    method compareTo (line 81) | @Override

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
  class ConfigurationsRequestFactory (line 26) | public class ConfigurationsRequestFactory {
    method buildConfigurationRequests (line 43) | public static List<ConfigurationsRequest> buildConfigurationRequests(K...
    method createAppConfigurationsRequest (line 60) | private static ConfigurationsRequest createAppConfigurationsRequest(Ki...
    method createServiceConfigurationsRequest (line 68) | private static ConfigurationsRequest createServiceConfigurationsReques...
    method createVersionConfigurationsRequest (line 77) | private static ConfigurationsRequest createVersionConfigurationsReques...
    method createCustomConfigurationsRequest (line 87) | private static ConfigurationsRequest createCustomConfigurationsRequest...
    method buildLabelQuery (line 95) | private static String buildLabelQuery(String... labels) {
    method buildLabelQueryItem (line 104) | private static String buildLabelQueryItem(String key, String value) {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsResponse.java
  class ConfigurationsResponse (line 22) | public class ConfigurationsResponse {
    method getRevision (line 29) | public String getRevision() {
    method setRevision (line 33) | public ConfigurationsResponse setRevision(String revision) {
    method isChanged (line 38) | public boolean isChanged() {
    method setChanged (line 42) | public ConfigurationsResponse setChanged(boolean changed) {
    method getConfigurations (line 47) | public Map<String, Object> getConfigurations() {
    method setConfigurations (line 51) | public ConfigurationsResponse setConfigurations(

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KVDoc.java
  class KVDoc (line 25) | public class KVDoc {
    method getStatus (line 50) | public String getStatus() {
    method setStatus (line 54) | public void setStatus(String status) {
    method getId (line 58) | public String getId() {
    method setId (line 62) | public void setId(String id) {
    method getKey (line 66) | public String getKey() {
    method setKey (line 70) | public void setKey(String key) {
    method getCheck (line 74) | public String getCheck() {
    method getDomain (line 78) | public String getDomain() {
    method getLabelId (line 82) | public String getLabelId() {
    method getLabels (line 86) | public Map<String, String> getLabels() {
    method getValue (line 90) | public String getValue() {
    method setCheck (line 94) | public void setCheck(String check) {
    method setDomain (line 98) | public void setDomain(String domain) {
    method setLabelId (line 102) | public void setLabelId(String labelId) {
    method setLabels (line 106) | public void setLabels(Map<String, String> labels) {
    method setValueType (line 110) | public void setValueType(String valueType) {
    method setValue (line 114) | public void setValue(String value) {
    method getValueType (line 118) | public String getValueType() {
    method getUpdateTime (line 122) | public long getUpdateTime() {
    method setUpdateTime (line 126) | public void setUpdateTime(long updateTime) {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KVResponse.java
  class KVResponse (line 22) | public class KVResponse {
    method getTotal (line 30) | public Integer getTotal() {
    method setTotal (line 34) | public void setTotal(Integer total) {
    method getData (line 38) | public List<KVDoc> getData() {
    method getLabel (line 42) | public LabelDocResponse getLabel() {
    method setData (line 46) | public void setData(List<KVDoc> data) {
    method setLabel (line 50) | public void setLabel(LabelDocResponse label) {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieAddressManager.java
  class KieAddressManager (line 28) | public class KieAddressManager extends AbstractAddressManager {
    method KieAddressManager (line 30) | public KieAddressManager(List<String> addresses, EventBus eventBus, St...
    method onRefreshEndpointEvent (line 35) | @Subscribe

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
  class KieConfiguration (line 20) | public class KieConfiguration {
    method getAppName (line 51) | public String getAppName() {
    method setAppName (line 55) | public KieConfiguration setAppName(String appName) {
    method getServiceName (line 60) | public String getServiceName() {
    method setServiceName (line 64) | public KieConfiguration setServiceName(String serviceName) {
    method getEnvironment (line 69) | public String getEnvironment() {
    method setEnvironment (line 73) | public KieConfiguration setEnvironment(String environment) {
    method getCustomLabelValue (line 78) | public String getCustomLabelValue() {
    method setCustomLabelValue (line 82) | public KieConfiguration setCustomLabelValue(String customLabelValue) {
    method isEnableAppConfig (line 87) | public boolean isEnableAppConfig() {
    method setEnableAppConfig (line 91) | public KieConfiguration setEnableAppConfig(boolean enableAppConfig) {
    method isEnableServiceConfig (line 96) | public boolean isEnableServiceConfig() {
    method setEnableServiceConfig (line 100) | public KieConfiguration setEnableServiceConfig(boolean enableServiceCo...
    method isEnableCustomConfig (line 105) | public boolean isEnableCustomConfig() {
    method setEnableCustomConfig (line 109) | public KieConfiguration setEnableCustomConfig(boolean enableCustomConf...
    method getCustomLabel (line 114) | public String getCustomLabel() {
    method setCustomLabel (line 118) | public KieConfiguration setCustomLabel(String customLabel) {
    method isEnableLongPolling (line 123) | public boolean isEnableLongPolling() {
    method setEnableLongPolling (line 127) | public KieConfiguration setEnableLongPolling(boolean enableLongPolling) {
    method isEnableVersionConfig (line 132) | public boolean isEnableVersionConfig() {
    method setEnableVersionConfig (line 136) | public KieConfiguration setEnableVersionConfig(boolean enableVersionCo...
    method getPollingWaitInSeconds (line 141) | public int getPollingWaitInSeconds() {
    method setPollingWaitInSeconds (line 145) | public KieConfiguration setPollingWaitInSeconds(int pollingWaitInSecon...
    method getProject (line 150) | public String getProject() {
    method setProject (line 154) | public KieConfiguration setProject(String project) {
    method isFirstPullRequired (line 159) | public boolean isFirstPullRequired() {
    method setFirstPullRequired (line 163) | public KieConfiguration setFirstPullRequired(boolean firstPullRequired) {
    method getRefreshIntervalInMillis (line 168) | public int getRefreshIntervalInMillis() {
    method setRefreshIntervalInMillis (line 172) | public KieConfiguration setRefreshIntervalInMillis(int refreshInterval...
    method getVersion (line 177) | public String getVersion() {
    method setVersion (line 181) | public KieConfiguration setVersion(String version) {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/LabelDocResponse.java
  class LabelDocResponse (line 25) | public class LabelDocResponse {
    method getLabelId (line 32) | public String getLabelId() {
    method getLabels (line 36) | public Map<String, String> getLabels() {
    method setLabelId (line 40) | public void setLabelId(String labelId) {
    method setLabels (line 44) | public void setLabels(Map<String, String> labels) {

FILE: clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ValueType.java
  type ValueType (line 20) | public enum ValueType {

FILE: clients/config-kie-client/src/test/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestTest.java
  class ConfigurationsRequestTest (line 25) | class ConfigurationsRequestTest {
    method getLastRawData (line 27) | @Test

FILE: clients/config-kie-client/src/test/java/org/apache/servicecomb/config/kie/client/model/KieAddressManagerTest.java
  class KieAddressManagerTest (line 33) | class KieAddressManagerTest {
    method kieAddressManagerTest (line 39) | @Test
    method onRefreshEndpointEvent (line 58) | @Test

FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardAddressManager.java
  class DashboardAddressManager (line 30) | public class DashboardAddressManager extends AbstractAddressManager {
    method DashboardAddressManager (line 32) | public DashboardAddressManager(List<String> addresses, EventBus eventB...
    method onRefreshEndpointEvent (line 37) | @Subscribe

FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardClient.java
  class DashboardClient (line 29) | public class DashboardClient implements DashboardOperation {
    method DashboardClient (line 36) | public DashboardClient(DashboardAddressManager addressManager, HttpTra...
    method sendData (line 41) | @Override

FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardOperation.java
  type DashboardOperation (line 22) | public interface DashboardOperation {
    method sendData (line 23) | void sendData(String url, MonitorData monitorData);

FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/model/InterfaceInfo.java
  class InterfaceInfo (line 20) | public class InterfaceInfo {
    method getName (line 61) | public String getName() {
    method setName (line 65) | public void setName(String name) {
    method getDesc (line 69) | public String getDesc() {
    method setDesc (line 73) | public void setDesc(String desc) {
    method getQps (line 77) | public double getQps() {
    method setQps (line 81) | public void setQps(double qps) {
    method getLatency (line 85) | public int getLatency() {
    method setLatency (line 89) | public void setLatency(int latency) {
    method getL995 (line 93) | public int getL995() {
    method setL995 (line 97) | public void setL995(int l995) {
    method getL99 (line 101) | public int getL99() {
    method setL99 (line 105) | public void setL99(int l99) {
    method getL90 (line 109) | public int getL90() {
    method setL90 (line 113) | public void setL90(int l90) {
    method getL75 (line 117) | public int getL75() {
    method setL75 (line 121) | public void setL75(int l75) {
    method getL50 (line 125) | public int getL50() {
    method setL50 (line 129) | public void setL50(int l50) {
    method getL25 (line 133) | public int getL25() {
    method setL25 (line 137) | public void setL25(int l25) {
    method getL5 (line 141) | public int getL5() {
    method setL5 (line 145) | public void setL5(int l5) {
    method getRate (line 149) | public double getRate() {
    method setRate (line 153) | public void setRate(double rate) {
    method getFailureRate (line 157) | public double getFailureRate() {
    method setFailureRate (line 161) | public void setFailureRate(double failureRate) {
    method getTotal (line 165) | public long getTotal() {
    method setTotal (line 169) | public void setTotal(long total) {
    method isCircuitBreakerOpen (line 173) | public boolean isCircuitBreakerOpen() {
    method setCircuitBreakerOpen (line 177) | public void setCircuitBreakerOpen(boolean circuitBreakerOpen) {
    method getFailure (line 181) | public long getFailure() {
    method setFailure (line 185) | public void setFailure(long failure) {
    method getShortCircuited (line 189) | public long getShortCircuited() {
    method setShortCircuited (line 193) | public void setShortCircuited(long shortCircuited) {
    method getSemaphoreRejected (line 197) | public long getSemaphoreRejected() {
    method setSemaphoreRejected (line 201) | public void setSemaphoreRejected(long semaphoreRejected) {
    method getThreadPoolRejected (line 205) | public long getThreadPoolRejected() {
    method setThreadPoolRejected (line 209) | public void setThreadPoolRejected(long threadPoolRejected) {
    method getCountTimeout (line 213) | public long getCountTimeout() {
    method setCountTimeout (line 217) | public void setCountTimeout(long countTimeout) {

FILE: clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/model/MonitorData.java
  class MonitorData (line 24) | public class MonitorData {
    method addInterfaceInfo (line 73) | public void addInterfaceInfo(InterfaceInfo interfaceInfo) {
    method getAppId (line 77) | public String getAppId() {
    method setAppId (line 81) | public void setAppId(String appId) {
    method getVersion (line 85) | public String getVersion() {
    method setVersion (line 89) | public void setVersion(String version) {
    method getName (line 93) | public String getName() {
    method setName (line 97) | public void setName(String name) {
    method getServiceId (line 101) | public String getServiceId() {
    method setServiceId (line 105) | public void setServiceId(String serviceId) {
    method getInstance (line 109) | public String getInstance() {
    method setInstance (line 113) | public void setInstance(String instance) {
    method getInstanceId (line 117) | public String getInstanceId() {
    method setInstanceId (line 121) | public void setInstanceId(String instanceId) {
    method getThreadCount (line 125) | public int getThreadCount() {
    method setThreadCount (line 129) | public void setThreadCount(int threadCount) {
    method getCpu (line 133) | public double getCpu() {
    method setCpu (line 137) | public void setCpu(double cpu) {
    method getLoadAverage (line 141) | public double getLoadAverage() {
    method setLoadAverage (line 145) | public void setLoadAverage(double loadAverage) {
    method getUptime (line 149) | public long getUptime() {
    method setUptime (line 153) | public void setUptime(long uptime) {
    method getMemory (line 157) | public Map<String, Long> getMemory() {
    method setMemory (line 161) | public void setMemory(Map<String, Long> memory) {
    method getInterfaces (line 165) | public List<InterfaceInfo> getInterfaces() {
    method setInterfaces (line 169) | public void setInterfaces(List<InterfaceInfo> interfaces) {
    method getCustoms (line 173) | public Map<String, Object> getCustoms() {
    method setCustoms (line 177) | public void setCustoms(Map<String, Object> customs) {
    method getEnvironment (line 181) | public String getEnvironment() {
    method setEnvironment (line 185) | public void setEnvironment(String environment) {

FILE: clients/dashboard-client/src/test/java/org/apache/servicecomb/dashboard/client/AddressManagerTest.java
  class AddressManagerTest (line 32) | class AddressManagerTest {
    method kieAddressManagerTest (line 38) | @Test
    method onRefreshEndpointEvent (line 57) | @Test

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/auth/DefaultRequestAuthHeaderProvider.java
  class DefaultRequestAuthHeaderProvider (line 25) | public class DefaultRequestAuthHeaderProvider implements RequestAuthHead...
    method loadAuthHeader (line 26) | @Override

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/auth/RequestAuthHeaderProvider.java
  type RequestAuthHeaderProvider (line 24) | public interface RequestAuthHeaderProvider {
    method loadAuthHeader (line 25) | Map<String, String> loadAuthHeader(SignRequest signRequest);

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/AbstractAddressManager.java
  class AbstractAddressManager (line 38) | public class AbstractAddressManager {
    method AbstractAddressManager (line 83) | public AbstractAddressManager(List<String> addresses, String ownRegion...
    method parseAndInitAddresses (line 101) | private void parseAndInitAddresses(List<String> addresses, String ownR...
    method buildAffinityAddress (line 122) | private void buildAffinityAddress(URLEndPoint endpoint, String ownRegi...
    method regionAndAZMatch (line 132) | private boolean regionAndAZMatch(String ownRegion, String ownAvailable...
    method AbstractAddressManager (line 137) | public AbstractAddressManager(String projectName, List<String> address...
    method getRandomIndex (line 143) | private int getRandomIndex() {
    method refreshEndpoint (line 147) | public void refreshEndpoint(RefreshEndpointEvent event, String key) {
    method normalizeUri (line 157) | protected String normalizeUri(String endpoint) {
    method getAddressFailureStatus (line 161) | @VisibleForTesting
    method getAddresses (line 166) | public List<String> getAddresses() {
    method getAvailableZone (line 170) | public List<String> getAvailableZone() {
    method getAvailableRegion (line 174) | public List<String> getAvailableRegion() {
    method formatUrl (line 178) | public String formatUrl(String url, boolean absoluteUrl, String addres...
    method sslEnabled (line 182) | public boolean sslEnabled() {
    method transformAddress (line 186) | protected List<String> transformAddress(List<String> addresses) {
    method formatAddress (line 190) | protected String formatAddress(String address) {
    method getUrlPrefix (line 198) | protected String getUrlPrefix(String address) {
    method address (line 202) | public String address() {
    method getDefaultAddress (line 210) | private String getDefaultAddress() {
    method getAvailableZoneAddress (line 219) | private String getAvailableZoneAddress() {
    method getCurrentAddress (line 229) | private String getCurrentAddress(List<String> addresses) {
    method getZoneOrRegionAddress (line 239) | private List<String> getZoneOrRegionAddress() {
    method recordSuccessState (line 249) | public void recordSuccessState(String address) {
    method resetFailureStatus (line 272) | public void resetFailureStatus(String address) {
    method recordFailState (line 276) | public void recordFailState(String address) {
    method removeAddress (line 293) | @VisibleForTesting
    method setEventBus (line 316) | public void setEventBus(EventBus eventBus) {
    method getIsolationAddresses (line 320) | public List<String> getIsolationAddresses() {
    method compareAndGetAddress (line 327) | public String compareAndGetAddress(String host) {
    method isAddressHostSame (line 336) | private boolean isAddressHostSame(String address, String host) {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpConfiguration.java
  type HttpConfiguration (line 23) | public interface HttpConfiguration {
    class SSLProperties (line 24) | class SSLProperties {
      method isEnabled (line 31) | public boolean isEnabled() {
      method setEnabled (line 35) | public void setEnabled(boolean enabled) {
      method getSslOption (line 39) | public SSLOption getSslOption() {
      method setSslOption (line 43) | public void setSslOption(SSLOption sslOption) {
      method getSslCustom (line 47) | public SSLCustom getSslCustom() {
      method setSslCustom (line 51) | public void setSslCustom(SSLCustom sslCustom) {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpRequest.java
  class HttpRequest (line 32) | public class HttpRequest {
    method HttpRequest (line 50) | public HttpRequest(String url, Map<String, String> headers, String con...
    method getUrl (line 57) | public String getUrl() {
    method getHeaders (line 61) | public Map<String, String> getHeaders() {
    method addHeader (line 65) | public void addHeader(String name, String value) {
    method getContent (line 72) | public String getContent() {
    method getMethod (line 76) | public String getMethod() {
    method setMethod (line 80) | public void setMethod(String method) {
    method getRealRequest (line 84) | public HttpUriRequest getRealRequest() {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpResponse.java
  class HttpResponse (line 22) | public class HttpResponse {
    method HttpResponse (line 32) | public HttpResponse() {
    method HttpResponse (line 36) | HttpResponse(int statusCode, String message, String content, Header[] ...
    method getStatusCode (line 43) | public int getStatusCode() {
    method setStatusCode (line 47) | public void setStatusCode(int statusCode) {
    method getMessage (line 51) | public String getMessage() {
    method setMessage (line 55) | public void setMessage(String message) {
    method getContent (line 59) | public String getContent() {
    method setContent (line 63) | public void setContent(String content) {
    method getHeader (line 67) | public String getHeader(String key) {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransport.java
  type HttpTransport (line 26) | public interface HttpTransport {
    method get (line 28) | HttpResponse get(HttpRequest request) throws IOException;
    method post (line 30) | HttpResponse post(HttpRequest request) throws IOException;
    method put (line 32) | HttpResponse put(HttpRequest request) throws IOException;
    method delete (line 34) | HttpResponse delete(HttpRequest request) throws IOException;
    method doRequest (line 36) | HttpResponse doRequest(HttpRequest request) throws IOException;
    method addHeaders (line 38) | void addHeaders(Map<String, String> headers);

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java
  class HttpTransportFactory (line 33) | public class HttpTransportFactory {
    method HttpTransportFactory (line 45) | private HttpTransportFactory() {
    method createHttpTransport (line 48) | public static HttpTransport createHttpTransport(HttpConfiguration.SSLP...
    method createHttpTransport (line 55) | public static HttpTransport createHttpTransport(HttpConfiguration.SSLP...
    method getPoolingHttpClientConnectionManager (line 67) | private static PoolingHttpClientConnectionManager getPoolingHttpClient...
    method createHttpTransport (line 87) | public static HttpTransport createHttpTransport(HttpConfiguration.SSLP...
    method defaultRequestConfig (line 92) | public static RequestConfig.Builder defaultRequestConfig() {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportImpl.java
  class HttpTransportImpl (line 34) | public class HttpTransportImpl implements HttpTransport {
    method HttpTransportImpl (line 47) | public HttpTransportImpl(HttpClient httpClient, RequestAuthHeaderProvi...
    method getHttpClient (line 52) | public HttpClient getHttpClient() {
    method setHttpClient (line 57) | void setHttpClient(HttpClient httpClient) {
    method get (line 61) | @Override
    method post (line 67) | @Override
    method put (line 73) | @Override
    method delete (line 79) | @Override
    method doRequest (line 85) | public HttpResponse doRequest(HttpRequest httpRequest) throws IOExcept...
    method createSignRequest (line 105) | private static SignRequest createSignRequest(String url) {
    method addHeaders (line 117) | @Override

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpUtils.java
  class HttpUtils (line 34) | public final class HttpUtils {
    method deserialize (line 39) | public static <T> T deserialize(String content, Class<T> clazz) throws...
    method deserialize (line 43) | public static <T> T deserialize(String content, TypeReference<T> clazz...
    method serialize (line 47) | public static String serialize(Object value) throws IOException {
    method readTree (line 51) | public static JsonNode readTree(String content) throws IOException {
    method encodeURLParam (line 55) | public static String encodeURLParam(String value) throws IOException {
    method decodeURLParam (line 62) | public static String decodeURLParam(String value) throws IOException {
    method sha256Encode (line 69) | public static String sha256Encode(String key, String data) throws Exce...

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/MessageObjectMapper.java
  class MessageObjectMapper (line 26) | public class MessageObjectMapper extends ObjectMapper {
    method MessageObjectMapper (line 29) | public MessageObjectMapper() {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/SSLSocketFactoryExt.java
  class SSLSocketFactoryExt (line 26) | public class SSLSocketFactoryExt extends SSLSocketFactory {
    method SSLSocketFactoryExt (line 33) | public SSLSocketFactoryExt(SSLSocketFactory factory, String host, int ...
    method getDefaultCipherSuites (line 39) | @Override
    method getSupportedCipherSuites (line 44) | @Override
    method createSocket (line 49) | @Override
    method createSocket (line 54) | @Override
    method createSocket (line 59) | @Override
    method createSocket (line 64) | @Override
    method createSocket (line 70) | @Override
    method createSocket (line 75) | @Override

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/URLEndPoint.java
  class URLEndPoint (line 30) | public class URLEndPoint {
    method URLEndPoint (line 45) | public URLEndPoint(String endpoint) {
    method splitQuery (line 60) | public static Map<String, List<String>> splitQuery(URI uri) {
    method getFirst (line 70) | public String getFirst(String key) {
    method toString (line 78) | @Override

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/WebSocketListener.java
  type WebSocketListener (line 22) | public interface WebSocketListener {
    method onMessage (line 23) | void onMessage(String s);
    method onError (line 25) | void onError(Exception e);
    method onClose (line 27) | void onClose(int code, String reason, boolean remote);
    method onOpen (line 29) | void onOpen(ServerHandshake serverHandshake);

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/WebSocketTransport.java
  class WebSocketTransport (line 31) | public class WebSocketTransport extends WebSocketClient {
    method WebSocketTransport (line 36) | public WebSocketTransport(String serverUri, HttpConfiguration.SSLPrope...
    method onOpen (line 51) | @Override
    method onMessage (line 56) | @Override
    method onClose (line 61) | @Override
    method onError (line 66) | @Override

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/event/EngineConnectChangedEvent.java
  class EngineConnectChangedEvent (line 20) | public class EngineConnectChangedEvent {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/event/OperationEvents.java
  class OperationEvents (line 20) | public abstract class OperationEvents {
    class UnAuthorizedOperationEvent (line 21) | public static class UnAuthorizedOperationEvent extends OperationEvents {
      method UnAuthorizedOperationEvent (line 24) | public UnAuthorizedOperationEvent(String address) {
      method getAddress (line 28) | public String getAddress() {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/event/RefreshEndpointEvent.java
  class RefreshEndpointEvent (line 25) | public class RefreshEndpointEvent {
    method RefreshEndpointEvent (line 43) | public RefreshEndpointEvent(Map<String, List<String>> zoneAndRegion, S...
    method getSameZone (line 48) | public List<String> getSameZone() {
    method getSameRegion (line 55) | public List<String> getSameRegion() {
    method getZoneAndRegion (line 62) | public Map<String, List<String>> getZoneAndRegion() {
    method setZoneAndRegion (line 66) | public void setZoneAndRegion(Map<String, List<String>> zoneAndRegion) {
    method getName (line 70) | public String getName() {
    method setName (line 74) | public void setName(String name) {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/task/AbstractTask.java
  class AbstractTask (line 30) | public class AbstractTask {
    class BackOffSleepTask (line 31) | public class BackOffSleepTask implements Task {
      method BackOffSleepTask (line 40) | public BackOffSleepTask(int failedCount, Task nextTask) {
      method BackOffSleepTask (line 45) | public BackOffSleepTask(long waitTime, Task nextTask) {
      method execute (line 50) | @Override
    method AbstractTask (line 72) | protected AbstractTask(String taskName) {
    method initTaskPool (line 77) | protected void initTaskPool(String taskName) {
    method schedulerCheckAddressAvailable (line 82) | protected void schedulerCheckAddressAvailable(String taskName, Runnabl...
    method startTask (line 89) | protected void startTask(Task task) {
    method stop (line 107) | public void stop() {

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/task/Task.java
  type Task (line 20) | public interface Task {
    method execute (line 21) | void execute();

FILE: clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/utils/ServiceCombServiceAvailableUtils.java
  class ServiceCombServiceAvailableUtils (line 34) | public class ServiceCombServiceAvailableUtils {
    method checkAddressAvailable (line 37) | public static void checkAddressAvailable(AbstractAddressManager addres...
    method telnetCheckAddress (line 58) | private static boolean telnetCheckAddress(String address) {
    method parseIpPortFromURI (line 72) | private static URI parseIpPortFromURI(String address) {

FILE: clients/http-client-common/src/test/java/org/apache/servicecomb/http/client/common/AbstractAddressManagerTest.java
  class AbstractAddressManagerTest (line 35) | public class AbstractAddressManagerTest {
    method setUp (line 45) | @BeforeEach
    method tearDown (line 63) | @AfterEach
    method abstractAddressManagerTest (line 71) | @Test
    method recordStateTest (line 81) | @Test
    method testMultipleThread (line 124) | @Test
    method addressForOnlyDefaultTest (line 143) | @Test
    method addressForOnlyAzTest (line 155) | @Test
    method addressForOnlyRegionTest (line 176) | @Test
    method addressForAzAndRegionTest (line 196) | @Test
    method sslEnabledTest (line 227) | @Test
    method transformAddressTest (line 238) | @Test
    method getUrlPrefixTest (line 260) | @Test
    method refreshEndpointTest (line 266) | @Test
    method normalizeIPV4Test (line 285) | @Test
    method normalizeIPV6Test (line 297) | @Test
    method compareAndGetAddressTest (line 306) | @Test
    method AddressAffinityTest (line 317) | @Test

FILE: clients/http-client-common/src/test/java/org/apache/servicecomb/http/client/common/HttpTransportImplTest.java
  class HttpTransportImplTest (line 37) | public class HttpTransportImplTest {
    method TestHttpTransport (line 39) | @Test

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/CacheableServiceCenterOperation.java
  type CacheableServiceCenterOperation (line 20) | public interface CacheableServiceCenterOperation {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/DiscoveryEvents.java
  class DiscoveryEvents (line 24) | public abstract class DiscoveryEvents {
    class InstanceChangedEvent (line 25) | public static class InstanceChangedEvent extends DiscoveryEvents {
      method InstanceChangedEvent (line 32) | public InstanceChangedEvent(String appName, String serviceName, List...
      method getAppName (line 38) | public String getAppName() {
      method getServiceName (line 42) | public String getServiceName() {
      method getInstances (line 46) | public List<MicroserviceInstance> getInstances() {
    class PullInstanceEvent (line 54) | public static class PullInstanceEvent extends DiscoveryEvents {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/RegistrationEvents.java
  class RegistrationEvents (line 23) | public abstract class RegistrationEvents {
    method RegistrationEvents (line 28) | protected RegistrationEvents(boolean success, Microservice microservic...
    method isSuccess (line 33) | public boolean isSuccess() {
    method getMicroservice (line 37) | public Microservice getMicroservice() {
    class MicroserviceRegistrationEvent (line 41) | public static class MicroserviceRegistrationEvent extends Registration...
      method MicroserviceRegistrationEvent (line 42) | public MicroserviceRegistrationEvent(boolean success, Microservice m...
    class SchemaRegistrationEvent (line 47) | public static class SchemaRegistrationEvent extends RegistrationEvents {
      method SchemaRegistrationEvent (line 48) | public SchemaRegistrationEvent(boolean success, Microservice microse...
    class MicroserviceInstanceRegistrationEvent (line 53) | public static class MicroserviceInstanceRegistrationEvent extends Regi...
      method MicroserviceInstanceRegistrationEvent (line 56) | public MicroserviceInstanceRegistrationEvent(boolean success, Micros...
    class HeartBeatEvent (line 63) | public static class HeartBeatEvent extends RegistrationEvents {
      method HeartBeatEvent (line 66) | public HeartBeatEvent(boolean success, Microservice microservice,

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterAddressManager.java
  class ServiceCenterAddressManager (line 28) | public class ServiceCenterAddressManager extends AbstractAddressManager {
    method ServiceCenterAddressManager (line 29) | public ServiceCenterAddressManager(String projectName, List<String> ad...
    method transformAddress (line 35) | @Override
    method getUrlPrefix (line 40) | @Override
    method onRefreshEndpointEvent (line 45) | @Subscribe

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
  class ServiceCenterClient (line 66) | public class ServiceCenterClient implements ServiceCenterOperation {
    method ServiceCenterClient (line 80) | public ServiceCenterClient(ServiceCenterRawClient httpClient, ServiceC...
    method setEventBus (line 85) | public ServiceCenterClient setEventBus(EventBus eventBus) {
    method ServiceCenterClient (line 91) | public ServiceCenterClient(ServiceCenterAddressManager addressManager,
    method buildRequestConfig (line 108) | private RequestConfig buildRequestConfig(Environment environment) {
    method getServiceCenterInstances (line 119) | @Override
    method registerMicroservice (line 136) | @Override
    method getMicroserviceList (line 156) | @Override
    method queryServiceId (line 173) | @Override
    method getMicroserviceByServiceId (line 200) | @Override
    method registerMicroserviceInstance (line 219) | @Override
    method findMicroserviceInstance (line 240) | @Override
    method getMicroserviceInstanceList (line 280) | @Override
    method getMicroserviceInstance (line 298) | @Override
    method deleteMicroserviceInstance (line 318) | @Override
    method updateMicroserviceInstanceStatus (line 337) | @Override
    method sendHeartBeats (line 356) | @Override
    method sendHeartBeat (line 373) | @Override
    method getServiceSchemasList (line 392) | @Override
    method getServiceSchemaContext (line 425) | public String getServiceSchemaContext(String serviceId, String schemaI...
    method registerSchema (line 443) | @Override
    method updateServiceSchemaContext (line 462) | @Override
    method batchUpdateServiceSchemaContext (line 484) | @Override
    method queryToken (line 503) | @Override
    method updateMicroserviceProperties (line 537) | @Override
    method checkIsolationAddressAvailable (line 559) | @Override

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
  class ServiceCenterDiscovery (line 40) | public class ServiceCenterDiscovery extends AbstractTask {
    class SubscriptionKey (line 50) | public static class SubscriptionKey {
      method SubscriptionKey (line 55) | public SubscriptionKey(String appId, String serviceName) {
      method equals (line 60) | @Override
      method hashCode (line 73) | @Override
    class SubscriptionValue (line 79) | public static class SubscriptionValue {
    method ServiceCenterDiscovery (line 105) | public ServiceCenterDiscovery(ServiceCenterClient serviceCenterClient,...
    method setPollInterval (line 112) | public ServiceCenterDiscovery setPollInterval(long interval) {
    method updateMyselfServiceId (line 120) | public void updateMyselfServiceId(String myselfServiceId) {
    method startDiscovery (line 124) | public void startDiscovery() {
    method registerIfNotPresent (line 131) | public void registerIfNotPresent(SubscriptionKey subscriptionKey) {
    method getInstanceCache (line 143) | public List<MicroserviceInstance> getInstanceCache(SubscriptionKey key) {
    method onPullInstanceEvent (line 147) | @Subscribe
    method pullInstance (line 157) | private void pullInstance(SubscriptionKey k, SubscriptionValue v, bool...
    method setMicroserviceInfo (line 194) | private void setMicroserviceInfo(List<MicroserviceInstance> instances) {
    class PullInstanceTask (line 209) | class PullInstanceTask implements Task {
      method execute (line 210) | @Override
    method buildPollIntervalWithSalt (line 218) | private long buildPollIntervalWithSalt() {
    class PullInstanceOnceTask (line 225) | class PullInstanceOnceTask implements Task {
      method execute (line 226) | @Override
    method pullAllInstance (line 236) | private synchronized void pullAllInstance() {
    method instanceToString (line 242) | private static String instanceToString(List<MicroserviceInstance> inst...

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterOperation.java
  type ServiceCenterOperation (line 40) | public interface ServiceCenterOperation {
    method getServiceCenterInstances (line 50) | MicroserviceInstancesResponse getServiceCenterInstances();
    method registerMicroservice (line 58) | RegisteredMicroserviceResponse registerMicroservice(Microservice micro...
    method getMicroserviceList (line 66) | MicroservicesResponse getMicroserviceList();
    method getMicroserviceByServiceId (line 74) | Microservice getMicroserviceByServiceId(String serviceId);
    method queryServiceId (line 82) | RegisteredMicroserviceResponse queryServiceId(Microservice microservice);
    method registerMicroserviceInstance (line 92) | RegisteredMicroserviceInstanceResponse registerMicroserviceInstance(Mi...
    method getMicroserviceInstanceList (line 100) | MicroserviceInstancesResponse getMicroserviceInstanceList(String servi...
    method getMicroserviceInstance (line 108) | MicroserviceInstance getMicroserviceInstance(String serviceId, String ...
    method findMicroserviceInstance (line 116) | FindMicroserviceInstancesResponse findMicroserviceInstance(String cons...
    method deleteMicroserviceInstance (line 125) | void deleteMicroserviceInstance(String serviceId, String instanceId);
    method updateMicroserviceInstanceStatus (line 133) | boolean updateMicroserviceInstanceStatus(String serviceId, String inst...
    method registerSchema (line 141) | boolean registerSchema(String serviceId, String schemaId, CreateSchema...
    method updateServiceSchemaContext (line 149) | boolean updateServiceSchemaContext(String serviceId, SchemaInfo schema...
    method batchUpdateServiceSchemaContext (line 157) | boolean batchUpdateServiceSchemaContext(String serviceId, ModifySchema...
    method sendHeartBeats (line 165) | void sendHeartBeats(HeartbeatsRequest heartbeatsRequest);
    method sendHeartBeat (line 172) | boolean sendHeartBeat(String serviceId, String instanceId);
    method getServiceSchemasList (line 179) | List<SchemaInfo> getServiceSchemasList(String serviceId, boolean withC...
    method queryToken (line 187) | RbacTokenResponse queryToken(RbacTokenRequest request, String host);
    method updateMicroserviceProperties (line 195) | boolean updateMicroserviceProperties(String microserviceId, Map<String...
    method checkIsolationAddressAvailable (line 201) | void checkIsolationAddressAvailable();

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClient.java
  class ServiceCenterRawClient (line 36) | public class ServiceCenterRawClient {
    method ServiceCenterRawClient (line 51) | private ServiceCenterRawClient(String tenantName, HttpTransport httpTr...
    method setEventBus (line 58) | public void setEventBus(EventBus eventBus) {
    method getHttpRequest (line 62) | public HttpResponse getHttpRequest(String url, Map<String, String> hea...
    method postHttpRequestAbsoluteUrl (line 66) | public HttpResponse postHttpRequestAbsoluteUrl(String url, Map<String,...
    method postHttpRequest (line 71) | public HttpResponse postHttpRequest(String url, Map<String, String> he...
    method putHttpRequest (line 75) | public HttpResponse putHttpRequest(String url, Map<String, String> hea...
    method deleteHttpRequest (line 79) | public HttpResponse deleteHttpRequest(String url, Map<String, String> ...
    method doHttpRequest (line 83) | private HttpResponse doHttpRequest(String url, boolean absoluteUrl, Ma...
    method recordAndSendUnAuthorizedEvent (line 111) | private void recordAndSendUnAuthorizedEvent(HttpResponse response, Str...
    method checkAddressAvailable (line 121) | public void checkAddressAvailable(String address) {
    method buildHttpRequest (line 125) | private HttpRequest buildHttpRequest(String url, Map<String, String> h...
    class Builder (line 133) | public static class Builder {
      method Builder (line 140) | public Builder() {
      method setTenantName (line 143) | public Builder setTenantName(String tenantName) {
      method setHttpTransport (line 148) | public Builder setHttpTransport(HttpTransport httpTransport) {
      method setAddressManager (line 153) | public Builder setAddressManager(ServiceCenterAddressManager address...
      method build (line 158) | public ServiceCenterRawClient build() {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
  class ServiceCenterRegistration (line 43) | public class ServiceCenterRegistration extends AbstractTask {
    method ServiceCenterRegistration (line 67) | public ServiceCenterRegistration(ServiceCenterClient serviceCenterClie...
    method setMicroserviceInstance (line 75) | public ServiceCenterRegistration setMicroserviceInstance(MicroserviceI...
    method setMicroservice (line 80) | public ServiceCenterRegistration setMicroservice(Microservice microser...
    method setHeartBeatInterval (line 85) | public ServiceCenterRegistration setHeartBeatInterval(long interval) {
    method setHeartBeatRequestTimeout (line 93) | public ServiceCenterRegistration setHeartBeatRequestTimeout(long timeo...
    method setSchemaInfos (line 101) | public ServiceCenterRegistration setSchemaInfos(List<SchemaInfo> schem...
    method addSchemaInfo (line 106) | public ServiceCenterRegistration addSchemaInfo(SchemaInfo schemaInfo) {
    method getSchemaInfos (line 111) | public List<SchemaInfo> getSchemaInfos() {
    method startRegistration (line 115) | public void startRegistration() {
    class RegisterMicroserviceTask (line 120) | class RegisterMicroserviceTask implements Task {
      method RegisterMicroserviceTask (line 123) | RegisterMicroserviceTask(int failedCount) {
      method execute (line 127) | @Override
    method isSwaggerDifferent (line 191) | private boolean isSwaggerDifferent(Microservice newMicroservice) {
    method isListEquals (line 195) | private boolean isListEquals(List<String> one, List<String> two) {
    class RegisterSchemaTask (line 199) | class RegisterSchemaTask implements Task {
      method RegisterSchemaTask (line 202) | RegisterSchemaTask(int failedCount) {
      method execute (line 206) | @Override
    class RegisterMicroserviceInstanceTask (line 240) | class RegisterMicroserviceInstanceTask implements Task {
      method RegisterMicroserviceInstanceTask (line 243) | RegisterMicroserviceInstanceTask(int failedCount) {
      method execute (line 247) | @Override
    class SendHeartBeatTask (line 271) | class SendHeartBeatTask implements Task {
      method SendHeartBeatTask (line 276) | SendHeartBeatTask(int failedCount) {
      method execute (line 280) | @Override
    class CheckAddressTask (line 312) | class CheckAddressTask implements Runnable {
      method run (line 313) | @Override

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterWatch.java
  class ServiceCenterWatch (line 40) | public class ServiceCenterWatch implements WebSocketListener {
    method ServiceCenterWatch (line 84) | public ServiceCenterWatch(ServiceCenterAddressManager addressManager,
    method startWatch (line 98) | public void startWatch(String project, String serviceId) {
    method startWatch (line 105) | private void startWatch() {
    method createSignRequest (line 127) | private SignRequest createSignRequest(String url) {
    method convertAddress (line 138) | private String convertAddress(String address) {
    method stop (line 150) | public void stop() {
    method reconnect (line 156) | private void reconnect() {
    method backOff (line 167) | private void backOff() {
    method onMessage (line 178) | @Override
    method onError (line 184) | @Override
    method onClose (line 190) | @Override
    method onOpen (line 195) | @Override

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/exception/OperationException.java
  class OperationException (line 20) | public class OperationException extends RuntimeException {
    method OperationException (line 24) | public OperationException() {
    method OperationException (line 27) | public OperationException(String message) {
    method OperationException (line 31) | public OperationException(String message, Throwable cause) {
    method OperationException (line 35) | public OperationException(Throwable cause) {
    method OperationException (line 39) | public OperationException(String message, Throwable cause, boolean ena...

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/BasePath.java
  class BasePath (line 22) | public class BasePath {
    method getProperty (line 27) | public Map<String, String> getProperty() {
    method setProperty (line 31) | public void setProperty(Map<String, String> property) {
    method getPath (line 35) | public String getPath() {
    method setPath (line 39) | public void setPath(String path) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/CreateMicroserviceInstanceRequest.java
  class CreateMicroserviceInstanceRequest (line 20) | public class CreateMicroserviceInstanceRequest {
    method getInstance (line 23) | public MicroserviceInstance getInstance() {
    method setInstance (line 27) | public void setInstance(MicroserviceInstance instance) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/CreateMicroserviceRequest.java
  class CreateMicroserviceRequest (line 20) | public class CreateMicroserviceRequest {
    method getService (line 23) | public Microservice getService() {
    method setService (line 27) | public void setService(Microservice service) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/CreateSchemaRequest.java
  class CreateSchemaRequest (line 20) | public class CreateSchemaRequest {
    method getSchema (line 25) | public String getSchema() {
    method setSchema (line 29) | public void setSchema(String schema) {
    method getSummary (line 33) | public String getSummary() {
    method setSummary (line 37) | public void setSummary(String summary) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/DataCenterInfo.java
  class DataCenterInfo (line 20) | public class DataCenterInfo {
    method getName (line 28) | public String getName() {
    method setName (line 32) | public void setName(String name) {
    method getRegion (line 36) | public String getRegion() {
    method setRegion (line 40) | public void setRegion(String region) {
    method getAvailableZone (line 44) | public String getAvailableZone() {
    method setAvailableZone (line 48) | public void setAvailableZone(String availableZone) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/ErrorMessage.java
  class ErrorMessage (line 20) | public class ErrorMessage {
    method getErrorCode (line 27) | public String getErrorCode() {
    method setErrorCode (line 31) | public void setErrorCode(String errorCode) {
    method getErrorMessage (line 35) | public String getErrorMessage() {
    method setErrorMessage (line 39) | public void setErrorMessage(String errorMessage) {
    method getDetail (line 43) | public String getDetail() {
    method setDetail (line 47) | public void setDetail(String detail) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/FindMicroserviceInstancesResponse.java
  class FindMicroserviceInstancesResponse (line 20) | public class FindMicroserviceInstancesResponse {
    method isModified (line 27) | public boolean isModified() {
    method setModified (line 31) | public void setModified(boolean modified) {
    method getRevision (line 35) | public String getRevision() {
    method setRevision (line 39) | public void setRevision(String revision) {
    method getMicroserviceInstancesResponse (line 43) | public MicroserviceInstancesResponse getMicroserviceInstancesResponse() {
    method setMicroserviceInstancesResponse (line 47) | public void setMicroserviceInstancesResponse(

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/Framework.java
  class Framework (line 20) | public class Framework {
    method getName (line 25) | public String getName() {
    method setName (line 29) | public void setName(String name) {
    method getVersion (line 33) | public String getVersion() {
    method setVersion (line 37) | public void setVersion(String version) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/GetSchemaListResponse.java
  class GetSchemaListResponse (line 22) | public class GetSchemaListResponse {
    method getSchemas (line 25) | public List<SchemaInfo> getSchemas() {
    method setSchemas (line 29) | public void setSchemas(List<SchemaInfo> schemas) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/GetSchemaResponse.java
  class GetSchemaResponse (line 20) | public class GetSchemaResponse {
    method getSchema (line 23) | public String getSchema() {
    method setSchema (line 27) | public void setSchema(String schema) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/HealthCheck.java
  class HealthCheck (line 20) | public class HealthCheck {
    method getMode (line 30) | public HealthCheckMode getMode() {
    method setMode (line 34) | public void setMode(HealthCheckMode mode) {
    method getPort (line 38) | public int getPort() {
    method setPort (line 42) | public void setPort(int port) {
    method getInterval (line 46) | public int getInterval() {
    method setInterval (line 50) | public void setInterval(int interval) {
    method getTimes (line 54) | public int getTimes() {
    method setTimes (line 58) | public void setTimes(int times) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/HealthCheckMode.java
  type HealthCheckMode (line 20) | public enum HealthCheckMode {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/HeartbeatsRequest.java
  class HeartbeatsRequest (line 23) | public class HeartbeatsRequest {
    method HeartbeatsRequest (line 26) | public HeartbeatsRequest(String serviceId, String instanceId) {
    method getInstances (line 32) | public List<InstancesRequest> getInstances() {
    method setInstances (line 36) | public void setInstances(List<InstancesRequest> instances) {
    method addInstances (line 40) | public void addInstances(InstancesRequest instancesRequest) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/InstancesRequest.java
  class InstancesRequest (line 20) | public class InstancesRequest {
    method InstancesRequest (line 25) | public InstancesRequest(String serviceId, String instanceId) {
    method getServiceId (line 30) | public String getServiceId() {
    method setServiceId (line 34) | public void setServiceId(String serviceId) {
    method getInstanceId (line 38) | public String getInstanceId() {
    method setInstanceId (line 42) | public void setInstanceId(String instanceId) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/Microservice.java
  class Microservice (line 27) | @JsonRootName("service")
    method Microservice (line 68) | public Microservice() {
    method Microservice (line 72) | public Microservice(String serviceName) {
    method getInstances (line 76) | public List<MicroserviceInstance> getInstances() {
    method setInstances (line 80) | public void setInstances(List<MicroserviceInstance> instances) {
    method getFramework (line 84) | public Framework getFramework() {
    method setFramework (line 88) | public void setFramework(Framework framework) {
    method getAlias (line 92) | public String getAlias() {
    method setAlias (line 96) | public void setAlias(String alias) {
    method getVersion (line 100) | public String getVersion() {
    method setVersion (line 104) | public void setVersion(String version) {
    method getServiceId (line 108) | public String getServiceId() {
    method setServiceId (line 112) | public void setServiceId(String serviceId) {
    method getRegisterBy (line 116) | public String getRegisterBy() {
    method setRegisterBy (line 120) | public void setRegisterBy(String registerBy) {
    method getEnvironment (line 124) | public String getEnvironment() {
    method setEnvironment (line 128) | public void setEnvironment(String environment) {
    method getAppId (line 132) | public String getAppId() {
    method setAppId (line 136) | public void setAppId(String appId) {
    method getServiceName (line 140) | public String getServiceName() {
    method setServiceName (line 144) | public void setServiceName(String serviceName) {
    method getDescription (line 148) | public String getDescription() {
    method setDescription (line 152) | public void setDescription(String description) {
    method getLevel (line 156) | public String getLevel() {
    method setLevel (line 160) | public void setLevel(String level) {
    method getSchemas (line 164) | public List<String> getSchemas() {
    method setSchemas (line 168) | public void setSchemas(List<String> schemas) {
    method getStatus (line 172) | public MicroserviceStatus getStatus() {
    method setStatus (line 176) | public void setStatus(MicroserviceStatus status) {
    method getProperties (line 180) | public Map<String, String> getProperties() {
    method setProperties (line 184) | public void setProperties(Map<String, String> properties) {
    method getTimestamp (line 188) | public String getTimestamp() {
    method setTimestamp (line 192) | public void setTimestamp(String timestamp) {
    method getModTimestamp (line 196) | public String getModTimestamp() {
    method setModTimestamp (line 200) | public void setModTimestamp(String modTimestamp) {
    method getPaths (line 204) | public List<BasePath> getPaths() {
    method setPaths (line 208) | public void setPaths(List<BasePath> paths) {
    method addSchema (line 212) | public void addSchema(String schema) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstance.java
  class MicroserviceInstance (line 28) | @JsonRootName("instance")
    method getInstanceId (line 58) | public String getInstanceId() {
    method setInstanceId (line 62) | public void setInstanceId(String instanceId) {
    method getServiceId (line 66) | public String getServiceId() {
    method setServiceId (line 70) | public void setServiceId(String serviceId) {
    method getVersion (line 74) | public String getVersion() {
    method setVersion (line 78) | public void setVersion(String version) {
    method getEndpoints (line 82) | public List<String> getEndpoints() {
    method setEndpoints (line 86) | public void setEndpoints(List<String> endpoints) {
    method getHostName (line 90) | public String getHostName() {
    method setHostName (line 94) | public void setHostName(String hostName) {
    method getStatus (line 98) | public MicroserviceInstanceStatus getStatus() {
    method setStatus (line 102) | public void setStatus(MicroserviceInstanceStatus status) {
    method getHealthCheck (line 106) | public HealthCheck getHealthCheck() {
    method setHealthCheck (line 110) | public void setHealthCheck(HealthCheck healthCheck) {
    method getTimestamp (line 114) | public String getTimestamp() {
    method setTimestamp (line 118) | public void setTimestamp(String timestamp) {
    method getModTimestamp (line 122) | public String getModTimestamp() {
    method setModTimestamp (line 126) | public void setModTimestamp(String modTimestamp) {
    method getProperties (line 130) | public Map<String, String> getProperties() {
    method setProperties (line 134) | public void setProperties(Map<String, String> properties) {
    method getDataCenterInfo (line 138) | public DataCenterInfo getDataCenterInfo() {
    method setDataCenterInfo (line 142) | public void setDataCenterInfo(DataCenterInfo dataCenterInfo) {
    method setMicroservice (line 146) | public void setMicroservice(Microservice microservice) {
    method getMicroservice (line 150) | @JsonIgnore
    method getServiceName (line 155) | @JsonIgnore
    method getApplicationName (line 160) | @JsonIgnore
    method addEndpoint (line 165) | public void addEndpoint(String endpoint) {
    method addProperty (line 169) | public void addProperty(String key, String value) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstanceResponse.java
  class MicroserviceInstanceResponse (line 20) | public class MicroserviceInstanceResponse {
    method getInstance (line 23) | public MicroserviceInstance getInstance() {
    method setInstance (line 27) | public void setInstance(MicroserviceInstance instance) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstanceStatus.java
  type MicroserviceInstanceStatus (line 20) | public enum MicroserviceInstanceStatus {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstancesResponse.java
  class MicroserviceInstancesResponse (line 22) | public class MicroserviceInstancesResponse {
    method getInstances (line 26) | public List<MicroserviceInstance> getInstances() {
    method setInstances (line 30) | public void setInstances(List<MicroserviceInstance> instances) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceResponse.java
  class MicroserviceResponse (line 20) | public class MicroserviceResponse {
    method getService (line 23) | public Microservice getService() {
    method setService (line 27) | public void setService(Microservice service) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceStatus.java
  type MicroserviceStatus (line 20) | public enum MicroserviceStatus {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroservicesResponse.java
  class MicroservicesResponse (line 22) | public class MicroservicesResponse {
    method getServices (line 26) | public List<Microservice> getServices() {
    method setServices (line 30) | public void setServices(List<Microservice> services) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/ModifySchemasRequest.java
  class ModifySchemasRequest (line 22) | public class ModifySchemasRequest {
    method getSchemas (line 25) | public List<SchemaInfo> getSchemas() {
    method setSchemas (line 29) | public void setSchemas(List<SchemaInfo> schemas) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RbacTokenRequest.java
  class RbacTokenRequest (line 20) | public class RbacTokenRequest {
    method getName (line 25) | public String getName() {
    method setName (line 29) | public void setName(String name) {
    method getPassword (line 33) | public String getPassword() {
    method setPassword (line 37) | public void setPassword(String password) {
    method toString (line 41) | @Override

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RbacTokenResponse.java
  class RbacTokenResponse (line 20) | public class RbacTokenResponse {
    method getStatusCode (line 27) | public int getStatusCode() {
    method setStatusCode (line 31) | public void setStatusCode(int statusCode) {
    method getToken (line 35) | public String getToken() {
    method setToken (line 39) | public void setToken(String token) {
    method getErrorCode (line 43) | public String getErrorCode() {
    method setErrorCode (line 47) | public void setErrorCode(String errorCode) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RegisteredMicroserviceInstanceResponse.java
  class RegisteredMicroserviceInstanceResponse (line 20) | public class RegisteredMicroserviceInstanceResponse {
    method getInstanceId (line 23) | public String getInstanceId() {
    method setInstanceId (line 27) | public void setInstanceId(String instanceId) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RegisteredMicroserviceResponse.java
  class RegisteredMicroserviceResponse (line 20) | public class RegisteredMicroserviceResponse {
    method getServiceId (line 23) | public String getServiceId() {
    method setServiceId (line 27) | public void setServiceId(String serviceId) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/SchemaInfo.java
  class SchemaInfo (line 20) | public class SchemaInfo {
    method SchemaInfo (line 27) | public SchemaInfo() {
    method SchemaInfo (line 31) | public SchemaInfo(String schemaId, String schema, String summary) {
    method getSchema (line 37) | public String getSchema() {
    method setSchema (line 41) | public void setSchema(String schema) {
    method getSchemaId (line 45) | public String getSchemaId() {
    method setSchemaId (line 49) | public void setSchemaId(String schemaId) {
    method getSummary (line 53) | public String getSummary() {
    method setSummary (line 57) | public void setSummary(String summary) {

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/ServiceCenterConfiguration.java
  class ServiceCenterConfiguration (line 20) | public class ServiceCenterConfiguration {
    method isIgnoreSwaggerDifferent (line 31) | public boolean isIgnoreSwaggerDifferent() {
    method isCanOverwriteSwagger (line 35) | public boolean isCanOverwriteSwagger(){
    method setIgnoreSwaggerDifferent (line 39) | public ServiceCenterConfiguration setIgnoreSwaggerDifferent(boolean ig...
    method setCanOverwriteSwagger (line 44) | public ServiceCenterConfiguration setCanOverwriteSwagger(boolean canOv...

FILE: clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/UpdatePropertiesRequest.java
  class UpdatePropertiesRequest (line 22) | public class UpdatePropertiesRequest {
    method getProperties (line 27) | public Map<String, String> getProperties() {
    method setProperties (line 31) | public void setProperties(Map<String, String> properties) {
    method getFramework (line 35) | public Framework getFramework() {
    method setFramework (line 39) | public void setFramework(Framework framework) {

FILE: clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterAddressManagerTest.java
  class ServiceCenterAddressManagerTest (line 32) | class ServiceCenterAddressManagerTest {
    method getUrlPrefix (line 41) | @Test
    method formatUrlTest (line 55) | @Test
    method onRefreshEndpointEvent (line 70) | @Test

FILE: clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java
  class ServiceCenterClientTest (line 51) | public class ServiceCenterClientTest {
    method ServiceCenterClientTest (line 54) | public ServiceCenterClientTest() {
    method TestGetServiceCenterInstances (line 59) | @Test
    method TestRegistryService (line 113) | @Test
    method TestGetServiceMessage (line 140) | @Test
    method TestGetServiceList (line 198) | @Test
    method TestQueryServiceId (line 227) | @Test
    method TestRegisterServiceInstance (line 248) | @Test
    method TestDeleteServiceInstance (line 276) | @Test
    method TestGetServiceInstanceList (line 292) | @Test
    method TestGetServiceInstanceMessage (line 332) | @Test
    method TestSendHeartBeats (line 385) | @Test
    method TestUpdateServicesInstanceStatus (line 410) | @Test
    method TestGetServiceSchemas (line 430) | @Test
    method TestGetServiceSchemasContext (line 464) | @Test
    method TestUpdateServiceSchema (line 488) | @Test
    method testUpdateMicroserviceProperties (line 507) | @Test

FILE: clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClientTest.java
  class ServiceCenterRawClientTest (line 34) | public class ServiceCenterRawClientTest {
    method TestDefaultParameter (line 40) | @Test

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootListener.java
  class AccessLogBootListener (line 23) | public class AccessLogBootListener implements BootListener {
    method onAfterRegistry (line 27) | @Override
    method onBeforeClose (line 32) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootstrap.java
  class AccessLogBootstrap (line 24) | public class AccessLogBootstrap {
    method start (line 27) | public void start(EventBus eventBus) {
    method shutdown (line 32) | public void shutdown() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfig.java
  class AccessLogConfig (line 22) | public class AccessLogConfig {
    method AccessLogConfig (line 50) | private AccessLogConfig() {
    method init (line 54) | private void init() {
    method isServerLogEnabled (line 61) | public boolean isServerLogEnabled() {
    method isClientLogEnabled (line 65) | public boolean isClientLogEnabled() {
    method getServerLogPattern (line 69) | public String getServerLogPattern() {
    method getClientLogPattern (line 73) | public String getClientLogPattern() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfiguration.java
  class AccessLogConfiguration (line 22) | @Configuration
    method scbAccessLogBootListener (line 24) | @Bean

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogInitializer.java
  type AccessLogInitializer (line 21) | public interface AccessLogInitializer {
    method getOrder (line 22) | default int getOrder() {
    method init (line 26) | void init(EventBus eventBus, AccessLogConfig accessLogConfig);
    method destroy (line 28) | default void destroy() {}

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/client/ClientDefaultInitializer.java
  class ClientDefaultInitializer (line 32) | public class ClientDefaultInitializer implements AccessLogInitializer {
    method init (line 37) | @Override
    method onRequestOut (line 46) | @Subscribe

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/AccessLogGenerator.java
  class AccessLogGenerator (line 38) | public class AccessLogGenerator {
    method AccessLogGenerator (line 46) | @SuppressWarnings("unchecked")
    method generateServerLog (line 52) | public String generateServerLog(ServerAccessLogEvent accessLogEvent) {
    method generateClientLog (line 60) | public String generateClientLog(InvocationFinishEvent finishEvent) {
    method getAccessLogItems (line 68) | @VisibleForTesting

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/AccessLogItem.java
  type AccessLogItem (line 27) | public interface AccessLogItem<T> {
    method appendServerFormattedItem (line 28) | default void appendServerFormattedItem(ServerAccessLogEvent accessLogE...
    method appendClientFormattedItem (line 31) | default void appendClientFormattedItem(InvocationFinishEvent clientLog...

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ConfigurableDatetimeAccessItem.java
  class ConfigurableDatetimeAccessItem (line 35) | public class ConfigurableDatetimeAccessItem implements AccessLogItem<Rou...
    method ConfigurableDatetimeAccessItem (line 52) | public ConfigurableDatetimeAccessItem() {
    method ConfigurableDatetimeAccessItem (line 60) | public ConfigurableDatetimeAccessItem(String config) {
    method splitConfig (line 77) | private String[] splitConfig(String config) {
    method setConfigurations (line 81) | private void setConfigurations(String[] configArr) {
    method appendServerFormattedItem (line 87) | @Override
    method appendClientFormattedItem (line 92) | @Override
    method doAppendFormattedItem (line 99) | private void doAppendFormattedItem(long milliStartTime, StringBuilder ...
    method getDatetimeFormat (line 104) | private SimpleDateFormat getDatetimeFormat() {
    method getPattern (line 116) | public String getPattern() {
    method getTimezone (line 120) | public TimeZone getTimezone() {
    method getLocale (line 124) | public Locale getLocale() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieAccessItem.java
  class CookieAccessItem (line 32) | public class CookieAccessItem implements AccessLogItem<RoutingContext> {
    method CookieAccessItem (line 38) | public CookieAccessItem(String varName) {
    method appendServerFormattedItem (line 42) | @Override
    method appendClientFormattedItem (line 58) | @Override
    method getVarName (line 75) | public String getVarName() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondAccessItem.java
  class DurationMillisecondAccessItem (line 26) | public class DurationMillisecondAccessItem implements AccessLogItem<Rout...
    method appendServerFormattedItem (line 27) | @Override
    method appendClientFormattedItem (line 32) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondAccessItem.java
  class DurationSecondAccessItem (line 27) | public class DurationSecondAccessItem implements AccessLogItem<RoutingCo...
    method appendServerFormattedItem (line 29) | @Override
    method appendClientFormattedItem (line 34) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestAccessItem.java
  class FirstLineOfRequestAccessItem (line 26) | public class FirstLineOfRequestAccessItem implements AccessLogItem<Routi...
    method appendServerFormattedItem (line 33) | @Override
    method appendClientFormattedItem (line 44) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodAccessItem.java
  class HttpMethodAccessItem (line 35) | public class HttpMethodAccessItem implements AccessLogItem<RoutingContex...
    method appendServerFormattedItem (line 39) | @Override
    method appendClientFormattedItem (line 49) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusAccessItem.java
  class HttpStatusAccessItem (line 28) | public class HttpStatusAccessItem implements AccessLogItem<RoutingContex...
    method appendServerFormattedItem (line 31) | @Override
    method appendClientFormattedItem (line 45) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextAccessItem.java
  class InvocationContextAccessItem (line 32) | public class InvocationContextAccessItem implements AccessLogItem<Routin...
    method InvocationContextAccessItem (line 38) | public InvocationContextAccessItem(String varName) {
    method appendServerFormattedItem (line 42) | @Override
    method appendClientFormattedItem (line 52) | @Override
    method getValueFromInvocationContext (line 64) | protected String getValueFromInvocationContext(ServerAccessLogEvent ac...
    method getVarName (line 72) | public String getVarName() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostAccessItem.java
  class LocalHostAccessItem (line 31) | public class LocalHostAccessItem implements AccessLogItem<RoutingContext> {
    method appendServerFormattedItem (line 34) | @Override
    method appendClientFormattedItem (line 42) | @Override
    method getLocalAddress (line 56) | public static String getLocalAddress(RoutingContext context) {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortAccessItem.java
  class LocalPortAccessItem (line 30) | public class LocalPortAccessItem implements AccessLogItem<RoutingContext> {
    method appendServerFormattedItem (line 34) | @Override
    method appendClientFormattedItem (line 44) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextAccessItem.java
  class PlainTextAccessItem (line 30) | public class PlainTextAccessItem implements AccessLogItem<RoutingContext> {
    method PlainTextAccessItem (line 33) | public PlainTextAccessItem(String content) {
    method appendServerFormattedItem (line 37) | @Override
    method appendClientFormattedItem (line 42) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringAccessItem.java
  class QueryStringAccessItem (line 30) | public class QueryStringAccessItem implements AccessLogItem<RoutingConte...
    method appendServerFormattedItem (line 33) | @Override
    method appendClientFormattedItem (line 43) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostAccessItem.java
  class RemoteHostAccessItem (line 30) | public class RemoteHostAccessItem implements AccessLogItem<RoutingContex...
    method appendServerFormattedItem (line 34) | @Override
    method appendClientFormattedItem (line 45) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderAccessItem.java
  class RequestHeaderAccessItem (line 30) | public class RequestHeaderAccessItem implements AccessLogItem<RoutingCon...
    method RequestHeaderAccessItem (line 35) | public RequestHeaderAccessItem(String varName) {
    method appendServerFormattedItem (line 39) | @Override
    method appendClientFormattedItem (line 49) | @Override
    method getVarName (line 63) | public String getVarName() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolAccessItem.java
  class RequestProtocolAccessItem (line 31) | public class RequestProtocolAccessItem implements AccessLogItem<RoutingC...
    method appendServerFormattedItem (line 34) | @Override
    method appendClientFormattedItem (line 44) | @Override
    method getStringVersion (line 56) | private String getStringVersion(HttpVersion version) {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderAccessItem.java
  class ResponseHeaderAccessItem (line 29) | public class ResponseHeaderAccessItem implements AccessLogItem<RoutingCo...
    method ResponseHeaderAccessItem (line 35) | public ResponseHeaderAccessItem(String varName) {
    method appendServerFormattedItem (line 39) | @Override
    method appendClientFormattedItem (line 49) | @Override
    method getVarName (line 60) | public String getVarName() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeAccessItem.java
  class ResponseSizeAccessItem (line 27) | public class ResponseSizeAccessItem implements AccessLogItem<RoutingCont...
    method ResponseSizeAccessItem (line 31) | public ResponseSizeAccessItem(String zeroBytesPlaceholder) {
    method appendServerFormattedItem (line 35) | @Override
    method appendClientFormattedItem (line 45) | @Override
    method getZeroBytes (line 51) | public String getZeroBytes() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdAccessItem.java
  class TraceIdAccessItem (line 26) | public class TraceIdAccessItem extends InvocationContextAccessItem {
    method TraceIdAccessItem (line 30) | public TraceIdAccessItem() {
    method appendServerFormattedItem (line 34) | @Override
    method appendClientFormattedItem (line 43) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportAccessItem.java
  class TransportAccessItem (line 29) | public class TransportAccessItem implements AccessLogItem<RoutingContext> {
    method appendServerFormattedItem (line 35) | @Override
    method appendClientFormattedItem (line 40) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathAccessItem.java
  class UrlPathAccessItem (line 33) | public class UrlPathAccessItem implements AccessLogItem<RoutingContext> {
    method appendServerFormattedItem (line 37) | @Override
    method appendClientFormattedItem (line 47) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryAccessItem.java
  class UrlPathWithQueryAccessItem (line 31) | public class UrlPathWithQueryAccessItem implements AccessLogItem<Routing...
    method appendServerFormattedItem (line 35) | @Override
    method appendClientFormattedItem (line 45) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemCreator.java
  type AccessLogItemCreator (line 26) | public interface AccessLogItemCreator<T> {
    method createItem (line 34) | AccessLogItem<T> createItem(String config);

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemMeta.java
  class AccessLogItemMeta (line 21) | public class AccessLogItemMeta<T> {
    method getPrefix (line 34) | public String getPrefix() {
    method setPrefix (line 38) | public AccessLogItemMeta<T> setPrefix(String prefix) {
    method getSuffix (line 43) | public String getSuffix() {
    method setSuffix (line 47) | public AccessLogItemMeta<T> setSuffix(String suffix) {
    method getOrder (line 52) | public int getOrder() {
    method setOrder (line 56) | public AccessLogItemMeta<T> setOrder(int order) {
    method getAccessLogItemCreator (line 61) | public AccessLogItemCreator<T> getAccessLogItemCreator() {
    method setAccessLogItemCreator (line 65) | public AccessLogItemMeta<T> setAccessLogItemCreator(AccessLogItemCreat...

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogPatternParser.java
  type AccessLogPatternParser (line 33) | public interface AccessLogPatternParser<T> {
    method parsePattern (line 34) | List<AccessLogItem<T>> parsePattern(String rawPattern);

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/CompositeVertxRestAccessLogItemMeta.java
  class CompositeVertxRestAccessLogItemMeta (line 29) | public abstract class CompositeVertxRestAccessLogItemMeta extends VertxR...
    method getAccessLogItemMetas (line 30) | public abstract List<VertxRestAccessLogItemMeta> getAccessLogItemMetas();

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/VertxRestAccessLogItemMeta.java
  class VertxRestAccessLogItemMeta (line 25) | public class VertxRestAccessLogItemMeta extends AccessLogItemMeta<Routin...
    method VertxRestAccessLogItemMeta (line 26) | public VertxRestAccessLogItemMeta() {
    method VertxRestAccessLogItemMeta (line 29) | public VertxRestAccessLogItemMeta(String prefix, String suffix,
    method VertxRestAccessLogItemMeta (line 37) | public VertxRestAccessLogItemMeta(String prefix, AccessLogItemCreator<...
    method VertxRestAccessLogItemMeta (line 41) | public VertxRestAccessLogItemMeta(String prefix, String suffix,

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/DefaultCompositeVertxRestAccessLogItemMeta.java
  class DefaultCompositeVertxRestAccessLogItemMeta (line 50) | public class DefaultCompositeVertxRestAccessLogItemMeta extends Composit...
    method getAccessLogItemMetas (line 86) | @Override

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParser.java
  class VertxRestAccessLogPatternParser (line 42) | public class VertxRestAccessLogPatternParser implements AccessLogPattern...
    method VertxRestAccessLogPatternParser (line 67) | public VertxRestAccessLogPatternParser() {
    method getMetaList (line 83) | @VisibleForTesting
    method loadVertxRestLogItemMeta (line 88) | @VisibleForTesting
    method comparePlaceholderString (line 99) | public static int comparePlaceholderString(String s1, String s2) {
    method sortAccessLogItemMeta (line 148) | public static void sortAccessLogItemMeta(List<VertxRestAccessLogItemMe...
    method parsePattern (line 156) | @Override
    method matchAccessLogItem (line 170) | private List<AccessLogItemLocation> matchAccessLogItem(String rawPatte...
    method fillInPlainTextLocation (line 226) | private List<AccessLogItemLocation> fillInPlainTextLocation(String raw...
    method createTextPlainItemLocation (line 258) | private AccessLogItemLocation createTextPlainItemLocation(int front, i...
    method convertToItemList (line 262) | private List<AccessLogItem<RoutingContext>> convertToItemList(String r...
    method getConfigString (line 284) | private String getConfigString(String rawPattern, AccessLogItemLocatio...
    class AccessLogItemLocation (line 295) | private static class AccessLogItemLocation {
      method AccessLogItemLocation (line 316) | AccessLogItemLocation(int prefixIndex, int suffixIndex) {
      method AccessLogItemLocation (line 325) | AccessLogItemLocation(int prefixIndex, int suffixIndex, VertxRestAcc...
      method AccessLogItemLocation (line 335) | AccessLogItemLocation(int prefixIndex, VertxRestAccessLogItemMeta ac...
      method getPrefix (line 342) | public String getPrefix() {
      method getSuffix (line 349) | public String getSuffix() {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/placeholder/AccessLogItemTypeEnum.java
  type AccessLogItemTypeEnum (line 23) | public enum AccessLogItemTypeEnum {

FILE: common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/server/ServerDefaultInitializer.java
  class ServerDefaultInitializer (line 32) | public class ServerDefaultInitializer implements AccessLogInitializer {
    method init (line 38) | @Override
    method onRequestReceived (line 47) | @Subscribe

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogGeneratorTest.java
  class AccessLogGeneratorTest (line 44) | public class AccessLogGeneratorTest {
    method testConstructor (line 51) | @Test
    method testServerLog (line 60) | @Test
    method testClientLog (line 78) | @Test
    method testUserDefinedLogGenerator (line 98) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemTest.java
  class CookieItemTest (line 41) | public class CookieItemTest {
    method initStrBuilder (line 63) | @BeforeEach
    method serverFormattedElement (line 75) | @Test
    method clientFormattedElement (line 89) | @Test
    method serverFormattedElementOnCookieCountIsZero (line 105) | @Test
    method clientFormattedElementOnCookieCountIsZero (line 116) | @Test
    method serverFormattedElementOnCookieSetIsNull (line 131) | @Test
    method clientFormattedElementOnCookieSetIsNull (line 141) | @Test
    method serverFormattedElementOnNotFound (line 155) | @Test
    method clientFormattedElementOnNotFound (line 168) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemTest.java
  class DatetimeConfigurableItemTest (line 35) | public class DatetimeConfigurableItemTest {
    method initStrBuilder (line 49) | @BeforeEach
    method getFormattedElementOnNoTimezone (line 66) | @Test
    method clientFormattedElementOnNoTimezone (line 77) | @Test
    method serverFormattedElementOnNoLocale (line 88) | @Test
    method clientFormattedElementOnNoLocale (line 97) | @Test
    method serverFormattedElementOnNoConfig (line 106) | @Test
    method clientFormattedElementOnNoConfig (line 118) | @Test
    method serverConstructorWithNoArg (line 130) | @Test
    method clientConstructorWithNoArg (line 143) | @Test
    method serverConstructorWithNoSeparator (line 156) | @Test
    method clientConstructorWithNoSeparator (line 169) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
  class DurationMillisecondItemTest (line 31) | public class DurationMillisecondItemTest {
    method initStrBuilder (line 45) | @BeforeEach
    method testAppendFormattedElement (line 61) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemTest.java
  class DurationSecondItemTest (line 31) | public class DurationSecondItemTest {
    method initStrBuilder (line 45) | @BeforeEach
    method serverFormattedElementOn999ms (line 60) | @Test
    method clientFormattedElementOn999ms (line 67) | @Test
    method serverFormattedElementOn1000ms (line 74) | @Test
    method clientFormattedElementOn1000ms (line 81) | @Test
    method serverFormattedElementOn1001ms (line 88) | @Test
    method clientFormattedElementOn1001ms (line 95) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemTest.java
  class FirstLineOfRequestItemTest (line 43) | public class FirstLineOfRequestItemTest {
    method initStrBuilder (line 65) | @BeforeEach
    method serverFormattedElement (line 86) | @Test
    method clientFormattedElement (line 100) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemTest.java
  class HttpMethodItemTest (line 42) | public class HttpMethodItemTest {
    method initStrBuilder (line 63) | @BeforeEach
    method serverFormattedElement (line 83) | @Test
    method clientFormattedElement (line 93) | @Test
    method serverFormattedElementOnRequestIsNull (line 101) | @Test
    method clientFormattedElementOnRequestIsNull (line 109) | @Test
    method serverFormattedElementOnMethodIsNull (line 117) | @Test
    method clientFormattedElementOnMethodIsNull (line 128) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemTest.java
  class HttpStatusItemTest (line 33) | public class HttpStatusItemTest {
    method initStrBuilder (line 49) | @BeforeEach
    method serverFormattedElement (line 61) | @Test
    method clientFormattedElement (line 71) | @Test
    method serverFormattedElementOnResponseIsNull (line 81) | @Test
    method clientFormattedElementOnResponseIsNull (line 96) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemTest.java
  class InvocationContextItemTest (line 37) | public class InvocationContextItemTest {
    method initStrBuilder (line 55) | @BeforeEach
    method serverGetFormattedItem (line 66) | @Test
    method clientGetFormattedItem (line 77) | @Test
    method serverGetFormattedItemOnInvocationContextValueNotFound (line 88) | @Test
    method clientGetFormattedItemOnInvocationContextValueNotFound (line 100) | @Test
    method serverGetFormattedItemOnInvocationNotFound (line 111) | @Test
    method clientGetFormattedItemOnInvocationContextNotFound (line 120) | @Test
    method testGetFormattedItemOnRoutingContextDataNotFound (line 130) | @Test
    method clientGetFormattedItemOnRoutingContextDataNotFound (line 137) | @Test
    method clientGetFormattedItemOnInvocationNotFound (line 145) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemTest.java
  class LocalHostItemTest (line 41) | public class LocalHostItemTest {
    method initStrBuilder (line 64) | @BeforeEach
    method clientFormattedItem (line 83) | @Test
    method serverFormattedItem (line 94) | @Test
    method getLocalAddress (line 102) | @Test
    method serverLocalAddressOnRequestIsNull (line 113) | @Test
    method clientLocalAddressOnRequestIsNull (line 120) | @Test
    method serverLocalAddressOnLocalAddressIsNull (line 127) | @Test
    method clientLocalAddressOnLocalAddressIsNull (line 135) | @Test
    method serverLocalAddressOnHostIsNull (line 144) | @Test
    method clientLocalAddressOnHostIsNull (line 154) | @Test
    method serverLocalAddressIsEmpty (line 164) | @Test
    method clientLocalAddressIsEmpty (line 175) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemTest.java
  class LocalPortItemTest (line 41) | public class LocalPortItemTest {
    method initStrBuilder (line 64) | @BeforeEach
    method serverFormattedElement (line 83) | @Test
    method clientFormattedElement (line 93) | @Test
    method serverFormattedElementOnRequestIsNull (line 103) | @Test
    method clientFormattedElementOnRequestIsNull (line 110) | @Test
    method serverFormattedElementOnLocalAddressIsNull (line 117) | @Test
    method clientFormattedElementOnLocalAddressIsNull (line 125) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemTest.java
  class PlainTextItemTest (line 27) | public class PlainTextItemTest {
    method initStrBuilder (line 34) | @BeforeEach
    method serverFormattedElement (line 41) | @Test
    method clientFormattedElement (line 48) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemTest.java
  class QueryStringItemTest (line 39) | public class QueryStringItemTest {
    method initStrBuilder (line 58) | @BeforeEach
    method serverFormattedElement (line 72) | @Test
    method clientFormattedElement (line 81) | @Test
    method serverFormattedElementOnRequestIsNull (line 95) | @Test
    method clientFormattedElementOnRequestIsNull (line 102) | @Test
    method serverFormattedElementOnQueryIsNull (line 114) | @Test
    method clientFormattedElementOnQueryIsNull (line 122) | @Test
    method serverFormattedElementOnQueryIsEmpty (line 135) | @Test
    method clientFormattedElementOnQueryIsEmpty (line 144) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemTest.java
  class RemoteHostItemTest (line 36) | public class RemoteHostItemTest {
    method initStrBuilder (line 57) | @BeforeEach
    method serverFormattedElement (line 71) | @Test
    method clientFormattedElement (line 82) | @Test
    method serverFormattedElementOnRequestIsNull (line 93) | @Test
    method clientFormattedElementOnRequestIsNull (line 100) | @Test
    method serverFormattedElementOnRemoteAddressIsNull (line 108) | @Test
    method clientFormattedElementOnRemoteAddressIsNull (line 116) | @Test
    method serverFormattedElementOnHostIsNull (line 125) | @Test
    method clientFormattedElementOnHostIsNull (line 134) | @Test
    method serverFormattedElementOnHostIsEmpty (line 144) | @Test
    method clientFormattedElementOnHostIsEmpty (line 153) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemTest.java
  class RequestHeaderItemTest (line 41) | public class RequestHeaderItemTest {
    method initStrBuilder (line 64) | @BeforeEach
    method serverFormattedElement (line 79) | @Test
    method clientFormattedElement (line 92) | @Test
    method serverFormattedElementIfHeaderIsNull (line 108) | @Test
    method clientFormattedElementIfHeaderIsNull (line 117) | @Test
    method serverFormattedElementIfNotFound (line 130) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemTest.java
  class RequestProtocolItemTest (line 36) | public class RequestProtocolItemTest {
    method initStrBuilder (line 55) | @BeforeEach
    method serverFormattedElement (line 69) | @Test
    method clientFormattedElementOnRequestIsNull (line 88) | @Test
    method serverFormattedElementOnVersionIsNull (line 106) | @Test
    method clientFormattedElementOnVersionIsNull (line 115) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemTest.java
  class ResponseHeaderItemTest (line 35) | public class ResponseHeaderItemTest {
    method initStrBuilder (line 53) | @BeforeEach
    method serverFormattedElement (line 65) | @Test
    method clientFormattedElement (line 78) | @Test
    method serverFormattedElementOnHeadersIsNull (line 91) | @Test
    method clientFormattedElementOnHeadersIsNull (line 100) | @Test
    method serverFormattedElementOnResponseIsNull (line 109) | @Test
    method clientFormattedElementOnResponseIsNull (line 116) | @Test
    method serverFormattedElementOnNotFound (line 123) | @Test
    method clientFormattedElementOnNotFound (line 135) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemTest.java
  class ResponseSizeItemTest (line 32) | public class ResponseSizeItemTest {
    method initStrBuilder (line 45) | @BeforeEach
    method serverFormattedElement (line 56) | @Test
    method clientFormattedElement (line 66) | @Test
    method getFormattedElementOnResponseIsNull (line 72) | @Test
    method getFormattedElementOnBytesWrittenIsZero (line 79) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemTest.java
  class TraceIdItemTest (line 39) | public class TraceIdItemTest {
    method initStrBuilder (line 56) | @BeforeEach
    method serverGetFormattedElementFromInvocationContext (line 69) | @Test
    method clientGetFormattedElementFromInvocationContext (line 81) | @Test
    method serverGetFormattedElementFromRequestHeader (line 92) | @Test
    method serverGetFormattedElementOnTraceIdNotFound (line 106) | @Test
    method clientGetFormattedElementOnTraceIdNotFound (line 124) | @Test
    method serverGetFormattedElementOnInvocationContextIsNull (line 134) | @Test
    method clientGetFormattedElementOnInvocationContextIsNull (line 143) | @Test
    method serverGetFormattedElementOnDataIsNull (line 152) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemTest.java
  class TransportItemTest (line 31) | public class TransportItemTest {
    method initStrBuilder (line 44) | @BeforeEach
    method clientFormattedElement (line 53) | @Test
    method serverFormattedElement (line 68) | @Test
    method clientConfigTransportNameIsNull (line 74) | @Test
    method clientConfigTransportNameIsEmpty (line 87) | @Test
    method clientALLIsEmpty (line 99) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemTest.java
  class UrlPathItemTest (line 42) | public class UrlPathItemTest {
    method initStrBuilder (line 67) | @BeforeEach
    method clientFormattedElement (line 84) | @Test
    method serverFormattedElement (line 109) | @Test
    method serverFormattedElementOnRequestIsNull (line 118) | @Test
    method clientFormattedElementOnRequestIsNull (line 125) | @Test
    method serverFormattedElementOnMethodIsNull (line 136) | @Test
    method clientFormattedElementOnMethodIsNull (line 144) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemTest.java
  class UrlPathWithQueryItemTest (line 34) | public class UrlPathWithQueryItemTest {
    method initStrBuilder (line 50) | @BeforeEach
    method serverFormattedElement (line 62) | @Test
    method clientFormattedElement (line 71) | @Test
    method serverFormattedElementOnRequestIsNull (line 80) | @Test
    method clientFormattedElementOnRequestIsNull (line 87) | @Test
    method serverFormattedElementOnUriIsNull (line 94) | @Test
    method clientFormattedElementOnUriIsNull (line 102) | @Test
    method serverFormattedElementOnUriIsEmpty (line 110) | @Test
    method clientFormattedElementOnUriIsEmpty (line 118) | @Test

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessLogItem.java
  class UserDefinedAccessLogItem (line 30) | public class UserDefinedAccessLogItem implements AccessLogItem<RoutingCo...
    method UserDefinedAccessLogItem (line 33) | public UserDefinedAccessLogItem(String config) {
    method appendServerFormattedItem (line 37) | @Override
    method appendClientFormattedItem (line 43) | @Override

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessLogItemLowPriority.java
  class UserDefinedAccessLogItemLowPriority (line 30) | public class UserDefinedAccessLogItemLowPriority implements AccessLogIte...
    method appendServerFormattedItem (line 32) | @Override
    method appendClientFormattedItem (line 37) | @Override

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestCompositeExtendedAccessLogItemMeta.java
  class TestCompositeExtendedAccessLogItemMeta (line 28) | public class TestCompositeExtendedAccessLogItemMeta extends CompositeVer...
    method getAccessLogItemMetas (line 35) | @Override

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestSingleExtendedAccessLogItemMeta.java
  class TestSingleExtendedAccessLogItemMeta (line 24) | public class TestSingleExtendedAccessLogItemMeta extends VertxRestAccess...
    method TestSingleExtendedAccessLogItemMeta (line 25) | public TestSingleExtendedAccessLogItemMeta() {

FILE: common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParserTest.java
  class VertxRestAccessLogPatternParserTest (line 57) | public class VertxRestAccessLogPatternParserTest {
    method initStrBuilder (line 75) | @BeforeEach
    method testParsePatternFullTest (line 82) | @Test
    method testParsePattern (line 137) | @Test
    method testParsePatternWithNoBlank (line 160) | @Test
    method testParsePatternComplex (line 172) | @Test
    method testCompareMetaSimple (line 209) | @Test
    method testCompareMetaComplex (line 256) | @Test
    method testComparePlaceholderString (line 284) | @Test
    method testExtendedVertxRestAccessLogItemCreator (line 301) | @Test

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/HighwayJsonUtils.java
  class HighwayJsonUtils (line 40) | public class HighwayJsonUtils {
    method HighwayJsonUtils (line 45) | private HighwayJsonUtils() {
    method convertValue (line 49) | @SuppressWarnings("unchecked")

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/OperationProtobuf.java
  class OperationProtobuf (line 36) | public final class OperationProtobuf {
    method OperationProtobuf (line 49) | public OperationProtobuf(ScopedProtobufSchemaManager scopedProtobufSch...
    method getRequestRootSerializer (line 54) | public RequestRootSerializer getRequestRootSerializer() {
    method getRequestRootDeserializer (line 58) | public RequestRootDeserializer<Object> getRequestRootDeserializer() {
    method findResponseRootSerializer (line 62) | public ResponseRootSerializer findResponseRootSerializer(int statusCod...
    method findResponseRootDeserializer (line 69) | public ResponseRootDeserializer<Object> findResponseRootDeserializer(i...
    method initProducerRequestCodec (line 76) | private void initProducerRequestCodec(Invocation invocation, Message r...
    method initConsumerRequestCodec (line 97) | private void initConsumerRequestCodec(Invocation invocation, Message r...
    method initRequestCodec (line 115) | private void initRequestCodec(ScopedProtobufSchemaManager scopedProtob...
    method initProviderResponseCode (line 126) | private void initProviderResponseCode(Message responseMessage, ProtoMa...
    method initConsumerResponseCode (line 142) | private void initConsumerResponseCode(Message responseMessage, ProtoMa...
    method initResponseCodec (line 164) | private void initResponseCodec(ScopedProtobufSchemaManager scopedProto...

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ProtobufManager.java
  class ProtobufManager (line 34) | public final class ProtobufManager {
    class RuntimeCacheKey (line 39) | static class RuntimeCacheKey {
      method RuntimeCacheKey (line 48) | public RuntimeCacheKey(InvocationType invocationType, String operati...
      method equals (line 55) | @Override
      method hashCode (line 75) | @Override
    method getOrCreateOperation (line 86) | public static OperationProtobuf getOrCreateOperation(Invocation invoca...
    method clear (line 111) | @VisibleForTesting

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/RequestRootDeserializer.java
  class RequestRootDeserializer (line 26) | public class RequestRootDeserializer<T> {
    method RequestRootDeserializer (line 33) | public RequestRootDeserializer(RootDeserializer<T> rootDeserializer, b...
    method deserialize (line 39) | @SuppressWarnings("unchecked")

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/RequestRootSerializer.java
  class RequestRootSerializer (line 26) | public class RequestRootSerializer {
    method RequestRootSerializer (line 33) | public RequestRootSerializer(RootSerializer serializer, boolean isWrap...
    method serialize (line 39) | @SuppressWarnings("unchecked")

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ResponseRootDeserializer.java
  class ResponseRootDeserializer (line 28) | public class ResponseRootDeserializer<T> {
    method ResponseRootDeserializer (line 33) | public ResponseRootDeserializer(RootDeserializer<T> rootDeserializer, ...
    method deserialize (line 38) | @SuppressWarnings("unchecked")
    method needConvert (line 55) | public static boolean needConvert(Object obj, JavaType invocationTimeT...

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ResponseRootSerializer.java
  class ResponseRootSerializer (line 25) | public class ResponseRootSerializer {
    method ResponseRootSerializer (line 32) | public ResponseRootSerializer(RootSerializer serializer, boolean isWra...
    method serialize (line 38) | public byte[] serialize(Object value) throws IOException {

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/internal/converter/ProtoMethod.java
  class ProtoMethod (line 29) | public class ProtoMethod {
    method getArgTypeName (line 38) | public String getArgTypeName() {
    method setArgTypeName (line 42) | public void setArgTypeName(String argTypeName) {
    method addResponse (line 46) | public void addResponse(String status, ProtoResponse response) {
    method findResponse (line 60) | public ProtoResponse findResponse(int statusCode) {

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/internal/converter/ProtoResponse.java
  class ProtoResponse (line 19) | public class ProtoResponse {
    method getTypeName (line 22) | public String getTypeName() {
    method setTypeName (line 26) | public void setTypeName(String typeName) {

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/internal/converter/ProtoToStringGenerator.java
  class ProtoToStringGenerator (line 34) | public class ProtoToStringGenerator {
    method ProtoToStringGenerator (line 37) | public ProtoToStringGenerator(Proto proto) {
    method protoToString (line 41) | public String protoToString() {
    method serviceToString (line 63) | private void serviceToString(Service service, StringBuilder sb) {
    method enumToString (line 76) | protected void enumToString(Enum enumValue, StringBuilder sb) {
    method commentsToString (line 84) | private void commentsToString(List<String> comments, StringBuilder sb,...
    method messageToString (line 96) | private void messageToString(Message message, StringBuilder sb) {
    method fieldToString (line 106) | private void fieldToString(Field field, boolean repeated, StringBuilde...
    method fieldRepeatedToString (line 120) | private void fieldRepeatedToString(Field field, StringBuilder sb) {
    method fieldMapToString (line 125) | private void fieldMapToString(Field field, StringBuilder sb) {

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/internal/converter/SchemaSwaggerTypeAdapter.java
  class SchemaSwaggerTypeAdapter (line 23) | public class SchemaSwaggerTypeAdapter implements SwaggerTypeAdapter {
    method SchemaSwaggerTypeAdapter (line 26) | public SchemaSwaggerTypeAdapter(Schema<?> schema) {
    method getRefType (line 30) | @Override
    method getArrayItem (line 35) | @Override
    method getMapItem (line 40) | @Override
    method getEnum (line 45) | @Override
    method getType (line 51) | @Override
    method getFormat (line 56) | @Override
    method isJavaLangObject (line 61) | @Override

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/internal/converter/SwaggerToProtoGenerator.java
  class SwaggerToProtoGenerator (line 54) | @SuppressWarnings({"rawtypes", "unchecked"})
    method SwaggerToProtoGenerator (line 74) | public SwaggerToProtoGenerator(String protoPackage, OpenAPI swagger) {
    method convert (line 79) | public Proto convert() {
    method escapePackageName (line 93) | public static String escapePackageName(String name) {
    method escapeMessageName (line 97) | public static String escapeMessageName(String name) {
    method isValidEnum (line 101) | public static boolean isValidEnum(String name) {
    method convertDefinitions (line 105) | private void convertDefinitions() {
    method convertDefinition (line 115) | @SuppressWarnings("unchecked")
    method createMessage (line 126) | private void createMessage(String protoName, Map<String, Schema> prope...
    method addImports (line 148) | private void addImports(Proto proto) {
    method convertSwaggerType (line 155) | private String convertSwaggerType(Object swaggerType) {
    method convertArrayOrMapItem (line 198) | private String convertArrayOrMapItem(Schema itemProperty) {
    method generateWrapPropertyName (line 217) | private String generateWrapPropertyName(String prefix, Schema property) {
    method wrapPropertyToMessage (line 233) | private void wrapPropertyToMessage(String protoName, Schema property) {
    method tryFindEnumType (line 237) | private String tryFindEnumType(List<String> enums) {
    method createEnum (line 247) | private void createEnum(String enumName, List<String> enums) {
    method findBaseType (line 265) | private String findBaseType(String swaggerType, String swaggerFmt) {
    method convertOperations (line 284) | private void convertOperations() {
    method isUpload (line 315) | private boolean isUpload(Operation operation) {
    method isDownload (line 320) | private boolean isDownload(Operation operation) {
    method convertOperation (line 327) | private void convertOperation(Operation operation) {
    method fillRequestType (line 338) | private void fillRequestType(Operation operation, ProtoMethod protoMet...
    method wrapSchema (line 360) | private Map<String, Schema> wrapSchema(Operation operation) {
    method oneSchema (line 381) | private Schema oneSchema(Operation operation) {
    method parametersCount (line 394) | private int parametersCount(Operation operation) {
    method fillResponseType (line 407) | private void fillResponseType(Operation operation, ProtoMethod protoMe...
    method createWrapArgs (line 431) | private void createWrapArgs(String wrapName, Map<String, Schema> prope...
    method createProto (line 435) | protected Proto createProto() {

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/internal/converter/SwaggerTypeAdapter.java
  type SwaggerTypeAdapter (line 23) | public interface SwaggerTypeAdapter {
    method create (line 24) | static SwaggerTypeAdapter create(Object swaggerType) {
    method getRefType (line 36) | String getRefType();
    method getArrayItem (line 38) | Schema<?> getArrayItem();
    method getMapItem (line 40) | Schema<?> getMapItem();
    method getEnum (line 42) | List<String> getEnum();
    method getType (line 44) | String getType();
    method getFormat (line 46) | String getFormat();
    method isJavaLangObject (line 48) | boolean isJavaLangObject();

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/schema/SchemaToProtoGenerator.java
  class SchemaToProtoGenerator (line 45) | @SuppressWarnings({"rawtypes", "unchecked"})
    method run (line 50) | @Override
    method equals (line 55) | @Override
    method hashCode (line 67) | @Override
    method SchemaToProtoGenerator (line 87) | public SchemaToProtoGenerator(String protoPackage, OpenAPI openAPI, Sc...
    method convert (line 94) | public Proto convert() {
    method createProto (line 121) | protected Proto createProto() {
    method findSchemaType (line 132) | private String findSchemaType(Schema<?> schema) {
    method findObjectType (line 178) | private String findObjectType(Schema<?> schema) {
    method createEnum (line 186) | private void createEnum(String enumName, List<String> enums) {
    method isValidEnum (line 204) | public static boolean isValidEnum(String name) {
    method tryFindEnumType (line 208) | private String tryFindEnumType(List<String> enums) {
    method findBaseType (line 218) | private String findBaseType(String swaggerType, String swaggerFmt) {
    method findArrayOrMapItemType (line 237) | private String findArrayOrMapItemType(Schema<?> itemProperty) {
    method findWrapPropertyType (line 252) | private String findWrapPropertyType(String prefix, Schema<?> property) {
    method escapeMessageName (line 273) | public static String escapeMessageName(String name) {
    method wrapPropertyToMessage (line 278) | private void wrapPropertyToMessage(String protoName, Schema<?> propert...
    method createMessage (line 282) | private void createMessage(String protoName, Map<String, Schema> prope...
    method createMessage (line 299) | public void createMessage(Schema<?> schema) {
    method isArrayOrMap (line 371) | private boolean isArrayOrMap(Schema<?> value) {
    method arrayOrMapItem (line 375) | private Schema<?> arrayOrMapItem(Schema<?> schema) {
    method createMessageTask (line 380) | private void createMessageTask(Schema<?> schema) {
    method createMapOrArrayMessageTask (line 387) | private boolean createMapOrArrayMessageTask(Schema<?> schema, boolean ...

FILE: common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/utils/ScopedProtobufSchemaManager.java
  class ScopedProtobufSchemaManager (line 41) | public class ScopedProtobufSchemaManager {
    class SchemaKey (line 42) | static class SchemaKey {
      method SchemaKey (line 51) | SchemaKey(String schemaId, String rootMessage, Schema<?> schema) {
      method equals (line 57) | @Override
      method hashCode (line 70) | @Override
    method ScopedProtobufSchemaManager (line 85) | public ScopedProtobufSchemaManager() {
    method getOrCreateProtoMapper (line 92) | public ProtoMapper getOrCreateProtoMapper(SchemaMeta schemaMeta) {
    method getOrCreateProtoMapper (line 106) | public ProtoMapper getOrCreateProtoMapper(OpenAPI openAPI, String sche...

FILE: common/common-protobuf/src/test/java/io/protostuff/runtime/model/ModelProtostuff.java
  class ModelProtostuff (line 25) | public class ModelProtostuff {
    method getDestMicroservice (line 50) | public String getDestMicroservice() {
    method setDestMicroservice (line 54) | public void setDestMicroservice(String destMicroservice) {
    method getSchemaId (line 58) | public String getSchemaId() {
    method setSchemaId (line 62) | public void setSchemaId(String schemaId) {
    method getOperationName (line 66) | public String getOperationName() {
    method setOperationName (line 70) | public void setOperationName(String operationName) {
    method getContext (line 74) | public Map<String, String> getContext() {
    method setContext (line 78) | public void setContext(Map<String, String> context) {
    method getList (line 82) | public List<String> getList() {
    method setList (line 86) | public void setList(List<String> list) {
    method getUserMap (line 90) | public Map<String, User> getUserMap() {
    method setUserMap (line 94) | public void setUserMap(Map<String, User> userMap) {
    method getUserList (line 98) | public List<User> getUserList() {
    method setUserList (line 102) | public void setUserList(List<User> userList) {

FILE: common/common-protobuf/src/test/java/io/protostuff/runtime/model/User.java
  class User (line 19) | public class User {
    method User (line 22) | public User(String name) {
    method User (line 26) | public User() {
    method getName (line 29) | public String getName() {
    method setName (line 33) | public void setName(String name) {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/definition/TestResponseRootDeserializer.java
  class Model (line 32) | class Model {
  class TestResponseRootDeserializer (line 36) | @SuppressWarnings({"rawtypes", "unchecked"})
    method testNeedConvert (line 38) | @Test

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestProtoToStringGenerator.java
  class TestProtoToStringGenerator (line 25) | public class TestProtoToStringGenerator {
    method protoToString (line 75) | @Test

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodec.java
  class TestSchemaMetaCodec (line 66) | @SuppressWarnings({"rawtypes", "unchecked"})
    method setUp (line 73) | @BeforeEach
    method mockSchemaMeta (line 78) | private void mockSchemaMeta(String schemaId, AbstractSwaggerGenerator ...
    method testProtoSchemaOperationUserSpringMVC (line 107) | @Test
    method testProtoSchemaOperationUserPOJO (line 113) | @Test
    method mockInvocation (line 119) | private Invocation mockInvocation(String operation, InvocationType inv...
    method testProtoSchemaOperationUserImpl (line 150) | private void testProtoSchemaOperationUserImpl() throws IOException {
    method testProtoSchemaOperationmapUserSpringMVC (line 213) | @Test
    method testProtoSchemaOperationmapUserPOJO (line 219) | @Test
    method testProtoSchemaOperationmapUserImpl (line 225) | private void testProtoSchemaOperationmapUserImpl(boolean isPojo) throw...
    method testProtoSchemaOperationBaseSpringMVC (line 288) | @Test
    method testProtoSchemaOperationBasePOJO (line 294) | @Test
    method testProtoSchemaOperationBaseImpl (line 300) | private void testProtoSchemaOperationBaseImpl(boolean isPojo) throws I...
    method testProtoSchemaOperationlistListUserSpringMVC (line 407) | @Test
    method testProtoSchemaOperationlistListUserPOJO (line 413) | @Test
    method testProtoSchemaOperationlistListUserImpl (line 419) | private void testProtoSchemaOperationlistListUserImpl(boolean isPojo) ...
    method testProtoSchemaOperationObjSpringMVC (line 480) | @Test
    method testProtoSchemaOperationObjPOJO (line 486) | @Test
    method testProtoSchemaOperationObjImpl (line 492) | private void testProtoSchemaOperationObjImpl(boolean isPojo) throws IO...

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
  class TestSchemaMetaCodecRestTemplate (line 60) | public class TestSchemaMetaCodecRestTemplate {
    method setUp (line 66) | @BeforeEach
    method mockInvocation (line 100) | private Invocation mockInvocation(String operation, InvocationType inv...
    method testProtoSchemaOperationUser (line 131) | @Test
    method testProtoSchemaOperationBase (line 179) | @Test

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSwaggerToProtoGenerator.java
  class TestSwaggerToProtoGenerator (line 32) | public class TestSwaggerToProtoGenerator {
    method convert (line 33) | @Test
    method testEscape (line 50) | @Test

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/model/FieldNeedWrap.java
  class FieldNeedWrap (line 24) | public class FieldNeedWrap {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/model/ProtoSchema.java
  class ProtoSchema (line 39) | @RequestMapping(path = "/")
    method base (line 41) | @ApiResponses(value = {
    method bytes (line 50) | @GetMapping(path = "/bytes")
    method colorBody (line 55) | @GetMapping(path = "/colorBody")
    method obj (line 60) | @GetMapping(path = "/obj")
    method user (line 65) | @GetMapping(path = "/user")
    method userWrapInProtobuf (line 70) | @GetMapping(path = "/userWrapInProtobuf")
    method listObj (line 75) | @GetMapping(path = "/listObj")
    method listUser (line 80) | @GetMapping(path = "/listUser")
    method mapUser (line 85) | @GetMapping(path = "/mapUser")
    method mapObj (line 90) | @GetMapping(path = "/mapObj")
    method ref (line 95) | @GetMapping(path = "/ref")
    method noParamVoid (line 100) | @GetMapping(path = "/noParamVoid")
    method listListString (line 104) | @PostMapping(path = "/listListString")
    method listListUser (line 109) | @PostMapping(path = "/listListUser")
    method listMapString (line 114) | @PostMapping(path = "/listMapString")
    method listMapUser (line 119) | @PostMapping(path = "/listMapUser")
    method mapListString (line 124) | @PostMapping(path = "/mapListString")
    method mapListUser (line 129) | @PostMapping(path = "/mapListUser")
    method mapMapString (line 134) | @PostMapping(path = "/mapMapString")
    method mapMapUser (line 139) | @PostMapping(path = "/mapMapUser")
    method listListListString (line 144) | @PostMapping(path = "/listListListString")
    method listListMapString (line 149) | @PostMapping(path = "/listListMapString")
    method listMapListString (line 154) | @PostMapping(path = "/listMapListString")
    method listMapMapString (line 159) | @PostMapping(path = "/listMapMapString")
    method mapMapListString (line 165) | @PostMapping(path = "/mapMapListString")
    method mapMapMapString (line 171) | @PostMapping(path = "/mapMapMapString")
    method fieldNeedWrap (line 177) | @PostMapping(path = "/fieldNeedWrap")
    method testTextPlain (line 182) | @PostMapping(path = "/testTextPlain", consumes = MediaType.TEXT_PLAIN,...

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/model/ProtoSchemaIntf.java
  type ProtoSchemaIntf (line 29) | public interface ProtoSchemaIntf {
    method base (line 30) | int base(boolean boolValue, int iValue, long lValue, float fValue, dou...
    method bytes (line 34) | byte[] bytes(byte[] value);
    method colorBody (line 37) | Color colorBody(Color color);
    method obj (line 40) | Object obj(Object value);
    method user (line 43) | User user(User user);
    method userWrapInProtobuf (line 45) | User userWrapInProtobuf(User user, int ivalue);
    method listObj (line 48) | List<Object> listObj(List<Object> objs);
    method listUser (line 50) | List<User> listUser(List<User> users);
    method mapUser (line 53) | Map<String, User> mapUser(Map<String, User> users);
    method mapObj (line 55) | Map<String, Object> mapObj(Map<String, Object> objs);
    method ref (line 57) | Ref2 ref(Ref1 ref);
    method noParamVoid (line 60) | void noParamVoid();
    method listListString (line 62) | List<List<String>> listListString(List<List<String>> value);
    method listListUser (line 65) | List<List<User>> listListUser(List<List<User>> value);
    method listMapString (line 68) | List<Map<String, String>> listMapString(List<Map<String, String>> value);
    method listMapUser (line 71) | List<Map<String, User>> listMapUser(List<Map<String, User>> value);
    method mapListString (line 74) | Map<String, List<String>> mapListString(Map<String, List<String>> value);
    method mapListUser (line 77) | Map<String, List<User>> mapListUser(Map<String, List<User>> value);
    method mapMapString (line 79) | Map<String, Map<String, String>> mapMapString(Map<String, Map<String, ...
    method mapMapUser (line 82) | Map<String, Map<String, User>> mapMapUser(Map<String, Map<String, User...
    method listListListString (line 85) | List<List<List<String>>> listListListString(List<List<List<String>>> v...
    method listListMapString (line 88) | List<List<Map<String, String>>> listListMapString(List<List<Map<String...
    method listMapListString (line 90) | List<Map<String, List<String>>> listMapListString(List<Map<String, Lis...
    method listMapMapString (line 93) | List<Map<String, Map<String, String>>> listMapMapString(
    method mapMapListString (line 97) | Map<String, Map<String, List<String>>> mapMapListString(
    method mapMapMapString (line 100) | Map<String, Map<String, Map<String, String>>> mapMapMapString(
    method fieldNeedWrap (line 103) | FieldNeedWrap fieldNeedWrap(FieldNeedWrap fieldNeedWrap);

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/model/ProtoSchemaPojo.java
  class ProtoSchemaPojo (line 34) | public class ProtoSchemaPojo implements ProtoSchemaIntf {
    method base (line 35) | @ApiResponses(value = {
    method bytes (line 43) | public byte[] bytes(byte[] value) {
    method colorBody (line 48) | public Color colorBody(Color color) {
    method obj (line 53) | public Object obj(Object value) {
    method user (line 58) | public User user(User user) {
    method userWrapInProtobuf (line 63) | public User userWrapInProtobuf(User user, int ivalue) {
    method listObj (line 68) | public List<Object> listObj(List<Object> objs) {
    method listUser (line 72) | public List<User> listUser(List<User> users) {
    method mapUser (line 77) | public Map<String, User> mapUser(Map<String, User> users) {
    method mapObj (line 81) | public Map<String, Object> mapObj(Map<String, Object> objs) {
    method ref (line 85) | public Ref2 ref(Ref1 ref) {
    method noParamVoid (line 90) | public void noParamVoid() {
    method listListString (line 94) | public List<List<String>> listListString(List<List<String>> value) {
    method listListUser (line 99) | public List<List<User>> listListUser(List<List<User>> value) {
    method listMapString (line 104) | public List<Map<String, String>> listMapString(List<Map<String, String...
    method listMapUser (line 109) | public List<Map<String, User>> listMapUser(List<Map<String, User>> val...
    method mapListString (line 114) | public Map<String, List<String>> mapListString(Map<String, List<String...
    method mapListUser (line 119) | public Map<String, List<User>> mapListUser(Map<String, List<User>> val...
    method mapMapString (line 124) | public Map<String, Map<String, String>> mapMapString(Map<String, Map<S...
    method mapMapUser (line 129) | public Map<String, Map<String, User>> mapMapUser(Map<String, Map<Strin...
    method listListListString (line 134) | public List<List<List<String>>> listListListString(List<List<List<Stri...
    method listListMapString (line 139) | public List<List<Map<String, String>>> listListMapString(List<List<Map...
    method listMapListString (line 143) | public List<Map<String, List<String>>> listMapListString(List<Map<Stri...
    method listMapMapString (line 148) | public List<Map<String, Map<String, String>>> listMapMapString(
    method mapMapListString (line 154) | public Map<String, Map<String, List<String>>> mapMapListString(
    method mapMapMapString (line 159) | public Map<String, Map<String, Map<String, String>>> mapMapMapString(
    method fieldNeedWrap (line 164) | public FieldNeedWrap fieldNeedWrap(FieldNeedWrap fieldNeedWrap) {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/model/Ref1.java
  class Ref1 (line 19) | public class Ref1 {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/model/Ref2.java
  class Ref2 (line 19) | public class Ref2 {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/TestSchemaCodec.java
  class TestSchemaCodec (line 45) | public class TestSchemaCodec {
    method test_string_schema_codec (line 48) | @Test
    method test_number_schema_codec (line 65) | @Test
    class User (line 83) | public static class User {
    method test_object_schema_codec (line 87) | @Test
    method test_springmvc_model_schema_codec_correct (line 115) | @Test

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/TestSchemaToProtoGenerator.java
  class TestSchemaToProtoGenerator (line 37) | @SuppressWarnings("unused")
    method test_string_schema_is_correct (line 39) | @Test
    method test_object_schema_is_correct (line 57) | @Test
    class Model (line 88) | static class Model {
    type SpringMvcSchema (line 94) | interface SpringMvcSchema {
      method testInt (line 95) | @PostMapping("/testInt")
      method testModel (line 98) | @PostMapping("/testModel")
    method test_springmvc_int_schema_correct (line 102) | @Test
    method test_springmvc_model_schema_correct (line 141) | @Test
    method testNestedModelCorrect (line 189) | @Test
    method testListMapTypeCorrect (line 251) | @Test
    method testCyclicModelWrong (line 292) | @Test

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/model/CyclicInfo.java
  class CyclicInfo (line 19) | public class CyclicInfo {
    method getName (line 23) | public String getName() {
    method setName (line 27) | public void setName(String name) {
    method getChild (line 31) | public CyclicInfo getChild() {
    method setChild (line 35) | public void setChild(CyclicInfo child) {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/model/DeptInfo.java
  class DeptInfo (line 21) | public class DeptInfo {
    method getName (line 28) | public String getName() {
    method setName (line 32) | public void setName(String name) {
    method getCode (line 36) | public String getCode() {
    method setCode (line 40) | public void setCode(String code) {
    method getScores (line 44) | public List<ScoreInfo> getScores() {
    method setScores (line 48) | public void setScores(List<ScoreInfo> scores) {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/model/SchemaService.java
  class SchemaService (line 25) | @RequestMapping("/schemaService")
    method testUserInfo (line 27) | @PostMapping("testUserInfo")
    method testListType (line 31) | @PostMapping("testListType")
    method testCyclic (line 35) | @PostMapping("testCyclic")

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/model/ScoreInfo.java
  class ScoreInfo (line 19) | public class ScoreInfo {
    method getType (line 22) | public Integer getType() {
    method setType (line 26) | public void setType(Integer type) {

FILE: common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/schema/model/UserInfo.java
  class UserInfo (line 22) | public class UserInfo {
    method getSubDeptInfos (line 29) | public List<DeptInfo> getSubDeptInfos() {
    method setSubDeptInfos (line 33) | public void setSubDeptInfos(List<DeptInfo> subDeptInfos) {
    method getExtraInfos (line 37) | public List<Map<String, String>> getExtraInfos() {
    method setExtraInfos (line 41) | public void setExtraInfos(List<Map<String, String>> extraInfos) {
    method getNestedLists (line 45) | public List<List<List<String>>> getNestedLists() {
    method setNestedLists (line 49) | public void setNestedLists(List<List<List<String>>> nestedLists) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/CommonRestConfiguration.java
  class CommonRestConfiguration (line 33) | @Configuration
    method scbQueryCodecCsv (line 35) | @Bean
    method scbQueryCodecSsv (line 40) | @Bean
    method scbQueryCodecPipes (line 45) | @Bean
    method scbQueryCodecMulti (line 50) | @Bean
    method scbQueryCodecsUtils (line 55) | @Bean
    method scbRestServerCodecFilter (line 60) | @Bean
    method scbWebSocketServerCodecFilter (line 65) | @Bean
    method scbQueryCodecs (line 70) | @Bean
    method scbRestEngineSchemaListener (line 75) | @Bean

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/EdgeServerWebSocketInvocationCreator.java
  class EdgeServerWebSocketInvocationCreator (line 34) | public class EdgeServerWebSocketInvocationCreator extends ProviderServer...
    method EdgeServerWebSocketInvocationCreator (line 41) | public EdgeServerWebSocketInvocationCreator(String microserviceName, S...
    method createAsync (line 48) | @Override
    method createMicroserviceReferenceConfig (line 54) | protected CompletableFuture<Void> createMicroserviceReferenceConfig() {
    method locateOperation (line 63) | @Override
    method createInstance (line 68) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/HttpTransportContext.java
  class HttpTransportContext (line 23) | public class HttpTransportContext implements TransportContext {
    method HttpTransportContext (line 28) | public HttpTransportContext(HttpServletRequestEx requestEx, HttpServle...
    method getRequestEx (line 33) | public HttpServletRequestEx getRequestEx() {
    method getResponseEx (line 37) | public HttpServletResponseEx getResponseEx() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/ProviderServerWebSocketInvocationCreator.java
  class ProviderServerWebSocketInvocationCreator (line 26) | public class ProviderServerWebSocketInvocationCreator extends ServerWebS...
    method ProviderServerWebSocketInvocationCreator (line 27) | public ProviderServerWebSocketInvocationCreator(MicroserviceMeta micro...
    method initTransportContext (line 32) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestConst.java
  class RestConst (line 22) | public final class RestConst {
    method RestConst (line 23) | private RestConst() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
  class RestEngineSchemaListener (line 28) | public class RestEngineSchemaListener implements BootListener {
    method getOrder (line 29) | @Override
    method onBeforeRegistry (line 34) | @Override
    method onCreateMicroserviceMetaEvent (line 41) | @EnableExceptionPropagation
    method createServicePathManager (line 48) | private ServicePathManager createServicePathManager(MicroserviceMeta m...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocationCreator.java
  class RestProducerInvocationCreator (line 47) | public abstract class RestProducerInvocationCreator implements Invocatio...
    method RestProducerInvocationCreator (line 62) | public RestProducerInvocationCreator(MicroserviceMeta microserviceMeta...
    method createAsync (line 70) | @Override
    method createInstance (line 84) | protected Invocation createInstance() {
    method initInvocationContext (line 88) | protected void initInvocationContext(Invocation invocation) {
    method addParameterContext (line 103) | protected void addParameterContext(Invocation invocation) {
    method initTransportContext (line 135) | protected abstract void initTransportContext(Invocation invocation);
    method initRestOperation (line 137) | protected void initRestOperation() {
    method locateOperation (line 143) | protected OperationLocator locateOperation(MicroserviceMeta microservi...
    method locateOperation (line 154) | protected OperationLocator locateOperation(ServicePathManager serviceP...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocationFlow.java
  class RestProducerInvocationFlow (line 32) | public class RestProducerInvocationFlow extends ProducerInvocationFlow {
    method RestProducerInvocationFlow (line 38) | public RestProducerInvocationFlow(InvocationCreator invocationCreator,
    method sendCreateInvocationException (line 43) | @Override
    method endResponse (line 57) | @Override
    method endResponse (line 64) | private void endResponse(Invocation invocation) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestVertxProducerInvocationCreator.java
  class RestVertxProducerInvocationCreator (line 27) | public class RestVertxProducerInvocationCreator extends RestProducerInvo...
    method RestVertxProducerInvocationCreator (line 30) | public RestVertxProducerInvocationCreator(RoutingContext routingContext,
    method initTransportContext (line 37) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/ServerWebSocketInvocationCreator.java
  class ServerWebSocketInvocationCreator (line 47) | public abstract class ServerWebSocketInvocationCreator implements Invoca...
    method ServerWebSocketInvocationCreator (line 58) | public ServerWebSocketInvocationCreator(MicroserviceMeta microserviceM...
    method createAsync (line 65) | @Override
    method createInstance (line 77) | protected Invocation createInstance() {
    method initInvocationContext (line 81) | protected void initInvocationContext(Invocation invocation) {
    method addParameterContext (line 97) | protected void addParameterContext(Invocation invocation) {
    method initTransportContext (line 115) | protected abstract void initTransportContext(Invocation invocation);
    method initRestOperation (line 117) | protected void initRestOperation() {
    method locateOperation (line 122) | protected OperationLocator locateOperation(MicroserviceMeta microservi...
    method locateOperation (line 133) | protected OperationLocator locateOperation(ServicePathManager serviceP...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/UploadConfig.java
  class UploadConfig (line 23) | public class UploadConfig {
    method UploadConfig (line 26) | public UploadConfig(Environment environment) {
    method getLocation (line 33) | public String getLocation() {
    method getMaxFileSize (line 40) | public long getMaxFileSize() {
    method getMaxSize (line 47) | public long getMaxSize() {
    method getFileSizeThreshold (line 55) | public int getFileSizeThreshold() {
    method toMultipartConfigElement (line 59) | public MultipartConfigElement toMultipartConfigElement() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/VertxHttpTransportContext.java
  class VertxHttpTransportContext (line 27) | public class VertxHttpTransportContext extends HttpTransportContext impl...
    method VertxHttpTransportContext (line 32) | public VertxHttpTransportContext(RoutingContext routingContext, HttpSe...
    method getRoutingContext (line 40) | public RoutingContext getRoutingContext() {
    method getVertxContext (line 44) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/WebSocketTransportContext.java
  class WebSocketTransportContext (line 24) | public class WebSocketTransportContext implements TransportContext {
    method WebSocketTransportContext (line 27) | public WebSocketTransportContext(ServerWebSocket serverWebSocket) {
    method getServerWebSocket (line 31) | public ServerWebSocket getServerWebSocket() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestClientRequest.java
  type RestClientRequest (line 29) | public interface RestClientRequest {
    method write (line 30) | void write(Buffer bodyBuffer);
    method end (line 32) | Future<Void> end();
    method addCookie (line 34) | void addCookie(String name, String value);
    method putHeader (line 36) | void putHeader(String name, String value);
    method getHeaders (line 38) | MultiMap getHeaders();
    method addForm (line 40) | void addForm(String name, Object value);
    method getBodyBuffer (line 42) | Buffer getBodyBuffer() throws Exception;
    method attach (line 44) | void attach(String name, Object partOrList);
    method getHttpClientRequest (line 46) | HttpClientRequest getHttpClientRequest();

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestCodec.java
  class RestCodec (line 32) | public final class RestCodec {
    method RestCodec (line 33) | private RestCodec() {
    method argsToRest (line 36) | public static void argsToRest(Map<String, Object> args, RestOperationM...
    method restToArgs (line 49) | public static Map<String, Object> restToArgs(HttpServletRequest request,

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java
  class RestObjectMapperFactory (line 32) | public class RestObjectMapperFactory {
    method registerModules (line 44) | private static void registerModules(ObjectMapper mapper) {
    method getConsumerWriterMapper (line 51) | public static AbstractRestObjectMapper getConsumerWriterMapper() {
    method getRestObjectMapper (line 55) | public static AbstractRestObjectMapper getRestObjectMapper() {
    method getRestViewMapper (line 59) | public static AbstractRestObjectMapper getRestViewMapper() {
    method setConsumerWriterMapper (line 63) | public static void setConsumerWriterMapper(AbstractRestObjectMapper cu...
    method setDefaultRestObjectMapper (line 68) | public static void setDefaultRestObjectMapper(AbstractRestObjectMapper...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodec.java
  type HeaderCodec (line 30) | public interface HeaderCodec {
    method encodeValue (line 31) | static String encodeValue(Object value) throws UnsupportedEncodingExce...
    method convertToString (line 36) | static String convertToString(Object value) throws Exception {
    method getCodecName (line 40) | String getCodecName();
    method encode (line 42) | void encode(RestClientRequest clientRequest, String name, Object value...
    method decode (line 44) | Object decode(HeaderProcessor processor, HttpServletRequest request);

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecCsv.java
  class HeaderCodecCsv (line 20) | public class HeaderCodecCsv extends HeaderCodecWithDelimiter {
    method HeaderCodecCsv (line 25) | public HeaderCodecCsv() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecMulti.java
  class HeaderCodecMulti (line 33) | public class HeaderCodecMulti implements HeaderCodec {
    method getCodecName (line 36) | @Override
    method encode (line 41) | @Override
    method decode (line 57) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecPipes.java
  class HeaderCodecPipes (line 20) | public class HeaderCodecPipes extends HeaderCodecWithDelimiter {
    method HeaderCodecPipes (line 27) | public HeaderCodecPipes() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecSimple.java
  class HeaderCodecSimple (line 26) | public class HeaderCodecSimple implements HeaderCodec {
    method getCodecName (line 29) | @Override
    method encode (line 34) | @Override
    method decode (line 44) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecSsv.java
  class HeaderCodecSsv (line 20) | public class HeaderCodecSsv extends HeaderCodecWithDelimiter {
    method HeaderCodecSsv (line 25) | public HeaderCodecSsv() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecWithDelimiter.java
  class HeaderCodecWithDelimiter (line 33) | public abstract class HeaderCodecWithDelimiter implements HeaderCodec {
    method HeaderCodecWithDelimiter (line 40) | public HeaderCodecWithDelimiter(String name, String joinDelimiter, Str...
    method getCodecName (line 47) | @Override
    method encode (line 52) | @Override
    method join (line 65) | protected String join(Collection<?> values) throws Exception {
    method decode (line 75) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/header/HeaderCodecsUtils.java
  class HeaderCodecsUtils (line 26) | public class HeaderCodecsUtils {
    method HeaderCodecsUtils (line 38) | private HeaderCodecsUtils() {
    method find (line 41) | public static HeaderCodec find(Parameter.StyleEnum styleEnum, Boolean ...
    method formatName (line 45) | private static String formatName(StyleEnum styleEnum, Boolean explode) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/AbstractParamProcessor.java
  class AbstractParamProcessor (line 23) | public abstract class AbstractParamProcessor implements ParamValueProces...
    method getDefaultValue (line 33) | public Object getDefaultValue() {
    method AbstractParamProcessor (line 37) | public AbstractParamProcessor(String paramPath, JavaType targetType, O...
    method getParameterPath (line 48) | @Override
    method getTargetType (line 53) | public JavaType getTargetType() {
    method isRequired (line 57) | public boolean isRequired() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/BodyProcessorCreator.java
  class BodyProcessorCreator (line 65) | public class BodyProcessorCreator implements ParamValueProcessorCreator<...
    class BodyProcessor (line 89) | public static class BodyProcessor implements ParamValueProcessor {
      method BodyProcessor (line 107) | public BodyProcessor(OperationMeta operationMeta, JavaType targetTyp...
      method getOrCreateScopedProtobufSchemaManager (line 136) | private ScopedProtobufSchemaManager getOrCreateScopedProtobufSchemaM...
      method getSerialViewClass (line 150) | @Override
      method getValue (line 155) | @Override
      method getValueImpl (line 164) | private Object getValueImpl(HttpServletRequest request) throws IOExc...
      method validContentType (line 246) | private String validContentType(String type) {
      method setValue (line 260) | @Override
      method createBodyBuffer (line 276) | private Buffer createBodyBuffer(String contentType, Object arg) thro...
      method getParameterPath (line 308) | @Override
      method getProcessorType (line 313) | @Override
    class RawJsonBodyProcessor (line 319) | public static class RawJsonBodyProcessor implements ParamValueProcessor {
      method RawJsonBodyProcessor (line 326) | public RawJsonBodyProcessor(JavaType targetType, boolean isRequired) {
      method RawJsonBodyProcessor (line 330) | public RawJsonBodyProcessor(JavaType targetType, String serialViewCl...
      method getValue (line 343) | @Override
      method setValue (line 358) | @Override
      method getParameterPath (line 369) | @Override
      method getProcessorType (line 374) | @Override
    method BodyProcessorCreator (line 380) | public BodyProcessorCreator() {
    method create (line 384) | @Override
    method decodeAsObject (line 399) | private static boolean decodeAsObject() {
    method clientEncodingDefault (line 407) | private static String clientEncodingDefault() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/CookieProcessorCreator.java
  class CookieProcessorCreator (line 36) | public class CookieProcessorCreator implements ParamValueProcessorCreato...
    class CookieProcessor (line 39) | public static class CookieProcessor extends AbstractParamProcessor {
      method CookieProcessor (line 40) | public CookieProcessor(String paramPath, JavaType targetType, Object...
      method getValue (line 44) | @Override
      method checkRequiredAndDefaultValue (line 65) | private Object checkRequiredAndDefaultValue() {
      method setValue (line 72) | @Override
      method getProcessorType (line 78) | @Override
    method CookieProcessorCreator (line 84) | public CookieProcessorCreator() {
    method create (line 88) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/FormProcessorCreator.java
  class FormProcessorCreator (line 46) | @SuppressWarnings("unchecked")
    class FormProcessor (line 50) | public static class FormProcessor extends AbstractParamProcessor {
      method FormProcessor (line 53) | public FormProcessor(String paraName, RequestBody formParameter, Str...
      method getValue (line 62) | @Override
      method checkRequiredAndDefaultValue (line 81) | private Object checkRequiredAndDefaultValue() {
      method setValue (line 88) | @Override
      method getProcessorType (line 93) | @Override
    method FormProcessorCreator (line 99) | public FormProcessorCreator() {
    method create (line 103) | @Override
    method isPart (line 119) | private boolean isPart(RequestBody parameter, String paramName) {
    class PartProcessor (line 133) | public static class PartProcessor extends AbstractParamProcessor {
      method PartProcessor (line 153) | PartProcessor(String paramName, RequestBody formParameter, Type gene...
      method initConverter (line 163) | private void initConverter(Type genericParamType) {
      method initNormalConverter (line 172) | private void initNormalConverter(Type genericParamType) {
      method initRepeatedConverter (line 179) | private void initRepeatedConverter(Type genericParamType) {
      method getValue (line 187) | @Override
      method convertValue (line 201) | public Object convertValue(Converter converter, Object value) {
      method setValue (line 209) | @Override
      method getProcessorType (line 214) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/HeaderProcessorCreator.java
  class HeaderProcessorCreator (line 39) | public class HeaderProcessorCreator implements ParamValueProcessorCreato...
    class HeaderProcessor (line 42) | public static class HeaderProcessor extends AbstractParamProcessor {
      method HeaderProcessor (line 49) | public HeaderProcessor(HeaderParameter headerParameter, JavaType tar...
      method getValue (line 61) | @Override
      method checkRequiredAndDefaultValue (line 66) | public Object checkRequiredAndDefaultValue() {
      method setValue (line 73) | @Override
      method getProcessorType (line 78) | @Override
    method HeaderProcessorCreator (line 84) | public HeaderProcessorCreator() {
    method create (line 88) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessor.java
  type ParamValueProcessor (line 27) | public interface ParamValueProcessor {
    method getValue (line 28) | Object getValue(HttpServletRequest request) throws Exception;
    method setValue (line 30) | void setValue(RestClientRequest clientRequest, Object arg) throws Exce...
    method convertValue (line 32) | default Object convertValue(Object value, JavaType targetType) {
    method getParameterPath (line 45) | String getParameterPath();
    method getProcessorType (line 47) | String getProcessorType();
    method getSerialViewClass (line 49) | default Class<?> getSerialViewClass() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessorCreator.java
  type ParamValueProcessorCreator (line 24) | public interface ParamValueProcessorCreator<T> {
    method create (line 25) | default ParamValueProcessor create(OperationMeta operationMeta, String...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessorCreatorManager.java
  class ParamValueProcessorCreatorManager (line 22) | public final class ParamValueProcessorCreatorManager extends RegisterMan...
    method ParamValueProcessorCreatorManager (line 36) | private ParamValueProcessorCreatorManager() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/PathProcessorCreator.java
  class PathProcessorCreator (line 35) | public class PathProcessorCreator implements ParamValueProcessorCreator<...
    class PathProcessor (line 38) | public static class PathProcessor extends AbstractParamProcessor {
      method PathProcessor (line 39) | public PathProcessor(String paramPath, JavaType targetType, Object d...
      method getValue (line 43) | @Override
      method setValue (line 58) | @Override
      method getProcessorType (line 63) | @Override
    method PathProcessorCreator (line 69) | public PathProcessorCreator() {
    method create (line 73) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/QueryProcessorCreator.java
  class QueryProcessorCreator (line 40) | @SuppressWarnings("unchecked")
    class QueryProcessor (line 44) | public static class QueryProcessor extends AbstractParamProcessor {
      method QueryProcessor (line 61) | public QueryProcessor(QueryParameter queryParameter, JavaType target...
      method getValue (line 69) | @Override
      method getAndCheckParameter (line 74) | public Object getAndCheckParameter(HttpServletRequest request) {
      method checkRequiredAndDefaultValue (line 92) | private Object checkRequiredAndDefaultValue() {
      method setValue (line 105) | @Override
      method getProcessorType (line 110) | @Override
      method getQueryCodec (line 115) | public QueryCodec getQueryCodec() {
      method isRepeatedType (line 119) | public boolean isRepeatedType() {
      method convertValue (line 123) | public Object convertValue(Object value) {
    method QueryProcessorCreator (line 128) | public QueryProcessorCreator() {
    method create (line 132) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceEventStreamProcessor.java
  class ProduceEventStreamProcessor (line 30) | public class ProduceEventStreamProcessor implements ProduceProcessor {
    method getName (line 33) | @Override
    method getOrder (line 38) | @Override
    method doEncodeResponse (line 43) | @Override
    method doDecodeResponse (line 52) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceJsonProcessor.java
  class ProduceJsonProcessor (line 29) | public class ProduceJsonProcessor implements ProduceProcessor {
    method getSerializationView (line 33) | @Override
    method setSerializationView (line 39) | @Override
    method getName (line 47) | @Override
    method doEncodeResponse (line 52) | @Override
    method doDecodeResponse (line 61) | @Override
    method getOrder (line 70) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProcessor.java
  type ProduceProcessor (line 30) | public interface ProduceProcessor {
    method getName (line 31) | String getName();
    method getOrder (line 33) | int getOrder();
    method getSerializationView (line 35) | default String getSerializationView() {
    method setSerializationView (line 39) | default void setSerializationView(Class<?> serializationView) {
    method encodeResponse (line 43) | default void encodeResponse(OutputStream output, Object result) throws...
    method doEncodeResponse (line 51) | void doEncodeResponse(OutputStream output, Object result) throws Excep...
    method encodeResponse (line 53) | default Buffer encodeResponse(Object result) throws Exception {
    method decodeResponse (line 64) | default Object decodeResponse(InputStream input, JavaType type) throws...
    method doDecodeResponse (line 68) | Object doDecodeResponse(InputStream input, JavaType type) throws Excep...
    method decodeResponse (line 70) | default Object decodeResponse(Buffer buffer, JavaType type) throws Exc...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProcessorManager.java
  class ProduceProcessorManager (line 37) | public final class ProduceProcessorManager extends RegisterManager<Strin...
    method ProduceProcessorManager (line 59) | private ProduceProcessorManager() {
    method cloneNewProduceProcessor (line 71) | private static ProduceProcessor cloneNewProduceProcessor(Class<?> seri...
    method defaultResponseEncoding (line 85) | private static String defaultResponseEncoding() {
    method findJsonProcessorByViewClass (line 93) | public ProduceProcessor findJsonProcessorByViewClass(Class<?> serialVi...
    method findPlainProcessorByViewClass (line 101) | public ProduceProcessor findPlainProcessorByViewClass(Class<?> serialV...
    method findDefaultJsonProcessor (line 109) | public ProduceProcessor findDefaultJsonProcessor() {
    method findDefaultProcessor (line 113) | public ProduceProcessor findDefaultProcessor() {
    method findDefaultPlainProcessor (line 117) | public ProduceProcessor findDefaultPlainProcessor() {
    method createProduceProcessor (line 121) | public ProduceProcessor createProduceProcessor(OperationMeta operation...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProtoBufferProcessor.java
  class ProduceProtoBufferProcessor (line 38) | public class ProduceProtoBufferProcessor implements ProduceProcessor {
    method ProduceProtoBufferProcessor (line 53) | public ProduceProtoBufferProcessor(OperationMeta operationMeta, OpenAP...
    method getOrCreateScopedProtobufSchemaManager (line 60) | private ScopedProtobufSchemaManager getOrCreateScopedProtobufSchemaMan...
    method getName (line 74) | @Override
    method getOrder (line 79) | @Override
    method doEncodeResponse (line 84) | @Override
    method doDecodeResponse (line 97) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceTextPlainProcessor.java
  class ProduceTextPlainProcessor (line 30) | public class ProduceTextPlainProcessor extends ProduceJsonProcessor {
    method getName (line 31) | @Override
    method doEncodeResponse (line 36) | @Override
    method doDecodeResponse (line 45) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/AbstractQueryCodec.java
  class AbstractQueryCodec (line 26) | public abstract class AbstractQueryCodec implements QueryCodec {
    method AbstractQueryCodec (line 29) | public AbstractQueryCodec(String codecName) {
    method getCodecName (line 33) | @Override
    method encode (line 38) | @Override
    method encode (line 63) | abstract void encode(URLPathStringBuilder builder, String name, Collec...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodec.java
  type QueryCodec (line 33) | public interface QueryCodec extends Ordered {
    method encodeValue (line 34) | static String encodeValue(Object value) throws UnsupportedEncodingExce...
    method convertToString (line 39) | static String convertToString(Object value) throws Exception {
    method getOrder (line 43) | @Override
    method getCodecName (line 48) | String getCodecName();
    method encode (line 50) | void encode(URLPathStringBuilder builder, String name, Object value) t...
    method decode (line 52) | Object decode(QueryProcessor processor, HttpServletRequest request);

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
  class QueryCodecCsv (line 22) | public class QueryCodecCsv extends QueryCodecWithDelimiter {
    method QueryCodecCsv (line 27) | public QueryCodecCsv() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecMulti.java
  class QueryCodecMulti (line 28) | @SuppressWarnings("unchecked")
    method QueryCodecMulti (line 32) | public QueryCodecMulti() {
    method encode (line 36) | @Override
    method decode (line 48) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecPipes.java
  class QueryCodecPipes (line 22) | public class QueryCodecPipes extends QueryCodecWithDelimiter {
    method QueryCodecPipes (line 29) | public QueryCodecPipes() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecSsv.java
  class QueryCodecSsv (line 22) | public class QueryCodecSsv extends QueryCodecWithDelimiter {
    method QueryCodecSsv (line 27) | public QueryCodecSsv() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecWithDelimiter.java
  class QueryCodecWithDelimiter (line 34) | public class QueryCodecWithDelimiter extends AbstractQueryCodec {
    method QueryCodecWithDelimiter (line 39) | public QueryCodecWithDelimiter(String codecName, String joinDelimiter,...
    method encode (line 45) | @Override
    method join (line 73) | protected String join(Collection<Object> values) throws Exception {
    method decode (line 87) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecs.java
  class QueryCodecs (line 27) | public class QueryCodecs {
    method createForTest (line 30) | static QueryCodecs createForTest() {
    method QueryCodecs (line 43) | public QueryCodecs(List<QueryCodec> orderedCodecs) {
    method register (line 48) | private void register(QueryCodec codec) {
    method find (line 56) | public QueryCodec find(String name) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecsUtils.java
  class QueryCodecsUtils (line 22) | public class QueryCodecsUtils {
    method QueryCodecsUtils (line 26) | public QueryCodecsUtils(QueryCodecs queryCodecs) {
    method find (line 30) | public static QueryCodec find(Parameter.StyleEnum styleEnum, Boolean e...
    method formatName (line 34) | private static String formatName(StyleEnum styleEnum, Boolean explode) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/RestMetaUtils.java
  class RestMetaUtils (line 22) | public final class RestMetaUtils {
    method RestMetaUtils (line 23) | private RestMetaUtils() {
    method getRestOperationMeta (line 26) | public static RestOperationMeta getRestOperationMeta(OperationMeta ope...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/RestOperationComparator.java
  class RestOperationComparator (line 28) | public class RestOperationComparator implements Serializable, Comparator...
    method compare (line 32) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/RestOperationMeta.java
  class RestOperationMeta (line 44) | @SuppressWarnings("rawtypes")
    method init (line 71) | public void init(OperationMeta operationMeta) {
    method addRestParamByName (line 108) | private void addRestParamByName(OperationMeta operationMeta, String na...
    method isFormParameters (line 115) | private boolean isFormParameters(Operation operation) {
    method formSchemas (line 120) | private Schema formSchemas(Operation operation) {
    method isDownloadFile (line 127) | public boolean isDownloadFile() {
    method isServerSendEvents (line 131) | public boolean isServerSendEvents() {
    method checkServerSendEvents (line 135) | private boolean checkServerSendEvents() {
    method checkDownloadFileFlag (line 145) | private boolean checkDownloadFileFlag() {
    method isFormData (line 163) | public boolean isFormData() {
    method setOperationMeta (line 167) | public void setOperationMeta(OperationMeta operationMeta) {
    method getAbsolutePath (line 171) | public String getAbsolutePath() {
    method setAbsolutePath (line 175) | public void setAbsolutePath(String absolutePath) {
    method getAbsolutePathRegExp (line 181) | public PathRegExp getAbsolutePathRegExp() {
    method isAbsoluteStaticPath (line 185) | public boolean isAbsoluteStaticPath() {
    method createPathRegExp (line 189) | protected PathRegExp createPathRegExp(String path) {
    method getParamByName (line 201) | public RestParam getParamByName(String name) {
    method getOperationMeta (line 205) | public OperationMeta getOperationMeta() {
    method getPathBuilder (line 209) | public URLPathBuilder getPathBuilder() {
    method getParamList (line 213) | public List<RestParam> getParamList() {
    method addParam (line 217) | private void addParam(RestParam param) {
    method getHttpMethod (line 225) | public String getHttpMethod() {
    method getFileKeys (line 229) | public List<String> getFileKeys() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/RestParam.java
  class RestParam (line 37) | @SuppressWarnings({"rawtypes", "unchecked"})
    method RestParam (line 45) | public RestParam(OperationMeta operationMeta, Parameter parameter, Typ...
    method RestParam (line 51) | public RestParam(OperationMeta operationMeta,
    method getParamProcessor (line 59) | public ParamValueProcessor getParamProcessor() {
    method setParamProcessor (line 63) | public void setParamProcessor(ParamValueProcessor paramProcessor) {
    method getParamName (line 67) | public String getParamName() {
    method init (line 71) | protected void init(OperationMeta operationMeta, Parameter parameter, ...
    method init (line 79) | protected void init(OperationMeta operationMeta, RequestBody parameter...
    method getValue (line 93) | public <T> T getValue(Map<String, Object> args) {
    method getValueAsStrings (line 97) | public String[] getValueAsStrings(Map<String, Object> args) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/AbstractUrlParamWriter.java
  class AbstractUrlParamWriter (line 25) | public abstract class AbstractUrlParamWriter implements UrlParamWriter {
    method getParamValue (line 28) | @VisibleForTesting

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/PathRegExp.java
  class PathRegExp (line 29) | public class PathRegExp {
    method ensureEndWithSlash (line 60) | public static String ensureEndWithSlash(String path) {
    method PathRegExp (line 69) | public PathRegExp(String path)
    method processGroup (line 102) | protected int processGroup(final String path, final int braceIndex,
    method processDefault (line 134) | private int processDefault(final String path, final StringBuilder varN...
    method processBrace (line 153) | private void processBrace(final String path, final StringBuilder pathP...
    method processColon (line 172) | private int processColon(final String path, final int braceIndex, int ...
    method processLineBreak (line 184) | private int processLineBreak(int state) {
    method match (line 198) | public String match(String path, Map<String, String> varValues) {
    method toString (line 211) | @Override
    method isStaticPath (line 216) | public boolean isStaticPath() {
    method getStaticCharCount (line 220) | public int getStaticCharCount() {
    method getGroupCount (line 224) | public int getGroupCount() {
    method getGroupWithRegExpCount (line 228) | public int getGroupWithRegExpCount() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/PathVarParamWriter.java
  class PathVarParamWriter (line 30) | public class PathVarParamWriter extends AbstractUrlParamWriter {
    method PathVarParamWriter (line 31) | public PathVarParamWriter(RestParam param) {
    method write (line 35) | @Override
    method encodeNotNullValue (line 44) | private String encodeNotNullValue(Object value) throws Exception {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/QueryVarParamWriter.java
  class QueryVarParamWriter (line 27) | public class QueryVarParamWriter extends AbstractUrlParamWriter {
    method QueryVarParamWriter (line 30) | public QueryVarParamWriter(RestParam param) {
    method write (line 35) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/StaticUrlParamWriter.java
  class StaticUrlParamWriter (line 24) | public class StaticUrlParamWriter implements UrlParamWriter {
    method StaticUrlParamWriter (line 28) | public StaticUrlParamWriter(String staticPath) {
    method write (line 32) | @Override

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/URLPathBuilder.java
  class URLPathBuilder (line 30) | public class URLPathBuilder {
    method URLPathBuilder (line 38) | public URLPathBuilder(String rawPath, Map<String, RestParam> paramMap) {
    method initQueryWriterList (line 43) | private void initQueryWriterList(Map<String, RestParam> paramMap) {
    method initPathWriterList (line 54) | private void initPathWriterList(String rawPath, Map<String, RestParam>...
    method createRequestPath (line 89) | public String createRequestPath(Map<String, Object> args) throws Excep...
    method createPathString (line 98) | public String createPathString(Map<String, Object> args) throws Except...
    method genPathString (line 104) | private void genPathString(URLPathStringBuilder builder, Map<String, O...
    method genQueryString (line 110) | private void genQueryString(URLPathStringBuilder builder, Map<String, ...
    class URLPathStringBuilder (line 116) | public static class URLPathStringBuilder {
      method appendPath (line 121) | public URLPathStringBuilder appendPath(String s) {
      method appendQuery (line 126) | public URLPathStringBuilder appendQuery(String name, String encodedV...
      method build (line 138) | public String build() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/definition/path/UrlParamWriter.java
  type UrlParamWriter (line 24) | public interface UrlParamWriter {
    method write (line 25) | void write(URLPathStringBuilder builder, Map<String, Object> args) thr...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
  class RestServerCodecFilter (line 61) | public class RestServerCodecFilter extends AbstractFilter implements Pro...
    method getName (line 66) | @Override
    method getOrder (line 71) | @Override
    method enabledForTransport (line 77) | @Override
    method onFilter (line 82) | @Override
    method invokeNext (line 91) | protected CompletableFuture<Response> invokeNext(Invocation invocation...
    method decodeRequest (line 99) | protected void decodeRequest(Invocation invocation) {
    method encodeResponse (line 110) | protected CompletableFuture<Response> encodeResponse(Invocation invoca...
    method isFailedResponse (line 123) | private static boolean isFailedResponse(Response response) {
    method writePart (line 127) | private static CompletableFuture<Response> writePart(
    method writeResponse (line 141) | private static CompletableFuture<Response> writeResponse(
    method encodeResponse (line 174) | public static CompletableFuture<Response> encodeResponse(Invocation in...
    method writeServerSendEvent (line 198) | private static CompletableFuture<Response> writeServerSendEvent(Respon...
    method isDownloadFileResponseType (line 243) | public static boolean isDownloadFileResponseType(Invocation invocation...
    method isServerSendEvent (line 248) | public static boolean isServerSendEvent(Response response) {
    method copyHeadersToHttpResponse (line 252) | public static void copyHeadersToHttpResponse(Invocation invocation, Mu...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/WebSocketServerCodecFilter.java
  class WebSocketServerCodecFilter (line 44) | public class WebSocketServerCodecFilter extends AbstractFilter implement...
    method getName (line 49) | @Override
    method getOrder (line 54) | @Override
    method enabledForTransport (line 60) | @Override
    method onFilter (line 65) | @Override
    method invokeNext (line 74) | protected CompletableFuture<Response> invokeNext(Invocation invocation...
    method decodeRequest (line 82) | protected CompletableFuture<Void> decodeRequest(Invocation invocation) {
    method encodeResponse (line 89) | protected CompletableFuture<Response> encodeResponse(Invocation invoca...
    method isFailedResponse (line 97) | private static boolean isFailedResponse(Response response) {
    method writeResponse (line 101) | private static CompletableFuture<Response> writeResponse(
    method encodeResponse (line 117) | public static CompletableFuture<Response> encodeResponse(Response resp...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/locator/MicroservicePaths.java
  class MicroservicePaths (line 34) | public class MicroservicePaths {
    method sortPath (line 44) | public void sortPath() {
    method addResource (line 49) | public void addResource(RestOperationMeta swaggerRestOperation) {
    method addStaticPathResource (line 59) | protected void addStaticPathResource(RestOperationMeta operation) {
    method getStaticPathOperationMap (line 79) | public Map<String, OperationGroup> getStaticPathOperationMap() {
    method getDynamicPathOperationList (line 83) | public List<RestOperationMeta> getDynamicPathOperationList() {
    method printPaths (line 87) | public void printPaths() {
    method printPath (line 96) | protected void printPath(Collection<RestOperationMeta> operations) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/locator/OperationGroup.java
  class OperationGroup (line 26) | public class OperationGroup extends RegisterManager<String, RestOperatio...
    method OperationGroup (line 29) | public OperationGroup() {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/locator/OperationLocator.java
  class OperationLocator (line 34) | public class OperationLocator {
    method getOperation (line 45) | public RestOperationMeta getOperation() {
    method getPathVarMap (line 49) | public Map<String, String> getPathVarMap() {
    method locate (line 54) | public void locate(String microserviceName, String path, String httpMe...
    method locateStaticPathOperation (line 80) | protected RestOperationMeta locateStaticPathOperation(String path, Str...
    method locateDynamicPathOperation (line 91) | protected RestOperationMeta locateDynamicPathOperation(String path, Co...
    method checkHttpMethod (line 106) | protected boolean checkHttpMethod(RestOperationMeta operation, String ...
    method getStandardPath (line 112) | public static String getStandardPath(String path) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/locator/ServicePathManager.java
  class ServicePathManager (line 35) | public class ServicePathManager {
    method getServicePathManager (line 48) | public static ServicePathManager getServicePathManager(MicroserviceMet...
    method ServicePathManager (line 52) | public ServicePathManager(MicroserviceMeta microserviceMeta) {
    method addSchema (line 63) | private void addSchema(SchemaMeta schemaMeta) {
    method consumerLocateOperation (line 72) | public OperationLocator consumerLocateOperation(String path, String ht...
    method producerLocateOperation (line 80) | public OperationLocator producerLocateOperation(String path, String ht...
    method addResource (line 88) | public void addResource(RestOperationMeta swaggerRestOperation) {
    method sortPath (line 92) | public void sortPath() {
    method buildProducerPaths (line 96) | public void buildProducerPaths() {
    method addProducerPaths (line 113) | private void addProducerPaths(String urlPrefix, Collection<RestOperati...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/resource/ClassPathStaticResourceHandler.java
  class ClassPathStaticResourceHandler (line 26) | public class ClassPathStaticResourceHandler extends StaticResourceHandler {
    method findResource (line 27) | protected Part findResource(String path) throws IOException {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/resource/StaticResourceHandler.java
  class StaticResourceHandler (line 32) | public abstract class StaticResourceHandler {
    method setWebRoot (line 37) | public void setWebRoot(String webRoot) {
    method findResource (line 41) | protected abstract Part findResource(String path) throws IOException;
    method handle (line 43) | public Response handle(String path) {
    method handler (line 66) | public Response handler(Part part) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/route/URLMappedConfigurationItem.java
  class URLMappedConfigurationItem (line 22) | public class URLMappedConfigurationItem {
    method getMicroserviceName (line 33) | public String getMicroserviceName() {
    method setMicroserviceName (line 37) | public void setMicroserviceName(String microserviceName) {
    method getVersionRule (line 41) | public String getVersionRule() {
    method setVersionRule (line 45) | public void setVersionRule(String versionRule) {
    method getPrefixSegmentCount (line 49) | public int getPrefixSegmentCount() {
    method setPrefixSegmentCount (line 53) | public void setPrefixSegmentCount(int prefixSegmentCount) {
    method getPattern (line 57) | public Pattern getPattern() {
    method setPattern (line 61) | public void setPattern(Pattern pattern) {
    method getStringPattern (line 65) | public String getStringPattern() {
    method setStringPattern (line 69) | public void setStringPattern(String stringPattern) {

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/route/URLMappedConfigurationLoader.java
  class URLMappedConfigurationLoader (line 32) | public class URLMappedConfigurationLoader {
    method loadConfigurations (line 43) | public static Map<String, URLMappedConfigurationItem> loadConfigurations(
    method logConfigurations (line 74) | private static void logConfigurations(Map<String, URLMappedConfigurati...

FILE: common/common-rest/src/main/java/org/apache/servicecomb/common/rest/route/Utils.java
  class Utils (line 23) | public final class Utils {
    method Utils (line 24) | private Utils() {
    method findActualPath (line 34) | public static String findActualPath(String path, int pathIndex) {

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/RestProducerInvocationCreatorTest.java
  class RestProducerInvocationCreatorTest (line 56) | public class RestProducerInvocationCreatorTest {
    method beforeClass (line 86) | @BeforeAll
    method afterClass (line 99) | @AfterAll
    method setUp (line 104) | @BeforeEach
    method should_failed_when_not_defined_any_schema (line 111) | @Test
    method should_save_requestEx_in_invocation_context (line 125) | @Test
    method should_save_path_var_map_in_requestEx (line 144) | @Test
    method should_merge_invocation_context_from_request (line 162) | @Test
    method should_not_merge_invocation_context_from_request (line 183) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestDefPath.java
  class TestDefPath (line 24) | public class TestDefPath {
    method testPathRegExp (line 26) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestEngineSchemaListener.java
  class TestRestEngineSchemaListener (line 44) | public class TestRestEngineSchemaListener {
    method setup (line 49) | @BeforeAll
    method teardown (line 78) | @AfterAll
    method testLocateNotFound (line 83) | @Test
    method testLocateNotFoundDynamicRemained (line 91) | @Test
    method testLocateStaticMethodNotAllowed (line 99) | @Test
    method testLocateDynamicMethodNotAllowed (line 107) | @Test
    method testLocateStaticFound (line 115) | @Test
    method testLocateDynamicFound (line 120) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/PojoModel.java
  class PojoModel (line 20) | public class PojoModel {
    method getName (line 25) | public String getName() {
    method setName (line 29) | public void setName(String name) {
    method getDesc (line 33) | public String getDesc() {
    method setDesc (line 37) | public void setDesc(String desc) {

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestCodec.java
  class TestRestCodec (line 44) | public class TestRestCodec {
    method beforeClass (line 52) | @BeforeAll
    method afterClass (line 79) | @AfterAll
    method testRestToArgs (line 85) | @Test
    method testRestToArgsException (line 103) | @Test
    method testRestToArgsInstanceException (line 131) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestObjectMapper.java
  class TestRestObjectMapper (line 39) | public class TestRestObjectMapper {
    method testFormatDate (line 41) | @Test
    method testAutoCloseSource (line 54) | @Test
    method testDeserializationFeature (line 59) | @Test
    method testDefaultViewInclusionFeature (line 65) | @Test
    method testJsonObjectWork (line 70) | @Test
    method testReadValue (line 97) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/fix/TestDoSFix.java
  class TestDoSFix (line 35) | public class TestDoSFix {
    class Model (line 46) | public static class Model {
    method fastFail (line 78) | void fastFail(Callable<?> callable, Class<?> eCls) {
    method fastFail (line 96) | void fastFail(String input, Class<?> cls, Class<?> eCls) {
    method batFastFail (line 102) | void batFastFail(Class<?> cls, Class<?> e1, Class<?> e2) {
    method batFastFail (line 109) | void batFastFail(Class<?> cls) {
    method batFastFail (line 113) | void batFastFail(String fieldName, Class<?> e1, Class<?> e2) {
    method batFastFail (line 120) | void batFastFail(String fieldName) {
    method testEnum (line 124) | @Test
    method testChar (line 130) | @Test
    method testByte (line 139) | @Test
    method testShort (line 148) | @Test
    method testInt (line 157) | @Test
    method testLong (line 166) | @Test
    method fastSucc (line 175) | Object fastSucc(Callable<?> callable) {
    method fastSucc (line 186) | Object fastSucc(String input, Class<?> cls) {
    method fastSucc (line 190) | Object fastSucc(InputStream input, Class<?> cls) {
    method batFastSucc (line 197) | void batFastSucc(Class<?> cls, Object expected) {
    method checkField (line 211) | void checkField(Model model, String fieldName, Object expected) {
    method batFastSucc (line 221) | void batFastSucc(String fieldName, Object expected) {
    method testFloat (line 228) | @Test
    method testDouble (line 237) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestBodyProcessor.java
  class TestBodyProcessor (line 56) | public class TestBodyProcessor {
    method createProcessor (line 75) | private void createProcessor(Class<?> type) {
    method createRawJsonProcessor (line 92) | private void createRawJsonProcessor() {
    method createClientRequest (line 96) | private void createClientRequest() {
    method initInputStream (line 105) | private void initInputStream() throws IOException {
    method setupGetValue (line 109) | private void setupGetValue(Class<?> type) throws IOException {
    method before (line 114) | @BeforeEach
    method testGetValueHaveAttr (line 123) | @Test
    method testGetValueNoAttrNoStream (line 133) | @Test
    method testGetValueTextPlain (line 140) | @Test
    method testGetValueContextTypeJson (line 150) | @Test
    method testGetValueDefaultJson (line 160) | @Test
    method testSetValue (line 168) | @Test
    method testSetValueTextPlain (line 186) | @Test
    method testGetParameterPath (line 205) | @Test
    method testGetProcessorType (line 211) | @Test
    method testGetValueRawJson (line 217) | @Test
    method testGetValueRawJsonHaveAttr (line 226) | @Test
    method testGetValueRawJsonNoAttrNoStream (line 236) | @Test
    method testSetValueRawJson (line 245) | @Test
    class BodyModel (line 261) | static class BodyModel {
    method convertFromFormData (line 267) | @Test
    method convertFromUrlencoded (line 281) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestBodyProcessorCreator.java
  class TestBodyProcessorCreator (line 37) | @SuppressWarnings({"rawtypes", "unchecked"})
    method before (line 41) | @BeforeEach
    method testCreateNormal (line 48) | @Test
    method testCreateRawJson (line 63) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestCookieProcessor.java
  class TestCookieProcessor (line 37) | public class TestCookieProcessor {
    method createProcessor (line 48) | private CookieProcessor createProcessor(String name, Class<?> type) {
    method createProcessor (line 52) | private CookieProcessor createProcessor(String name, Class<?> type, St...
    method createClientRequest (line 56) | private void createClientRequest() {
    method testGetValueNoCookies (line 63) | @Test
    method testNoCookieAndRequired (line 72) | @Test
    method testGetValueCookiesNotFound (line 85) | @Test
    method testGetValueCookiesFound (line 95) | @Test
    method testGetValueRequiredTrue (line 105) | @Test
    method testGetValueRequiredFalse (line 119) | @Test
    method testGetValueCookiesDate (line 129) | @SuppressWarnings("deprecation")
    method testSetValue (line 142) | @Test
    method testSetValueDateFixed (line 151) | @Test
    method testSetValueDate (line 166) | @Test
    method testGetProcessorType (line 182) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestCookieProcessorCreator.java
  class TestCookieProcessorCreator (line 31) | public class TestCookieProcessorCreator {
    method beforeClass (line 34) | @BeforeAll
    method testCreate (line 39) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestFormProcessor.java
  class TestFormProcessor (line 47) | public class TestFormProcessor {
    method createProcessor (line 54) | private FormProcessor createProcessor(String name, Type type) {
    method createProcessor (line 58) | private FormProcessor createProcessor(String name, Type type, String d...
    method testGetValueWithAttr (line 85) | @Test
    method testGetValueNormal (line 96) | @Test
    method testGetValueNormalDate (line 105) | @SuppressWarnings("deprecation")
    method testGetValueContainerTypeNull (line 117) | @Test
    method testGetValueNull (line 126) | @Test
    method testGetValueArray (line 139) | @Test
    method testGetValueList (line 148) | @SuppressWarnings("unchecked")
    method testGetValueSet (line 160) | @SuppressWarnings("unchecked")
    method testSetValue (line 172) | @Test
    method testSetValueDate (line 184) | @Test
    method testGetProcessorType (line 197) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestFormProcessorCreator.java
  class TestFormProcessorCreator (line 32) | @SuppressWarnings({"rawtypes", "unchecked"})
    method testCreate (line 34) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestHeaderProcessor.java
  class TestHeaderProcessor (line 50) | public class TestHeaderProcessor {
    method createProcessor (line 57) | private HeaderProcessor createProcessor(String name, Type type) {
    method createProcessor (line 61) | private HeaderProcessor createProcessor(String name, Type type, String...
    method setUp (line 78) | @BeforeEach
    method testGetValueNormal (line 85) | @Test
    method testGetValueNormalDate (line 94) | @SuppressWarnings("deprecation")
    method testGetValueContainerTypeNull (line 106) | @Test
    method testGetValueRequiredTrue (line 115) | @Test
    method testGetValueRequiredFalse (line 128) | @Test
    method testGetValueArray (line 137) | @Test
    method testGetValueList (line 146) | @SuppressWarnings("unchecked")
    method testGetValueSet (line 158) | @SuppressWarnings("unchecked")
    method testSetValue (line 170) | @Test
    method testSetValueNull (line 182) | @Test
    method testSetValueDateFixed (line 193) | @Test
    method testSetValueDate (line 208) | @Test
    method testGetProcessorType (line 222) | @Test

FILE: common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestHeaderProcessorCreator.java
  class TestHeaderProcessorCr
Copy disabled (too large) Download .json
Condensed preview — 3326 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,297K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 1020,
    "preview": "name: Bug Report\ndescription: Create a report to help us improve\ntitle: \"[BUG] - Issue Title\"\nlabels: bug\n\nbody:\n  - typ"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 619,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: \"Contact Support\"\n    url: \"mailto:dev@servicecomb.apache.org\"\n    "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/documentation_issue.yml",
    "chars": 979,
    "preview": "name: Documentation Issue\ndescription: Report an issue with the documentation\ntitle: \"[DOCUMENTATION] - Documentation Is"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1229,
    "preview": "name: Feature Request\ndescription: Suggest an idea or feature for this project\ntitle: \"[FEATURE] - Feature Title\"\nlabels"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.yml",
    "chars": 1012,
    "preview": "name: General Question\ndescription: Ask a general question related to the project\ntitle: \"[QUESTION] - Question Title\"\nl"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1025,
    "preview": "Follow this checklist to help us incorporate your contribution quickly and easily:\n\n - [ ] Make sure there is a [JIRA is"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 1031,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/checkstyle.yml",
    "chars": 1178,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/linelint.yml",
    "chars": 1102,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/maven.yml",
    "chars": 1565,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/rat_check.yml",
    "chars": 1220,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".github/workflows/typo_check.yml",
    "chars": 1269,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": ".gitignore",
    "chars": 719,
    "preview": "# Output Directory\ntarget/\n\n# C pre-compile\n*.gch\n*.pch\n\n# C compile\n*.a\n*.o\n*.ko\n*.la\n*.lo\n*.obj\n*.elf\n*.so\n*.so.*\n*.dy"
  },
  {
    "path": ".typos.toml",
    "chars": 1063,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE"
  },
  {
    "path": "LICENSE",
    "chars": 14466,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 185,
    "preview": "Apache ServiceComb Java Chassis\nCopyright 2017-2025 The Apache Software Foundation\n\nThis product includes software devel"
  },
  {
    "path": "README.md",
    "chars": 4404,
    "preview": "# Java Chassis [中文](README_ZH.md) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.servicec"
  },
  {
    "path": "README_ZH.md",
    "chars": 3698,
    "preview": "# Java Chassis | [English](README.md) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.serv"
  },
  {
    "path": "ci/README.md",
    "chars": 528,
    "preview": "# Java Chassis Code Checks\n\n* Compilation and Installation\n\n   see .github/workflows/maven.yml\n\n* Checkstyle\n\n  see .git"
  },
  {
    "path": "ci/checkstyle/checkstyle.xml",
    "chars": 6039,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "ci/checkstyle/suppressions.xml",
    "chars": 1088,
    "preview": "<?xml version=\"1.0\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ contributor licens"
  },
  {
    "path": "ci/spotbugs/exclude.xml",
    "chars": 7441,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one\n    or more "
  },
  {
    "path": "clients/README.md",
    "chars": 407,
    "preview": "# About\n\nThis module implements common http clients for servicecomb-service-center, servicecomb-kie and other\n3rd-party "
  },
  {
    "path": "clients/config-center-client/pom.xml",
    "chars": 1800,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterAddressManager.java",
    "chars": 1804,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java",
    "chars": 8972,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterConfigurationChangedEvent.java",
    "chars": 3383,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java",
    "chars": 4653,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterOperation.java",
    "chars": 1743,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/ConfigCenterConfiguration.java",
    "chars": 1239,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/QueryConfigurationsRequest.java",
    "chars": 1987,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/model/QueryConfigurationsResponse.java",
    "chars": 1631,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-common/pom.xml",
    "chars": 1737,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "clients/config-common/src/main/java/org/apache/servicecomb/config/common/ConfigConverter.java",
    "chars": 3168,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-common/src/main/java/org/apache/servicecomb/config/common/exception/OperationException.java",
    "chars": 1138,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/pom.xml",
    "chars": 2061,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java",
    "chars": 10066,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java",
    "chars": 6805,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigOperation.java",
    "chars": 1714,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigurationChangedEvent.java",
    "chars": 3277,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigConstants.java",
    "chars": 1448,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequest.java",
    "chars": 2288,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java",
    "chars": 4394,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsResponse.java",
    "chars": 1608,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KVDoc.java",
    "chars": 2628,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KVResponse.java",
    "chars": 1388,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieAddressManager.java",
    "chars": 1516,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java",
    "chars": 4506,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/LabelDocResponse.java",
    "chars": 1388,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ValueType.java",
    "chars": 954,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/test/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestTest.java",
    "chars": 1244,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/config-kie-client/src/test/java/org/apache/servicecomb/config/kie/client/model/KieAddressManagerTest.java",
    "chars": 3118,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/dashboard-client/pom.xml",
    "chars": 1910,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardAddressManager.java",
    "chars": 1534,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardClient.java",
    "chars": 2326,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/DashboardOperation.java",
    "chars": 1014,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/model/InterfaceInfo.java",
    "chars": 3999,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/dashboard-client/src/main/java/org/apache/servicecomb/dashboard/client/model/MonitorData.java",
    "chars": 3958,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/dashboard-client/src/test/java/org/apache/servicecomb/dashboard/client/AddressManagerTest.java",
    "chars": 3145,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/pom.xml",
    "chars": 2528,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/auth/DefaultRequestAuthHeaderProvider.java",
    "chars": 1165,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/auth/RequestAuthHeaderProvider.java",
    "chars": 1046,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/AbstractAddressManager.java",
    "chars": 11684,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpConfiguration.java",
    "chars": 1601,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpRequest.java",
    "chars": 3200,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpResponse.java",
    "chars": 1913,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransport.java",
    "chars": 1344,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java",
    "chars": 4577,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportImpl.java",
    "chars": 3954,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpUtils.java",
    "chars": 2674,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/MessageObjectMapper.java",
    "chars": 2109,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/SSLSocketFactoryExt.java",
    "chars": 2742,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/URLEndPoint.java",
    "chars": 2640,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/WebSocketListener.java",
    "chars": 1113,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/WebSocketTransport.java",
    "chars": 2450,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/event/EngineConnectChangedEvent.java",
    "chars": 897,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/event/OperationEvents.java",
    "chars": 1164,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/event/RefreshEndpointEvent.java",
    "chars": 2279,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/task/AbstractTask.java",
    "chars": 3848,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/task/Task.java",
    "chars": 897,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/utils/ServiceCombServiceAvailableUtils.java",
    "chars": 3157,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/test/java/org/apache/servicecomb/http/client/common/AbstractAddressManagerTest.java",
    "chars": 14557,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/http-client-common/src/test/java/org/apache/servicecomb/http/client/common/HttpTransportImplTest.java",
    "chars": 2854,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/pom.xml",
    "chars": 1689,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ "
  },
  {
    "path": "clients/service-center-client/README.md",
    "chars": 2893,
    "preview": "## ServiceComb-Service-Center Client for Java\n\n   Sample Java client for ServiceComb-Service-Center HTTP API.\n   If you "
  },
  {
    "path": "clients/service-center-client/pom.xml",
    "chars": 1814,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ c"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/CacheableServiceCenterOperation.java",
    "chars": 912,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/DiscoveryEvents.java",
    "chars": 1785,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/RegistrationEvents.java",
    "chars": 2594,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterAddressManager.java",
    "chars": 1789,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java",
    "chars": 25193,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java",
    "chars": 8367,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterOperation.java",
    "chars": 7911,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClient.java",
    "chars": 6542,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java",
    "chars": 13710,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterWatch.java",
    "chars": 6536,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/exception/OperationException.java",
    "chars": 1443,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/BasePath.java",
    "chars": 1297,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/CreateMicroserviceInstanceRequest.java",
    "chars": 1122,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/CreateMicroserviceRequest.java",
    "chars": 1083,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/CreateSchemaRequest.java",
    "chars": 1211,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/DataCenterInfo.java",
    "chars": 1438,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/ErrorMessage.java",
    "chars": 1412,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/FindMicroserviceInstancesResponse.java",
    "chars": 1637,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/Framework.java",
    "chars": 1227,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/GetSchemaListResponse.java",
    "chars": 1115,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/GetSchemaResponse.java",
    "chars": 1050,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/HealthCheck.java",
    "chars": 1541,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/HealthCheckMode.java",
    "chars": 946,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/HeartbeatsRequest.java",
    "chars": 1696,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/InstancesRequest.java",
    "chars": 1431,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/Microservice.java",
    "chars": 4745,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstance.java",
    "chars": 4261,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstanceResponse.java",
    "chars": 1117,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstanceStatus.java",
    "chars": 997,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceInstancesResponse.java",
    "chars": 1201,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceResponse.java",
    "chars": 1078,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroserviceStatus.java",
    "chars": 947,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/MicroservicesResponse.java",
    "chars": 1162,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/ModifySchemasRequest.java",
    "chars": 1114,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RbacTokenRequest.java",
    "chars": 1474,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RbacTokenResponse.java",
    "chars": 1387,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RegisteredMicroserviceInstanceResponse.java",
    "chars": 1099,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/RegisteredMicroserviceResponse.java",
    "chars": 1084,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/SchemaInfo.java",
    "chars": 1557,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/ServiceCenterConfiguration.java",
    "chars": 1749,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/UpdatePropertiesRequest.java",
    "chars": 1328,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterAddressManagerTest.java",
    "chars": 3585,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java",
    "chars": 21340,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClientTest.java",
    "chars": 2978,
    "preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements.  See the N"
  },
  {
    "path": "common/common-access-log/pom.xml",
    "chars": 2022,
    "preview": "<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one or more\n  ~ contributor license agreements.  See the"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootListener.java",
    "chars": 1340,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootstrap.java",
    "chars": 1406,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfig.java",
    "chars": 2573,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfiguration.java",
    "chars": 1133,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogInitializer.java",
    "chars": 1091,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/client/ClientDefaultInitializer.java",
    "chars": 2151,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/AccessLogGenerator.java",
    "chars": 2797,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/AccessLogItem.java",
    "chars": 1415,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ConfigurableDatetimeAccessItem.java",
    "chars": 4358,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieAccessItem.java",
    "chars": 2788,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondAccessItem.java",
    "chars": 1627,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondAccessItem.java",
    "chars": 1637,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestAccessItem.java",
    "chars": 2392,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodAccessItem.java",
    "chars": 2716,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusAccessItem.java",
    "chars": 2082,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextAccessItem.java",
    "chars": 2756,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostAccessItem.java",
    "chars": 2765,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortAccessItem.java",
    "chars": 2493,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextAccessItem.java",
    "chars": 1635,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringAccessItem.java",
    "chars": 2425,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostAccessItem.java",
    "chars": 2356,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderAccessItem.java",
    "chars": 2713,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolAccessItem.java",
    "chars": 2639,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderAccessItem.java",
    "chars": 2357,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeAccessItem.java",
    "chars": 2072,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdAccessItem.java",
    "chars": 2195,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportAccessItem.java",
    "chars": 2079,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathAccessItem.java",
    "chars": 2859,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryAccessItem.java",
    "chars": 2331,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemCreator.java",
    "chars": 1587,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemMeta.java",
    "chars": 1908,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogPatternParser.java",
    "chars": 1467,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/CompositeVertxRestAccessLogItemMeta.java",
    "chars": 1425,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/VertxRestAccessLogItemMeta.java",
    "chars": 1711,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/DefaultCompositeVertxRestAccessLogItemMeta.java",
    "chars": 6215,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParser.java",
    "chars": 12942,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/placeholder/AccessLogItemTypeEnum.java",
    "chars": 1688,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/server/ServerDefaultInitializer.java",
    "chars": 1998,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.AccessLogInitializer",
    "chars": 930,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta",
    "chars": 886,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "common/common-access-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
    "chars": 1018,
    "preview": "## ---------------------------------------------------------------------------\n## Licensed to the Apache Software Founda"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogGeneratorTest.java",
    "chars": 5181,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemTest.java",
    "chars": 6805,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemTest.java",
    "chars": 7925,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java",
    "chars": 2617,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemTest.java",
    "chars": 3646,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemTest.java",
    "chars": 4237,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemTest.java",
    "chars": 5159,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemTest.java",
    "chars": 3673,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemTest.java",
    "chars": 6013,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemTest.java",
    "chars": 7108,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemTest.java",
    "chars": 5142,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemTest.java",
    "chars": 2030,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemTest.java",
    "chars": 6111,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemTest.java",
    "chars": 6201,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemTest.java",
    "chars": 5328,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemTest.java",
    "chars": 4723,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemTest.java",
    "chars": 5209,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemTest.java",
    "chars": 3127,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemTest.java",
    "chars": 6248,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemTest.java",
    "chars": 4206,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemTest.java",
    "chars": 6121,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemTest.java",
    "chars": 4614,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessLogItem.java",
    "chars": 1714,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessLogItemLowPriority.java",
    "chars": 1648,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestCompositeExtendedAccessLogItemMeta.java",
    "chars": 1613,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestSingleExtendedAccessLogItemMeta.java",
    "chars": 1281,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParserTest.java",
    "chars": 18886,
    "preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOT"
  },
  {
    "path": "common/common-access-log/src/test/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta",
    "chars": 975,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  }
]

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

About this extraction

This page contains the full source code of the ServiceComb/ServiceComb-Java-Chassis GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3326 files (9.1 MB), approximately 2.6M tokens, and a symbol index with 17127 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!