From 9b95d06c514aeb73f353cdb7f60ca20223330219 Mon Sep 17 00:00:00 2001 From: Goson Zhang <4675739@qq.com> Date: Fri, 8 Jul 2022 10:58:47 +0800 Subject: [PATCH] [INLONG-4924][TubeMQ] Add admin_get_methods method (#4925) --- .../server/broker/web/AbstractWebHandler.java | 5 ++--- .../server/broker/web/BrokerAdminServlet.java | 12 ++--------- .../common/webbase/WebMethodMapper.java | 20 ++++++++++++++++--- .../web/handler/AbstractWebHandler.java | 6 +++++- .../web/handler/WebOtherInfoHandler.java | 20 ++++++++++++++++++- 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/AbstractWebHandler.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/AbstractWebHandler.java index 7ddbad6f18c..d9a8d731145 100644 --- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/AbstractWebHandler.java +++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/AbstractWebHandler.java @@ -21,7 +21,6 @@ import static org.apache.inlong.tubemq.server.common.webbase.WebMethodMapper.getWebApiRegInfo; import static org.apache.inlong.tubemq.server.common.webbase.WebMethodMapper.registerWebMethod; import java.io.IOException; -import java.util.Set; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -43,8 +42,8 @@ protected void doGet(HttpServletRequest req, doPost(req, resp); } - public Set getSupportedMethod() { - return getRegisteredWebMethod(); + public int getSupportedMethod(StringBuilder sBuffer) { + return getRegisteredWebMethod(sBuffer); } @Override diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/BrokerAdminServlet.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/BrokerAdminServlet.java index 0057eb6b318..ccd70159d8c 100644 --- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/BrokerAdminServlet.java +++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/web/BrokerAdminServlet.java @@ -140,17 +140,9 @@ public void registerWebApiMethod() { */ public void adminQueryAllMethods(HttpServletRequest req, StringBuilder sBuffer) { - int index = 0; - Set methods = getSupportedMethod(); sBuffer.append("{\"result\":true,\"errCode\":0,\"errMsg\":\"Success!\",\"dataSet\":["); - for (String method : methods) { - if (index++ > 0) { - sBuffer.append(","); - } - sBuffer.append("{\"id\":").append(index) - .append(",\"method\":\"").append(method).append("\"}"); - } - sBuffer.append("],\"totalCnt\":").append(index).append("}"); + int totalCnt = getSupportedMethod(sBuffer); + sBuffer.append("],\"totalCnt\":").append(totalCnt).append("}"); } /** diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/webbase/WebMethodMapper.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/webbase/WebMethodMapper.java index 3a051648bee..5c019f688fd 100644 --- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/webbase/WebMethodMapper.java +++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/webbase/WebMethodMapper.java @@ -20,7 +20,6 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; -import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,8 +53,23 @@ public static void registerWebMethod(String webMethodName, .append(webHandler.getClass().getName()).toString()); } - public static Set getRegisteredWebMethod() { - return WEB_METHOD_MAP.keySet(); + public static int getRegisteredWebMethod(StringBuilder sBuffer) { + int totalCnt = 0; + if (WEB_METHOD_MAP.isEmpty()) { + return totalCnt; + } + for (Map.Entry entry : WEB_METHOD_MAP.entrySet()) { + if (entry == null || entry.getKey() == null || entry.getValue() == null) { + continue; + } + if (totalCnt++ > 0) { + sBuffer.append(","); + } + sBuffer.append("{\"method\":\"").append(entry.getKey()) + .append("\",\"needAuth\":").append(entry.getValue().needAuthToken) + .append("}"); + } + return totalCnt; } public static class WebApiRegInfo { diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/AbstractWebHandler.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/AbstractWebHandler.java index 71dfc70834c..7899ec9567d 100644 --- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/AbstractWebHandler.java +++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/AbstractWebHandler.java @@ -17,6 +17,7 @@ package org.apache.inlong.tubemq.server.master.web.handler; +import static org.apache.inlong.tubemq.server.common.webbase.WebMethodMapper.getRegisteredWebMethod; import static org.apache.inlong.tubemq.server.common.webbase.WebMethodMapper.registerWebMethod; import org.apache.inlong.tubemq.server.master.TMaster; import org.apache.inlong.tubemq.server.master.metamanage.MetaDataService; @@ -43,6 +44,10 @@ protected void registerModifyWebMethod(String webMethodName, innRegisterWebMethod(webMethodName, clsMethodName, true, true); } + protected int getRegisteredMethods(StringBuilder sBuffer) { + return getRegisteredWebMethod(sBuffer); + } + private void innRegisterWebMethod(String webMethodName, String clsMethodName, boolean onlyMasterOp, @@ -50,5 +55,4 @@ private void innRegisterWebMethod(String webMethodName, registerWebMethod(webMethodName, clsMethodName, onlyMasterOp, needAuthToken, this); } - } diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebOtherInfoHandler.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebOtherInfoHandler.java index 5be319ab69f..a57a7daf349 100644 --- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebOtherInfoHandler.java +++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebOtherInfoHandler.java @@ -60,6 +60,8 @@ public WebOtherInfoHandler(TMaster master) { @Override public void registerWebApiMethod() { // register query method + registerQueryWebMethod("admin_get_methods", + "adminQueryAllMethods"); registerQueryWebMethod("admin_query_sub_info", "getSubscribeInfo"); registerQueryWebMethod("admin_query_consume_group_detail", @@ -81,6 +83,23 @@ public void registerWebApiMethod() { "adminDisableAllStats"); } + /** + * Get all API methods supported by this version. + * + * @param req Http Servlet Request + * @param sBuffer string buffer + * @param result process result + * @return process result + */ + public StringBuilder adminQueryAllMethods(HttpServletRequest req, + StringBuilder sBuffer, + ProcessResult result) { + WebParameterUtils.buildSuccessWithDataRetBegin(sBuffer); + int totalCnt = getRegisteredMethods(sBuffer); + WebParameterUtils.buildSuccessWithDataRetEnd(sBuffer, totalCnt); + return sBuffer; + } + /** * Get subscription info * @@ -526,5 +545,4 @@ private void getConsumerInfoList(final List consumerList, } strBuffer.append("]"); } - }