Merge pull request #20 from KeRan213539/fix-apidocs-#19

Fix #19
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 f8bb60e..f3287da 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
@@ -120,16 +120,20 @@
             }
             boolean async;
             String apiVersion;
+            String apiGroup;
             if (apiModuleClass.isAnnotationPresent(Service.class)) {
                 Service dubboService = apiModuleClass.getAnnotation(Service.class);
                 async = dubboService.async();
                 apiVersion = dubboService.version();
+                apiGroup = dubboService.group();
             } else {
                 DubboService dubboService = apiModuleClass.getAnnotation(DubboService.class);
                 async = dubboService.async();
                 apiVersion = dubboService.version();
+                apiGroup = dubboService.group();
             }
             apiVersion = applicationContext.getEnvironment().resolvePlaceholders(apiVersion);
+            apiGroup = applicationContext.getEnvironment().resolvePlaceholders(apiGroup);
             ModuleCacheItem moduleCacheItem = new ModuleCacheItem();
             DubboApiDocsCache.addApiModule(moduleAnn.apiInterface().getCanonicalName(), moduleCacheItem);
             //module name
@@ -138,6 +142,8 @@
             moduleCacheItem.setModuleClassName(moduleAnn.apiInterface().getCanonicalName());
             //module version
             moduleCacheItem.setModuleVersion(apiVersion);
+            //module group
+            moduleCacheItem.setModuleGroup(apiGroup);
 
             Method[] apiModuleMethods = apiModuleClass.getMethods();
             // API basic information list in module cache
@@ -145,7 +151,7 @@
             moduleCacheItem.setModuleApiList(moduleApiList);
             for (Method method : apiModuleMethods) {
                 if (method.isAnnotationPresent(ApiDoc.class)) {
-                    processApiDocAnnotation(method, moduleApiList, moduleAnn, async, moduleCacheItem, apiVersion);
+                    processApiDocAnnotation(method, moduleApiList, moduleAnn, async, moduleCacheItem, apiVersion, apiGroup);
                 }
             }
         });
@@ -153,7 +159,7 @@
     }
 
     private void processApiDocAnnotation(Method method, List<ApiCacheItem> moduleApiList, ApiModule moduleAnn,
-                                         boolean async, ModuleCacheItem moduleCacheItem, String apiVersion) {
+                                         boolean async, ModuleCacheItem moduleCacheItem, String apiVersion, String apiGroup) {
 
         ApiDoc dubboApi = method.getAnnotation(ApiDoc.class);
 
@@ -168,6 +174,8 @@
         apiListItem.setDescription(dubboApi.description());
         //API version
         apiListItem.setApiVersion(apiVersion);
+        //API group
+        apiListItem.setApiGroup(apiGroup);
         //Description of API return data
         apiListItem.setApiRespDec(dubboApi.responseClassDescription());
 
@@ -185,6 +193,7 @@
         apiParamsAndResp.setApiName(method.getName());
         apiParamsAndResp.setApiDocName(dubboApi.value());
         apiParamsAndResp.setApiVersion(apiVersion);
+        apiParamsAndResp.setApiGroup(apiGroup);
         apiParamsAndResp.setApiRespDec(dubboApi.responseClassDescription());
         apiParamsAndResp.setDescription(dubboApi.description());
         apiParamsAndResp.setApiModelClass(moduleCacheItem.getModuleClassName());
diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java
index f88c039..b92fae9 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java
@@ -31,6 +31,8 @@
 
     private String apiVersion;
 
+    private String apiGroup;
+
     private String description;
 
     private String apiRespDec;
@@ -122,4 +124,12 @@
     public void setMethodParamInfo(String methodParamInfo) {
         this.methodParamInfo = methodParamInfo;
     }
+
+    public String getApiGroup() {
+        return apiGroup;
+    }
+
+    public void setApiGroup(String apiGroup) {
+        this.apiGroup = apiGroup;
+    }
 }
diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java
index e729969..0147152 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java
@@ -29,6 +29,8 @@
 
     private String moduleVersion;
 
+    private String moduleGroup;
+
     private List<ApiCacheItem> moduleApiList;
 
     public String getModuleDocName() {
@@ -62,4 +64,12 @@
     public void setModuleApiList(List<ApiCacheItem> moduleApiList) {
         this.moduleApiList = moduleApiList;
     }
+
+    public String getModuleGroup() {
+        return moduleGroup;
+    }
+
+    public void setModuleGroup(String moduleGroup) {
+        this.moduleGroup = moduleGroup;
+    }
 }
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 f02ae82..75db7ab 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
@@ -40,7 +40,7 @@
  *
  * @date 2020/12/23 17:21
  */
-@DubboService(version = "${demo.apiversion.quickstart}")
+@DubboService(version = "${demo.apiversion.quickstart}", group = "demoGroup")
 @ApiModule(value = "quick start demo", apiInterface = IQuickStartDemo.class)
 public class QuickStartDemoImpl implements IQuickStartDemo {
 
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 10a1831..58b8cc7 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
@@ -23,6 +23,7 @@
 dubbo:
   registry:
     address: zookeeper://127.0.0.1:2181
+#    group: DEFAULT_GROUP
   provider:
     timeout: 2000
     filter: metrics
@@ -33,8 +34,10 @@
     name: dubbo-api-docs-example-provider
   metadata-report:
     address: zookeeper://127.0.0.1:2181
+#    group: DEFAULT_GROUP
   config-center:
     address: zookeeper://127.0.0.1:2181
+#    group: DEFAULT_GROUP
   metrics:
     port: ${dubbo.protocol.port}
     protocol: dubbo