You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/01/12 01:19:11 UTC
[incubator-servicecomb-java-chassis] 01/02: SCB-179 support - as
paramter name with RequestParam
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 152770705e5b2e315ecd9c838b9db435f8fdcecf
Author: acsukesh <su...@huawei.com>
AuthorDate: Wed Jan 10 15:53:33 2018 +0530
SCB-179 support - as paramter name with RequestParam
---
.../codec/protobuf/utils/ProtobufSchemaUtils.java | 6 ++++--
.../demo/jaxrs/tests/JaxrsIntegrationTestBase.java | 18 +++++++++++++++++
.../jaxrs/tests/endpoints/SchemaFirstJaxrs.java | 2 ++
.../endpoints/SomeAbstractJaxrsRestEndpoint.java | 6 ++++++
.../resources/microservices/jaxrs/schemaFirst.yaml | 18 +++++++++++++++++
.../swagger/generator/core/utils/ClassUtils.java | 23 ++++++++++++++++++++--
6 files changed, 69 insertions(+), 4 deletions(-)
diff --git a/common/common-protobuf/src/main/java/io/servicecomb/codec/protobuf/utils/ProtobufSchemaUtils.java b/common/common-protobuf/src/main/java/io/servicecomb/codec/protobuf/utils/ProtobufSchemaUtils.java
index eb02155..dd5911d 100644
--- a/common/common-protobuf/src/main/java/io/servicecomb/codec/protobuf/utils/ProtobufSchemaUtils.java
+++ b/common/common-protobuf/src/main/java/io/servicecomb/codec/protobuf/utils/ProtobufSchemaUtils.java
@@ -25,6 +25,8 @@ import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import javax.lang.model.SourceVersion;
+
import org.springframework.util.ClassUtils;
import com.fasterxml.jackson.databind.JavaType;
@@ -147,8 +149,8 @@ public final class ProtobufSchemaUtils {
Parameter[] params = method.getParameters();
for (int idx = 0; idx < params.length; idx++) {
Parameter param = params[idx];
- String paramName = operationMeta.getParamName(idx);
-
+ String paramName = io.servicecomb.swagger.generator.core.utils.ClassUtils
+ .correctMethodParameterName(operationMeta.getParamName(idx));
config.addField(paramName, param.getParameterizedType());
}
diff --git a/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/JaxrsIntegrationTestBase.java b/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/JaxrsIntegrationTestBase.java
index 4487aef..3d5df3f 100644
--- a/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/JaxrsIntegrationTestBase.java
+++ b/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/JaxrsIntegrationTestBase.java
@@ -238,6 +238,24 @@ public class JaxrsIntegrationTestBase {
}
@Test
+ public void ableToPostWithHeaderWithIdentifier() {
+ Person person = new Person();
+ person.setName("person name");
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(APPLICATION_JSON);
+ headers.add("prefix-test", "prefix prefix");
+
+ HttpEntity<Person> requestEntity = new HttpEntity<>(person, headers);
+ for (String url : urls) {
+ ResponseEntity<String> responseEntity = restTemplate
+ .postForEntity(url + "saysomething1", requestEntity, String.class);
+
+ assertEquals("prefix prefix person name", jsonBodyOf(responseEntity, String.class));
+ }
+ }
+
+ @Test
public void ableToPostObjectAsJson() {
Map<String, String> personFieldMap = new HashMap<>();
personFieldMap.put("name", "person name from map");
diff --git a/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SchemaFirstJaxrs.java b/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SchemaFirstJaxrs.java
index b13d94a..5e92645 100644
--- a/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SchemaFirstJaxrs.java
+++ b/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SchemaFirstJaxrs.java
@@ -35,6 +35,8 @@ public interface SchemaFirstJaxrs {
String saySomething(String prefix, Person user);
+ String saySomething1(String prefix_test, Person user);
+
String sayHi(String name);
String sayHi2(String name);
diff --git a/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SomeAbstractJaxrsRestEndpoint.java b/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SomeAbstractJaxrsRestEndpoint.java
index 796ee7e..a639700 100644
--- a/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SomeAbstractJaxrsRestEndpoint.java
+++ b/integration-tests/jaxrs-tests/src/test/java/io/servicecomb/demo/jaxrs/tests/endpoints/SomeAbstractJaxrsRestEndpoint.java
@@ -106,6 +106,12 @@ public class SomeAbstractJaxrsRestEndpoint {
return prefix + " " + user.getName();
}
+ @Path("/saysomething1")
+ @POST
+ public String saySomething1(@HeaderParam("prefix-test") String prefix_test, Person user) {
+ return prefix_test + " " + user.getName();
+ }
+
@Path("/sayhi/{name}")
@PUT
public String sayHi(@PathParam("name") String name) {
diff --git a/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml b/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml
index 11ff68a..3d23f71 100644
--- a/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml
+++ b/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml
@@ -111,6 +111,24 @@ paths:
description: say something
schema:
type: string
+ /saysomething1:
+ post:
+ operationId: saySomething1
+ parameters:
+ - name: prefix-test
+ in: header
+ required: true
+ type: string
+ - name: user
+ in: body
+ required: true
+ schema:
+ $ref: '#/definitions/Person'
+ responses:
+ 200:
+ description: say something
+ schema:
+ type: string
/sayhi/{name}:
put:
operationId: sayHi
diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/utils/ClassUtils.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/utils/ClassUtils.java
index d433c3e..4529607 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/utils/ClassUtils.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/utils/ClassUtils.java
@@ -24,6 +24,9 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+
+import javax.lang.model.SourceVersion;
+
import java.util.Set;
import org.springframework.util.StringUtils;
@@ -279,11 +282,27 @@ public final class ClassUtils {
return JavassistUtils.createClass(classLoader, classConfig);
}
- public static String correctMethodParameterName(String name) {
- return name.replace(".", "_").replace("-", "_");
+ public static String correctMethodParameterName(String paramName) {
+ if (SourceVersion.isName(paramName)) {
+ return paramName;
+ }
+ StringBuffer newParam = new StringBuffer();
+ char tempChar;
+ for (int index = 0; index < paramName.length(); index++) {
+ tempChar = paramName.charAt(index);
+ if (Character.isJavaIdentifierPart(tempChar)) {
+ newParam.append(paramName.charAt(index));
+ } else if (tempChar == '.' || tempChar == '-') {
+ newParam.append('_');
+ }
+ }
+ return newParam.toString();
}
public static String correctClassName(String name) {
+ if (SourceVersion.isIdentifier(name) && !SourceVersion.isKeyword(name)) {
+ return name;
+ }
String parts[] = name.split("\\.", -1);
for (int idx = 0; idx < parts.length; idx++) {
String part = parts[idx];
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.