This is an automated email from the ASF dual-hosted git repository. chanjarster pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git
commit da3b3b6333e1c776d4e39513e39e328596d9b40f Author: kakulisen <[email protected]> AuthorDate: Fri Dec 27 17:56:02 2019 +0800 [SCB-1673] fix the problem according code review suggestion Signed-off-by: kakulisen <[email protected]> --- .../toolkit/generator/context/OasContext.java | 8 +- .../generator/context/OperationContext.java | 32 +++---- .../generator/context/ParameterContext.java | 10 +-- .../generator/SpringAnnotationProcessorTest.java | 98 +++++++++++++++++++--- 4 files changed, 114 insertions(+), 34 deletions(-) diff --git a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OasContext.java b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OasContext.java index 90e1c47..ae2a549 100644 --- a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OasContext.java +++ b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OasContext.java @@ -49,7 +49,7 @@ public class OasContext implements IExtensionsContext { private String httpMethod; - private String[] consumers; + private String[] consumes; private String[] produces; @@ -180,11 +180,11 @@ public class OasContext implements IExtensionsContext { } public String[] getConsumers() { - return consumers; + return consumes; } - public void setConsumers(String[] consumers) { - this.consumers = consumers; + public void setConsumers(String[] consumes) { + this.consumes = consumes; } public String[] getProduces() { diff --git a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OperationContext.java b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OperationContext.java index 58d1b01..89bb6e5 100644 --- a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OperationContext.java +++ b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/OperationContext.java @@ -76,7 +76,7 @@ public class OperationContext implements IExtensionsContext { private List<String> tags; - private String[] consumers; + private String[] consumes; private String[] produces; @@ -131,7 +131,7 @@ public class OperationContext implements IExtensionsContext { mediaType.schema(schema); } schema.addProperties(parameterContext.getName(), parameterContext.getSchema()); - if (consumers != null) { + if (consumes != null) { for (String consume : getConsumers()) { content.addMediaType(consume, mediaType); } @@ -168,11 +168,7 @@ public class OperationContext implements IExtensionsContext { private void processHeaders() { - if (headers == null) { - headers = parentContext.getHeaders(); - } - - if (headers == null) { + if (getHeaders() == null) { return; } @@ -191,11 +187,7 @@ public class OperationContext implements IExtensionsContext { private void processProduces() { - if (produces == null) { - produces = parentContext.getProduces(); - } - - if (produces == null) { + if (getProduces() == null) { return; } @@ -360,11 +352,11 @@ public class OperationContext implements IExtensionsContext { } public String[] getConsumers() { - return consumers; + return consumes; } - public void setConsumers(String[] consumers) { - this.consumers = consumers; + public void setConsumers(String[] consumes) { + this.consumes = consumes; } public void addParamCtx(ParameterContext ctx) { @@ -372,6 +364,11 @@ public class OperationContext implements IExtensionsContext { } public String[] getProduces() { + + if (produces == null) { + produces = parentContext.getProduces(); + } + return produces; } @@ -380,6 +377,11 @@ public class OperationContext implements IExtensionsContext { } public String[] getHeaders() { + + if (headers == null) { + headers = parentContext.getHeaders(); + } + return headers; } diff --git a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/ParameterContext.java b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/ParameterContext.java index ca9046a..a743afa 100644 --- a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/ParameterContext.java +++ b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/context/ParameterContext.java @@ -82,7 +82,7 @@ public class ParameterContext implements ISchemaContext, IExtensionsContext { private RequestBody requestBody; - private List<String> consumers; + private List<String> consumes; public ParameterContext(OperationContext parentContext, Parameter parameter) { this.parentContext = parentContext; @@ -208,14 +208,14 @@ public class ParameterContext implements ISchemaContext, IExtensionsContext { } public void addConsume(String consume) { - if (consumers == null) { - consumers = new ArrayList<>(); + if (consumes == null) { + consumes = new ArrayList<>(); } - consumers.add(consume); + consumes.add(consume); } public List<String> getConsumers() { - return consumers; + return consumes; } public Type getRealType() { diff --git a/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringAnnotationProcessorTest.java b/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringAnnotationProcessorTest.java index 3cad49b..fc8b84a 100644 --- a/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringAnnotationProcessorTest.java +++ b/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringAnnotationProcessorTest.java @@ -56,35 +56,90 @@ import io.swagger.v3.oas.models.media.FileSchema; public class SpringAnnotationProcessorTest { @Test - public void getHttpMethod() throws NoSuchMethodException { - SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + public void methodOfRequestMapping() throws NoSuchMethodException { + // class level + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); OasContext oasContext = new OasContext(parser); Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; RequestMapping requestMappingClassAnnotation = httpMethodResourceClass.getAnnotation(RequestMapping.class); RequestMappingClassAnnotationProcessor requestMappingClassAnnotationProcessor = new RequestMappingClassAnnotationProcessor(); requestMappingClassAnnotationProcessor.process(requestMappingClassAnnotation, oasContext); - Assert.assertEquals(requestMappingClassAnnotation.value()[0], oasContext.getBasePath()); Assert.assertEquals(RequestMethod.GET.name(), oasContext.getHttpMethod()); + // method level RequestMappingMethodAnnotationProcessor requestMappingMethodAnnotationProcessor = new RequestMappingMethodAnnotationProcessor(); Method requestMethod = httpMethodResourceClass.getMethod("request"); RequestMapping requestMappingMethodAnnotation = requestMethod.getAnnotation(RequestMapping.class); OperationContext requestOperationContext = new OperationContext(requestMethod, oasContext); requestMappingMethodAnnotationProcessor.process(requestMappingMethodAnnotation, requestOperationContext); - Assert - .assertEquals(requestMappingMethodAnnotation.value()[0], - requestOperationContext.getPath()); Assert.assertEquals(RequestMethod.POST.name(), requestOperationContext.getHttpMethod()); + // default Method getRequestMethod = httpMethodResourceClass.getMethod("getRequest"); RequestMapping getRequestMappingMethodAnnotation = getRequestMethod.getAnnotation(RequestMapping.class); OperationContext getRequestOperationContext = new OperationContext(getRequestMethod, oasContext); requestMappingMethodAnnotationProcessor.process(getRequestMappingMethodAnnotation, getRequestOperationContext); - Assert - .assertEquals(getRequestMappingMethodAnnotation.value()[0], - getRequestOperationContext.getPath()); Assert.assertEquals(RequestMethod.GET.name(), getRequestOperationContext.getHttpMethod()); + } + + @Test + public void pathOfRequestMapping() { + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; + RequestMapping requestMappingClassAnnotation = httpMethodResourceClass.getAnnotation(RequestMapping.class); + RequestMappingClassAnnotationProcessor requestMappingClassAnnotationProcessor = new RequestMappingClassAnnotationProcessor(); + requestMappingClassAnnotationProcessor.process(requestMappingClassAnnotation, oasContext); + Assert.assertEquals(requestMappingClassAnnotation.value()[0], oasContext.getBasePath()); + } + + @Test + public void headersOfRequestMapping() throws NoSuchMethodException { + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; + RequestMappingMethodAnnotationProcessor requestMappingMethodAnnotationProcessor = new RequestMappingMethodAnnotationProcessor(); + Method requestMethod = httpMethodResourceClass.getMethod("request"); + RequestMapping requestMappingMethodAnnotation = requestMethod.getAnnotation(RequestMapping.class); + OperationContext requestOperationContext = new OperationContext(requestMethod, oasContext); + requestMappingMethodAnnotationProcessor.process(requestMappingMethodAnnotation, requestOperationContext); + Assert.assertArrayEquals(requestMappingMethodAnnotation.headers(), requestOperationContext.getHeaders()); + } + + @Test + public void consumesOfRequestMapping() throws NoSuchMethodException { + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; + RequestMappingMethodAnnotationProcessor requestMappingMethodAnnotationProcessor = new RequestMappingMethodAnnotationProcessor(); + Method requestMethod = httpMethodResourceClass.getMethod("request"); + RequestMapping requestMappingMethodAnnotation = requestMethod.getAnnotation(RequestMapping.class); + OperationContext requestOperationContext = new OperationContext(requestMethod, oasContext); + requestMappingMethodAnnotationProcessor.process(requestMappingMethodAnnotation, requestOperationContext); + Assert.assertArrayEquals(requestMappingMethodAnnotation.consumes(), requestOperationContext.getConsumers()); + } + + @Test + public void producesOfRequestMapping() throws NoSuchMethodException { + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; + RequestMappingMethodAnnotationProcessor requestMappingMethodAnnotationProcessor = new RequestMappingMethodAnnotationProcessor(); + Method requestMethod = httpMethodResourceClass.getMethod("request"); + RequestMapping requestMappingMethodAnnotation = requestMethod.getAnnotation(RequestMapping.class); + OperationContext requestOperationContext = new OperationContext(requestMethod, oasContext); + requestMappingMethodAnnotationProcessor.process(requestMappingMethodAnnotation, requestOperationContext); + Assert.assertArrayEquals(requestMappingMethodAnnotation.produces(), requestOperationContext.getProduces()); + } + + + @Test + public void methodOfGetMapping() throws NoSuchMethodException { + + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; GetMappingMethodAnnotationProcessor getMappingMethodAnnotationProcessor = new GetMappingMethodAnnotationProcessor(); Method getMethod = httpMethodResourceClass.getMethod("get"); @@ -93,6 +148,14 @@ public class SpringAnnotationProcessorTest { getMappingMethodAnnotationProcessor.process(getMappingAnnotation, getOperationContext); Assert .assertEquals(getMappingAnnotation.value()[0], getOperationContext.getPath()); + } + + @Test + public void methodOfPostMapping() throws NoSuchMethodException { + + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; PostMappingMethodAnnotationProcessor postMappingMethodAnnotationProcessor = new PostMappingMethodAnnotationProcessor(); Method postMethod = httpMethodResourceClass.getMethod("post"); @@ -101,6 +164,14 @@ public class SpringAnnotationProcessorTest { postMappingMethodAnnotationProcessor.process(postMappingAnnotation, postOperationContext); Assert .assertEquals(postMappingAnnotation.value()[0], postOperationContext.getPath()); + } + + @Test + public void methodOfPutMapping() throws NoSuchMethodException { + + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; PutMappingMethodAnnotationProcessor putMappingMethodAnnotationProcessor = new PutMappingMethodAnnotationProcessor(); Method putMethod = httpMethodResourceClass.getMethod("put"); @@ -109,6 +180,13 @@ public class SpringAnnotationProcessorTest { putMappingMethodAnnotationProcessor.process(putMappingAnnotation, putOperationContext); Assert .assertEquals(putMappingAnnotation.value()[0], putOperationContext.getPath()); + } + + @Test + public void methodOfDeleteMapping() throws NoSuchMethodException { + SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + OasContext oasContext = new OasContext(parser); + Class<HttpMethodResource> httpMethodResourceClass = HttpMethodResource.class; DeleteMappingMethodAnnotationProcessor deleteMappingMethodAnnotationProcessor = new DeleteMappingMethodAnnotationProcessor(); Method deleteMethod = httpMethodResourceClass.getMethod("delete"); @@ -195,7 +273,7 @@ public class SpringAnnotationProcessorTest { @RequestMapping(value = "/path", method = RequestMethod.GET) class HttpMethodResource { - @RequestMapping(value = "/request", method = RequestMethod.POST, headers = "cookie=1") + @RequestMapping(value = "/request", method = RequestMethod.POST, headers = "cookie=1", consumes = "application/json", produces = "application/json") public String request() { return "request"; }
