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-samples.git


The following commit(s) were added to refs/heads/master by this push:
     new 7440575  update using API first development (#140)
7440575 is described below

commit 7440575dae07b8202e2d6e14e3f25c3770e1da7c
Author: liubao68 <bi...@qq.com>
AuthorDate: Wed Apr 24 14:10:29 2024 +0800

    update using API first development (#140)
---
 basic/{consumer => apis/consumer-api}/pom.xml      | 20 +++--------------
 .../servicecomb/samples/api/ConsumerService.java}  | 13 ++++++++---
 basic/{consumer => apis}/pom.xml                   | 23 ++++++--------------
 basic/{consumer => apis/provider-api}/pom.xml      | 20 +++--------------
 .../servicecomb/samples/api}/ProviderService.java  | 11 ++++++++--
 basic/consumer/pom.xml                             | 10 +++++++++
 .../servicecomb/samples/ConsumerController.java    | 25 +++++++++++-----------
 ...vice.java => ProviderServiceConfiguration.java} | 13 ++++++++---
 basic/pom.xml                                      |  3 ++-
 basic/provider/pom.xml                             |  5 +++++
 .../servicecomb/samples/ProviderController.java    | 16 ++++++--------
 11 files changed, 78 insertions(+), 81 deletions(-)

diff --git a/basic/consumer/pom.xml b/basic/apis/consumer-api/pom.xml
similarity index 71%
copy from basic/consumer/pom.xml
copy to basic/apis/consumer-api/pom.xml
index 53f15b2..4faa106 100644
--- a/basic/consumer/pom.xml
+++ b/basic/apis/consumer-api/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
@@ -21,26 +22,11 @@
 
   <parent>
     <groupId>org.apache.servicecomb.samples</groupId>
-    <artifactId>basic-application</artifactId>
+    <artifactId>basic-apis</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>basic-consumer</artifactId>
+  <artifactId>basic-consumer-api</artifactId>
   <packaging>jar</packaging>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
 </project>
\ No newline at end of file
diff --git 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
 
b/basic/apis/consumer-api/src/main/java/org/apache/servicecomb/samples/api/ConsumerService.java
similarity index 67%
copy from 
basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
copy to 
basic/apis/consumer-api/src/main/java/org/apache/servicecomb/samples/api/ConsumerService.java
index a404a56..e5e8830 100644
--- 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
+++ 
b/basic/apis/consumer-api/src/main/java/org/apache/servicecomb/samples/api/ConsumerService.java
@@ -15,10 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.servicecomb.samples;
+package org.apache.servicecomb.samples.api;
 
-public interface ProviderService {
-  String sayHello(String name);
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
+@RequestMapping(path = "/")
+public interface ConsumerService {
+  @GetMapping("/sayHello")
+  String sayHello(@RequestParam("name") String name);
+
+  @GetMapping("/exampleConfig")
   String exampleConfig();
 }
diff --git a/basic/consumer/pom.xml b/basic/apis/pom.xml
similarity index 72%
copy from basic/consumer/pom.xml
copy to basic/apis/pom.xml
index 53f15b2..97b05b4 100644
--- a/basic/consumer/pom.xml
+++ b/basic/apis/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
@@ -25,22 +26,12 @@
     <version>3.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>basic-consumer</artifactId>
-  <packaging>jar</packaging>
+  <artifactId>basic-apis</artifactId>
+  <packaging>pom</packaging>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
-    </dependency>
-  </dependencies>
+  <modules>
+    <module>provider-api</module>
+    <module>consumer-api</module>
+  </modules>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
 </project>
\ No newline at end of file
diff --git a/basic/consumer/pom.xml b/basic/apis/provider-api/pom.xml
similarity index 71%
copy from basic/consumer/pom.xml
copy to basic/apis/provider-api/pom.xml
index 53f15b2..a643892 100644
--- a/basic/consumer/pom.xml
+++ b/basic/apis/provider-api/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
@@ -21,26 +22,11 @@
 
   <parent>
     <groupId>org.apache.servicecomb.samples</groupId>
-    <artifactId>basic-application</artifactId>
+    <artifactId>basic-apis</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>basic-consumer</artifactId>
+  <artifactId>basic-provider-api</artifactId>
   <packaging>jar</packaging>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
 </project>
\ No newline at end of file
diff --git 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
 
b/basic/apis/provider-api/src/main/java/org/apache/servicecomb/samples/api/ProviderService.java
similarity index 69%
copy from 
basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
copy to 
basic/apis/provider-api/src/main/java/org/apache/servicecomb/samples/api/ProviderService.java
index a404a56..88155a5 100644
--- 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
+++ 
b/basic/apis/provider-api/src/main/java/org/apache/servicecomb/samples/api/ProviderService.java
@@ -15,10 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.servicecomb.samples;
+package org.apache.servicecomb.samples.api;
 
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping(path = "/provider")
 public interface ProviderService {
-  String sayHello(String name);
+  @GetMapping("/sayHello")
+  String sayHello(@RequestParam("name") String name);
 
+  @GetMapping("/exampleConfig")
   String exampleConfig();
 }
diff --git a/basic/consumer/pom.xml b/basic/consumer/pom.xml
index 53f15b2..0ed7959 100644
--- a/basic/consumer/pom.xml
+++ b/basic/consumer/pom.xml
@@ -33,6 +33,16 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.samples</groupId>
+      <artifactId>basic-consumer-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.samples</groupId>
+      <artifactId>basic-provider-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
 
b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
index 9dfa17a..84c5ce9 100644
--- 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
+++ 
b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
@@ -17,25 +17,26 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.apache.servicecomb.samples.api.ConsumerService;
+import org.apache.servicecomb.samples.api.ProviderService;
+import org.springframework.beans.factory.annotation.Autowired;
 
-@RestSchema(schemaId = "ConsumerController")
-@RequestMapping(path = "/")
-public class ConsumerController {
-  @RpcReference(schemaId = "ProviderController", microserviceName = "provider")
+@RestSchema(schemaId = "ConsumerController", schemaInterface = 
ConsumerService.class)
+public class ConsumerController implements ConsumerService {
   private ProviderService providerService;
 
-  // consumer service which delegate the implementation to provider service.
-  @GetMapping("/sayHello")
-  public String sayHello(@RequestParam("name") String name) {
+  @Autowired
+  public void setProviderService(ProviderService providerService) {
+    this.providerService = providerService;
+  }
+
+  @Override
+  public String sayHello(String name) {
     return providerService.sayHello(name);
   }
 
-  @GetMapping("/exampleConfig")
+  @Override
   public String exampleConfig() {
     return providerService.exampleConfig();
   }
diff --git 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
 
b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderServiceConfiguration.java
similarity index 66%
rename from 
basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
rename to 
basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderServiceConfiguration.java
index a404a56..851b8e9 100644
--- 
a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
+++ 
b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderServiceConfiguration.java
@@ -17,8 +17,15 @@
 
 package org.apache.servicecomb.samples;
 
-public interface ProviderService {
-  String sayHello(String name);
+import org.apache.servicecomb.provider.pojo.Invoker;
+import org.apache.servicecomb.samples.api.ProviderService;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 
-  String exampleConfig();
+@Configuration
+public class ProviderServiceConfiguration {
+  @Bean
+  public ProviderService providerService() {
+    return Invoker.createProxy("provider", "ProviderController", 
ProviderService.class);
+  }
 }
diff --git a/basic/pom.xml b/basic/pom.xml
index bd69985..18290fb 100644
--- a/basic/pom.xml
+++ b/basic/pom.xml
@@ -27,7 +27,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <servicecomb.version>3.0.0</servicecomb.version>
+    <servicecomb.version>3.1.0</servicecomb.version>
     <spring-boot-maven-plugin.version>3.1.3</spring-boot-maven-plugin.version>
     <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
   </properties>
@@ -102,6 +102,7 @@
   </profiles>
 
   <modules>
+    <module>apis</module>
     <module>provider</module>
     <module>consumer</module>
     <module>gateway</module>
diff --git a/basic/provider/pom.xml b/basic/provider/pom.xml
index b02dfd0..3140127 100644
--- a/basic/provider/pom.xml
+++ b/basic/provider/pom.xml
@@ -37,6 +37,11 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.samples</groupId>
+      <artifactId>basic-provider-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
 
b/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
index 2db6ccb..15d8f70 100644
--- 
a/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
+++ 
b/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
@@ -19,14 +19,11 @@ package org.apache.servicecomb.samples;
 
 import org.apache.servicecomb.config.DynamicProperties;
 import org.apache.servicecomb.provider.rest.common.RestSchema;
+import org.apache.servicecomb.samples.api.ProviderService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 
-@RestSchema(schemaId = "ProviderController")
-@RequestMapping(path = "/")
-public class ProviderController {
+@RestSchema(schemaId = "ProviderController", schemaInterface = 
ProviderService.class)
+public class ProviderController implements ProviderService {
   private DynamicProperties dynamicProperties;
 
   private String example;
@@ -38,13 +35,12 @@ public class ProviderController {
         value -> this.example = value, "not set");
   }
 
-  // a very simple service to echo the request parameter
-  @GetMapping("/sayHello")
-  public String sayHello(@RequestParam("name") String name) {
+  @Override
+  public String sayHello(String name) {
     return "Hello " + name;
   }
 
-  @GetMapping("/exampleConfig")
+  @Override
   public String exampleConfig() {
     return example;
   }

Reply via email to