[SCB-1649]RestTemplate result can use a different model than provider, complete samples (#37)

* add more examples to show CONSUMER/PROVIDER using different model

* remove unused code

* [SCB-1649]RestTemplate result can use a different model than provider, complete samples
diff --git a/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicClient.java b/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicClient.java
index ae71ce1..ecaa775 100644
--- a/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicClient.java
+++ b/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicClient.java
@@ -17,9 +17,14 @@
 
 package org.apache.servicecomb.samples.springmvc.consumer;
 
+import java.util.List;
+
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.samples.common.schema.Assertion;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
@@ -34,15 +39,22 @@
     SpringmvcBasicRequestModel requestModel = new SpringmvcBasicRequestModel();
     requestModel.setName("Hello World");
     SpringmvcBasicResponseModel responseModel;
+    List<SpringmvcBasicResponseModel> responseModelList;
 
     // Invoke a spring mvc provider using RPC
-    responseModel = rpcInoker.sayHello(requestModel);
+    responseModel = rpcInoker.postObject(requestModel);
     Assertion.assertEquals("Hello World", responseModel.getResultMessage());
+    responseModelList = rpcInoker.postListObject(requestModel);
+    Assertion.assertEquals("Hello World", responseModelList.get(0).getResultMessage());
 
-    // TODO : this test case should work in 2.0, currently not implemented
-//    // Invoke a spring mvc provider using RestTemplate
-//    responseModel = restTemplateInvoker
-//        .postForObject("cse://springmvc/springmvc/basic/postObject", responseModel, SpringmvcBasicResponseModel.class);
-//    Assertion.assertEquals("Hello World", responseModel.getResultMessage());
+    // Invoke a spring mvc provider using RestTemplate
+    responseModel = restTemplateInvoker
+        .postForObject("cse://springmvc/springmvc/basic/postObject", responseModel, SpringmvcBasicResponseModel.class);
+    Assertion.assertEquals("Hello World", responseModel.getResultMessage());
+    HttpEntity<SpringmvcBasicRequestModel> requestEntity = new HttpEntity(requestModel, null);
+    responseModelList = restTemplateInvoker.exchange("/postListObject", HttpMethod.POST, requestEntity,
+        new ParameterizedTypeReference<List<SpringmvcBasicResponseModel>>() {
+        }).getBody();
+    Assertion.assertEquals("Hello World", responseModelList.get(0).getResultMessage());
   }
 }
diff --git a/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicService.java b/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicService.java
index adf53fa..f635ac1 100644
--- a/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicService.java
+++ b/java-chassis-samples/springmvc-sample/springmvc-consumer/src/main/java/org/apache/servicecomb/samples/springmvc/consumer/SpringmvcBasicService.java
@@ -17,10 +17,14 @@
 
 package org.apache.servicecomb.samples.springmvc.consumer;
 
+import java.util.List;
+
 /**
  * Consumer interface can be different than provider interface. This feature is quite useful in microservices and devops where
  * every developers can work independently at his own work.
  */
 public interface SpringmvcBasicService {
-  SpringmvcBasicResponseModel sayHello(SpringmvcBasicRequestModel requestModel);
+  SpringmvcBasicResponseModel postObject(SpringmvcBasicRequestModel requestModel);
+
+  List<SpringmvcBasicResponseModel> postListObject(SpringmvcBasicRequestModel requestModel);
 }
diff --git a/java-chassis-samples/springmvc-sample/springmvc-provider/src/main/java/org/apache/servicecomb/samples/springmvc/provider/SpringmvcBasicEndpoint.java b/java-chassis-samples/springmvc-sample/springmvc-provider/src/main/java/org/apache/servicecomb/samples/springmvc/provider/SpringmvcBasicEndpoint.java
index 35cb47c..91230a2 100644
--- a/java-chassis-samples/springmvc-sample/springmvc-provider/src/main/java/org/apache/servicecomb/samples/springmvc/provider/SpringmvcBasicEndpoint.java
+++ b/java-chassis-samples/springmvc-sample/springmvc-provider/src/main/java/org/apache/servicecomb/samples/springmvc/provider/SpringmvcBasicEndpoint.java
@@ -17,10 +17,12 @@
 
 package org.apache.servicecomb.samples.springmvc.provider;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.ws.rs.core.MediaType;
 
 import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.apache.servicecomb.samples.common.schema.models.Person;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -29,10 +31,20 @@
 @RequestMapping(path = "/springmvc/basic", produces = MediaType.APPLICATION_JSON)
 public class SpringmvcBasicEndpoint {
   @RequestMapping(path = "/postObject", method = RequestMethod.POST)
-  public SpringmvcBasicResponseModel sayHello(@RequestBody SpringmvcBasicRequestModel requestModel) {
+  public SpringmvcBasicResponseModel postObject(@RequestBody SpringmvcBasicRequestModel requestModel) {
     SpringmvcBasicResponseModel model = new SpringmvcBasicResponseModel();
     model.setResponseId(requestModel.getRequestId());
     model.setResultMessage(requestModel.getName());
     return model;
   }
+
+  @RequestMapping(path = "/postObjectList", method = RequestMethod.POST)
+  public List<SpringmvcBasicResponseModel> postObjectList(@RequestBody SpringmvcBasicRequestModel requestModel) {
+    SpringmvcBasicResponseModel model = new SpringmvcBasicResponseModel();
+    model.setResponseId(requestModel.getRequestId());
+    model.setResultMessage(requestModel.getName());
+    List<SpringmvcBasicResponseModel> result = new ArrayList<>();
+    result.add(model);
+    return result;
+  }
 }