[ 
https://issues.apache.org/jira/browse/SCB-904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16616983#comment-16616983
 ] 

ASF GitHub Bot commented on SCB-904:
------------------------------------

liubao68 closed pull request #902: [SCB-904] SpringMVC annotation do not 
support value,only support name
URL: https://github.com/apache/incubator-servicecomb-java-chassis/pull/902
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
 
b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
index a3b770471..0799143e7 100644
--- 
a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
+++ 
b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
@@ -20,6 +20,7 @@
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.it.deploy.Deploys;
 import org.apache.servicecomb.it.junit.ITJUnitUtils;
+import org.apache.servicecomb.it.testcase.TestAnnotatedAttribute;
 import org.apache.servicecomb.it.testcase.TestChangeTransport;
 import org.apache.servicecomb.it.testcase.TestDataTypePrimitive;
 import org.apache.servicecomb.it.testcase.TestDefaultValue;
@@ -104,6 +105,7 @@ private static void testStandalone() throws Throwable {
 
     ITJUnitUtils.runWithHighwayAndRest(TestChangeTransport.class);
     ITJUnitUtils.runWithHighwayAndRest(TestDataTypePrimitive.class);
+    ITJUnitUtils.runWithHighwayAndRest(TestAnnotatedAttribute.class);
 
     // only rest support default value feature
     ITJUnitUtils.runWithRest(TestDefaultValue.class);
diff --git 
a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java
 
b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java
new file mode 100644
index 000000000..7e393280d
--- /dev/null
+++ 
b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java
@@ -0,0 +1,154 @@
+/*
+ * 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 org.apache.servicecomb.it.testcase;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.servicecomb.it.Consumers;
+import org.apache.servicecomb.it.junit.ITJUnitUtils;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+
+public class TestAnnotatedAttribute {
+  interface AnnotatedAttributeIntf {
+    String fromHeader(String inputs);
+  }
+
+  private static Consumers<AnnotatedAttributeIntf> consumersSpringmvc =
+      new Consumers<>("annotatedAttributeSpringmvc", 
AnnotatedAttributeIntf.class);
+
+  @BeforeClass
+  public static void classSetup() {
+    consumersSpringmvc.init(ITJUnitUtils.getTransport());
+  }
+
+  @Test
+  public void fromHeader_springmvc_rt() {
+    fromHeader_rt(consumersSpringmvc);
+  }
+
+  @Test
+  public void fromQuery_springmvc_rt() {
+    fromQuery_rt(consumersSpringmvc);
+  }
+
+  @Test
+  public void fromCookie_springmvc_rt() {
+    fromCookie_rt(consumersSpringmvc);
+  }
+
+  @Test
+  public void fromPath_springmvc_rt() {
+    fromPath_rt(consumersSpringmvc);
+  }
+
+  @Test
+  public void fromPart_springmvc_rt() {
+    fromPart_rt(consumersSpringmvc);
+  }
+
+  @Test
+  public void fromAttribute_springmvc_rt() {
+    fromAttribute_rt(consumersSpringmvc);
+  }
+
+  protected void fromHeader_rt(Consumers<AnnotatedAttributeIntf> consumers) {
+    HttpHeaders headers = new HttpHeaders();
+    headers.add("input", "default");
+    headers.add("input2", "fromValue");
+    headers.add("input3", "fromName");
+
+    @SuppressWarnings("rawtypes")
+    HttpEntity entity = new HttpEntity<>(null, headers);
+    ResponseEntity<String> response = consumers.getSCBRestTemplate()
+        .exchange("/fromHeader",
+            HttpMethod.GET,
+            entity,
+            String.class);
+    assertEquals("default,fromValue,fromName", response.getBody());
+  }
+
+  protected void fromQuery_rt(Consumers<AnnotatedAttributeIntf> consumers) {
+    String result = consumers.getSCBRestTemplate()
+        .getForObject("/fromQuery?input={1}&input2={2}&input3={3}",
+            String.class,
+            "default",
+            "fromValue",
+            "fromName");
+    assertEquals("default,fromValue,fromName", result);
+  }
+
+  protected void fromCookie_rt(Consumers<AnnotatedAttributeIntf> consumers) {
+    HttpHeaders headers = new HttpHeaders();
+    headers.add(HttpHeaders.COOKIE, "input=default");
+    headers.add(HttpHeaders.COOKIE, "input2=fromValue");
+    headers.add(HttpHeaders.COOKIE, "input3=fromName");
+
+    HttpEntity<?> requestEntity = new HttpEntity<>(headers);
+    ResponseEntity<String> result = consumers.getSCBRestTemplate()
+        .exchange("/fromCookie",
+            HttpMethod.GET,
+            requestEntity,
+            String.class);
+    assertEquals("default,fromValue,fromName", result.getBody());
+  }
+
+  protected void fromPath_rt(Consumers<AnnotatedAttributeIntf> consumers) {
+    String result = consumers.getSCBRestTemplate()
+        .getForObject("/fromPath/{1}/{2}/{3}",
+            String.class,
+            "default",
+            "fromValue",
+            "fromName");
+    assertEquals("default,fromValue,fromName", result);
+  }
+
+  protected void fromPart_rt(Consumers<AnnotatedAttributeIntf> consumers) {
+    MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
+    map.add("input", "default");
+    map.add("input2", "fromValue");
+    map.add("input3", "fromName");
+
+    String result = consumers.getSCBRestTemplate()
+        .postForObject("/fromPart",
+            new HttpEntity<>(map),
+            String.class);
+    assertEquals("default,fromValue,fromName", result);
+  }
+
+  protected void fromAttribute_rt(Consumers<AnnotatedAttributeIntf> consumers) 
{
+    Map<String, Object> body = new HashMap<>();
+    body.put("input", "default");
+    body.put("input2", "fromValue");
+    body.put("input3", "fromName");
+    ResponseEntity<String> result = consumers.getSCBRestTemplate()
+        .exchange("/fromAttribute",
+            HttpMethod.POST,
+            new HttpEntity<>(body),
+            String.class);
+    assertEquals("default,fromValue,fromName", result.getBody());
+  }
+}
diff --git 
a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/AnnotatedAttributeSpringmvcSchema.java
 
b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/AnnotatedAttributeSpringmvcSchema.java
new file mode 100644
index 000000000..6b8691d2f
--- /dev/null
+++ 
b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/AnnotatedAttributeSpringmvcSchema.java
@@ -0,0 +1,69 @@
+/*
+ * 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 org.apache.servicecomb.it.schema;
+
+import org.apache.servicecomb.provider.rest.common.RestSchema;
+import org.springframework.web.bind.annotation.CookieValue;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestAttribute;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestPart;
+
+@RestSchema(schemaId = "annotatedAttributeSpringmvc")
+@RequestMapping(path = "/v1/annotatedAttributeSpringmvc")
+public class AnnotatedAttributeSpringmvcSchema {
+
+  @GetMapping("fromHeader")
+  public String fromHeader(@RequestHeader("input") String inputs, 
@RequestHeader(value = "input2") String inputs2,
+      @RequestHeader(name = "input3") String inputs3) {
+    return inputs + "," + inputs2 + "," + inputs3;
+  }
+
+  @GetMapping("fromQuery")
+  public String fromQuery(@RequestParam("input") String inputs, 
@RequestParam(value = "input2") String inputs2,
+      @RequestParam(name = "input3") String inputs3) {
+    return inputs + "," + inputs2 + "," + inputs3;
+  }
+
+  @GetMapping("fromCookie")
+  public String fromCookie(@CookieValue("input") String inputs, 
@CookieValue(value = "input2") String inputs2,
+      @CookieValue(name = "input3") String inputs3) {
+    return inputs + "," + inputs2 + "," + inputs3;
+  }
+
+  @GetMapping("fromPath/{input}/{input2}/{input3}")
+  public String fromPath(@PathVariable("input") String inputs, 
@PathVariable(value = "input2") String inputs2,
+      @PathVariable(name = "input3") String inputs3) {
+    return inputs + "," + inputs2 + "," + inputs3;
+  }
+
+  @PostMapping("fromPart")
+  public String fromPart(@RequestPart("input") String inputs, 
@RequestPart(value = "input2") String inputs2,
+      @RequestPart(name = "input3") String inputs3) {
+    return inputs + "," + inputs2 + "," + inputs3;
+  }
+
+  @PostMapping("fromAttribute")
+  public String fromAttribute(@RequestAttribute("input") String inputs,
+      @RequestAttribute(value = "input2") String inputs2, 
@RequestAttribute(name = "input3") String inputs3) {
+    return inputs + "," + inputs2 + "," + inputs3;
+  }
+}
diff --git 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
index a86ea06bb..f96802d3e 100644
--- 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
+++ 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
@@ -27,7 +27,11 @@
 public class CookieValueAnnotationProcessor extends 
AbstractParameterProcessor<CookieParameter> {
   @Override
   public String getAnnotationParameterName(Object annotation) {
-    return ((CookieValue) annotation).name();
+    String value = ((CookieValue) annotation).value();
+    if (value.isEmpty()) {
+      value = ((CookieValue) annotation).name();
+    }
+    return value;
   }
 
   @Override
diff --git 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
index 6297ef775..ea52624f4 100644
--- 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
+++ 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
@@ -31,7 +31,11 @@ public PathParameter createParameter() {
 
   @Override
   public String getAnnotationParameterName(Object annotation) {
-    return ((PathVariable) annotation).value();
+    String value = ((PathVariable) annotation).value();
+    if (value.isEmpty()) {
+      value = ((PathVariable) annotation).name();
+    }
+    return value;
   }
   
   @Override
diff --git 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
index 0166a762a..5a9f69dcb 100644
--- 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
+++ 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
@@ -20,7 +20,6 @@
 import org.apache.servicecomb.swagger.generator.core.OperationGenerator;
 import 
org.apache.servicecomb.swagger.generator.core.processor.parameter.AbstractParameterProcessor;
 import org.springframework.web.bind.annotation.RequestAttribute;
-
 import io.swagger.models.parameters.FormParameter;
 
 public class RequestAttributeAnnotationProcessor extends 
AbstractParameterProcessor<FormParameter> {
@@ -31,9 +30,13 @@ public FormParameter createParameter() {
 
   @Override
   public String getAnnotationParameterName(Object annotation) {
-    return ((RequestAttribute) annotation).name();
+    String value = ((RequestAttribute) annotation).value();
+    if (value.isEmpty()) {
+      value = ((RequestAttribute) annotation).name();
+    }
+    return value;
   }
-  
+
   @Override
   protected void fillParameter(Object annotation, OperationGenerator 
operationGenerator, int paramIdx,
       FormParameter parameter) {
diff --git 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestHeaderAnnotationProcessor.java
 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestHeaderAnnotationProcessor.java
index d4862de33..d34c296ab 100644
--- 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestHeaderAnnotationProcessor.java
+++ 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestHeaderAnnotationProcessor.java
@@ -32,7 +32,11 @@ public HeaderParameter createParameter() {
 
   @Override
   public String getAnnotationParameterName(Object annotation) {
-    return ((RequestHeader) annotation).name();
+    String value = ((RequestHeader) annotation).value();
+    if (value.isEmpty()) {
+      value = ((RequestHeader) annotation).name();
+    }
+    return value;
   }
 
   @Override
diff --git 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
index a32274bfb..8ad9a4b41 100644
--- 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
+++ 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
@@ -32,7 +32,11 @@ public QueryParameter createParameter() {
 
   @Override
   public String getAnnotationParameterName(Object annotation) {
-    return ((RequestParam) annotation).name();
+    String value = ((RequestParam) annotation).value();
+    if (value.isEmpty()) {
+      value = ((RequestParam) annotation).name();
+    }
+    return value;
   }
 
   @Override
diff --git 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
index fe3ec24ca..859235a70 100644
--- 
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
+++ 
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
@@ -31,7 +31,11 @@ public FormParameter createParameter() {
 
   @Override
   public String getAnnotationParameterName(Object annotation) {
-    return ((RequestPart) annotation).name();
+    String value = ((RequestPart) annotation).value();
+    if (value.isEmpty()) {
+      value = ((RequestPart) annotation).name();
+    }
+    return value;
   }
 
   @Override
diff --git 
a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/RestAsyncListener.java
 
b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/RestAsyncListener.java
index 3e2c9dbf5..08d87bf1b 100644
--- 
a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/RestAsyncListener.java
+++ 
b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/RestAsyncListener.java
@@ -32,7 +32,6 @@
 import org.apache.servicecomb.foundation.common.utils.JsonUtils;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
-import org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestRestAsyncListener.java
 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestRestAsyncListener.java
index af533abf3..a0c73853d 100644
--- 
a/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestRestAsyncListener.java
+++ 
b/transports/transport-rest/transport-rest-servlet/src/test/java/org/apache/servicecomb/transport/rest/servlet/TestRestAsyncListener.java
@@ -32,7 +32,6 @@
 import org.apache.servicecomb.foundation.vertx.http.AbstractHttpServletRequest;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import 
org.apache.servicecomb.foundation.vertx.http.StandardHttpServletRequestEx;
-import org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> SpringMVC @RequestHeader do not support value,only support name
> ---------------------------------------------------------------
>
>                 Key: SCB-904
>                 URL: https://issues.apache.org/jira/browse/SCB-904
>             Project: Apache ServiceComb
>          Issue Type: Bug
>          Components: Java-Chassis
>            Reporter: WeiChao
>            Assignee: WeiChao
>            Priority: Major
>             Fix For: java-chassis-1.1.0
>
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to