You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2019/05/08 13:09:08 UTC
[servicecomb-java-chassis] 02/02: [SCB-1280] add IT for nested List
params
This is an automated email from the ASF dual-hosted git repository.
wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 622297b5fdf7818bcdb61688d51ea337bc24a2c3
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Wed May 8 16:30:09 2019 +0800
[SCB-1280] add IT for nested List params
---
.../org/apache/servicecomb/it/schema/User.java | 25 +++++++++
.../servicecomb/it/testcase/base/TestGeneric.java | 65 ++++++++++++++++++++++
.../servicecomb/it/schema/GenericSchema.java | 16 ++++++
3 files changed, 106 insertions(+)
diff --git a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/User.java b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/User.java
index 3f87a94..f9b38a8 100644
--- a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/User.java
+++ b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/User.java
@@ -16,6 +16,9 @@
*/
package org.apache.servicecomb.it.schema;
+import java.util.Arrays;
+import java.util.Objects;
+
import org.apache.servicecomb.foundation.common.utils.JsonUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -73,4 +76,26 @@ public class User {
throw new IllegalStateException(e);
}
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ User user = (User) o;
+ return age == user.age &&
+ index == user.index &&
+ name == null ? user.name == null : name.equals(user.name) &&
+ names == null ? user.names == null : Arrays.equals(names, user.names);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = Objects.hash(name, age, index);
+ result = 31 * result + Arrays.hashCode(names);
+ return result;
+ }
}
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/base/TestGeneric.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/base/TestGeneric.java
index 276bd37..aeea1b7 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/base/TestGeneric.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/base/TestGeneric.java
@@ -17,9 +17,11 @@
package org.apache.servicecomb.it.testcase.base;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -32,6 +34,7 @@ import javax.xml.ws.Holder;
import org.apache.servicecomb.it.Consumers;
import org.apache.servicecomb.it.schema.Generic;
import org.apache.servicecomb.it.schema.User;
+import org.hamcrest.Matchers;
import org.junit.Test;
import org.springframework.http.HttpStatus;
@@ -54,6 +57,10 @@ public class TestGeneric {
Generic<Map<String, List<String>>> genericMapList(Generic<Map<String, List<String>>> mapListGeneric);
Generic<Map<String, List<User>>> genericMapListUser(Generic<Map<String, List<User>>> mapListUserGeneric);
+
+ List<List<String>> genericNestedListString(List<List<String>> nestedListString);
+
+ List<List<User>> genericNestedListUser(List<List<User>> nestedListUser);
}
private static Consumers<GenericIntf> consumers = new Consumers<>("generic", GenericIntf.class);
@@ -255,4 +262,62 @@ public class TestGeneric {
String test = result.value.get("test").get(0).jsonString();
assertEquals(test, expectUserStr);
}
+
+ @Test
+ public void testGenericNestedListString_intfAndRt() {
+ ArrayList<List<String>> nestedListString = new ArrayList<>();
+ nestedListString.add(Arrays.asList("abc", "def"));
+ nestedListString.add(Arrays.asList("ghi", "jkl"));
+
+ List<List<String>> response = consumers.getIntf().genericNestedListString(nestedListString);
+ assertEquals(2, response.size());
+ assertThat(response.get(0), Matchers.contains("abc", "def"));
+ assertThat(response.get(1), Matchers.contains("ghi", "jkl"));
+
+ @SuppressWarnings("unchecked")
+ List<List<String>> response2 = consumers.getSCBRestTemplate()
+ .postForObject("/genericNestedListString", nestedListString, List.class);
+ assertEquals(2, response2.size());
+ assertThat(response2.get(0), Matchers.contains("abc", "def"));
+ assertThat(response2.get(1), Matchers.contains("ghi", "jkl"));
+ }
+
+ @Test
+ public void testGenericNestedListUser_intfAndRt() {
+ User user1 = new User();
+ user1.setAge(1);
+ user1.setIndex(1);
+ user1.setName("abc");
+ user1.setNames(new String[] {"1", "2", "3"});
+ User user2 = new User();
+ user2.setAge(2);
+ user2.setIndex(2);
+ user2.setName("def");
+ user2.setNames(new String[] {"4", "5"});
+ User user3 = new User();
+ user3.setAge(3);
+ user3.setIndex(3);
+ user3.setName("ghi");
+ user3.setNames(new String[] {"6", "7"});
+ User user4 = new User();
+ user4.setAge(4);
+ user4.setIndex(4);
+ user4.setName("jkl");
+ user4.setNames(new String[] {"8", "9", "10"});
+ ArrayList<List<User>> nestedListUser = new ArrayList<>();
+ nestedListUser.add(Arrays.asList(user1, user2));
+ nestedListUser.add(Arrays.asList(user3, user4));
+
+ List<List<User>> response = consumers.getIntf().genericNestedListUser(nestedListUser);
+ assertEquals(2, response.size());
+ assertThat(response.get(0), Matchers.contains(user1, user2));
+ assertThat(response.get(1), Matchers.contains(user3, user4));
+
+ @SuppressWarnings("unchecked")
+ List<List<User>> response2 = consumers.getSCBRestTemplate()
+ .postForObject("/genericNestedListUser", nestedListUser, List.class);
+ assertEquals(2, response2.size());
+ assertThat(response2.get(0), Matchers.contains(user1, user2));
+ assertThat(response2.get(1), Matchers.contains(user3, user4));
+ }
}
diff --git a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/GenericSchema.java b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/GenericSchema.java
index 03bf10f..f19a0bd 100644
--- a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/GenericSchema.java
+++ b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/GenericSchema.java
@@ -98,4 +98,20 @@ public class GenericSchema {
Assert.isInstanceOf(Map.class, mapListUserGeneric.value);
return mapListUserGeneric;
}
+
+ @PostMapping(path = "genericNestedListString")
+ public List<List<String>> genericNestedListString(@RequestBody List<List<String>> nestedListString) {
+ Assert.isInstanceOf(List.class, nestedListString);
+ Assert.isInstanceOf(List.class, nestedListString.get(0));
+ Assert.isInstanceOf(String.class, nestedListString.get(0).get(0));
+ return nestedListString;
+ }
+
+ @PostMapping(path = "genericNestedListUser")
+ public List<List<User>> genericNestedListUser(@RequestBody List<List<User>> nestedListUser) {
+ Assert.isInstanceOf(List.class, nestedListUser);
+ Assert.isInstanceOf(List.class, nestedListUser.get(0));
+ Assert.isInstanceOf(User.class, nestedListUser.get(0).get(0));
+ return nestedListUser;
+ }
}