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";
     }

Reply via email to