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