This is an automated email from the ASF dual-hosted git repository. wujimin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 058f471ba801b98341dfb3862b0ee3c2b5743785 Author: wujimin <wuji...@huawei.com> AuthorDate: Fri May 4 16:49:52 2018 +0800 [SCB-538] serviceComb core switch to use SwaggerToClassGenerator --- .../apache/servicecomb/core/definition/OperationMeta.java | 4 +--- .../apache/servicecomb/core/definition/SchemaMeta.java | 15 +++++++++++---- .../core/definition/schema/AbstractSchemaFactory.java | 3 --- .../core/definition/schema/ProducerSchemaFactory.java | 2 +- .../java/org/apache/servicecomb/core/TestDefinition.java | 3 ++- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java b/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java index d6bbb8d..a01caca 100644 --- a/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java +++ b/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java @@ -68,9 +68,7 @@ public class OperationMeta { executor = ExecutorManager.findExecutor(this); - responsesMeta.init(schemaMeta.getMicroserviceMeta().getClassLoader(), - schemaMeta.getPackageName(), - schemaMeta.getSwagger(), + responsesMeta.init(schemaMeta.getSwaggerToClassGenerator(), swaggerOperation, method.getGenericReturnType()); } diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java index 864b616..5652904 100644 --- a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java +++ b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java @@ -24,7 +24,7 @@ import java.util.Map.Entry; import org.apache.servicecomb.core.Handler; import org.apache.servicecomb.core.exception.ExceptionUtils; import org.apache.servicecomb.foundation.common.utils.ReflectUtils; -import org.apache.servicecomb.swagger.generator.core.utils.ClassUtils; +import org.apache.servicecomb.swagger.converter.SwaggerToClassGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,6 +54,8 @@ public class SchemaMeta extends CommonService<OperationMeta> { private List<Handler> providerHandlerChain; + private SwaggerToClassGenerator swaggerToClassGenerator; + public SchemaMeta(Swagger swagger, MicroserviceMeta microserviceMeta, String schemaId) { this.packageName = SchemaUtils.generatePackageName(microserviceMeta, schemaId); @@ -62,8 +64,9 @@ public class SchemaMeta extends CommonService<OperationMeta> { this.microserviceMeta = microserviceMeta; this.microserviceQualifiedName = microserviceMeta.getName() + "." + schemaId; - // 确保swagger对应的接口是存在的 - swaggerIntf = ClassUtils.getOrCreateInterface(swagger, microserviceMeta.getClassLoader(), packageName); + + swaggerToClassGenerator = new SwaggerToClassGenerator(microserviceMeta.getClassLoader(), swagger, packageName); + swaggerIntf = swaggerToClassGenerator.convert(); createOperationMgr("schemaMeta " + schemaId + " operation mgr"); operationMgr.setRegisterErrorFmt("Operation name repeat, schema=%s, operation=%s"); @@ -71,6 +74,10 @@ public class SchemaMeta extends CommonService<OperationMeta> { initOperations(); } + public SwaggerToClassGenerator getSwaggerToClassGenerator() { + return swaggerToClassGenerator; + } + public String getPackageName() { return packageName; } @@ -92,7 +99,7 @@ public class SchemaMeta extends CommonService<OperationMeta> { // in this place, do not throw exception when method not exists // eg: // swagger interface is a.b.c, and consumer interface is a.b.c too. - // version 1, there are the same + // version 1, they are the same // version 2, producer add a new operation, that means swagger have more operation than consumer interface a.b.c // interface a.b.c in consumer process is the old interface // so for swagger, can not do any valid check here diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java b/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java index 7c4ec9e..30e0dff 100644 --- a/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java +++ b/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java @@ -30,7 +30,6 @@ import org.apache.servicecomb.serviceregistry.api.Const; import org.apache.servicecomb.swagger.generator.core.CompositeSwaggerGeneratorContext; import org.apache.servicecomb.swagger.generator.core.SwaggerGenerator; import org.apache.servicecomb.swagger.generator.core.SwaggerGeneratorContext; -import org.apache.servicecomb.swagger.generator.core.utils.ClassUtils; import io.swagger.models.Swagger; @@ -108,8 +107,6 @@ public abstract class AbstractSchemaFactory<CONTEXT extends SchemaContext> { SchemaUtils.generatePackageName(context.getMicroserviceMeta(), context.getSchemaId())); generator.generate(); - // 确保接口是存在的 - ClassUtils.getOrCreateInterface(generator); return generator; } } diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java index 75adf3e..5f51eea 100644 --- a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java +++ b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java @@ -79,7 +79,7 @@ public class ProducerSchemaFactory extends AbstractSchemaFactory<ProducerSchemaC SchemaMeta schemaMeta = getOrCreateSchema(context); - SwaggerProducer producer = swaggerEnv.createProducer(producerInstance, schemaMeta.getSwagger()); + SwaggerProducer producer = swaggerEnv.createProducer(producerInstance, schemaMeta.getSwaggerIntf()); Executor reactiveExecutor = BeanUtils.getBean(ExecutorManager.EXECUTOR_REACTIVE); for (OperationMeta operationMeta : schemaMeta.getOperations()) { SwaggerProducerOperation producerOperation = producer.findOperation(operationMeta.getOperationId()); diff --git a/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java b/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java index 7226bb4..9f91589 100644 --- a/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java +++ b/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java @@ -83,7 +83,8 @@ public class TestDefinition { Info oInfo = new Info(); oInfo.setVendorExtension("x-java-interface", "java.lang.String"); oSwagger.setInfo(oInfo); - Assert.assertEquals("java.lang.String", (ClassUtils.getJavaInterface(oSwagger)).getName()); + Assert.assertEquals("java.lang.String", + (ClassUtils.getInterfaceName(oSwagger.getInfo().getVendorExtensions()))); oInfo.setVendorExtension("x-java-class", "java.lang.String"); } } -- To stop receiving notification emails like this one, please contact wuji...@apache.org.