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