You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tubemq.apache.org by yu...@apache.org on 2021/01/29 10:07:27 UTC

[incubator-tubemq] 29/49: [TUBEMQ-504]Adjust the WebMethodMapper class interfaces (#388)

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

yuanbo pushed a commit to branch TUBEMQ-421
in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git

commit 8762bd13afc000b8177465eafe23e6fb7082b504
Author: gosonzhang <46...@qq.com>
AuthorDate: Sat Jan 9 21:49:54 2021 +0800

    [TUBEMQ-504]Adjust the WebMethodMapper class interfaces (#388)
    
    Co-authored-by: gosonzhang <go...@tencent.com>
---
 .../server/broker/web/AbstractWebHandler.java      | 13 +++---
 .../server/broker/web/BrokerAdminServlet.java      | 36 ++++++++--------
 .../tubemq/server/common/utils/ProcessResult.java  |  7 ++++
 .../server/common/utils/WebParameterUtils.java     | 14 ++++---
 .../server/common/webbase/WebMethodMapper.java     | 48 +++++++++-------------
 .../server/master/web/action/screen/Webapi.java    |  2 +-
 .../master/web/handler/AbstractWebHandler.java     | 14 ++++---
 7 files changed, 71 insertions(+), 63 deletions(-)

diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java
index 508849c..17a378d 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java
@@ -21,7 +21,8 @@ import static org.apache.tubemq.server.common.webbase.WebMethodMapper.getRegiste
 import static org.apache.tubemq.server.common.webbase.WebMethodMapper.getWebApiRegInfo;
 import static org.apache.tubemq.server.common.webbase.WebMethodMapper.registerWebMethod;
 import java.io.IOException;
-import java.util.List;
+import java.util.Set;
+
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -44,7 +45,7 @@ public abstract class AbstractWebHandler extends HttpServlet {
         doPost(req, resp);
     }
 
-    public List<String> getSupportedMethod() {
+    public Set<String> getSupportedMethod() {
         return getRegisteredWebMethod();
     }
 
@@ -59,7 +60,7 @@ public abstract class AbstractWebHandler extends HttpServlet {
                 strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"")
                         .append("Please take with method parameter! \"}");
             } else {
-                WebApiRegInfo webApiRegInfo = getWebApiRegInfo(true, method);
+                WebApiRegInfo webApiRegInfo = getWebApiRegInfo(method);
                 if (webApiRegInfo == null) {
                     strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"")
                             .append("Unsupported method ").append(method).append("\"}");
@@ -82,8 +83,10 @@ public abstract class AbstractWebHandler extends HttpServlet {
     public abstract void registerWebApiMethod();
 
     protected void innRegisterWebMethod(String webMethodName,
-                                        String clsMethodName) {
-        registerWebMethod(true, webMethodName, clsMethodName, this);
+                                        String clsMethodName,
+                                        boolean needAuthToken) {
+        registerWebMethod(webMethodName, clsMethodName,
+                false, needAuthToken, this);
     }
 
 }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java
index 5b11be1..d35ba91 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/BrokerAdminServlet.java
@@ -58,59 +58,59 @@ public class BrokerAdminServlet extends AbstractWebHandler {
     public void registerWebApiMethod() {
         // query consumer group's offset
         innRegisterWebMethod("admin_query_group_offset",
-                "adminQueryCurrentGroupOffSet");
+                "adminQueryCurrentGroupOffSet", false);
         // query snapshot message
         innRegisterWebMethod("admin_snapshot_message",
-                "adminQuerySnapshotMessageSet");
+                "adminQuerySnapshotMessageSet", false);
         // query broker's all consumer info
         innRegisterWebMethod("admin_query_broker_all_consumer_info",
-                "adminQueryBrokerAllConsumerInfo");
+                "adminQueryBrokerAllConsumerInfo", false);
         // get memory store status info
         innRegisterWebMethod("admin_query_broker_memstore_info",
-                "adminGetMemStoreStatisInfo");
+                "adminGetMemStoreStatisInfo", false);
         // query broker's all message store info
         innRegisterWebMethod("admin_query_broker_all_store_info",
-                "adminQueryBrokerAllMessageStoreInfo");
+                "adminQueryBrokerAllMessageStoreInfo", false);
         // query consumer register info
         innRegisterWebMethod("admin_query_consumer_regmap",
-                "adminQueryConsumerRegisterInfo");
+                "adminQueryConsumerRegisterInfo", false);
         // manual set offset
         innRegisterWebMethod("admin_manual_set_current_offset",
-                "adminManualSetCurrentOffSet");
+                "adminManualSetCurrentOffSet", false);
         // get all registered methods
         innRegisterWebMethod("admin_get_methods",
-                "adminQueryAllMethods");
+                "adminQueryAllMethods", false);
         // query topic's publish info
         innRegisterWebMethod("admin_query_pubinfo",
-                "adminQueryPubInfo");
+                "adminQueryPubInfo", false);
         // Query all consumer groups booked on the Broker.
         innRegisterWebMethod("admin_query_group",
-                "adminQueryBookedGroup");
+                "adminQueryBookedGroup", false);
         // query consumer group's offset
         innRegisterWebMethod("admin_query_offset",
-                "adminQueryGroupOffSet");
+                "adminQueryGroupOffSet", false);
         // clone consumer group's offset from source to target
         innRegisterWebMethod("admin_clone_offset",
-                "adminCloneGroupOffSet");
+                "adminCloneGroupOffSet", false);
         // set or update group's offset info
         innRegisterWebMethod("admin_set_offset",
-                "adminSetGroupOffSet");
+                "adminSetGroupOffSet", false);
         // remove group's offset info
         innRegisterWebMethod("admin_rmv_offset",
-                "adminRemoveGroupOffSet");
+                "adminRemoveGroupOffSet", false);
     }
 
     public void adminQueryAllMethods(HttpServletRequest req,
                                      StringBuilder sBuilder) {
         int index = 0;
-        List<String> methods = getSupportedMethod();
+        Set<String> methods = getSupportedMethod();
         sBuilder.append("{\"result\":true,\"errCode\":0,\"errMsg\":\"Success!\",\"dataSet\":[");
-        for (index = 0; index < methods.size(); index++) {
-            if (index > 0) {
+        for (String method : methods) {
+            if (index++ > 0) {
                 sBuilder.append(",");
             }
             sBuilder.append("{\"id\":").append(index + 1)
-                    .append(",\"method\":\"").append(methods.get(index)).append("\"}");
+                    .append(",\"method\":\"").append(method).append("\"}");
         }
         sBuilder.append("],\"totalCnt\":").append(index + 1).append("}");
     }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/ProcessResult.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/ProcessResult.java
index 8cabf67..5b13dd8 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/ProcessResult.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/ProcessResult.java
@@ -47,6 +47,13 @@ public class ProcessResult {
         this.retData1 = null;
     }
 
+    public void setFailResult(final String errMsg) {
+        this.success = false;
+        this.errCode = TErrCodeConstants.BAD_REQUEST;
+        this.errInfo = errMsg;
+        this.retData1 = null;
+    }
+
     public void setSuccResult(Object retData) {
         this.success = true;
         this.errInfo = "";
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java
index 2318bdb..f309ab7 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java
@@ -242,13 +242,17 @@ public class WebParameterUtils {
                 .append(errMsg).append("\"}");
     }
 
+    public static StringBuilder buildSuccessResult(StringBuilder strBuffer) {
+        return strBuffer.append("{\"result\":true,\"errCode\":0,\"errMsg\":\"OK\"}");
+    }
+
     /**
      * Parse the parameter value from an object value to a long value
      *
      * @param req        Http Servlet Request
      * @param fieldDef   the parameter field definition
      * @param required   a boolean value represent whether the parameter is must required
-     * @param defValue   a default value returned if failed to parse value from the given object
+     * @param defValue   a default value returned if the field not exist
      * @param result     process result of parameter value
      * @return process result
      */
@@ -329,7 +333,7 @@ public class WebParameterUtils {
      * @param req        Http Servlet Request
      * @param fieldDef   the parameter field definition
      * @param required   a boolean value represent whether the parameter is must required
-     * @param defValue   a default value returned if failed to parse value from the given object
+     * @param defValue   a default value returned if the field not exist
      * @param minValue   min value required
      * @param result     process result of parameter value
      * @return process result
@@ -377,7 +381,7 @@ public class WebParameterUtils {
      * @param req         Http Servlet Request
      * @param fieldDef    the parameter field definition
      * @param required    a boolean value represent whether the parameter is must required
-     * @param defValue    a default value returned if failed to parse value from the given object
+     * @param defValue    a default value returned if the field not exist
      * @param result      process result
      * @return valid result for the parameter value
      */
@@ -404,7 +408,7 @@ public class WebParameterUtils {
      * @param req         Http Servlet Request
      * @param fieldDef    the parameter field definition
      * @param required     a boolean value represent whether the parameter is must required
-     * @param defValue     a default value returned if failed to parse value from the given object
+     * @param defValue     a default value returned if the field not exist
      * @param result      process result
      * @return valid result for the parameter value
      */
@@ -486,7 +490,7 @@ public class WebParameterUtils {
      * @param req         Http Servlet Request
      * @param fieldDef    the parameter field definition
      * @param required    a boolean value represent whether the parameter is must required
-     * @param defValue    a default value returned if failed to parse value from the given object
+     * @param defValue    a default value returned if the field not exist
      * @param result      process result
      * @return valid result for the parameter value
      */
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java
index 83e0472..147a388 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java
@@ -18,10 +18,9 @@
 package org.apache.tubemq.server.common.webbase;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,36 +29,25 @@ public class WebMethodMapper {
     // log printer
     private static final Logger logger =
             LoggerFactory.getLogger(WebMethodMapper.class);
-    // The query methods map
-    public static final Map<String, WebApiRegInfo> WEB_QRY_METHOD_MAP =
-            new HashMap<>();
-    // The modify methods map
-    public static final Map<String, WebApiRegInfo> WEB_MDY_METHOD_MAP =
+
+    public static final Map<String, WebApiRegInfo> WEB_METHOD_MAP =
             new HashMap<>();
 
 
-    public static WebApiRegInfo getWebApiRegInfo(boolean isQryApi,
-                                                 String webMethodName) {
-        if (isQryApi) {
-            return WEB_QRY_METHOD_MAP.get(webMethodName);
-        }
-        return WEB_MDY_METHOD_MAP.get(webMethodName);
+    public static WebApiRegInfo getWebApiRegInfo(String webMethodName) {
+        return WEB_METHOD_MAP.get(webMethodName);
     }
 
-    public static void registerWebMethod(boolean isQryApi,
-                                         String webMethodName,
+    public static void registerWebMethod(String webMethodName,
                                          String clsMethodName,
+                                         boolean onlyMasterOp,
+                                         boolean needAuthToken,
                                          Object webHandler) {
         Method[] methods = webHandler.getClass().getMethods();
         for (Method item : methods) {
             if (item.getName().equals(clsMethodName)) {
-                if (isQryApi) {
-                    WEB_QRY_METHOD_MAP.put(webMethodName,
-                            new WebApiRegInfo(item, webHandler));
-                } else {
-                    WEB_MDY_METHOD_MAP.put(webMethodName,
-                            new WebApiRegInfo(item, webHandler));
-                }
+                WEB_METHOD_MAP.put(webMethodName,
+                        new WebApiRegInfo(item, webHandler, onlyMasterOp, needAuthToken));
                 return;
             }
         }
@@ -69,11 +57,8 @@ public class WebMethodMapper {
                 .append(webHandler.getClass().getName()).toString());
     }
 
-    public static List<String> getRegisteredWebMethod() {
-        List<String> methods = new ArrayList<>();
-        methods.addAll(WEB_QRY_METHOD_MAP.keySet());
-        methods.addAll(WEB_MDY_METHOD_MAP.keySet());
-        return methods;
+    public static Set<String> getRegisteredWebMethod() {
+        return WEB_METHOD_MAP.keySet();
     }
 
 
@@ -81,11 +66,18 @@ public class WebMethodMapper {
     public static class WebApiRegInfo {
         public Method method;
         public Object webHandler;
+        public boolean onlyMasterOp = false;
+        public boolean needAuthToken = false;
+
 
         public WebApiRegInfo(Method method,
-                             Object webHandler) {
+                             Object webHandler,
+                             boolean onlyMasterOp,
+                             boolean needAuthToken) {
             this.method = method;
             this.webHandler = webHandler;
+            this.onlyMasterOp = onlyMasterOp;
+            this.needAuthToken = needAuthToken;
         }
     }
 
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java
index 5c5bb3f..126f1e8 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/action/screen/Webapi.java
@@ -102,7 +102,7 @@ public class Webapi implements Action {
                             "DesignatedPrimary happened...please check if the other member is down");
                 }
             }
-            WebMethodMapper.WebApiRegInfo webApiRegInfo = getWebApiRegInfo(isQuery, method);
+            WebMethodMapper.WebApiRegInfo webApiRegInfo = getWebApiRegInfo(method);
             if (webApiRegInfo == null) {
                 strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"Unsupported method: ")
                         .append(method).append("\"}");
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/AbstractWebHandler.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/AbstractWebHandler.java
index 1b1bfdc..63de11c 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/AbstractWebHandler.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/AbstractWebHandler.java
@@ -37,18 +37,20 @@ public abstract class AbstractWebHandler {
 
     protected void registerQueryWebMethod(String webMethodName,
                                           String clsMethodName) {
-        innRegisterWebMethod(true, webMethodName, clsMethodName);
+        innRegisterWebMethod(webMethodName, clsMethodName, false, false);
     }
 
     protected void registerModifyWebMethod(String webMethodName,
                                            String clsMethodName) {
-        innRegisterWebMethod(false, webMethodName, clsMethodName);
+        innRegisterWebMethod(webMethodName, clsMethodName, true, true);
     }
 
-    private void innRegisterWebMethod(boolean isQryApi,
-                                      String webMethodName,
-                                      String clsMethodName) {
-        registerWebMethod(isQryApi, webMethodName, clsMethodName, this);
+    private void innRegisterWebMethod(String webMethodName,
+                                      String clsMethodName,
+                                      boolean onlyMasterOp,
+                                      boolean needAuthToken) {
+        registerWebMethod(webMethodName, clsMethodName,
+                onlyMasterOp, needAuthToken, this);
     }
 
 }