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.

Reply via email to