You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/02/04 06:55:06 UTC

[dubbo-spi-extensions] 40/44: fix #8, 增加内部类的 demo

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 2.7.x
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git

commit a0c2c49c61080b0c8ad80c5b045bcf781512b11c
Author: qq213539 <21...@qq.com>
AuthorDate: Tue Feb 2 17:57:42 2021 +0800

    fix #8, 增加内部类的 demo
---
 .../core/DubboApiDocsAnnotationScanner.java        |   6 +-
 .../apache/dubbo/apidocs/utils/ClassTypeUtil.java  |   4 +-
 .../apidocs/examples/api/IQuickStartDemo.java      |   9 ++
 .../examples/params/InnerClassRequestBean.java     | 122 +++++++++++++++++++++
 .../examples/params/InnerClassResponseBean.java    | 110 +++++++++++++++++++
 .../examples-provider/pom.xml                      |  19 ++++
 .../examples/api/impl/QuickStartDemoImpl.java      |  15 +++
 .../src/main/resources/application.yml             |   4 +-
 8 files changed, 283 insertions(+), 6 deletions(-)

diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java
index 2114c26..c9259bc 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java
@@ -257,7 +257,7 @@ public class DubboApiDocsAnnotationScanner implements ApplicationListener<Applic
         List<Field> allFields = ClassTypeUtil.getAllFields(null, argClass);
         if (allFields.size() > 0) {
             for (Field field : allFields) {
-                if ("serialVersionUID".equals(field.getName())) {
+                if ("serialVersionUID".equals(field.getName()) || "this$0".equals(field.getName())) {
                     continue;
                 }
                 ParamBean paramBean = new ParamBean();
@@ -268,7 +268,7 @@ public class DubboApiDocsAnnotationScanner implements ApplicationListener<Applic
                     paramBean.setJavaType(field.getType().getCanonicalName());
                 } else {
                     paramBean.setJavaType(genericTypeName);
-                    genericType =ClassTypeUtil.makeClass(genericTypeName);
+                    genericType = ClassTypeUtil.makeClass(genericTypeName);
                 }
                 RequestParam requestParam = null;
                 if (field.isAnnotationPresent(RequestParam.class)) {
@@ -291,7 +291,7 @@ public class DubboApiDocsAnnotationScanner implements ApplicationListener<Applic
                                 field.getGenericType(), field.getType(), 0);
                     } else {
                         objResult = ClassTypeUtil.initClassTypeWithDefaultValue(
-                                null, genericType, 0, true);
+                                ClassTypeUtil.makeParameterizedType(genericTypeName), genericType, 0, true);
                     }
                     if (!ClassTypeUtil.isBaseType(objResult)) {
                         paramBean.setHtmlType(HtmlTypeEnum.TEXT_AREA);
diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/utils/ClassTypeUtil.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/utils/ClassTypeUtil.java
index ddd56e4..5b44a93 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/utils/ClassTypeUtil.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/utils/ClassTypeUtil.java
@@ -138,7 +138,7 @@ public class ClassTypeUtil {
         // get all fields
         List<Field> allFields = getAllFields(null, classType);
         for (Field field2 : allFields) {
-            if ("serialVersionUID".equals(field2.getName())) {
+            if ("serialVersionUID".equals(field2.getName()) || "this$0".equals(field2.getName())) {
                 continue;
             }
             if (String.class.isAssignableFrom(field2.getType())) {
@@ -162,7 +162,7 @@ public class ClassTypeUtil {
                 if (StringUtils.isNotBlank(genericTypeName)) {
                     // The type of the attribute is generic. Find the generic from the definition of
                     // the class in which the attribute is located
-                    result.put(field2.getName(), initClassTypeWithDefaultValue(null, makeClass(genericTypeName), processCount, true));
+                    result.put(field2.getName(), initClassTypeWithDefaultValue(makeParameterizedType(genericTypeName), makeClass(genericTypeName), processCount, true));
                 } else {
                     // Not generic
                     result.put(field2.getName(), initClassTypeWithDefaultValue(field2.getGenericType(), field2.getType(), processCount));
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/api/IQuickStartDemo.java b/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/api/IQuickStartDemo.java
index 190f08e..199925f 100644
--- a/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/api/IQuickStartDemo.java
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/api/IQuickStartDemo.java
@@ -17,6 +17,8 @@
 package org.apache.dubbo.apidocs.examples.api;
 
 import org.apache.dubbo.apidocs.examples.params.DemoParamBean4;
+import org.apache.dubbo.apidocs.examples.params.InnerClassRequestBean;
+import org.apache.dubbo.apidocs.examples.params.InnerClassResponseBean;
 import org.apache.dubbo.apidocs.examples.params.QuickStartRequestBase;
 import org.apache.dubbo.apidocs.examples.params.QuickStartRequestBean;
 import org.apache.dubbo.apidocs.examples.params.QuickStartRequestBean2;
@@ -60,4 +62,11 @@ public interface IQuickStartDemo {
      * @return org.apache.dubbo.apidocs.examples.params.QuickStartRequestBase
      */
     QuickStartRequestBase quickStart4(BigDecimal number, QuickStartRequestBean2 beanParam);
+
+    /**
+     * internal class test.
+     * @param testBean
+     * @return org.apache.dubbo.apidocs.examples.params.InnerClassResponseBean
+     */
+    InnerClassResponseBean<List<String>> quickStart5(InnerClassRequestBean<List<String>> testBean);
 }
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/params/InnerClassRequestBean.java b/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/params/InnerClassRequestBean.java
new file mode 100644
index 0000000..63cfa97
--- /dev/null
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/params/InnerClassRequestBean.java
@@ -0,0 +1,122 @@
+/*
+ * 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.dubbo.apidocs.examples.params;
+
+import org.apache.dubbo.apidocs.annotations.RequestParam;
+
+/**
+ * Internal class test, request bean.
+ *
+ * @date 2021/2/2 16:24
+ */
+public class InnerClassRequestBean<T> {
+
+    @RequestParam("tReq")
+    private T tReq;
+
+    @RequestParam("innerReqBean1")
+    private InnerReqBean1 innerReqBean1;
+
+    @RequestParam("innerReqBean2")
+    private InnerReqBean2 innerReqBean2;
+
+    @RequestParam("innerReqBean3")
+    private InnerReqBean3 innerReqBean3;
+
+    class InnerReqBean1 {
+        @RequestParam("InnerReqBean1#string1")
+        private String string1;
+
+        public String getString1() {
+            return string1;
+        }
+
+        public void setString1(String string1) {
+            this.string1 = string1;
+        }
+    }
+
+    public class InnerReqBean2 {
+        @RequestParam("InnerReqBean2#string2")
+        private String string2;
+
+        public String getString1() {
+            return string2;
+        }
+
+        public void setString2(String string2) {
+            this.string2 = string2;
+        }
+    }
+
+    private class InnerReqBean3 {
+        @RequestParam("InnerReqBean3#string3")
+        private String string3;
+
+        @RequestParam("InnerReqBean3#string4")
+        private String string4;
+
+        public String getString3() {
+            return string3;
+        }
+
+        public void setString3(String string3) {
+            this.string3 = string3;
+        }
+
+        public String getString4() {
+            return string4;
+        }
+
+        public void setString4(String string4) {
+            this.string4 = string4;
+        }
+    }
+
+    public T gettReq() {
+        return tReq;
+    }
+
+    public void settReq(T tReq) {
+        this.tReq = tReq;
+    }
+
+    public InnerReqBean1 getInnerReqBean1() {
+        return innerReqBean1;
+    }
+
+    public void setInnerReqBean1(InnerReqBean1 innerReqBean1) {
+        this.innerReqBean1 = innerReqBean1;
+    }
+
+    public InnerReqBean2 getInnerReqBean2() {
+        return innerReqBean2;
+    }
+
+    public void setInnerReqBean2(InnerReqBean2 innerReqBean2) {
+        this.innerReqBean2 = innerReqBean2;
+    }
+
+    public InnerReqBean3 getInnerReqBean3() {
+        return innerReqBean3;
+    }
+
+    public void setInnerReqBean3(InnerReqBean3 innerReqBean3) {
+        this.innerReqBean3 = innerReqBean3;
+    }
+
+}
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/params/InnerClassResponseBean.java b/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/params/InnerClassResponseBean.java
new file mode 100644
index 0000000..69241bc
--- /dev/null
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-api/src/main/java/org/apache/dubbo/apidocs/examples/params/InnerClassResponseBean.java
@@ -0,0 +1,110 @@
+/*
+ * 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.dubbo.apidocs.examples.params;
+
+import org.apache.dubbo.apidocs.annotations.ResponseProperty;
+
+/**
+ * Internal class test, response bean.
+ *
+ * @date 2021/2/2 16:24
+ */
+public class InnerClassResponseBean<T> {
+
+    @ResponseProperty("tResp")
+    private T tResp;
+
+    @ResponseProperty("innerRespBean1")
+    private InnerRespBean1 innerRespBean1;
+
+    @ResponseProperty("innerRespBean2")
+    private InnerRespBean2 innerRespBean2;
+
+    @ResponseProperty("innerRespBean3")
+    private InnerRespBean3 innerRespBean3;
+
+    class InnerRespBean1 {
+        @ResponseProperty("InnerRespBean1#String1")
+        private String string1;
+
+        public String getString1() {
+            return string1;
+        }
+
+        public void setString1(String string1) {
+            this.string1 = string1;
+        }
+    }
+
+    public class InnerRespBean2 {
+        @ResponseProperty("InnerRespBean2#String2")
+        private String string2;
+
+        public String getString2() {
+            return string2;
+        }
+
+        public void setString2(String string2) {
+            this.string2 = string2;
+        }
+    }
+
+    private class InnerRespBean3 {
+        @ResponseProperty("InnerRespBean3#String3")
+        private String string3;
+
+        public String getString3() {
+            return string3;
+        }
+
+        public void setString3(String string3) {
+            this.string3 = string3;
+        }
+    }
+
+    public T gettResp() {
+        return tResp;
+    }
+
+    public void settResp(T tResp) {
+        this.tResp = tResp;
+    }
+
+    public InnerRespBean1 getInnerRespBean1() {
+        return innerRespBean1;
+    }
+
+    public void setInnerRespBean1(InnerRespBean1 innerRespBean1) {
+        this.innerRespBean1 = innerRespBean1;
+    }
+
+    public InnerRespBean2 getInnerRespBean2() {
+        return innerRespBean2;
+    }
+
+    public void setInnerRespBean2(InnerRespBean2 innerRespBean2) {
+        this.innerRespBean2 = innerRespBean2;
+    }
+
+    public InnerRespBean3 getInnerRespBean3() {
+        return innerRespBean3;
+    }
+
+    public void setInnerRespBean3(InnerRespBean3 innerRespBean3) {
+        this.innerRespBean3 = innerRespBean3;
+    }
+}
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/pom.xml b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/pom.xml
index cc6ac7f..9f16669 100644
--- a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/pom.xml
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/pom.xml
@@ -73,6 +73,25 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-logging</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>netty</artifactId>
+                    <groupId>io.netty</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-recipes</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java
index ded9bfd..5bbd30e 100644
--- a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java
@@ -21,6 +21,8 @@ import org.apache.dubbo.apidocs.annotations.ApiModule;
 import org.apache.dubbo.apidocs.annotations.RequestParam;
 import org.apache.dubbo.apidocs.examples.api.IQuickStartDemo;
 import org.apache.dubbo.apidocs.examples.params.DemoParamBean4;
+import org.apache.dubbo.apidocs.examples.params.InnerClassRequestBean;
+import org.apache.dubbo.apidocs.examples.params.InnerClassResponseBean;
 import org.apache.dubbo.apidocs.examples.params.QuickStartRequestBase;
 import org.apache.dubbo.apidocs.examples.params.QuickStartRequestBean;
 import org.apache.dubbo.apidocs.examples.params.QuickStartRequestBean2;
@@ -28,6 +30,7 @@ import org.apache.dubbo.apidocs.examples.params.QuickStartRespBean;
 import org.apache.dubbo.config.annotation.DubboService;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -67,4 +70,16 @@ public class QuickStartDemoImpl implements IQuickStartDemo {
         response.setMethod("test");
         return response;
     }
+
+    @ApiDoc(value = "internal class test", description = "internal class test.", responseClassDescription="Internal class test, response bean.")
+    @Override
+    public InnerClassResponseBean<List<String>> quickStart5(InnerClassRequestBean<List<String>> testBean) {
+        InnerClassResponseBean<List<String>> responseBean = new InnerClassResponseBean<>();
+        List<String> respT = new ArrayList<>(2);
+        respT.add("respT string1");
+        respT.add("respT string2");
+        responseBean.settResp(respT);
+
+        return responseBean;
+    }
 }
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml
index 47b3b05..dbb4a3b 100644
--- a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml
@@ -31,7 +31,9 @@ dubbo:
   application:
     name: dubbo-api-docs-example-provider
   metadata-report:
-    address: nacos://127.0.0.1:8848
+    address: zookeeper://127.0.0.1:2181
+  config-center:
+    address: zookeeper://127.0.0.1:2181
 demo:
   apiversion:
     quickstart: v0.1
\ No newline at end of file