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/20 06:01:48 UTC
[incubator-servicecomb-java-chassis] 09/10: SCB-266 change demo
springmvc to test generic
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 57d646d0ca944a3d5db297267b959b5f43eb0529
Author: wujimin <wu...@huawei.com>
AuthorDate: Sat Jan 20 04:38:24 2018 +0800
SCB-266 change demo springmvc to test generic
---
.../demo/{server/User.java => Generic.java} | 50 +-------
.../org/apache/servicecomb/demo/server/User.java | 12 ++
.../client/CodeFirstRestTemplateSpringmvc.java | 5 +
...rigmvcIntf.java => CodeFirstSpringmvcIntf.java} | 16 ++-
.../demo/springmvc/client/TestGeneric.java | 130 +++++++++++++++++++++
.../demo/springmvc/client/TestObject.java | 16 +--
.../demo/springmvc/client/TestResponse.java | 4 +-
.../demo/springmvc/server/CodeFirstSpringmvc.java | 44 ++++++-
8 files changed, 210 insertions(+), 67 deletions(-)
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/Generic.java
similarity index 51%
copy from demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java
copy to demo/demo-schema/src/main/java/org/apache/servicecomb/demo/Generic.java
index e7d4e94..401bb52 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java
+++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/Generic.java
@@ -14,52 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.servicecomb.demo;
-package org.apache.servicecomb.demo.server;
-
-public class User {
- private String name = "nameA";
-
- private int age = 100;
-
- private int index;
-
- private String[] names;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String[] getNames() {
- return names;
- }
-
- public void setNames(String[] names) {
- this.names = names;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public int getIndex() {
- return index;
- }
-
- public void setIndex(int index) {
- this.index = index;
- }
-
- @Override
- public String toString() {
- return "User [name=" + name + ", age=" + age + ", index=" + index + "]";
- }
+public class Generic<T> {
+ public T value;
}
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java
index e7d4e94..c55ed1e 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java
+++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/User.java
@@ -17,6 +17,10 @@
package org.apache.servicecomb.demo.server;
+import org.apache.servicecomb.foundation.common.utils.JsonUtils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
public class User {
private String name = "nameA";
@@ -62,4 +66,12 @@ public class User {
public String toString() {
return "User [name=" + name + ", age=" + age + ", index=" + index + "]";
}
+
+ public String jsonString() {
+ try {
+ return JsonUtils.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ throw new IllegalStateException(e);
+ }
+ }
}
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
index 9076f85..722f7d2 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
@@ -68,6 +68,8 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
private TestObject testObject = new TestObject();
+ private TestGeneric testGeneric = new TestGeneric();
+
@Override
protected void testOnlyRest(RestTemplate template, String cseUrlPrefix) {
try {
@@ -78,6 +80,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
testResponse.runRest();
testObject.runRest();
+ testGeneric.runRest();
super.testOnlyRest(template, cseUrlPrefix);
}
@@ -86,6 +89,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
protected void testOnlyHighway(RestTemplate template, String cseUrlPrefix) {
testResponse.runHighway();
testObject.runHighway();
+ testGeneric.runHighway();
super.testOnlyHighway(template, cseUrlPrefix);
}
@@ -94,6 +98,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
protected void testAllTransport(String microserviceName, RestTemplate template, String cseUrlPrefix) {
testResponse.runAllTransport();
testObject.runAllTransport();
+ testGeneric.runAllTransport();
testResponseEntity("springmvc", template, cseUrlPrefix);
testCodeFirstTestForm(template, cseUrlPrefix);
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstSprigmvcIntf.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstSpringmvcIntf.java
similarity index 75%
rename from demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstSprigmvcIntf.java
rename to demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstSpringmvcIntf.java
index 12b6b54..5109d19 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstSprigmvcIntf.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstSpringmvcIntf.java
@@ -23,11 +23,13 @@ import java.util.Map;
import javax.xml.ws.Holder;
import org.apache.servicecomb.demo.EmptyObject;
+import org.apache.servicecomb.demo.Generic;
import org.apache.servicecomb.demo.server.User;
import org.apache.servicecomb.swagger.invocation.Response;
+import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-public interface CodeFirstSprigmvcIntf {
+public interface CodeFirstSpringmvcIntf {
ResponseEntity<Date> responseEntity(Date date);
Response cseResponse();
@@ -42,5 +44,15 @@ public interface CodeFirstSprigmvcIntf {
Holder<Object> testHolderObject(Holder<Object> input);
- Holder<User> testGeneric(Holder<User> input);
+ Holder<User> testHolderUser(Holder<User> input);
+
+ Generic<User> testGenericUser(Generic<User> input);
+
+ Generic<Long> testGenericLong(Generic<Long> input);
+
+ Generic<Date> testGenericDate(Generic<Date> input);
+
+ Generic<HttpStatus> testGenericEnum(Generic<HttpStatus> input);
+
+ Generic<Generic<User>> testGenericGenericUser(Generic<Generic<User>> input);
}
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java
new file mode 100644
index 0000000..34a3475
--- /dev/null
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java
@@ -0,0 +1,130 @@
+/*
+ * 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.demo.springmvc.client;
+
+import java.util.Date;
+
+import javax.xml.ws.Holder;
+
+import org.apache.servicecomb.demo.Generic;
+import org.apache.servicecomb.demo.TestMgr;
+import org.apache.servicecomb.demo.server.User;
+import org.apache.servicecomb.provider.pojo.Invoker;
+import org.apache.servicecomb.provider.springmvc.reference.CseRestTemplate;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.client.RestTemplate;
+
+import com.fasterxml.jackson.databind.util.ISO8601Utils;
+
+public class TestGeneric {
+ private CodeFirstSpringmvcIntf intf;
+
+ private RestTemplate restTemplate = new CseRestTemplate();
+
+ private String prefix = "cse://springmvc/codeFirstSpringmvc";
+
+ public TestGeneric() {
+ intf = Invoker.createProxy("springmvc", "codeFirst", CodeFirstSpringmvcIntf.class);
+ }
+
+ public void runRest() {
+ testHolderUser_rest();
+ testGenericUser_rest();
+ testGenericGenericUser_rest();
+ testGenericLong_rest();
+ testGenericDate_rest();
+ testGenericEnum_rest();
+ }
+
+ public void runHighway() {
+ }
+
+ public void runAllTransport() {
+ }
+
+ @SuppressWarnings("unchecked")
+ private void testGenericEnum_rest() {
+ Generic<HttpStatus> generic = new Generic<>();
+ generic.value = HttpStatus.OK;
+ Generic<HttpStatus> result = intf.testGenericEnum(generic);
+ TestMgr.check(HttpStatus.OK, result.value);
+ TestMgr.check(HttpStatus.class, result.value.getClass());
+
+ result = restTemplate.postForObject(prefix + "/genericEnum", generic, Generic.class);
+ TestMgr.check(HttpStatus.OK, result.value);
+ TestMgr.check(HttpStatus.class, result.value.getClass());
+ }
+
+ @SuppressWarnings("unchecked")
+ private void testGenericDate_rest() {
+ Generic<Date> generic = new Generic<>();
+ generic.value = new Date(1001);
+ Generic<Date> result = intf.testGenericDate(generic);
+ TestMgr.check("1970-01-01T00:00:01.001Z", ISO8601Utils.format(result.value, true));
+ TestMgr.check(Date.class, result.value.getClass());
+
+ result = restTemplate.postForObject(prefix + "/genericDate", generic, Generic.class);
+ TestMgr.check("1970-01-01T00:00:01.001Z", ISO8601Utils.format(result.value, true));
+ TestMgr.check(Date.class, result.value.getClass());
+ }
+
+ @SuppressWarnings("unchecked")
+ private void testGenericLong_rest() {
+ Generic<Long> generic = new Generic<>();
+ generic.value = 100L;
+ Generic<Long> result = intf.testGenericLong(generic);
+ TestMgr.check(100, result.value);
+ TestMgr.check(Long.class, result.value.getClass());
+
+ result = restTemplate.postForObject(prefix + "/genericLong", generic, Generic.class);
+ TestMgr.check(100, result.value);
+ TestMgr.check(Long.class, result.value.getClass());
+ }
+
+ @SuppressWarnings("unchecked")
+ private void testGenericGenericUser_rest() {
+ Generic<Generic<User>> generic = new Generic<>();
+ generic.value = new Generic<>();
+ generic.value.value = new User();
+ Generic<Generic<User>> result = intf.testGenericGenericUser(generic);
+ TestMgr.check("{\"name\":\"nameA\",\"age\":100,\"index\":0,\"names\":null}", result.value.value.jsonString());
+
+ result = restTemplate.postForObject(prefix + "/genericGenericUser", generic, Generic.class);
+ TestMgr.check("{\"name\":\"nameA\",\"age\":100,\"index\":0,\"names\":null}", result.value.value.jsonString());
+ }
+
+ @SuppressWarnings("unchecked")
+ private void testGenericUser_rest() {
+ Generic<User> generic = new Generic<>();
+ generic.value = new User();
+ Generic<User> result = intf.testGenericUser(generic);
+ TestMgr.check("{\"name\":\"nameA\",\"age\":100,\"index\":0,\"names\":null}", result.value.jsonString());
+
+ result = restTemplate.postForObject(prefix + "/genericUser", generic, Generic.class);
+ TestMgr.check("{\"name\":\"nameA\",\"age\":100,\"index\":0,\"names\":null}", result.value.jsonString());
+ }
+
+ @SuppressWarnings("unchecked")
+ private void testHolderUser_rest() {
+ Holder<User> holder = new Holder<>(new User());
+ Holder<User> result = intf.testHolderUser(holder);
+ TestMgr.check("{\"name\":\"nameA\",\"age\":100,\"index\":0,\"names\":null}", result.value.jsonString());
+
+ result = restTemplate.postForObject(prefix + "/holderUser", holder, Holder.class);
+ TestMgr.check("{\"name\":\"nameA\",\"age\":100,\"index\":0,\"names\":null}", result.value.jsonString());
+ }
+}
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
index 9082005..a482587 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
@@ -27,20 +27,19 @@ import javax.xml.ws.Holder;
import org.apache.servicecomb.demo.EmptyObject;
import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.demo.server.User;
import org.apache.servicecomb.provider.pojo.Invoker;
import org.apache.servicecomb.provider.springmvc.reference.CseRestTemplate;
import org.springframework.web.client.RestTemplate;
public class TestObject {
- private CodeFirstSprigmvcIntf intf;
+ private CodeFirstSpringmvcIntf intf;
private RestTemplate restTemplate = new CseRestTemplate();
private String prefix = "cse://springmvc/codeFirstSpringmvc";
public TestObject() {
- intf = Invoker.createProxy("springmvc", "codeFirst", CodeFirstSprigmvcIntf.class);
+ intf = Invoker.createProxy("springmvc", "codeFirst", CodeFirstSpringmvcIntf.class);
}
public void runRest() {
@@ -57,17 +56,6 @@ public class TestObject {
testObject();
testListObject();
testHolderObject();
- testGeneric();
- }
-
- @SuppressWarnings("unchecked")
- private void testGeneric() {
- Holder<User> holder = new Holder<>(new User());
- Holder<User> result = intf.testGeneric(holder);
- TestMgr.check("{name=nameA, age=100, index=0, names=null}", result.value);
-
- result = restTemplate.postForObject(prefix + "/generic", holder, Holder.class);
- TestMgr.check("{name=nameA, age=100, index=0, names=null}", result.value);
}
@SuppressWarnings("unchecked")
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java
index 4036bed..e56c3fe 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestResponse.java
@@ -25,10 +25,10 @@ import org.apache.servicecomb.swagger.invocation.Response;
import org.springframework.http.ResponseEntity;
public class TestResponse {
- private CodeFirstSprigmvcIntf intf;
+ private CodeFirstSpringmvcIntf intf;
public TestResponse() {
- intf = Invoker.createProxy("springmvc", "codeFirst", CodeFirstSprigmvcIntf.class);
+ intf = Invoker.createProxy("springmvc", "codeFirst", CodeFirstSpringmvcIntf.class);
}
public void runRest() {
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
index aceba90..839844e 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
@@ -34,6 +34,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.servicecomb.common.rest.codec.RestObjectMapper;
import org.apache.servicecomb.core.Const;
import org.apache.servicecomb.demo.EmptyObject;
+import org.apache.servicecomb.demo.Generic;
import org.apache.servicecomb.demo.compute.Person;
import org.apache.servicecomb.demo.ignore.InputModelForTestIgnore;
import org.apache.servicecomb.demo.ignore.OutputModelForTestIgnore;
@@ -387,8 +388,47 @@ public class CodeFirstSpringmvc {
return input;
}
- @PostMapping(path = "/generic")
- public Holder<User> testGeneric(@RequestBody Holder<User> input) {
+ @PostMapping(path = "/holderUser")
+ public Holder<User> testHolderUser(@RequestBody Holder<User> input) {
+ Assert.isInstanceOf(Holder.class, input);
+ Assert.isInstanceOf(User.class, input.value);
+ return input;
+ }
+
+ @PostMapping(path = "/genericUser")
+ public Generic<User> testGenericUser(@RequestBody Generic<User> input) {
+ Assert.isInstanceOf(Generic.class, input);
+ Assert.isInstanceOf(User.class, input.value);
+ return input;
+ }
+
+ @PostMapping(path = "/genericLong")
+ public Generic<Long> testGenericLong(@RequestBody Generic<Long> input) {
+ Assert.isInstanceOf(Generic.class, input);
+ Assert.isInstanceOf(Long.class, input.value);
+ return input;
+ }
+
+ @PostMapping(path = "/genericDate")
+ public Generic<Date> testGenericDate(@RequestBody Generic<Date> input) {
+ Assert.isInstanceOf(Generic.class, input);
+ Assert.isInstanceOf(Date.class, input.value);
+ System.out.println(input.value);
+ return input;
+ }
+
+ @PostMapping(path = "/genericEnum")
+ public Generic<HttpStatus> testGenericEnum(@RequestBody Generic<HttpStatus> input) {
+ Assert.isInstanceOf(Generic.class, input);
+ Assert.isInstanceOf(HttpStatus.class, input.value);
+ return input;
+ }
+
+ @PostMapping(path = "/genericGenericUser")
+ public Generic<Generic<User>> testGenericGenericUser(@RequestBody Generic<Generic<User>> input) {
+ Assert.isInstanceOf(Generic.class, input);
+ Assert.isInstanceOf(Generic.class, input.value);
+ Assert.isInstanceOf(User.class, input.value.value);
return input;
}
}
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.