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/
│ │ │ ├── governance/
│ │ │ │ ├── GovernanceCommonConfiguration.java
│ │ │ │ ├── MatchersManager.java
│ │ │ │ ├── MicroserviceMeta.java
│ │ │ │ ├── entity/
│ │ │ │ │ └── Configurable.java
│ │ │ │ ├── event/
│ │ │ │ │ ├── GovernanceConfigurationChangedEvent.java
│ │ │ │ │ └── GovernanceEventManager.java
│ │ │ │ ├── exception/
│ │ │ │ │ └── IllegalArgsOperatorException.java
│ │ │ │ ├── handler/
│ │ │ │ │ ├── AbstractGovernanceHandler.java
│ │ │ │ │ ├── BulkheadHandler.java
│ │ │ │ │ ├── CircuitBreakerHandler.java
│ │ │ │ │ ├── Disposable.java
│ │ │ │ │ ├── DisposableBulkhead.java
│ │ │ │ │ ├── DisposableCircuitBreaker.java
│ │ │ │ │ ├── DisposableHolder.java
│ │ │ │ │ ├── DisposableMap.java
│ │ │ │ │ ├── DisposableRateLimiter.java
│ │ │ │ │ ├── DisposableRetry.java
│ │ │ │ │ ├── DisposableTimeLimiter.java
│ │ │ │ │ ├── FaultInjectionHandler.java
│ │ │ │ │ ├── GovernanceCacheHandler.java
│ │ │ │ │ ├── IdentifierRateLimitingHandler.java
│ │ │ │ │ ├── InstanceBulkheadHandler.java
│ │ │ │ │ ├── InstanceIsolationHandler.java
│ │ │ │ │ ├── LoadBalanceHandler.java
│ │ │ │ │ ├── MapperHandler.java
│ │ │ │ │ ├── RateLimitingHandler.java
│ │ │ │ │ ├── RetryHandler.java
│ │ │ │ │ ├── TimeLimiterHandler.java
│ │ │ │ │ └── ext/
│ │ │ │ │ ├── AbstractCircuitBreakerExtension.java
│ │ │ │ │ ├── AbstractFailurePredictor.java
│ │ │ │ │ ├── AbstractInstanceIsolationExtension.java
│ │ │ │ │ ├── AbstractRetryExtension.java
│ │ │ │ │ ├── ClientRecoverPolicy.java
│ │ │ │ │ ├── FailurePredictor.java
│ │ │ │ │ └── ServerRecoverPolicy.java
│ │ │ │ ├── marker/
│ │ │ │ │ ├── CustomMatcher.java
│ │ │ │ │ ├── GovernanceRequest.java
│ │ │ │ │ ├── GovernanceRequestExtractor.java
│ │ │ │ │ ├── Matcher.java
│ │ │ │ │ ├── RequestProcessor.java
│ │ │ │ │ ├── TrafficMarker.java
│ │ │ │ │ └── operator/
│ │ │ │ │ ├── CompareOperator.java
│ │ │ │ │ ├── ContainsOperator.java
│ │ │ │ │ ├── ExactOperator.java
│ │ │ │ │ ├── MatchOperator.java
│ │ │ │ │ ├── PrefixOperator.java
│ │ │ │ │ ├── RawOperator.java
│ │ │ │ │ └── SuffixOperator.java
│ │ │ │ ├── policy/
│ │ │ │ │ ├── AbstractPolicy.java
│ │ │ │ │ ├── BulkheadPolicy.java
│ │ │ │ │ ├── CircuitBreakerPolicy.java
│ │ │ │ │ ├── FaultInjectionPolicy.java
│ │ │ │ │ ├── GovernanceCachePolicy.java
│ │ │ │ │ ├── IdentifierRateLimitingPolicy.java
│ │ │ │ │ ├── LoadBalancerPolicy.java
│ │ │ │ │ ├── MapperPolicy.java
│ │ │ │ │ ├── RateLimitingPolicy.java
│ │ │ │ │ ├── RetryPolicy.java
│ │ │ │ │ └── TimeLimiterPolicy.java
│ │ │ │ ├── processor/
│ │ │ │ │ ├── injection/
│ │ │ │ │ │ ├── AbortFault.java
│ │ │ │ │ │ ├── AbstractFault.java
│ │ │ │ │ │ ├── DelayFault.java
│ │ │ │ │ │ ├── Fault.java
│ │ │ │ │ │ ├── FaultInjectionConst.java
│ │ │ │ │ │ ├── FaultInjectionDecorators.java
│ │ │ │ │ │ ├── FaultInjectionException.java
│ │ │ │ │ │ ├── FaultInjectionUtil.java
│ │ │ │ │ │ ├── FaultParam.java
│ │ │ │ │ │ ├── FaultResponse.java
│ │ │ │ │ │ └── Sleepable.java
│ │ │ │ │ ├── loadbanlance/
│ │ │ │ │ │ ├── LoadBalance.java
│ │ │ │ │ │ └── LoadBalanceImpl.java
│ │ │ │ │ └── mapping/
│ │ │ │ │ └── Mapper.java
│ │ │ │ ├── properties/
│ │ │ │ │ ├── BulkheadProperties.java
│ │ │ │ │ ├── CircuitBreakerProperties.java
│ │ │ │ │ ├── FaultInjectionProperties.java
│ │ │ │ │ ├── GovernanceCacheProperties.java
│ │ │ │ │ ├── GovernanceProperties.java
│ │ │ │ │ ├── IdentifierRateLimitProperties.java
│ │ │ │ │ ├── InstanceBulkheadProperties.java
│ │ │ │ │ ├── InstanceIsolationProperties.java
│ │ │ │ │ ├── LoadBalanceProperties.java
│ │ │ │ │ ├── MapperProperties.java
│ │ │ │ │ ├── MatchProperties.java
│ │ │ │ │ ├── PolicyProperties.java
│ │ │ │ │ ├── RateLimitProperties.java
│ │ │ │ │ ├── RetryProperties.java
│ │ │ │ │ └── TimeLimiterProperties.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── GovernanceCache.java
│ │ │ │ │ ├── GovernanceCacheImpl.java
│ │ │ │ │ ├── MatchersService.java
│ │ │ │ │ └── MatchersServiceImpl.java
│ │ │ │ └── utils/
│ │ │ │ ├── CustomMatch.java
│ │ │ │ └── GovernanceUtils.java
│ │ │ └── router/
│ │ │ ├── RouterCommonConfiguration.java
│ │ │ ├── RouterFilter.java
│ │ │ ├── cache/
│ │ │ │ └── RouterRuleCache.java
│ │ │ ├── distribute/
│ │ │ │ ├── AbstractRouterDistributor.java
│ │ │ │ └── RouterDistributor.java
│ │ │ ├── exception/
│ │ │ │ └── RouterIllegalParamException.java
│ │ │ ├── match/
│ │ │ │ └── RouterRuleMatcher.java
│ │ │ ├── model/
│ │ │ │ ├── HeaderRule.java
│ │ │ │ ├── PolicyRuleItem.java
│ │ │ │ ├── RouteItem.java
│ │ │ │ ├── ServiceInfoCache.java
│ │ │ │ └── TagItem.java
│ │ │ └── util/
│ │ │ └── VersionCompareUtil.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ ├── governance/
│ │ │ ├── AbstractFailurePredictorTest.java
│ │ │ ├── BulkheadHandlerTest.java
│ │ │ ├── CustomMatchTest.java
│ │ │ ├── FaultInjectionTest.java
│ │ │ ├── FlowControlTest.java
│ │ │ ├── GovernanceCacheHandlerTest.java
│ │ │ ├── GovernancePropertiesTest.java
│ │ │ ├── IdentifierRateLimitingHandlerTest.java
│ │ │ ├── InstanceBulkheadHandlerTest.java
│ │ │ ├── InstanceIsolationTest.java
│ │ │ ├── LoadBalancerTest.java
│ │ │ ├── MapperTest.java
│ │ │ ├── MockCircuitBreakerExtension.java
│ │ │ ├── MockConfiguration.java
│ │ │ ├── MockInstanceIsolationExtension.java
│ │ │ ├── MockMicroserviceMeta.java
│ │ │ ├── MockRetryExtension.java
│ │ │ ├── OperatorTest.java
│ │ │ ├── RetryHandlerTest.java
│ │ │ ├── TimeLimiterHandlerTest.java
│ │ │ ├── handler/
│ │ │ │ └── ext/
│ │ │ │ └── RetryExtensionTest.java
│ │ │ └── mockclasses/
│ │ │ ├── ClassNotImplements.java
│ │ │ ├── ClassWithAnnotation.java
│ │ │ ├── CustomMatchDemo.java
│ │ │ └── service/
│ │ │ ├── MockConfigurationForCustomMatcher.java
│ │ │ └── MockProfileClassUserService.java
│ │ └── router/
│ │ ├── ExampleDistributor.java
│ │ ├── RouterDistributorDynamicConfig2Test.java
│ │ ├── RouterDistributorDynamicConfigTest.java
│ │ ├── RouterDistributorFileConfigTest.java
│ │ ├── RouterDistributorFileWeightLessTest.java
│ │ ├── RouterDistributorFileWithFallbackTest.java
│ │ ├── RouterDistributorGlobalConfigTest.java
│ │ ├── ServiceIns.java
│ │ └── VersionCompareUtilTest.java
│ └── resources/
│ ├── META-INF/
│ │ └── spring/
│ │ └── bean.xml
│ └── application.yaml
├── handlers/
│ ├── handler-fault-injection/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── faultinjection/
│ │ │ │ ├── ConsumerAbortFaultFilter.java
│ │ │ │ ├── ConsumerDelayFaultFilter.java
│ │ │ │ ├── FaultInjectionConfiguration.java
│ │ │ │ ├── FaultInjectionConst.java
│ │ │ │ ├── FaultInjectionUtil.java
│ │ │ │ └── FaultParam.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── faultinjection/
│ │ ├── TestConsumerAbortFaultFilter.java
│ │ ├── TestConsumerDelayFaultFilter.java
│ │ └── TestFaultInjectUtil.java
│ ├── handler-flowcontrol-qps/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── qps/
│ │ │ │ ├── Config.java
│ │ │ │ ├── ConsumerFlowControlFilter.java
│ │ │ │ ├── FlowControlQpsConfiguration.java
│ │ │ │ ├── ProviderFlowControlFilter.java
│ │ │ │ ├── QpsConst.java
│ │ │ │ ├── QpsControllerManager.java
│ │ │ │ ├── QpsStrategy.java
│ │ │ │ └── strategy/
│ │ │ │ ├── AbstractQpsStrategy.java
│ │ │ │ ├── DefaultStrategyFactory.java
│ │ │ │ ├── FixedWindowStrategy.java
│ │ │ │ ├── IStrategyFactory.java
│ │ │ │ ├── LeakyBucketStrategy.java
│ │ │ │ └── TokenBucketStrategy.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ ├── services/
│ │ │ │ └── org.apache.servicecomb.qps.strategy.IStrategyFactory
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── qps/
│ │ ├── QpsControllerManagerTest.java
│ │ └── TestQpsStrategy.java
│ ├── handler-governance/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── handler/
│ │ │ └── governance/
│ │ │ ├── ConsumerInstanceBulkheadFilter.java
│ │ │ ├── ConsumerInstanceIsolationFilter.java
│ │ │ ├── HandlerGovernanceConfiguration.java
│ │ │ ├── ProviderBulkheadFilter.java
│ │ │ ├── ProviderCircuitBreakerFilter.java
│ │ │ └── ProviderRateLimitingFilter.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── handler-loadbalance/
│ │ ├── pom.xml
│ │ ├── readme.MD
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── loadbalance/
│ │ │ │ ├── Configuration.java
│ │ │ │ ├── ExtensionsFactory.java
│ │ │ │ ├── ExtensionsManager.java
│ │ │ │ ├── LoadBalanceConfiguration.java
│ │ │ │ ├── LoadBalanceFilter.java
│ │ │ │ ├── LoadBalancer.java
│ │ │ │ ├── RandomRuleExt.java
│ │ │ │ ├── RoundRobinRuleExt.java
│ │ │ │ ├── RuleExt.java
│ │ │ │ ├── RuleNameExtensionsFactory.java
│ │ │ │ ├── ServerListFilterExt.java
│ │ │ │ ├── ServerMetrics.java
│ │ │ │ ├── ServiceCombServer.java
│ │ │ │ ├── SessionStickinessRule.java
│ │ │ │ ├── WeightedResponseTimeRuleExt.java
│ │ │ │ ├── exception/
│ │ │ │ │ └── LoadbalanceExceptionUtils.java
│ │ │ │ └── filter/
│ │ │ │ ├── InstancePropertyDiscoveryFilter.java
│ │ │ │ ├── PriorityInstancePropertyDiscoveryFilter.java
│ │ │ │ ├── ServerDiscoveryFilter.java
│ │ │ │ └── ZoneAwareDiscoveryFilter.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── loadbalance/
│ │ │ ├── MyServerListFilterExt.java
│ │ │ ├── TestConfiguration.java
│ │ │ ├── TestExtensionsManager.java
│ │ │ ├── TestLoadBalanceCreator.java
│ │ │ ├── TestLoadBalanceFilter.java
│ │ │ ├── TestLoadBalanceFilter2.java
│ │ │ ├── TestLoadBalancer.java
│ │ │ ├── TestRoundRobinRuleExt.java
│ │ │ ├── TestServiceCombServer.java
│ │ │ ├── TestSessionStickinessRule.java
│ │ │ ├── TestWeightedResponseTimeRuleExt.java
│ │ │ ├── exception/
│ │ │ │ └── TestLoadbalanceExceptionUtils.java
│ │ │ └── filter/
│ │ │ ├── PriorityInstancePropertyDiscoveryFilterTest.java
│ │ │ ├── TestInstancePropertyDiscoveryFilter.java
│ │ │ ├── TestServerDiscoveryFilter.java
│ │ │ └── TestZoneAwareDiscoveryFilter.java
│ │ └── resources/
│ │ └── microservice.yaml
│ ├── handler-publickey-auth/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── authentication/
│ │ │ │ ├── AuthenticationBootListener.java
│ │ │ │ ├── AuthenticationConfiguration.java
│ │ │ │ ├── RSAAuthenticationToken.java
│ │ │ │ ├── consumer/
│ │ │ │ │ ├── ConsumerAuthFilter.java
│ │ │ │ │ └── ConsumerTokenManager.java
│ │ │ │ └── provider/
│ │ │ │ ├── AccessController.java
│ │ │ │ ├── PathCheckUtils.java
│ │ │ │ ├── ProviderAuthFilter.java
│ │ │ │ └── ProviderTokenManager.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── authentication/
│ │ │ ├── TestAccessController.java
│ │ │ ├── TestAuthenticationBootListener.java
│ │ │ ├── TestRSAAuthenticationToken.java
│ │ │ └── provider/
│ │ │ ├── TestPathCheckUtils.java
│ │ │ └── TestProviderTokenManager.java
│ │ └── resources/
│ │ └── microservice.yaml
│ ├── handler-router/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── router/
│ │ │ └── custom/
│ │ │ ├── RouterServerListFilter.java
│ │ │ ├── ServiceCombRouterConfiguration.java
│ │ │ └── ServiceCombRouterDistributor.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── services/
│ │ │ └── org.apache.servicecomb.loadbalance.ServerListFilterExt
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── handler-tracing-zipkin/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── tracing/
│ │ │ └── zipkin/
│ │ │ ├── CustomHttpRequestParser.java
│ │ │ ├── CustomHttpResponseParser.java
│ │ │ ├── HttpClientRequestWrapper.java
│ │ │ ├── HttpClientResponseWrapper.java
│ │ │ ├── HttpServeRequestWrapper.java
│ │ │ ├── HttpServerResponseWrapper.java
│ │ │ ├── InvocationAware.java
│ │ │ ├── LogSpanHandler.java
│ │ │ ├── TracingConfiguration.java
│ │ │ └── ZipkinTracingFilter.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── pom.xml
├── huawei-cloud/
│ ├── darklaunch/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── darklaunch/
│ │ │ ├── DarklaunchRule.java
│ │ │ ├── DarklaunchRuleItem.java
│ │ │ ├── DarklaunchRuleItemJson.java
│ │ │ ├── DarklaunchRuleJson.java
│ │ │ ├── DarklaunchServerListFilter.java
│ │ │ ├── PolicyType.java
│ │ │ └── oper/
│ │ │ ├── AbstractCondition.java
│ │ │ ├── AndCondition.java
│ │ │ ├── CaseInsensitiveCondition.java
│ │ │ ├── Condition.java
│ │ │ ├── ConditionFactory.java
│ │ │ ├── EqualCondition.java
│ │ │ ├── GreaterCondition.java
│ │ │ ├── GreaterOrEqualCondition.java
│ │ │ ├── LessCondition.java
│ │ │ ├── LessOrEqualCondition.java
│ │ │ ├── LikeCondition.java
│ │ │ ├── NotEqualCondition.java
│ │ │ ├── OrCondition.java
│ │ │ └── SupportedType.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.apache.servicecomb.loadbalance.ServerListFilterExt
│ ├── dashboard/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── huaweicloud/
│ │ │ │ └── dashboard/
│ │ │ │ └── monitor/
│ │ │ │ ├── DashboardConfiguration.java
│ │ │ │ ├── DataFactory.java
│ │ │ │ ├── DefaultMonitorDataPublisher.java
│ │ │ │ ├── MetricsMonitorDataProvider.java
│ │ │ │ ├── MonitorBootListener.java
│ │ │ │ ├── MonitorInformationCollector.java
│ │ │ │ ├── TransportUtils.java
│ │ │ │ ├── data/
│ │ │ │ │ ├── CPUMonitorCalc.java
│ │ │ │ │ └── MonitorConstant.java
│ │ │ │ └── model/
│ │ │ │ ├── MonitorDataProvider.java
│ │ │ │ └── MonitorDataPublisher.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ ├── services/
│ │ │ │ └── org.apache.servicecomb.core.bootup.BootUpInformationCollector
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── huaweicloud/
│ │ │ └── dashboard/
│ │ │ └── monitor/
│ │ │ └── MetricsMonitorDataProviderTest.java
│ │ └── resources/
│ │ └── microservice.yaml
│ ├── pom.xml
│ └── servicestage/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── huaweicloud/
│ │ │ └── servicestage/
│ │ │ ├── AKSKAuthHeaderProvider.java
│ │ │ ├── CasEnvConfig.java
│ │ │ ├── CasEnvVariablesAdapter.java
│ │ │ ├── RBACBootStrapService.java
│ │ │ ├── ServiceStageConfiguration.java
│ │ │ ├── TokenAuthHeaderProvider.java
│ │ │ └── TokenCacheManager.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── services/
│ │ │ ├── org.apache.servicecomb.foundation.auth.AuthHeaderProvider
│ │ │ ├── org.apache.servicecomb.foundation.auth.Cipher
│ │ │ ├── org.apache.servicecomb.foundation.bootstrap.BootStrapService
│ │ │ └── org.apache.servicecomb.serviceregistry.adapter.EnvAdapter
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── huaweicloud/
│ │ └── servicestage/
│ │ ├── TestAKSKAuthHeaderProvider.java
│ │ └── TestEnvVariablesAdapter.java
│ └── resources/
│ └── log4j2.xml
├── metrics/
│ ├── metrics-core/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── metrics/
│ │ │ │ └── core/
│ │ │ │ ├── InvocationMetersInitializer.java
│ │ │ │ ├── MetricsBootListener.java
│ │ │ │ ├── MetricsCoreConfiguration.java
│ │ │ │ ├── OsMetersInitializer.java
│ │ │ │ ├── SimpleMeterRegistryExt.java
│ │ │ │ ├── StepDistributionSummaryExt.java
│ │ │ │ ├── SystemMetrics.java
│ │ │ │ ├── ThreadPoolMetersInitializer.java
│ │ │ │ ├── VertxMetersInitializer.java
│ │ │ │ ├── meter/
│ │ │ │ │ ├── ConsumerMeters.java
│ │ │ │ │ ├── EdgeMeters.java
│ │ │ │ │ ├── ProducerMeters.java
│ │ │ │ │ ├── ThreadPoolMonitorPublishModelFactory.java
│ │ │ │ │ ├── invocation/
│ │ │ │ │ │ ├── AbstractInvocationMeter.java
│ │ │ │ │ │ ├── AbstractInvocationMeters.java
│ │ │ │ │ │ ├── ConsumerInvocationMeter.java
│ │ │ │ │ │ ├── ConsumerInvocationMeters.java
│ │ │ │ │ │ ├── EdgeInvocationMeter.java
│ │ │ │ │ │ ├── EdgeInvocationMeters.java
│ │ │ │ │ │ ├── MeterInvocationConst.java
│ │ │ │ │ │ ├── ProducerInvocationMeter.java
│ │ │ │ │ │ └── ProducerInvocationMeters.java
│ │ │ │ │ ├── os/
│ │ │ │ │ │ ├── NetMeter.java
│ │ │ │ │ │ ├── OsMeter.java
│ │ │ │ │ │ ├── SystemMeter.java
│ │ │ │ │ │ └── net/
│ │ │ │ │ │ ├── InterfaceUsage.java
│ │ │ │ │ │ └── NetStat.java
│ │ │ │ │ ├── pool/
│ │ │ │ │ │ └── ThreadPoolMeter.java
│ │ │ │ │ └── vertx/
│ │ │ │ │ ├── EndpointMeter.java
│ │ │ │ │ ├── HttpClientEndpointMeter.java
│ │ │ │ │ ├── HttpClientEndpointsMeter.java
│ │ │ │ │ ├── ServerEndpointMeter.java
│ │ │ │ │ ├── ServerEndpointsMeter.java
│ │ │ │ │ └── VertxEndpointsMeter.java
│ │ │ │ └── publish/
│ │ │ │ ├── AbstractMeasurementNodeLogPublisher.java
│ │ │ │ ├── ClientEndpointsLogPublisher.java
│ │ │ │ ├── DefaultLogPublisher.java
│ │ │ │ ├── PublishModelFactory.java
│ │ │ │ ├── PublishUtils.java
│ │ │ │ ├── ServerEndpointsLogPublisher.java
│ │ │ │ ├── SlowInvocationLogger.java
│ │ │ │ └── model/
│ │ │ │ ├── ConsumerPublishModel.java
│ │ │ │ ├── DefaultPublishModel.java
│ │ │ │ ├── EdgePublishModel.java
│ │ │ │ ├── ProducerPublishModel.java
│ │ │ │ ├── ThreadPoolPublishModel.java
│ │ │ │ └── invocation/
│ │ │ │ ├── OperationPerf.java
│ │ │ │ ├── OperationPerfGroup.java
│ │ │ │ ├── OperationPerfGroups.java
│ │ │ │ └── PerfInfo.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── metrics/
│ │ │ └── core/
│ │ │ ├── AssertUtil.java
│ │ │ ├── TestInvocationMetersInitializer.java
│ │ │ ├── TestOsMeterInitializer.java
│ │ │ ├── TestThreadPoolMetersInitializer.java
│ │ │ ├── TestVertxMetersInitializer.java
│ │ │ ├── meter/
│ │ │ │ └── os/
│ │ │ │ ├── TestNetMeter.java
│ │ │ │ └── TestSystemMeter.java
│ │ │ └── publish/
│ │ │ ├── TestDefaultLogPublisher.java
│ │ │ ├── TestInvocationPublishModelFactory.java
│ │ │ ├── TestPublishUtils.java
│ │ │ ├── TestSlowInvocationLogger.java
│ │ │ ├── TestThreadPoolPublishModelFactory.java
│ │ │ └── model/
│ │ │ └── invocation/
│ │ │ ├── TestOperationPerf.java
│ │ │ ├── TestOperationPerfGroup.java
│ │ │ ├── TestPerfInfo.java
│ │ │ └── Utils.java
│ │ └── resources/
│ │ └── log4j2.xml
│ ├── metrics-integration/
│ │ ├── metrics-prometheus/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── apache/
│ │ │ │ │ └── servicecomb/
│ │ │ │ │ └── metrics/
│ │ │ │ │ └── prometheus/
│ │ │ │ │ ├── PrometheusConfiguration.java
│ │ │ │ │ └── PrometheusPublisher.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── spring/
│ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── metrics/
│ │ │ └── prometheus/
│ │ │ └── TestPrometheusPublisher.java
│ │ └── pom.xml
│ └── pom.xml
├── parents/
│ ├── default/
│ │ └── pom.xml
│ └── pom.xml
├── pom.xml
├── providers/
│ ├── pom.xml
│ ├── provider-jaxrs/
│ │ └── pom.xml
│ ├── provider-pojo/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── provider/
│ │ │ │ └── pojo/
│ │ │ │ ├── DefaultMethodMeta.java
│ │ │ │ ├── FilterInvocationCaller.java
│ │ │ │ ├── InstanceFactory.java
│ │ │ │ ├── InvocationCaller.java
│ │ │ │ ├── Invoker.java
│ │ │ │ ├── PojoConst.java
│ │ │ │ ├── PojoConsumerMetaRefresher.java
│ │ │ │ ├── PojoInvocation.java
│ │ │ │ ├── PojoInvocationCreator.java
│ │ │ │ ├── PojoProducerProvider.java
│ │ │ │ ├── ProviderPojoConfiguration.java
│ │ │ │ ├── RpcReference.java
│ │ │ │ ├── RpcReferenceBeanDefinitionRegistry.java
│ │ │ │ ├── RpcSchema.java
│ │ │ │ ├── definition/
│ │ │ │ │ ├── PojoConsumerMeta.java
│ │ │ │ │ └── PojoConsumerOperationMeta.java
│ │ │ │ ├── instance/
│ │ │ │ │ ├── PojoInstanceFactory.java
│ │ │ │ │ └── SpringInstanceFactory.java
│ │ │ │ ├── reference/
│ │ │ │ │ ├── PojoReferenceMeta.java
│ │ │ │ │ ├── ReferenceDefParser.java
│ │ │ │ │ └── RpcReferenceProcessor.java
│ │ │ │ └── schema/
│ │ │ │ ├── PojoProducerMeta.java
│ │ │ │ ├── PojoProducers.java
│ │ │ │ └── SchemaDefParser.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ ├── services/
│ │ │ │ └── org.apache.servicecomb.core.ProducerProvider
│ │ │ ├── spring/
│ │ │ │ ├── namespace.properties
│ │ │ │ ├── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ │ │ ├── spring-paas-cse-rpc-1.0.xsd
│ │ │ │ └── spring-paas-cse-rpc.xsd
│ │ │ ├── spring.handlers
│ │ │ └── spring.schemas
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── provider/
│ │ │ └── pojo/
│ │ │ ├── IPerson.java
│ │ │ ├── Person.java
│ │ │ ├── PersonReference.java
│ │ │ ├── instance/
│ │ │ │ ├── TestPojoInstanceFactory.java
│ │ │ │ └── TestSpringInstanceFactory.java
│ │ │ ├── reference/
│ │ │ │ ├── PojoReferenceMetaTest.java
│ │ │ │ └── TestRpcReferenceProcessor.java
│ │ │ └── schema/
│ │ │ ├── TestPojoProducers.java
│ │ │ └── TestPojoSchemaMeta.java
│ │ └── resources/
│ │ └── microservice.yaml
│ ├── provider-rest-common/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── provider/
│ │ │ │ └── rest/
│ │ │ │ └── common/
│ │ │ │ ├── InvocationToHttpServletRequest.java
│ │ │ │ ├── ProducerHttpRequestArgMapper.java
│ │ │ │ ├── ProducerHttpRequestArgMapperFactory.java
│ │ │ │ ├── ProducerServerWebSocketArgMapperFactory.java
│ │ │ │ ├── ProducerServerWebSocketMapper.java
│ │ │ │ ├── ProviderRestCommonConfiguration.java
│ │ │ │ ├── RestProducerProvider.java
│ │ │ │ ├── RestProducers.java
│ │ │ │ └── RestSchema.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ ├── services/
│ │ │ │ ├── org.apache.servicecomb.core.ProducerProvider
│ │ │ │ └── org.apache.servicecomb.swagger.invocation.arguments.producer.ProducerContextArgumentMapperFactory
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── provider/
│ │ └── rest/
│ │ └── common/
│ │ ├── TestInvocationToHttpServletRequest.java
│ │ ├── TestProducerHttpRequestArgMapper.java
│ │ ├── TestRestProducers.java
│ │ └── TestRestServiceProvider.java
│ └── provider-springmvc/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── provider/
│ │ └── springmvc/
│ │ └── reference/
│ │ ├── AcceptableRestTemplate.java
│ │ ├── CommonToHttpServletRequest.java
│ │ ├── CseClientHttpRequest.java
│ │ ├── CseClientHttpRequestFactory.java
│ │ ├── CseClientHttpResponse.java
│ │ ├── CseHttpEntity.java
│ │ ├── CseHttpMessageConverter.java
│ │ ├── CseHttpMessageConverterExtractor.java
│ │ ├── CseRequestCallback.java
│ │ ├── CseResponseEntityResponseExtractor.java
│ │ ├── CseRestTemplate.java
│ │ ├── CseUriTemplateHandler.java
│ │ ├── RequestMeta.java
│ │ ├── RestTemplateBuilder.java
│ │ ├── RestTemplateWrapper.java
│ │ ├── ServiceCombRestTemplateConfig.java
│ │ ├── UrlWithProviderPrefixClientHttpRequestFactory.java
│ │ └── UrlWithServiceNameClientHttpRequestFactory.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── provider/
│ │ └── springmvc/
│ │ └── reference/
│ │ ├── ServiceCombRestTemplateConfigTest.java
│ │ ├── TestCommonToHttpServletRequest.java
│ │ ├── TestCseClientHttpRequestFactory.java
│ │ ├── TestCseClientHttpResponse.java
│ │ ├── TestCseHttpEntity.java
│ │ ├── TestCseRequestCallback.java
│ │ ├── TestCseRestTemplate.java
│ │ ├── TestCseUriTemplateHandler.java
│ │ ├── TestRequestMeta.java
│ │ ├── TestRestTemplateBuilder.java
│ │ ├── TestRestTemplateWrapper.java
│ │ ├── TestUrlWithProviderPrefixClientHttpRequestFactory.java
│ │ └── TestUrlWithServiceNameClientHttpRequestFactory.java
│ └── resources/
│ ├── log4j2.xml
│ └── microservice.yaml
├── samples/
│ └── README.md
├── service-registry/
│ ├── pom.xml
│ ├── registry-consul/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── registry/
│ │ │ └── consul/
│ │ │ ├── ConsulConfiguration.java
│ │ │ ├── ConsulConst.java
│ │ │ ├── ConsulDiscovery.java
│ │ │ ├── ConsulDiscoveryInstance.java
│ │ │ ├── ConsulInstance.java
│ │ │ ├── ConsulRegistration.java
│ │ │ ├── ConsulRegistrationInstance.java
│ │ │ └── config/
│ │ │ ├── ConsulDiscoveryProperties.java
│ │ │ └── ConsulProperties.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── registry-etcd/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── registry/
│ │ │ └── etcd/
│ │ │ ├── EtcdConfiguration.java
│ │ │ ├── EtcdConst.java
│ │ │ ├── EtcdDiscovery.java
│ │ │ ├── EtcdDiscoveryInstance.java
│ │ │ ├── EtcdInstance.java
│ │ │ ├── EtcdRegistration.java
│ │ │ ├── EtcdRegistrationInstance.java
│ │ │ └── EtcdRegistryProperties.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── registry-lightweight/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── registry/
│ │ │ │ └── lightweight/
│ │ │ │ ├── AbstractLightweightDiscovery.java
│ │ │ │ ├── AbstractLightweightRegistration.java
│ │ │ │ ├── DiscoveryClient.java
│ │ │ │ ├── DiscoveryEndpoint.java
│ │ │ │ ├── LightWeightRegistryConfiguration.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── MessageExecutor.java
│ │ │ │ ├── MessageType.java
│ │ │ │ ├── MicroserviceInfo.java
│ │ │ │ ├── RegisterException.java
│ │ │ │ ├── RegisterInstanceEvent.java
│ │ │ │ ├── RegisterRequest.java
│ │ │ │ ├── SchemaChangedEvent.java
│ │ │ │ ├── Self.java
│ │ │ │ ├── StoreService.java
│ │ │ │ ├── UnregisterRequest.java
│ │ │ │ ├── model/
│ │ │ │ │ ├── AbstractPropertiesLoader.java
│ │ │ │ │ ├── FindInstancesResponse.java
│ │ │ │ │ ├── HealthCheck.java
│ │ │ │ │ ├── HealthCheckMode.java
│ │ │ │ │ ├── InstancePropertiesLoader.java
│ │ │ │ │ ├── Microservice.java
│ │ │ │ │ ├── MicroserviceFactory.java
│ │ │ │ │ ├── MicroserviceInstance.java
│ │ │ │ │ ├── MicroserviceInstances.java
│ │ │ │ │ └── MicroservicePropertiesLoader.java
│ │ │ │ └── store/
│ │ │ │ ├── AppStore.java
│ │ │ │ ├── InstanceStore.java
│ │ │ │ ├── MicroserviceStore.java
│ │ │ │ └── Store.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── registry/
│ │ ├── config/
│ │ │ └── TestAbstractPropertiesLoader.java
│ │ └── lightweight/
│ │ ├── MessageTest.java
│ │ └── StoreServiceTest.java
│ ├── registry-local/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── localregistry/
│ │ │ ├── LocalDiscovery.java
│ │ │ ├── LocalDiscoveryInstance.java
│ │ │ ├── LocalRegistration.java
│ │ │ ├── LocalRegistrationInstance.java
│ │ │ ├── LocalRegistryConfiguration.java
│ │ │ ├── LocalRegistryConst.java
│ │ │ ├── LocalRegistryStore.java
│ │ │ └── RegistryBean.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── registry-nacos/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── registry/
│ │ │ └── nacos/
│ │ │ ├── NacosConfiguration.java
│ │ │ ├── NacosConst.java
│ │ │ ├── NacosDiscovery.java
│ │ │ ├── NacosDiscoveryInstance.java
│ │ │ ├── NacosDiscoveryProperties.java
│ │ │ ├── NacosMicroserviceHandler.java
│ │ │ ├── NacosRegistration.java
│ │ │ ├── NacosRegistrationInstance.java
│ │ │ └── NamingServiceManager.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── registry-service-center/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── registry/
│ │ │ └── sc/
│ │ │ ├── MicroserviceHandler.java
│ │ │ ├── SCAddressManager.java
│ │ │ ├── SCClientUtils.java
│ │ │ ├── SCConfiguration.java
│ │ │ ├── SCConfigurationProperties.java
│ │ │ ├── SCConst.java
│ │ │ ├── SCDiscovery.java
│ │ │ ├── SCDiscoveryInstance.java
│ │ │ ├── SCRegistration.java
│ │ │ └── SCRegistrationInstance.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── registry-zero-config/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── zeroconfig/
│ │ │ ├── AbstractZeroConfigRegistration.java
│ │ │ ├── Config.java
│ │ │ ├── ZeroConfigConst.java
│ │ │ ├── ZeroConfigDiscovery.java
│ │ │ ├── ZeroConfigDiscoveryInstance.java
│ │ │ ├── ZeroConfigRegistration.java
│ │ │ ├── ZeroConfigRegistrationInstance.java
│ │ │ ├── ZeroConfigRegistryConfiguration.java
│ │ │ └── multicast/
│ │ │ ├── Multicast.java
│ │ │ └── MulticastServer.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── registry-zookeeper/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── registry/
│ │ └── zookeeper/
│ │ ├── ZookeeperConfiguration.java
│ │ ├── ZookeeperConst.java
│ │ ├── ZookeeperDiscovery.java
│ │ ├── ZookeeperDiscoveryInstance.java
│ │ ├── ZookeeperInstance.java
│ │ ├── ZookeeperRegistration.java
│ │ ├── ZookeeperRegistrationInstance.java
│ │ └── ZookeeperRegistryProperties.java
│ └── resources/
│ └── META-INF/
│ └── spring/
│ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
├── solutions/
│ ├── pom.xml
│ └── solution-basic/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── solution/
│ │ │ └── basic/
│ │ │ └── integration/
│ │ │ ├── HealthEndpoint.java
│ │ │ ├── HealthEndpointImpl.java
│ │ │ ├── HealthInstancePing.java
│ │ │ ├── InstanceOpenAPIRegistry.java
│ │ │ ├── IntegrationConfiguration.java
│ │ │ ├── ManagementEndpoint.java
│ │ │ ├── ManagementEndpointImpl.java
│ │ │ ├── MetricsEndpoint.java
│ │ │ └── MetricsEndpointImpl.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── microservice.yaml
│ └── test/
│ └── java/
│ └── org/
│ └── apache/
│ └── servicecomb/
│ └── solution/
│ └── basic/
│ └── integration/
│ ├── TestHealthEndpointImpl.java
│ ├── TestManagementEndpointImpl.java
│ └── TestMetricsEndpointImpl.java
├── spring-boot/
│ ├── pom.xml
│ └── spring-boot-starters/
│ ├── java-chassis-spring-boot-starter-servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── springboot/
│ │ │ └── starter/
│ │ │ └── servlet/
│ │ │ ├── RestServletInitializer.java
│ │ │ ├── SpringBootStarterServletConfiguration.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── java-chassis-spring-boot-starter-standalone/
│ │ └── pom.xml
│ └── pom.xml
├── swagger/
│ ├── pom.xml
│ ├── swagger-generator/
│ │ ├── generator-core/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── apache/
│ │ │ │ │ └── servicecomb/
│ │ │ │ │ └── swagger/
│ │ │ │ │ ├── SwaggerUtils.java
│ │ │ │ │ ├── converter/
│ │ │ │ │ │ ├── AbstractConverter.java
│ │ │ │ │ │ ├── Converter.java
│ │ │ │ │ │ ├── ConverterMgr.java
│ │ │ │ │ │ └── property/
│ │ │ │ │ │ ├── AbstractPropertyConverter.java
│ │ │ │ │ │ ├── ArrayPropertyConverter.java
│ │ │ │ │ │ ├── MapPropertyConverter.java
│ │ │ │ │ │ └── ObjectPropertyConverter.java
│ │ │ │ │ ├── extend/
│ │ │ │ │ │ ├── ConcreteTypeRegister.java
│ │ │ │ │ │ ├── DefaultModelResolveObjectMapperProvider.java
│ │ │ │ │ │ ├── ModelResolveObjectMapperProvider.java
│ │ │ │ │ │ ├── ModelResolverExt.java
│ │ │ │ │ │ ├── SwaggerEnum.java
│ │ │ │ │ │ ├── annotations/
│ │ │ │ │ │ │ └── RawJsonRequestBody.java
│ │ │ │ │ │ ├── introspector/
│ │ │ │ │ │ │ └── JsonPropertyIntrospector.java
│ │ │ │ │ │ ├── module/
│ │ │ │ │ │ │ └── EnumModuleExt.java
│ │ │ │ │ │ └── property/
│ │ │ │ │ │ └── creator/
│ │ │ │ │ │ ├── ByteArrayPropertyCreator.java
│ │ │ │ │ │ ├── BytePropertyCreator.java
│ │ │ │ │ │ ├── InputStreamPropertyCreator.java
│ │ │ │ │ │ ├── PartPropertyCreator.java
│ │ │ │ │ │ └── PropertyCreator.java
│ │ │ │ │ └── generator/
│ │ │ │ │ ├── ClassAnnotationProcessor.java
│ │ │ │ │ ├── MethodAnnotationProcessor.java
│ │ │ │ │ ├── OperationGenerator.java
│ │ │ │ │ ├── ParameterAnnotationProcessor.java
│ │ │ │ │ ├── ParameterGenerator.java
│ │ │ │ │ ├── ParameterTypeProcessor.java
│ │ │ │ │ ├── ResponseTypeProcessor.java
│ │ │ │ │ ├── SwaggerConst.java
│ │ │ │ │ ├── SwaggerContextRegister.java
│ │ │ │ │ ├── SwaggerGenerator.java
│ │ │ │ │ ├── SwaggerGeneratorFactory.java
│ │ │ │ │ ├── SwaggerGeneratorUtils.java
│ │ │ │ │ ├── SwaggerParameterAnnotationProcessor.java
│ │ │ │ │ ├── core/
│ │ │ │ │ │ ├── AbstractOperationGenerator.java
│ │ │ │ │ │ ├── AbstractSwaggerGenerator.java
│ │ │ │ │ │ ├── OperationGeneratorContext.java
│ │ │ │ │ │ ├── ParameterGeneratorContext.java
│ │ │ │ │ │ ├── SwaggerGeneratorContext.java
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── HttpParameterType.java
│ │ │ │ │ │ │ ├── SwaggerOperation.java
│ │ │ │ │ │ │ └── SwaggerOperations.java
│ │ │ │ │ │ ├── processor/
│ │ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ │ ├── AnnotationUtils.java
│ │ │ │ │ │ │ │ ├── ApiResponseMethodProcessor.java
│ │ │ │ │ │ │ │ ├── ApiResponsesMethodProcessor.java
│ │ │ │ │ │ │ │ ├── OpenAPIDefinitionProcessor.java
│ │ │ │ │ │ │ │ ├── OperationMethodAnnotationProcessor.java
│ │ │ │ │ │ │ │ ├── RequestBodyMethodAnnotationProcessor.java
│ │ │ │ │ │ │ │ └── package-info.java
│ │ │ │ │ │ │ ├── parameter/
│ │ │ │ │ │ │ │ ├── HttpServletRequestContextRegister.java
│ │ │ │ │ │ │ │ ├── ParameterParameterAnnotationProcessor.java
│ │ │ │ │ │ │ │ ├── PartArrayParameterTypeProcessor.java
│ │ │ │ │ │ │ │ ├── PartListParameterTypeProcessor.java
│ │ │ │ │ │ │ │ ├── PartParameterTypeProcessor.java
│ │ │ │ │ │ │ │ ├── RawJsonRequestBodyProcessor.java
│ │ │ │ │ │ │ │ ├── RequestBodyParameterAnnotationProcessor.java
│ │ │ │ │ │ │ │ └── ServerWebSocketContextRegister.java
│ │ │ │ │ │ │ └── response/
│ │ │ │ │ │ │ ├── CompletableFutureProcessor.java
│ │ │ │ │ │ │ ├── DefaultResponseTypeProcessor.java
│ │ │ │ │ │ │ ├── OptionalProcessor.java
│ │ │ │ │ │ │ └── PublisherProcessor.java
│ │ │ │ │ │ ├── unittest/
│ │ │ │ │ │ │ ├── UnitTestSwaggerUtils.java
│ │ │ │ │ │ │ └── package-info.java
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ └── MethodUtils.java
│ │ │ │ │ ├── pojo/
│ │ │ │ │ │ ├── PojoOperationGenerator.java
│ │ │ │ │ │ ├── PojoSwaggerGenerator.java
│ │ │ │ │ │ └── PojoSwaggerGeneratorFactory.java
│ │ │ │ │ └── rest/
│ │ │ │ │ ├── RestOperationGenerator.java
│ │ │ │ │ └── RestSwaggerGenerator.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── io.swagger.v3.core.converter.ModelConverter
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ClassAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.MethodAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ParameterAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ParameterTypeProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ResponseTypeProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.SwaggerContextRegister
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.SwaggerGenerator
│ │ │ │ └── org.apache.servicecomb.swagger.generator.SwaggerGeneratorFactory
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ ├── TestSwaggerUtils.java
│ │ │ │ ├── extend/
│ │ │ │ │ ├── introspector/
│ │ │ │ │ │ └── JsonPropertyIntrospectorTest.java
│ │ │ │ │ ├── module/
│ │ │ │ │ │ └── EnumModuleExtTest.java
│ │ │ │ │ └── property/
│ │ │ │ │ └── creator/
│ │ │ │ │ └── TestPartPropertyCreator.java
│ │ │ │ └── generator/
│ │ │ │ └── core/
│ │ │ │ ├── TestApiOperation.java
│ │ │ │ ├── TestApiResponse.java
│ │ │ │ ├── TestArrayType.java
│ │ │ │ ├── TestClassUtils.java
│ │ │ │ ├── TestOperationGenerator.java
│ │ │ │ ├── TestPojo.java
│ │ │ │ ├── TestPojoExample.java
│ │ │ │ ├── TestSwaggerDefinition.java
│ │ │ │ ├── TestSwaggerGenerator.java
│ │ │ │ ├── TestSwaggerUtils.java
│ │ │ │ ├── model/
│ │ │ │ │ └── TestSwaggerOperations.java
│ │ │ │ ├── pojo/
│ │ │ │ │ ├── PojoExample1.java
│ │ │ │ │ ├── TestType1.java
│ │ │ │ │ ├── TestType2.java
│ │ │ │ │ ├── TestTypeClass.java
│ │ │ │ │ ├── TestTypeEnumLang.java
│ │ │ │ │ └── TestTypeRecord.java
│ │ │ │ ├── processor/
│ │ │ │ │ └── annotation/
│ │ │ │ │ ├── OpenAPIDefinitionProcessorTest.java
│ │ │ │ │ └── OperationMethodAnnotationProcessorTest.java
│ │ │ │ ├── schema/
│ │ │ │ │ ├── AllType.java
│ │ │ │ │ ├── ArrayType.java
│ │ │ │ │ ├── RepeatOperation.java
│ │ │ │ │ └── Schema.java
│ │ │ │ └── utils/
│ │ │ │ ├── TestMethodUtils.java
│ │ │ │ ├── methodUtilsModel/
│ │ │ │ │ ├── AbstractBaseClass.java
│ │ │ │ │ ├── AbstractBean.java
│ │ │ │ │ ├── BaseInterface.java
│ │ │ │ │ ├── Hello2Endpoint.java
│ │ │ │ │ ├── HelloBean.java
│ │ │ │ │ ├── HelloEndpoint.java
│ │ │ │ │ └── ServiceInterface.java
│ │ │ │ └── paramUtilsModel/
│ │ │ │ ├── AbstractBaseService.java
│ │ │ │ ├── AbstractBean.java
│ │ │ │ ├── IBaseService.java
│ │ │ │ ├── IMyService.java
│ │ │ │ ├── IMyServiceChild.java
│ │ │ │ ├── IMyServiceChild2.java
│ │ │ │ ├── MyEndpoint.java
│ │ │ │ ├── MyEndpoint2.java
│ │ │ │ └── PersonBean.java
│ │ │ └── resources/
│ │ │ ├── schemas/
│ │ │ │ ├── ParameterAnnotation.yaml
│ │ │ │ ├── Schema.yaml
│ │ │ │ ├── allMethod.yaml
│ │ │ │ ├── allType.yaml
│ │ │ │ ├── apiOperation.yaml
│ │ │ │ ├── apiResponse.yaml
│ │ │ │ ├── array.yaml
│ │ │ │ ├── boolean.yaml
│ │ │ │ ├── booleanObject.yaml
│ │ │ │ ├── byte.yaml
│ │ │ │ ├── byteObject.yaml
│ │ │ │ ├── bytes.yaml
│ │ │ │ ├── bytesObject.yaml
│ │ │ │ ├── char.yaml
│ │ │ │ ├── charObject.yaml
│ │ │ │ ├── completableFuture.yaml
│ │ │ │ ├── date.yaml
│ │ │ │ ├── double.yaml
│ │ │ │ ├── doubleObject.yaml
│ │ │ │ ├── enum.yaml
│ │ │ │ ├── float.yaml
│ │ │ │ ├── floatObject.yaml
│ │ │ │ ├── ignoreRequest.yaml
│ │ │ │ ├── int.yaml
│ │ │ │ ├── intObject.yaml
│ │ │ │ ├── list.yaml
│ │ │ │ ├── long.yaml
│ │ │ │ ├── longObject.yaml
│ │ │ │ ├── map.yaml
│ │ │ │ ├── mapList.yaml
│ │ │ │ ├── multiParam.yaml
│ │ │ │ ├── nestedListString.yaml
│ │ │ │ ├── object.yaml
│ │ │ │ ├── oneEnum.yaml
│ │ │ │ ├── part.yaml
│ │ │ │ ├── partArray.yaml
│ │ │ │ ├── partList.yaml
│ │ │ │ ├── pojoExample1.yaml
│ │ │ │ ├── responseHeader.yaml
│ │ │ │ ├── set.yaml
│ │ │ │ ├── short.yaml
│ │ │ │ ├── shortObject.yaml
│ │ │ │ ├── string.yaml
│ │ │ │ ├── testCompletableFutureOptional.yaml
│ │ │ │ ├── testOptional.yaml
│ │ │ │ └── wrapToBodyWithDesc.yaml
│ │ │ ├── swagger1.yaml
│ │ │ └── swagger2.yaml
│ │ ├── generator-jaxrs/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── apache/
│ │ │ │ │ └── servicecomb/
│ │ │ │ │ └── swagger/
│ │ │ │ │ └── generator/
│ │ │ │ │ └── jaxrs/
│ │ │ │ │ ├── JaxrsOperationGenerator.java
│ │ │ │ │ ├── JaxrsSwaggerGenerator.java
│ │ │ │ │ ├── JaxrsSwaggerGeneratorFactory.java
│ │ │ │ │ └── processor/
│ │ │ │ │ ├── annotation/
│ │ │ │ │ │ ├── ConsumesClassAnnotationProcessor.java
│ │ │ │ │ │ ├── ConsumesMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── CookieParamParameterAnnotationProcessor.java
│ │ │ │ │ │ ├── DeleteMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── FormParamParameterAnnotationProcessor.java
│ │ │ │ │ │ ├── GetMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── HeaderParamParameterAnnotationProcessor.java
│ │ │ │ │ │ ├── JaxrsClassAnnotationProcessor.java
│ │ │ │ │ │ ├── JaxrsMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── JaxrsParameterAnnotationProcessor.java
│ │ │ │ │ │ ├── PatchMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── PathClassAnnotationProcessor.java
│ │ │ │ │ │ ├── PathMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── PathParamParameterAnnotationProcessor.java
│ │ │ │ │ │ ├── PostMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── ProducesClassAnnotationProcessor.java
│ │ │ │ │ │ ├── ProducesMethodAnnotationProcessor.java
│ │ │ │ │ │ ├── PutMethodAnnotationProcessor.java
│ │ │ │ │ │ └── QueryParamParameterAnnotationProcessor.java
│ │ │ │ │ └── response/
│ │ │ │ │ └── JaxrsResponseProcessor.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ClassAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.MethodAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ParameterAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ResponseTypeProcessor
│ │ │ │ └── org.apache.servicecomb.swagger.generator.SwaggerGeneratorFactory
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ └── generator/
│ │ │ │ └── jaxrs/
│ │ │ │ ├── ClassAnnotation.java
│ │ │ │ ├── ClassMethodNoPath.java
│ │ │ │ ├── Echo.java
│ │ │ │ ├── FullSwaggerService.java
│ │ │ │ ├── MultiDefaultPath.java
│ │ │ │ ├── TestClassAnnotation.java
│ │ │ │ ├── TestJaxrs.java
│ │ │ │ └── model/
│ │ │ │ ├── AggregatedParam.java
│ │ │ │ ├── BeanParamComplexField.java
│ │ │ │ ├── BeanParamComplexSetter.java
│ │ │ │ ├── BeanParamDefaultBody.java
│ │ │ │ ├── BeanParamInvalidDefaultBody.java
│ │ │ │ ├── BeanParamWithJsonIgnoredTagged.java
│ │ │ │ ├── BeanParamWithPart.java
│ │ │ │ ├── ConsumesAndProduces.java
│ │ │ │ └── enums/
│ │ │ │ ├── DynamicStatus.java
│ │ │ │ ├── DynamicStatusBeanParam.java
│ │ │ │ ├── DynamicStatusModel.java
│ │ │ │ ├── JdkStatus.java
│ │ │ │ ├── JdkStatusBeanParam.java
│ │ │ │ └── JdkStatusModel.java
│ │ │ └── resources/
│ │ │ └── schemas/
│ │ │ ├── ClassAnnotation.yaml
│ │ │ ├── FullSwaggerService.yaml
│ │ │ ├── aggregatedParam.yaml
│ │ │ ├── beanParamDefaultBody.yaml
│ │ │ ├── beanParamWithJsonIgnoredTagged.yaml
│ │ │ ├── beanParamWithPart.yaml
│ │ │ ├── consumes.yaml
│ │ │ ├── cookie.yaml
│ │ │ ├── dynamicStatusEnum.yaml
│ │ │ ├── echo.yaml
│ │ │ ├── emptyContract.yaml
│ │ │ ├── emptyPath.yaml
│ │ │ ├── enumBody.yaml
│ │ │ ├── form.yaml
│ │ │ ├── jdkStatusEnum.yaml
│ │ │ ├── nestedListString.yaml
│ │ │ ├── patch.yaml
│ │ │ ├── query.yaml
│ │ │ ├── rawJsonStringMethod.yaml
│ │ │ ├── response.yaml
│ │ │ └── responseText.yaml
│ │ ├── generator-spring-data/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── apache/
│ │ │ │ │ └── servicecomb/
│ │ │ │ │ └── swagger/
│ │ │ │ │ └── generator/
│ │ │ │ │ └── springdata/
│ │ │ │ │ ├── SpringDataConcreteTypeRegister.java
│ │ │ │ │ └── SpringDataModule.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── com.fasterxml.jackson.databind.Module
│ │ │ │ └── org.apache.servicecomb.swagger.extend.ConcreteTypeRegister
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ └── generator/
│ │ │ │ └── springdata/
│ │ │ │ └── TestPageResponseTypeProcessor.java
│ │ │ └── resources/
│ │ │ └── pageSchema.yaml
│ │ ├── generator-springmvc/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── apache/
│ │ │ │ │ └── servicecomb/
│ │ │ │ │ └── swagger/
│ │ │ │ │ └── generator/
│ │ │ │ │ └── springmvc/
│ │ │ │ │ ├── SpringmvcOperationGenerator.java
│ │ │ │ │ ├── SpringmvcSwaggerGenerator.java
│ │ │ │ │ ├── SpringmvcSwaggerGeneratorFactory.java
│ │ │ │ │ ├── processor/
│ │ │ │ │ │ ├── annotation/
│ │ │ │ │ │ │ ├── AbstractHttpMethodMappingAnnotationProcessor.java
│ │ │ │ │ │ │ ├── CookieValueAnnotationProcessor.java
│ │ │ │ │ │ │ ├── DeleteMappingMethodAnnotationProcessor.java
│ │ │ │ │ │ │ ├── GetMappingMethodAnnotationProcessor.java
│ │ │ │ │ │ │ ├── PatchMappingMethodAnnotationProcessor.java
│ │ │ │ │ │ │ ├── PathVariableAnnotationProcessor.java
│ │ │ │ │ │ │ ├── PostMappingMethodAnnotationProcessor.java
│ │ │ │ │ │ │ ├── PutMappingMethodAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RequestAttributeAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RequestBodyAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RequestHeaderAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RequestMappingClassAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RequestMappingMethodAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RequestParamParameterProcessor.java
│ │ │ │ │ │ │ ├── RequestPartAnnotationProcessor.java
│ │ │ │ │ │ │ ├── RestControllerClassAnnotationProcessor.java
│ │ │ │ │ │ │ └── SpringmvcParameterAnnotationsProcessor.java
│ │ │ │ │ │ ├── parameter/
│ │ │ │ │ │ │ ├── MultipartFileArrayProcessor.java
│ │ │ │ │ │ │ ├── MultipartFileListProcessor.java
│ │ │ │ │ │ │ └── MultipartFileTypeProcessor.java
│ │ │ │ │ │ └── response/
│ │ │ │ │ │ └── ResponseEntityProcessor.java
│ │ │ │ │ └── property/
│ │ │ │ │ └── creator/
│ │ │ │ │ └── MultipartFilePropertyCreator.java
│ │ │ │ └── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── services/
│ │ │ │ ├── org.apache.servicecomb.swagger.extend.property.creator.PropertyCreator
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ClassAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.MethodAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ParameterAnnotationProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ParameterTypeProcessor
│ │ │ │ ├── org.apache.servicecomb.swagger.generator.ResponseTypeProcessor
│ │ │ │ └── org.apache.servicecomb.swagger.generator.SwaggerGeneratorFactory
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ └── generator/
│ │ │ │ └── springmvc/
│ │ │ │ ├── ClassMethodNoHttpMethod.java
│ │ │ │ ├── ClassMethodNoPath.java
│ │ │ │ ├── ClassMultiHttpMethod.java
│ │ │ │ ├── ClassMultiPath.java
│ │ │ │ ├── Echo.java
│ │ │ │ ├── MethodDefaultParameter.java
│ │ │ │ ├── MethodEmptyPath.java
│ │ │ │ ├── MethodMixupAnnotations.java
│ │ │ │ ├── MethodMultiPath.java
│ │ │ │ ├── MethodResponseEntity.java
│ │ │ │ ├── MultiDefaultPath.java
│ │ │ │ ├── TestSpringmvc.java
│ │ │ │ ├── TestTwoSameNameModels.java
│ │ │ │ ├── model/
│ │ │ │ │ ├── DefaultParameterSchema.java
│ │ │ │ │ ├── Generic.java
│ │ │ │ │ ├── RestControllerWithPathSchema.java
│ │ │ │ │ ├── SwaggerTestTarget.java
│ │ │ │ │ ├── SwaggerTestTarget_ValueOverWritePath.java
│ │ │ │ │ ├── TestParam.java
│ │ │ │ │ ├── TestProducer.java
│ │ │ │ │ ├── same1/
│ │ │ │ │ │ ├── SameModel.java
│ │ │ │ │ │ └── SameModelThrow.java
│ │ │ │ │ └── same2/
│ │ │ │ │ ├── SameModel.java
│ │ │ │ │ └── SameModelThrow.java
│ │ │ │ ├── processor/
│ │ │ │ │ └── annotation/
│ │ │ │ │ └── RequestPartAnnotationProcessorTest.java
│ │ │ │ └── property/
│ │ │ │ └── creator/
│ │ │ │ └── MultipartFilePropertyCreatorTest.java
│ │ │ └── resources/
│ │ │ └── schemas/
│ │ │ ├── DefaultParameterSchema.yaml
│ │ │ ├── DemoRest.yaml
│ │ │ ├── MethodEmptyPath.yaml
│ │ │ ├── RestControllerWithPathSchema.yaml
│ │ │ ├── asyncResponseEntity.yaml
│ │ │ ├── cookie.yaml
│ │ │ ├── defaultParameter.yaml
│ │ │ ├── echo.yaml
│ │ │ ├── emptyPath.yaml
│ │ │ ├── enumBody.yaml
│ │ │ ├── inheritHttpMethod.yaml
│ │ │ ├── mixupAnnotations.yaml
│ │ │ ├── nestedListString.yaml
│ │ │ ├── part.yaml
│ │ │ ├── partAnnotation.yaml
│ │ │ ├── partArray.yaml
│ │ │ ├── partArrayAnnotation.yaml
│ │ │ ├── partList.yaml
│ │ │ ├── partListAnnotation.yaml
│ │ │ ├── rawJsonStringMethod.yaml
│ │ │ ├── requestMappingHttpMethod.yaml
│ │ │ ├── responseEntity.yaml
│ │ │ ├── swaggerTestTarget.yaml
│ │ │ ├── swaggerTestTarget_ValueOverWritePath.yaml
│ │ │ ├── testBlankMediaType.yaml
│ │ │ ├── testCompletableFutureResponseEntityOptional.yaml
│ │ │ ├── testMultipleMediaType.yaml
│ │ │ ├── testObjectParam.yaml
│ │ │ ├── testResponseEntityOptional.yaml
│ │ │ ├── testSimpleParam.yaml
│ │ │ └── testSingleMediaType.yaml
│ │ └── pom.xml
│ └── swagger-invocation/
│ ├── invocation-core/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ ├── engine/
│ │ │ │ │ ├── SwaggerConsumer.java
│ │ │ │ │ ├── SwaggerConsumerOperation.java
│ │ │ │ │ ├── SwaggerEnvironment.java
│ │ │ │ │ ├── SwaggerProducer.java
│ │ │ │ │ └── SwaggerProducerOperation.java
│ │ │ │ └── invocation/
│ │ │ │ ├── AsyncResponse.java
│ │ │ │ ├── InvocationType.java
│ │ │ │ ├── Response.java
│ │ │ │ ├── SwaggerInvocation.java
│ │ │ │ ├── arguments/
│ │ │ │ │ ├── AbstractArgumentsMapperCreator.java
│ │ │ │ │ ├── ArgumentMapper.java
│ │ │ │ │ ├── ArgumentsMapper.java
│ │ │ │ │ ├── ContextArgumentMapperFactory.java
│ │ │ │ │ ├── consumer/
│ │ │ │ │ │ ├── ArgumentsMapperCommon.java
│ │ │ │ │ │ ├── ArgumentsMapperDirectReuse.java
│ │ │ │ │ │ ├── ConsumerArgumentMapper.java
│ │ │ │ │ │ ├── ConsumerArgumentSame.java
│ │ │ │ │ │ ├── ConsumerArgumentToBodyField.java
│ │ │ │ │ │ ├── ConsumerArgumentsMapperCreator.java
│ │ │ │ │ │ ├── ConsumerBeanParamMapper.java
│ │ │ │ │ │ ├── ConsumerContextArgumentMapperFactory.java
│ │ │ │ │ │ ├── ConsumerInvocationContextMapper.java
│ │ │ │ │ │ └── ConsumerInvocationContextMapperFactory.java
│ │ │ │ │ └── producer/
│ │ │ │ │ ├── AbstractProducerContextArgMapper.java
│ │ │ │ │ ├── ProducerArgumentMapper.java
│ │ │ │ │ ├── ProducerArgumentSame.java
│ │ │ │ │ ├── ProducerArgumentsMapper.java
│ │ │ │ │ ├── ProducerArgumentsMapperCreator.java
│ │ │ │ │ ├── ProducerBeanParamMapper.java
│ │ │ │ │ ├── ProducerContextArgumentMapperFactory.java
│ │ │ │ │ ├── ProducerInvocationContextMapper.java
│ │ │ │ │ ├── ProducerInvocationContextMapperFactory.java
│ │ │ │ │ └── SwaggerBodyFieldToProducerArgument.java
│ │ │ │ ├── context/
│ │ │ │ │ ├── ContextUtils.java
│ │ │ │ │ ├── HttpStatus.java
│ │ │ │ │ ├── HttpStatusManager.java
│ │ │ │ │ ├── InvocationContext.java
│ │ │ │ │ ├── InvocationContextCompletableFuture.java
│ │ │ │ │ ├── TransportContext.java
│ │ │ │ │ └── VertxTransportContext.java
│ │ │ │ ├── converter/
│ │ │ │ │ ├── Converter.java
│ │ │ │ │ └── impl/
│ │ │ │ │ └── part/
│ │ │ │ │ ├── BytesToPartConverter.java
│ │ │ │ │ ├── FileToPartConverter.java
│ │ │ │ │ ├── InputStreamToPartConverter.java
│ │ │ │ │ ├── PartListToPartArrayConverter.java
│ │ │ │ │ ├── PartListToPartListConverter.java
│ │ │ │ │ ├── PartToPartConverter.java
│ │ │ │ │ └── ResourceToPartConverter.java
│ │ │ │ ├── exception/
│ │ │ │ │ ├── CommonExceptionData.java
│ │ │ │ │ ├── ExceptionFactory.java
│ │ │ │ │ └── InvocationException.java
│ │ │ │ ├── generator/
│ │ │ │ │ ├── InvocationContextProcessor.java
│ │ │ │ │ └── ScbResponseProcessor.java
│ │ │ │ └── response/
│ │ │ │ ├── ResponseMapperFactories.java
│ │ │ │ ├── ResponseMapperFactory.java
│ │ │ │ ├── ResponseMetaMapper.java
│ │ │ │ ├── ResponsesMeta.java
│ │ │ │ ├── consumer/
│ │ │ │ │ ├── CompletableFutureConsumerResponseMapperFactory.java
│ │ │ │ │ ├── ConsumerResponseMapper.java
│ │ │ │ │ ├── ConsumerResponseMapperFactory.java
│ │ │ │ │ ├── CseResponseConsumerResponseMapperFactory.java
│ │ │ │ │ ├── DefaultConsumerResponseMapper.java
│ │ │ │ │ ├── DefaultConsumerResponseMapperFactory.java
│ │ │ │ │ ├── OptionalConsumerResponseMapper.java
│ │ │ │ │ └── OptionalConsumerResponseMapperFactory.java
│ │ │ │ └── producer/
│ │ │ │ ├── CompletableFutureProducerResponseMapperFactory.java
│ │ │ │ ├── CseResponseProducerResponseMapperFactory.java
│ │ │ │ ├── DefaultProducerResponseMapper.java
│ │ │ │ ├── DefaultProducerResponseMapperFactory.java
│ │ │ │ ├── OptionalProducerResponseMapper.java
│ │ │ │ ├── OptionalProducerResponseMapperFactory.java
│ │ │ │ ├── ProducerResponseMapper.java
│ │ │ │ └── ProducerResponseMapperFactory.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.apache.servicecomb.swagger.generator.ResponseTypeProcessor
│ │ │ ├── org.apache.servicecomb.swagger.generator.SwaggerContextRegister
│ │ │ ├── org.apache.servicecomb.swagger.invocation.arguments.consumer.ConsumerContextArgumentMapperFactory
│ │ │ ├── org.apache.servicecomb.swagger.invocation.arguments.producer.ProducerContextArgumentMapperFactory
│ │ │ ├── org.apache.servicecomb.swagger.invocation.converter.Converter
│ │ │ ├── org.apache.servicecomb.swagger.invocation.response.consumer.ConsumerResponseMapperFactory
│ │ │ └── org.apache.servicecomb.swagger.invocation.response.producer.ProducerResponseMapperFactory
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ ├── core/
│ │ │ ├── TestException.java
│ │ │ └── TestResponse.java
│ │ └── swagger/
│ │ ├── engine/
│ │ │ ├── TestSwaggerEnvironment.java
│ │ │ └── TestSwaggerProducerOperation.java
│ │ └── invocation/
│ │ ├── TestSwaggerInvocation.java
│ │ ├── arguments/
│ │ │ ├── consumer/
│ │ │ │ ├── TestJaxrsV1V1.java
│ │ │ │ ├── TestJaxrsV1V2.java
│ │ │ │ ├── TestJaxrsV2V1.java
│ │ │ │ ├── TestJaxrsV2V2.java
│ │ │ │ ├── TestPojoOneArg.java
│ │ │ │ ├── TestPojoV1V1.java
│ │ │ │ ├── TestPojoV1V2.java
│ │ │ │ ├── TestPojoV2V1.java
│ │ │ │ ├── TestPojoV2V2.java
│ │ │ │ ├── TestSpringmvcV1V1.java
│ │ │ │ ├── TestSpringmvcV1V2.java
│ │ │ │ ├── TestSpringmvcV2V1.java
│ │ │ │ └── TestSpringmvcV2V2.java
│ │ │ └── producer/
│ │ │ ├── TestJaxrs.java
│ │ │ ├── TestPojo.java
│ │ │ ├── TestPojoOneArg.java
│ │ │ └── TestSpringmvc.java
│ │ ├── context/
│ │ │ ├── TestContextUtils.java
│ │ │ └── TestInvocationContext.java
│ │ ├── converter/
│ │ │ └── impl/
│ │ │ └── part/
│ │ │ ├── PartListToPartArrayConverterTest.java
│ │ │ ├── PartListToPartListConverterTest.java
│ │ │ ├── PartToPartConverterTest.java
│ │ │ ├── TestBytesToPartConverter.java
│ │ │ ├── TestFileToPartConverter.java
│ │ │ ├── TestInputStreamToPartConverter.java
│ │ │ └── TestResourceToPartConverter.java
│ │ ├── exception/
│ │ │ └── CommonExceptionDataTest.java
│ │ ├── models/
│ │ │ ├── JaxrsImpl.java
│ │ │ ├── Person.java
│ │ │ ├── PojoConsumerIntf.java
│ │ │ ├── PojoImpl.java
│ │ │ ├── ProducerImpl.java
│ │ │ └── SpringmvcImpl.java
│ │ ├── response/
│ │ │ ├── TestResponsesMeta.java
│ │ │ ├── consumer/
│ │ │ │ └── TestConsumerResponseMapperFactories.java
│ │ │ └── producer/
│ │ │ └── TestProducerResponseMapperFactories.java
│ │ └── schemas/
│ │ ├── ConsumerAddBodyV1.java
│ │ ├── ConsumerAddBodyV2.java
│ │ ├── ConsumerAddV1.java
│ │ ├── ConsumerAddV2.java
│ │ ├── ConsumerAddWithContext.java
│ │ ├── ConsumerOneArg.java
│ │ ├── JaxrsAddBeanParamV1.java
│ │ ├── JaxrsAddBeanParamV2.java
│ │ ├── JaxrsAddBodyV1.java
│ │ ├── JaxrsAddBodyV2.java
│ │ ├── JaxrsAddV1.java
│ │ ├── JaxrsAddV2.java
│ │ ├── PojoAddBodyV1.java
│ │ ├── PojoAddBodyV2.java
│ │ ├── PojoAddV1.java
│ │ ├── PojoAddV2.java
│ │ ├── PojoAddWithContextV1.java
│ │ ├── PojoOneArg.java
│ │ ├── SpringmvcAddBodyV1.java
│ │ ├── SpringmvcAddBodyV2.java
│ │ ├── SpringmvcAddV1.java
│ │ ├── SpringmvcAddV2.java
│ │ ├── SpringmvcAddWrapperV1.java
│ │ ├── SpringmvcAddWrapperV2.java
│ │ └── models/
│ │ ├── AddBeanParamV1.java
│ │ ├── AddBeanParamV2.java
│ │ ├── AddWrapperV1.java
│ │ └── AddWrapperV2.java
│ ├── invocation-jaxrs/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ └── invocation/
│ │ │ │ └── jaxrs/
│ │ │ │ └── response/
│ │ │ │ ├── JaxrsConsumerResponseMapper.java
│ │ │ │ ├── JaxrsConsumerResponseMapperFactory.java
│ │ │ │ ├── JaxrsProducerResponseMapper.java
│ │ │ │ └── JaxrsProducerResponseMapperFactory.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.apache.servicecomb.swagger.invocation.response.consumer.ConsumerResponseMapperFactory
│ │ │ └── org.apache.servicecomb.swagger.invocation.response.producer.ProducerResponseMapperFactory
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── swagger/
│ │ │ └── invocation/
│ │ │ └── jaxrs/
│ │ │ └── response/
│ │ │ ├── TestJaxrsConsumerResponseMapper.java
│ │ │ ├── TestJaxrsProducerResponseMapper.java
│ │ │ └── TestJaxrsProducerResponseMapperFactory.java
│ │ └── resources/
│ │ └── log4j2.xml
│ ├── invocation-springmvc/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── apache/
│ │ │ │ └── servicecomb/
│ │ │ │ └── swagger/
│ │ │ │ └── invocation/
│ │ │ │ ├── converter/
│ │ │ │ │ ├── PartListToMultipartArrayConverter.java
│ │ │ │ │ ├── PartListToMultipartListConverter.java
│ │ │ │ │ ├── PartToMultipartConverter.java
│ │ │ │ │ └── PartToMultipartFile.java
│ │ │ │ └── springmvc/
│ │ │ │ └── response/
│ │ │ │ ├── SpringmvcConsumerResponseMapper.java
│ │ │ │ ├── SpringmvcConsumerResponseMapperFactory.java
│ │ │ │ ├── SpringmvcProducerResponseMapper.java
│ │ │ │ └── SpringmvcProducerResponseMapperFactory.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ ├── org.apache.servicecomb.swagger.invocation.converter.Converter
│ │ │ ├── org.apache.servicecomb.swagger.invocation.response.consumer.ConsumerResponseMapperFactory
│ │ │ └── org.apache.servicecomb.swagger.invocation.response.producer.ProducerResponseMapperFactory
│ │ └── test/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── swagger/
│ │ │ └── invocation/
│ │ │ ├── converter/
│ │ │ │ └── TestPartToMultipartFile.java
│ │ │ └── springmvc/
│ │ │ └── response/
│ │ │ ├── TestSpringmvcConsumerResponseMapper.java
│ │ │ ├── TestSpringmvcProducerResponseMapper.java
│ │ │ └── TestSpringmvcProducerResponseMapperFactory.java
│ │ └── resources/
│ │ └── log4j2.xml
│ ├── invocation-validator/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── swagger/
│ │ │ └── invocation/
│ │ │ └── validator/
│ │ │ └── DefaultParameterNameProvider.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── swagger/
│ │ └── invocation/
│ │ └── validator/
│ │ └── TestDefaultParameterNameProvider.java
│ └── pom.xml
├── tracing/
│ ├── README.md
│ ├── pom.xml
│ ├── tracing-common/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── tracing/
│ │ └── Span.java
│ └── tracing-zipkin/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── tracing/
│ │ └── zipkin/
│ │ ├── EnableZipkinTracing.java
│ │ ├── ZipkinSpanAspect.java
│ │ ├── ZipkinSpanAspectConfig.java
│ │ └── ZipkinTracingAdviser.java
│ └── test/
│ └── java/
│ └── org/
│ └── apache/
│ └── servicecomb/
│ └── tracing/
│ └── zipkin/
│ ├── ZipkinSpanAspectTest.java
│ ├── ZipkinTracingAdviserTest.java
│ └── app/
│ └── ZipkinSpanTestApplication.java
└── transports/
├── pom.xml
├── transport-common/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── transport/
│ │ └── common/
│ │ └── TransportConfigUtils.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── transport/
│ │ └── common/
│ │ └── TestTransportConfigUtils.java
│ └── resources/
│ └── log4j2.xml
├── transport-highway/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── transport/
│ │ │ └── highway/
│ │ │ ├── HighwayClient.java
│ │ │ ├── HighwayClientConnection.java
│ │ │ ├── HighwayClientConnectionPool.java
│ │ │ ├── HighwayClientFilter.java
│ │ │ ├── HighwayClientPackage.java
│ │ │ ├── HighwayClientPoolFactory.java
│ │ │ ├── HighwayCodec.java
│ │ │ ├── HighwayConfig.java
│ │ │ ├── HighwayOutputStream.java
│ │ │ ├── HighwayProducerInvocationFlow.java
│ │ │ ├── HighwayServer.java
│ │ │ ├── HighwayServerCodecFilter.java
│ │ │ ├── HighwayServerConnection.java
│ │ │ ├── HighwayServerVerticle.java
│ │ │ ├── HighwayTransport.java
│ │ │ ├── HighwayTransportContext.java
│ │ │ ├── MsgType.java
│ │ │ ├── TransportHighwayConfiguration.java
│ │ │ └── message/
│ │ │ ├── Headers.java
│ │ │ ├── LoginRequest.java
│ │ │ ├── LoginResponse.java
│ │ │ ├── RequestHeader.java
│ │ │ └── ResponseHeader.java
│ │ └── resources/
│ │ ├── LoginRequest.proto
│ │ ├── LoginResponse.proto
│ │ ├── META-INF/
│ │ │ ├── services/
│ │ │ │ └── org.apache.servicecomb.core.Transport
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ ├── RequestHeader.proto
│ │ ├── ResponseHeader.proto
│ │ └── microservice.yaml
│ └── test/
│ └── java/
│ └── org/
│ └── apache/
│ └── servicecomb/
│ └── transport/
│ ├── common/
│ │ └── MockUtil.java
│ └── highway/
│ ├── HighwayServerCodecFilterTest.java
│ ├── TestHighwayClient.java
│ ├── TestHighwayTransport.java
│ ├── TestHighwayVerticle.java
│ └── message/
│ ├── TestHeaders.java
│ ├── TestLoginRequest.java
│ ├── TestLoginResponse.java
│ ├── TestRequestHeader.java
│ └── TestResponseHeader.java
└── transport-rest/
├── pom.xml
├── transport-rest-client/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── transport/
│ │ │ └── rest/
│ │ │ └── client/
│ │ │ ├── BoundaryFactory.java
│ │ │ ├── Http2TransportHttpClientOptionsSPI.java
│ │ │ ├── HttpClientRequestFactory.java
│ │ │ ├── HttpTransportHttpClientOptionsSPI.java
│ │ │ ├── RestClientCodecFilter.java
│ │ │ ├── RestClientDecoder.java
│ │ │ ├── RestClientEncoder.java
│ │ │ ├── RestClientExceptionCodes.java
│ │ │ ├── RestClientRequestParameters.java
│ │ │ ├── RestClientRequestParametersImpl.java
│ │ │ ├── RestClientSender.java
│ │ │ ├── RestClientSenderFilter.java
│ │ │ ├── RestClientTransportContext.java
│ │ │ ├── RestClientTransportContextFactory.java
│ │ │ ├── TransportClientConfig.java
│ │ │ ├── TransportRestClientConfiguration.java
│ │ │ ├── WebSocketClientCodecFilter.java
│ │ │ └── WebSocketClientTransportContext.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── services/
│ │ │ └── org.apache.servicecomb.foundation.vertx.client.http.HttpClientOptionsSPI
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── transport/
│ │ └── rest/
│ │ └── client/
│ │ ├── FakeRestTransport.java
│ │ └── RestFeatureController.java
│ └── resources/
│ └── log4j2.xml
├── transport-rest-servlet/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── servicecomb/
│ │ │ └── transport/
│ │ │ └── rest/
│ │ │ └── servlet/
│ │ │ ├── RestAsyncListener.java
│ │ │ ├── RestServlet.java
│ │ │ ├── RestServletInjector.java
│ │ │ ├── RestServletProducerInvocationCreator.java
│ │ │ ├── ServletConfig.java
│ │ │ ├── ServletRestDispatcher.java
│ │ │ ├── ServletRestTransport.java
│ │ │ └── ServletUtils.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.apache.servicecomb.core.Transport
│ └── test/
│ └── java/
│ └── org/
│ └── apache/
│ └── servicecomb/
│ └── transport/
│ └── rest/
│ └── servlet/
│ ├── TestRestAsyncListener.java
│ ├── TestRestServlet.java
│ ├── TestRestServletInjector.java
│ ├── TestServletRestTransport.java
│ └── TestServletUtils.java
└── transport-rest-vertx/
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── servicecomb/
│ │ └── transport/
│ │ └── rest/
│ │ └── vertx/
│ │ ├── AbstractVertxHttpDispatcher.java
│ │ ├── GlobalRestFailureHandler.java
│ │ ├── HttpServerExceptionHandler.java
│ │ ├── RestBodyHandler.java
│ │ ├── RestServerVerticle.java
│ │ ├── TransportConfig.java
│ │ ├── VertxHttpDispatcher.java
│ │ ├── VertxRestDispatcher.java
│ │ ├── VertxRestTransport.java
│ │ ├── WebSocketDispatcher.java
│ │ ├── WebSocketProducerInvocationFlow.java
│ │ └── WebSocketTransport.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ ├── org.apache.servicecomb.core.Transport
│ └── org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher
└── test/
└── java/
└── org/
└── apache/
└── servicecomb/
└── transport/
└── rest/
└── vertx/
├── MockForRestServerVerticle.java
├── MockHttpServerResponse.java
├── TestAbstractVertxHttpDispatcher.java
├── TestRestServerVerticle.java
├── TestVertxRestDispatcher.java
└── TestVertxRestTransport.java
================================================
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) [](http://search.maven.org/#search%7Cga%7C1%7Corg.apache.servicecomb) [](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) [](http://search.maven.org/#search%7Cga%7C1%7Corg.apache.servicecomb) [](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
================================================
================================================
FILE: ci/checkstyle/suppressions.xml
================================================
================================================
FILE: ci/spotbugs/exclude.xml
================================================
================================================
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
================================================
clients
org.apache.servicecomb
3.4.0-SNAPSHOT
4.0.0
config-center-client
ServiceComb::Clients::Config Center Client
org.apache.servicecomb
http-client-common
org.apache.servicecomb
config-clients-common
================================================
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 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> 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 configurations = new HashMap<>();
String uri = null;
try {
uri = address + "/configuration/items?dimensionsInfo="
+ HttpUtils.encodeURLParam(dimensionsInfo) + "&revision=" + request.getRevision();
Map 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> allConfigMap = HttpUtils.deserialize(
httpResponse.getContent(),
new TypeReference