You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2017/12/23 08:26:18 UTC

[incubator-servicecomb-java-chassis] branch master updated (7fb4030 -> dcee409)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git.


    from 7fb4030  JAV-555 & SCB-10 for trigger ci
     new d53cd85  JAV-582 load ResponseTypeProcessor by SPI mechanism
     new f6bc728  JAV-582 springmvc responseEntity switch to new mechanism
     new a18684b  JAV-582 jaxrs Response switch to new mechanism
     new dcee409  JAV-582 support generate swagger from return CompletableFuture method

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/AbstractSwaggerGeneratorContext.java      |  4 +-
 .../generator/core/ResponseTypeProcessor.java      |  2 +
 .../AbstractOneGenericResponseProcessor.java}      |  8 ++--
 .../response/CompletableFutureProcessor.java       | 12 +++---
 .../response/DefaultResponseTypeProcessor.java     |  5 +++
 ...mb.swagger.generator.core.ResponseTypeProcessor |  2 +-
 .../swagger/generator/core/TestSwaggerUtils.java   |  5 +++
 .../TestAbstractOneGenericResponseProcessor.java}  | 43 +++++++++++++++++-----
 .../response/TestCompletableFutureProcessor.java   | 10 +++--
 .../swagger/generator/core/schema/Schema.java      |  5 +++
 .../src/test/resources/schemas/allMethod.yaml      |  9 +++++
 .../test/resources/schemas/completableFuture.yaml  | 21 +++++++++++
 .../jaxrs/JaxrsSwaggerGeneratorContext.java        |  9 -----
 ...eProcessor.java => JaxrsResponseProcessor.java} |  7 +++-
 ...mb.swagger.generator.core.ResponseTypeProcessor |  2 +-
 .../SpringmvcSwaggerGeneratorContext.java          |  9 -----
 .../response/ResponseEntityProcessor.java          | 21 +++--------
 ...mb.swagger.generator.core.ResponseTypeProcessor |  2 +-
 .../springmvc/TestResponseEntityProcessor.java     | 19 ++++------
 19 files changed, 121 insertions(+), 74 deletions(-)
 copy swagger/swagger-generator/{generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java => generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/AbstractOneGenericResponseProcessor.java} (88%)
 copy core/src/test/java/io/servicecomb/core/definition/MicroServicePropertyExtendedStub.java => swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/CompletableFutureProcessor.java (75%)
 copy demo/demo-edge/edge-service/src/main/resources/config/log4j.properties => swagger/swagger-generator/generator-core/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor (90%)
 copy swagger/swagger-generator/generator-core/src/{main/java/io/servicecomb/swagger/generator/core/processor/response/DefaultResponseTypeProcessor.java => test/java/io/servicecomb/swagger/generator/core/processor/response/TestAbstractOneGenericResponseProcessor.java} (50%)
 copy providers/provider-springmvc/src/test/java/io/servicecomb/provider/springmvc/reference/TestCseRestTemplate.java => swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestCompletableFutureProcessor.java (71%)
 create mode 100644 swagger/swagger-generator/generator-core/src/test/resources/schemas/completableFuture.yaml
 rename swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/{ResponseProcessor.java => JaxrsResponseProcessor.java} (91%)
 copy demo/demo-edge/edge-service/src/main/resources/config/log4j.properties => swagger/swagger-generator/generator-jaxrs/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor (90%)
 copy demo/demo-edge/edge-service/src/main/resources/config/log4j.properties => swagger/swagger-generator/generator-springmvc/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor (90%)
 copy foundations/foundation-vertx/src/test/java/io/servicecomb/foundation/vertx/TestSimpleJsonObject.java => swagger/swagger-generator/generator-springmvc/src/test/java/io/servicecomb/swagger/generator/springmvc/TestResponseEntityProcessor.java (67%)

-- 
To stop receiving notification emails like this one, please contact
['"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>'].

[incubator-servicecomb-java-chassis] 02/04: JAV-582 springmvc responseEntity switch to new mechanism

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit f6bc728b34ca3537fdf29579e253a9d236128e46
Author: wujimin <wu...@huawei.com>
AuthorDate: Thu Dec 21 11:21:57 2017 +0800

    JAV-582 springmvc responseEntity switch to new mechanism
---
 .../AbstractOneGenericResponseProcessor.java}      |  8 +--
 .../TestAbstractOneGenericResponseProcessor.java   | 61 ++++++++++++++++++++++
 .../SpringmvcSwaggerGeneratorContext.java          |  9 ----
 .../response/ResponseEntityProcessor.java          | 21 ++------
 ...mb.swagger.generator.core.ResponseTypeProcessor | 18 +++++++
 .../springmvc/TestResponseEntityProcessor.java     | 32 ++++++++++++
 6 files changed, 121 insertions(+), 28 deletions(-)

diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/AbstractOneGenericResponseProcessor.java
similarity index 88%
copy from swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java
copy to swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/AbstractOneGenericResponseProcessor.java
index 888bece..9dadaa4 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/AbstractOneGenericResponseProcessor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package io.servicecomb.swagger.generator.springmvc.processor.response;
+package io.servicecomb.swagger.generator.core.processor.response;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -25,8 +25,10 @@ import io.servicecomb.swagger.generator.core.utils.ParamUtils;
 import io.swagger.converter.ModelConverters;
 import io.swagger.models.properties.Property;
 
-public class ResponseEntityProcessor implements ResponseTypeProcessor {
-
+// eg:
+// ResponseEntiry<T>
+// CompletableFurture<T>
+public abstract class AbstractOneGenericResponseProcessor implements ResponseTypeProcessor {
   @Override
   public Property process(OperationGenerator operationGenerator) {
     ParameterizedType type =
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestAbstractOneGenericResponseProcessor.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestAbstractOneGenericResponseProcessor.java
new file mode 100644
index 0000000..5826bd0
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestAbstractOneGenericResponseProcessor.java
@@ -0,0 +1,61 @@
+/*
+ * 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 io.servicecomb.swagger.generator.core.processor.response;
+
+import java.lang.reflect.Method;
+
+import javax.xml.ws.Holder;
+
+import org.hamcrest.Matchers;
+import org.junit.Assert;
+import org.junit.Test;
+
+import io.servicecomb.foundation.common.utils.ReflectUtils;
+import io.servicecomb.swagger.generator.core.OperationGenerator;
+import io.servicecomb.swagger.generator.core.ResponseTypeProcessor;
+import io.swagger.models.properties.Property;
+import io.swagger.models.properties.StringProperty;
+import mockit.Expectations;
+import mockit.Mocked;
+
+public class TestAbstractOneGenericResponseProcessor {
+  static ResponseTypeProcessor processor = new AbstractOneGenericResponseProcessor() {
+    @SuppressWarnings("unused")
+    public Holder<String> generic() {
+      return null;
+    }
+
+    @Override
+    public Class<?> getResponseType() {
+      return null;
+    }
+  };
+
+  @Test
+  public void process(@Mocked OperationGenerator operationGenerator) {
+    Method providerMethod = ReflectUtils.findMethod(processor.getClass(), "generic");
+    new Expectations() {
+      {
+        operationGenerator.getProviderMethod();
+        result = providerMethod;
+      }
+    };
+    Property property = processor.process(operationGenerator);
+
+    Assert.assertThat(property, Matchers.instanceOf(StringProperty.class));
+  }
+}
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/SpringmvcSwaggerGeneratorContext.java b/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/SpringmvcSwaggerGeneratorContext.java
index b9503ed..a7a9fa1 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/SpringmvcSwaggerGeneratorContext.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/SpringmvcSwaggerGeneratorContext.java
@@ -19,7 +19,6 @@ package io.servicecomb.swagger.generator.springmvc;
 
 import java.lang.reflect.Method;
 
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CookieValue;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -51,7 +50,6 @@ import io.servicecomb.swagger.generator.springmvc.processor.annotation.RequestMa
 import io.servicecomb.swagger.generator.springmvc.processor.annotation.RequestParamAnnotationProcessor;
 import io.servicecomb.swagger.generator.springmvc.processor.annotation.RequestPartAnnotationProcessor;
 import io.servicecomb.swagger.generator.springmvc.processor.parameter.SpringmvcDefaultParameterProcessor;
-import io.servicecomb.swagger.generator.springmvc.processor.response.ResponseEntityProcessor;
 
 public class SpringmvcSwaggerGeneratorContext extends RestSwaggerGeneratorContext {
   private static final int ORDER = 1000;
@@ -117,11 +115,4 @@ public class SpringmvcSwaggerGeneratorContext extends RestSwaggerGeneratorContex
   protected void initDefaultParameterProcessor() {
     defaultParameterProcessor = new SpringmvcDefaultParameterProcessor();
   }
-
-  @Override
-  protected void initResponseTypeProcessorMgr() {
-    super.initResponseTypeProcessorMgr();
-
-    responseTypeProcessorMgr.register(ResponseEntity.class, new ResponseEntityProcessor());
-  }
 }
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java
index 888bece..9f528ae 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/io/servicecomb/swagger/generator/springmvc/processor/response/ResponseEntityProcessor.java
@@ -16,24 +16,13 @@
  */
 package io.servicecomb.swagger.generator.springmvc.processor.response;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
+import org.springframework.http.ResponseEntity;
 
-import io.servicecomb.swagger.generator.core.OperationGenerator;
-import io.servicecomb.swagger.generator.core.ResponseTypeProcessor;
-import io.servicecomb.swagger.generator.core.utils.ParamUtils;
-import io.swagger.converter.ModelConverters;
-import io.swagger.models.properties.Property;
-
-public class ResponseEntityProcessor implements ResponseTypeProcessor {
+import io.servicecomb.swagger.generator.core.processor.response.AbstractOneGenericResponseProcessor;
 
+public class ResponseEntityProcessor extends AbstractOneGenericResponseProcessor {
   @Override
-  public Property process(OperationGenerator operationGenerator) {
-    ParameterizedType type =
-        (ParameterizedType) operationGenerator.getProviderMethod().getGenericReturnType();
-
-    Type responseType = type.getActualTypeArguments()[0];
-    ParamUtils.addDefinitions(operationGenerator.getSwagger(), responseType);
-    return ModelConverters.getInstance().readAsProperty(responseType);
+  public Class<?> getResponseType() {
+    return ResponseEntity.class;
   }
 }
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor b/swagger/swagger-generator/generator-springmvc/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor
new file mode 100644
index 0000000..7936eea
--- /dev/null
+++ b/swagger/swagger-generator/generator-springmvc/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+io.servicecomb.swagger.generator.springmvc.processor.response.ResponseEntityProcessor
\ No newline at end of file
diff --git a/swagger/swagger-generator/generator-springmvc/src/test/java/io/servicecomb/swagger/generator/springmvc/TestResponseEntityProcessor.java b/swagger/swagger-generator/generator-springmvc/src/test/java/io/servicecomb/swagger/generator/springmvc/TestResponseEntityProcessor.java
new file mode 100644
index 0000000..6eef82f
--- /dev/null
+++ b/swagger/swagger-generator/generator-springmvc/src/test/java/io/servicecomb/swagger/generator/springmvc/TestResponseEntityProcessor.java
@@ -0,0 +1,32 @@
+/*
+ * 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 io.servicecomb.swagger.generator.springmvc;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.http.ResponseEntity;
+
+import io.servicecomb.swagger.generator.springmvc.processor.response.ResponseEntityProcessor;
+
+public class TestResponseEntityProcessor {
+  ResponseEntityProcessor processor = new ResponseEntityProcessor();
+
+  @Test
+  public void getResponseType() {
+    Assert.assertEquals(ResponseEntity.class, processor.getResponseType());
+  }
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.

[incubator-servicecomb-java-chassis] 01/04: JAV-582 load ResponseTypeProcessor by SPI mechanism

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit d53cd8526a07bc0fce74774db137b0d6690e98d1
Author: wujimin <wu...@huawei.com>
AuthorDate: Thu Dec 21 11:16:44 2017 +0800

    JAV-582 load ResponseTypeProcessor by SPI mechanism
---
 .../swagger/generator/core/AbstractSwaggerGeneratorContext.java      | 4 +++-
 .../io/servicecomb/swagger/generator/core/ResponseTypeProcessor.java | 2 ++
 .../core/processor/response/DefaultResponseTypeProcessor.java        | 5 +++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java
index e835bfa..922624c 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java
@@ -140,7 +140,9 @@ public abstract class AbstractSwaggerGeneratorContext implements SwaggerGenerato
   }
 
   protected void initResponseTypeProcessorMgr() {
-
+    SPIServiceUtils.getAllService(ResponseTypeProcessor.class).forEach(p -> {
+      responseTypeProcessorMgr.register(p.getResponseType(), p);
+    });
   }
 
   public void setDefaultParamProcessor(DefaultParameterProcessor defaultParamProcessor) {
diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/ResponseTypeProcessor.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/ResponseTypeProcessor.java
index 2537da0..bb0369b 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/ResponseTypeProcessor.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/ResponseTypeProcessor.java
@@ -19,6 +19,8 @@ package io.servicecomb.swagger.generator.core;
 import io.swagger.models.properties.Property;
 
 public interface ResponseTypeProcessor {
+  Class<?> getResponseType();
+
   // void的场景,不会到processor中来处理
   Property process(OperationGenerator operationGenerator);
 }
diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/DefaultResponseTypeProcessor.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/DefaultResponseTypeProcessor.java
index 6dba022..cac3e0c 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/DefaultResponseTypeProcessor.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/DefaultResponseTypeProcessor.java
@@ -25,6 +25,11 @@ import io.swagger.converter.ModelConverters;
 import io.swagger.models.properties.Property;
 
 public class DefaultResponseTypeProcessor implements ResponseTypeProcessor {
+  @Override
+  public Class<?> getResponseType() {
+    // not care for this.
+    return null;
+  }
 
   @Override
   public Property process(OperationGenerator operationGenerator) {

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.

[incubator-servicecomb-java-chassis] 04/04: JAV-582 support generate swagger from return CompletableFuture method

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit dcee4097b14b7493b7885cf3a3b32e44828616fe
Author: wujimin <wu...@huawei.com>
AuthorDate: Thu Dec 21 11:30:53 2017 +0800

    JAV-582 support generate swagger from return CompletableFuture method
---
 .../response/CompletableFutureProcessor.java       | 27 +++++++++++++++++++
 ...mb.swagger.generator.core.ResponseTypeProcessor | 18 +++++++++++++
 .../swagger/generator/core/TestSwaggerUtils.java   |  5 ++++
 .../response/TestCompletableFutureProcessor.java   | 31 ++++++++++++++++++++++
 .../swagger/generator/core/schema/Schema.java      |  5 ++++
 .../src/test/resources/schemas/allMethod.yaml      |  9 +++++++
 .../test/resources/schemas/completableFuture.yaml  | 21 +++++++++++++++
 7 files changed, 116 insertions(+)

diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/CompletableFutureProcessor.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/CompletableFutureProcessor.java
new file mode 100644
index 0000000..bd745c5
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/response/CompletableFutureProcessor.java
@@ -0,0 +1,27 @@
+/*
+ * 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 io.servicecomb.swagger.generator.core.processor.response;
+
+import java.util.concurrent.CompletableFuture;
+
+public class CompletableFutureProcessor extends AbstractOneGenericResponseProcessor {
+  @Override
+  public Class<?> getResponseType() {
+    return CompletableFuture.class;
+  }
+}
diff --git a/swagger/swagger-generator/generator-core/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor b/swagger/swagger-generator/generator-core/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor
new file mode 100644
index 0000000..7f9c7b8
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+io.servicecomb.swagger.generator.core.processor.response.CompletableFutureProcessor
\ No newline at end of file
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerUtils.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerUtils.java
index 1b523ad..94aa039 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerUtils.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerUtils.java
@@ -213,6 +213,11 @@ public class TestSwaggerUtils {
   }
 
   @Test
+  public void testCompletableFuture() {
+    testSchemaMethod("completableFuture", "testCompletableFuture");
+  }
+
+  @Test
   public void testDate() {
     SwaggerGenerator generator = testSchemaMethod("date", "testDate");
     JavassistUtils.detach("gen.cse.ms.ut.SchemaIntf");
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestCompletableFutureProcessor.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestCompletableFutureProcessor.java
new file mode 100644
index 0000000..294b8d5
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/response/TestCompletableFutureProcessor.java
@@ -0,0 +1,31 @@
+/*
+ * 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 io.servicecomb.swagger.generator.core.processor.response;
+
+import java.util.concurrent.CompletableFuture;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestCompletableFutureProcessor {
+  CompletableFutureProcessor processor = new CompletableFutureProcessor();
+
+  @Test
+  public void getResponseType() {
+    Assert.assertEquals(CompletableFuture.class, processor.getResponseType());
+  }
+}
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/schema/Schema.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/schema/Schema.java
index 95d09d6..914c0de 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/schema/Schema.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/schema/Schema.java
@@ -22,6 +22,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.CompletableFuture;
 
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -156,6 +157,10 @@ public class Schema {
 
   }
 
+  public CompletableFuture<String> testCompletableFuture() {
+    return null;
+  }
+
   public void testAllType(AllType obj) {
   }
 
diff --git a/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml b/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml
index 3514fa8..0ab203d 100644
--- a/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml
+++ b/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml
@@ -209,6 +209,15 @@ paths:
       responses:
         200:
           description: "response of 200"
+  /testCompletableFuture:
+    post:
+      operationId: "testCompletableFuture"
+      parameters: []
+      responses:
+        200:
+          description: "response of 200"
+          schema:
+            type: "string"
   /testDouble:
     post:
       operationId: "testDouble"
diff --git a/swagger/swagger-generator/generator-core/src/test/resources/schemas/completableFuture.yaml b/swagger/swagger-generator/generator-core/src/test/resources/schemas/completableFuture.yaml
new file mode 100644
index 0000000..3168264
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/resources/schemas/completableFuture.yaml
@@ -0,0 +1,21 @@
+---
+swagger: "2.0"
+info:
+  version: "1.0.0"
+  title: "swagger definition for io.servicecomb.swagger.generator.core.schema.Schema"
+  x-java-interface: "gen.cse.ms.ut.SchemaIntf"
+basePath: "/Schema"
+consumes:
+- "application/json"
+produces:
+- "application/json"
+paths:
+  /testCompletableFuture:
+    post:
+      operationId: "testCompletableFuture"
+      parameters: []
+      responses:
+        200:
+          description: "response of 200"
+          schema:
+            type: "string"

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.

[incubator-servicecomb-java-chassis] 03/04: JAV-582 jaxrs Response switch to new mechanism

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit a18684be09309dec2379c0cb50a118072ae678d0
Author: wujimin <wu...@huawei.com>
AuthorDate: Thu Dec 21 11:22:56 2017 +0800

    JAV-582 jaxrs Response switch to new mechanism
---
 .../generator/jaxrs/JaxrsSwaggerGeneratorContext.java  |  9 ---------
 ...ponseProcessor.java => JaxrsResponseProcessor.java} |  7 ++++++-
 ...cecomb.swagger.generator.core.ResponseTypeProcessor | 18 ++++++++++++++++++
 3 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/JaxrsSwaggerGeneratorContext.java b/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/JaxrsSwaggerGeneratorContext.java
index dcbf1bc..3ab4321 100644
--- a/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/JaxrsSwaggerGeneratorContext.java
+++ b/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/JaxrsSwaggerGeneratorContext.java
@@ -33,7 +33,6 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Response;
 
 import io.servicecomb.swagger.generator.core.utils.ClassUtils;
 import io.servicecomb.swagger.generator.jaxrs.processor.annotation.ConsumesAnnotationProcessor;
@@ -47,7 +46,6 @@ import io.servicecomb.swagger.generator.jaxrs.processor.annotation.PathParamAnno
 import io.servicecomb.swagger.generator.jaxrs.processor.annotation.ProducesAnnotationProcessor;
 import io.servicecomb.swagger.generator.jaxrs.processor.annotation.QueryParamAnnotationProcessor;
 import io.servicecomb.swagger.generator.jaxrs.processor.parameter.JaxrsDefaultParameterProcessor;
-import io.servicecomb.swagger.generator.jaxrs.processor.response.ResponseProcessor;
 import io.servicecomb.swagger.generator.rest.RestSwaggerGeneratorContext;
 
 public class JaxrsSwaggerGeneratorContext extends RestSwaggerGeneratorContext {
@@ -113,11 +111,4 @@ public class JaxrsSwaggerGeneratorContext extends RestSwaggerGeneratorContext {
     parameterAnnotationMgr.register(HeaderParam.class, new HeaderParamAnnotationProcessor());
     parameterAnnotationMgr.register(QueryParam.class, new QueryParamAnnotationProcessor());
   }
-
-  @Override
-  protected void initResponseTypeProcessorMgr() {
-    super.initResponseTypeProcessorMgr();
-
-    responseTypeProcessorMgr.register(Response.class, new ResponseProcessor());
-  }
 }
diff --git a/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/ResponseProcessor.java b/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/JaxrsResponseProcessor.java
similarity index 91%
rename from swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/ResponseProcessor.java
rename to swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/JaxrsResponseProcessor.java
index 59e9b70..12366c1 100644
--- a/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/ResponseProcessor.java
+++ b/swagger/swagger-generator/generator-jaxrs/src/main/java/io/servicecomb/swagger/generator/jaxrs/processor/response/JaxrsResponseProcessor.java
@@ -20,6 +20,7 @@ import java.lang.reflect.Type;
 import java.util.List;
 
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import io.servicecomb.swagger.generator.core.OperationGenerator;
 import io.servicecomb.swagger.generator.core.ResponseTypeProcessor;
@@ -27,7 +28,11 @@ import io.servicecomb.swagger.generator.core.utils.ParamUtils;
 import io.swagger.converter.ModelConverters;
 import io.swagger.models.properties.Property;
 
-public class ResponseProcessor implements ResponseTypeProcessor {
+public class JaxrsResponseProcessor implements ResponseTypeProcessor {
+  @Override
+  public Class<?> getResponseType() {
+    return Response.class;
+  }
 
   @Override
   public Property process(OperationGenerator operationGenerator) {
diff --git a/swagger/swagger-generator/generator-jaxrs/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor b/swagger/swagger-generator/generator-jaxrs/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor
new file mode 100644
index 0000000..eb2f38b
--- /dev/null
+++ b/swagger/swagger-generator/generator-jaxrs/src/main/resources/META-INF/services/io.servicecomb.swagger.generator.core.ResponseTypeProcessor
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+io.servicecomb.swagger.generator.jaxrs.processor.response.JaxrsResponseProcessor
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.