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 <[email protected]> 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 "[email protected]" <[email protected]>.
