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