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 <[email protected]> AuthorDate: Sat Jan 9 21:49:54 2021 +0800 [TUBEMQ-504]Adjust the WebMethodMapper class interfaces (#388) Co-authored-by: gosonzhang <[email protected]> --- .../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); } }
