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 2021/02/25 00:54:05 UTC

[servicecomb-java-chassis] 01/02: [#2243]add examples for this issue

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/servicecomb-java-chassis.git

commit 2b143d2a37a7f134271c43afe8c9be589ca52354
Author: liubao <bi...@qq.com>
AuthorDate: Tue Feb 23 22:13:40 2021 +0800

    [#2243]add examples for this issue
---
 .../zeroconfig/client/ClientServerEndpoint.java    | 23 ++++++++++++++
 .../demo/zeroconfig/client/IRpcEndpoint.java       | 26 ++++++++++++++++
 .../demo/zeroconfig/server/RpcEndpoint.java        | 35 ++++++++++++++++++++++
 .../demo/zeroconfig/tests/ServerTest.java          | 28 +++++++++++++++++
 4 files changed, 112 insertions(+)

diff --git a/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientServerEndpoint.java b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientServerEndpoint.java
index 4fe6eb1..f2fb732 100644
--- a/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientServerEndpoint.java
+++ b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientServerEndpoint.java
@@ -27,12 +27,17 @@ import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.rest.common.RestSchema;
 import org.apache.servicecomb.registry.DiscoveryManager;
 import org.apache.servicecomb.registry.api.registry.Microservice;
+import org.apache.servicecomb.swagger.extend.annotations.RawJsonRequestBody;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import io.vertx.core.json.JsonObject;
+
 @RestSchema(schemaId = "ClientServerEndpoint")
 @RequestMapping(path = "/register/url/prefix", produces = MediaType.APPLICATION_JSON)
 public class ClientServerEndpoint {
@@ -42,6 +47,9 @@ public class ClientServerEndpoint {
   @RpcReference(microserviceName = "demo-zeroconfig-schemadiscovery-registry-server", schemaId = "ServerEndpoint")
   private IServerEndpoint serverEndpoint;
 
+  @RpcReference(microserviceName = "demo-zeroconfig-schemadiscovery-registry-server", schemaId = "RpcEndpoint")
+  private IRpcEndpoint rpcEndpoint;
+
   @GetMapping(path = "/getName")
   public String getName(@RequestParam(name = "name") String name) {
     return serverEndpoint.getName(name);
@@ -60,4 +68,19 @@ public class ClientServerEndpoint {
     }
     return names;
   }
+
+  @PostMapping(path = "/jsonObject")
+  public JsonObject jsonObject(@RequestBody JsonObject jsonObject) {
+    JsonObject param = new JsonObject();
+    param.put("map", jsonObject);
+    JsonObject message = rpcEndpoint.getJsonObject(param);
+    JsonObject inner = new JsonObject();
+    inner.put("map", message);
+    return inner;
+  }
+
+  @PostMapping(path = "/getString")
+  public String getString(@RawJsonRequestBody String jsonString) {
+    return jsonString;
+  }
 }
\ No newline at end of file
diff --git a/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/IRpcEndpoint.java b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/IRpcEndpoint.java
new file mode 100644
index 0000000..edbfc7f
--- /dev/null
+++ b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/IRpcEndpoint.java
@@ -0,0 +1,26 @@
+/*
+ * 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.zeroconfig.client;
+
+import io.vertx.core.json.JsonObject;
+
+public interface IRpcEndpoint {
+  JsonObject getJsonObject(JsonObject message);
+
+  String getString(String message);
+}
diff --git a/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/RpcEndpoint.java b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/RpcEndpoint.java
new file mode 100644
index 0000000..37dba61
--- /dev/null
+++ b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/RpcEndpoint.java
@@ -0,0 +1,35 @@
+/*
+ * 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.zeroconfig.server;
+
+import org.apache.servicecomb.provider.pojo.RpcSchema;
+
+import io.vertx.core.json.JsonObject;
+
+@RpcSchema(schemaId = "RpcEndpoint")
+public class RpcEndpoint {
+  public JsonObject getJsonObject(JsonObject message) {
+    JsonObject inner = new JsonObject();
+    inner.put("map", message);
+    return inner;
+  }
+
+  public String getString(String message) {
+    return message;
+  }
+}
diff --git a/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
index 1d906f5..21585d8 100644
--- a/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
+++ b/demo/demo-zeroconfig-schemadiscovery-registry/demo-zeroconfig-schemadiscovery-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
@@ -26,6 +26,8 @@ import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
+import io.vertx.core.json.JsonObject;
+
 @Component
 public class ServerTest implements CategorizedTestCase {
 
@@ -35,6 +37,8 @@ public class ServerTest implements CategorizedTestCase {
   public void testRestTransport() throws Exception {
     testServerGetName();
     testGetAllMicroservice();
+    testJsonObject();
+    testString();
   }
 
   private void testServerGetName() throws Exception {
@@ -81,4 +85,28 @@ public class ServerTest implements CategorizedTestCase {
                 + "/register/url/prefix/getRegisteredMicroservice",
             List.class).size());
   }
+
+  private void testJsonObject() {
+    JsonObject in = new JsonObject();
+    JsonObject inner = new JsonObject();
+    //调用者需要按照swagger传参
+    inner.put("hello", "world");
+    in.put("map", inner);
+
+    JsonObject result = template
+        .postForObject(
+            "cse://demo-zeroconfig-schemadiscovery-registry-client"
+                + "/register/url/prefix/jsonObject", in, JsonObject.class);
+    TestMgr.check(inner.toString(), result.toString());
+    TestMgr.check(result.getString("hello"), "world");
+  }
+
+  private void testString() {
+    String in = "{\"hello\":\"world\"}";
+    String result = template
+        .postForObject(
+            "cse://demo-zeroconfig-schemadiscovery-registry-client"
+                + "/register/url/prefix/getString", in, String.class);
+    TestMgr.check(in, result);
+  }
 }