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:20 UTC
[incubator-servicecomb-java-chassis] 02/04: JAV-582 springmvc
responseEntity switch to new mechanism
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>.