You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ch...@apache.org on 2019/12/30 08:29:26 UTC
[servicecomb-toolkit] 03/03: [SCB-1673] fix the problem according
code review suggestion
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 <18...@163.com>
AuthorDate: Fri Dec 27 17:56:02 2019 +0800
[SCB-1673] fix the problem according code review suggestion
Signed-off-by: kakulisen <18...@163.com>
---
.../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";
}