You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tubemq.apache.org by do...@apache.org on 2020/12/01 01:24:26 UTC
[incubator-tubemq] branch TUBEMQ-430 updated: [TUBEMQ-434] Adjust
Broker API mapping (#329)
This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch TUBEMQ-430
in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git
The following commit(s) were added to refs/heads/TUBEMQ-430 by this push:
new 0607e98 [TUBEMQ-434] Adjust Broker API mapping (#329)
0607e98 is described below
commit 0607e98053016743ea1078865982680fd68fc176
Author: gosonzhang <46...@qq.com>
AuthorDate: Tue Dec 1 09:24:17 2020 +0800
[TUBEMQ-434] Adjust Broker API mapping (#329)
Co-authored-by: gosonzhang <go...@tencent.com>
---
.../server/broker/web/AbstractWebHandler.java | 83 ++++++++++++++++++++++
.../webbase/WebMethodMapper.java} | 12 ++--
.../server/master/web/action/screen/Webapi.java | 6 +-
.../master/web/handler/AbstractWebHandler.java | 2 +-
4 files changed, 93 insertions(+), 10 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
new file mode 100644
index 0000000..b44d88c
--- /dev/null
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/broker/web/AbstractWebHandler.java
@@ -0,0 +1,83 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.broker.web;
+
+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 javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.tubemq.server.broker.TubeBroker;
+import org.apache.tubemq.server.common.webbase.WebMethodMapper.WebApiRegInfo;
+
+
+
+public abstract class AbstractWebHandler extends HttpServlet {
+
+ protected final TubeBroker broker;
+
+ public AbstractWebHandler(TubeBroker broker) {
+ this.broker = broker;
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req,
+ HttpServletResponse resp) throws IOException {
+ doPost(req, resp);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req,
+ HttpServletResponse resp) throws IOException {
+ StringBuilder strBuffer = new StringBuilder(1024);
+
+ try {
+ String method = req.getParameter("method");
+ if (method == null) {
+ strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"")
+ .append("Please take with method parameter! \"}");
+ } else {
+ WebApiRegInfo webApiRegInfo = getWebApiRegInfo(true, method);
+ if (webApiRegInfo == null) {
+ strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"")
+ .append("Unsupported method ").append(method).append("}");
+ } else {
+ strBuffer = (StringBuilder) webApiRegInfo.method.invoke(webApiRegInfo.webHandler, req);
+ }
+ }
+ } catch (Throwable e) {
+ strBuffer.append("{\"result\":false,\"errCode\":400,\"errMsg\":\"")
+ .append("Bad request from server: ")
+ .append(e.getMessage())
+ .append("\"}");
+ }
+ resp.getWriter().write(strBuffer.toString());
+ resp.setCharacterEncoding(req.getCharacterEncoding());
+ resp.setStatus(HttpServletResponse.SC_OK);
+ resp.flushBuffer();
+ }
+
+ public abstract void registerWebApiMethod();
+
+ protected void innRegisterWebMethod(String webMethodName,
+ String clsMethodName) {
+ registerWebMethod(true, webMethodName, clsMethodName, this);
+ }
+
+}
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/WebApiMapper.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java
similarity index 87%
rename from tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/WebApiMapper.java
rename to tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java
index a71ba03..a856014 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/web/handler/WebApiMapper.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/webbase/WebMethodMapper.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.tubemq.server.master.web.handler;
+package org.apache.tubemq.server.common.webbase;
import java.lang.reflect.Method;
import java.util.HashMap;
@@ -24,10 +24,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class WebApiMapper {
+public class WebMethodMapper {
// log printer
private static final Logger logger =
- LoggerFactory.getLogger(WebApiMapper.class);
+ LoggerFactory.getLogger(WebMethodMapper.class);
// The query methods map
public static final Map<String, WebApiRegInfo> WEB_QRY_METHOD_MAP =
new HashMap<>();
@@ -47,7 +47,7 @@ public class WebApiMapper {
public static void registerWebMethod(boolean isQryApi,
String webMethodName,
String clsMethodName,
- AbstractWebHandler webHandler) {
+ Object webHandler) {
Method[] methods = webHandler.getClass().getMethods();
for (Method item : methods) {
if (item.getName().equals(clsMethodName)) {
@@ -71,10 +71,10 @@ public class WebApiMapper {
public static class WebApiRegInfo {
public Method method;
- public AbstractWebHandler webHandler;
+ public Object webHandler;
public WebApiRegInfo(Method method,
- AbstractWebHandler webHandler) {
+ Object webHandler) {
this.method = method;
this.webHandler = webHandler;
}
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 326f690..5d4de04 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
@@ -17,7 +17,7 @@
package org.apache.tubemq.server.master.web.action.screen;
-import static org.apache.tubemq.server.master.web.handler.WebApiMapper.getWebApiRegInfo;
+import static org.apache.tubemq.server.common.webbase.WebMethodMapper.getWebApiRegInfo;
import java.util.Arrays;
import java.util.List;
@@ -25,13 +25,13 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.tubemq.corebase.TBaseConstants;
import org.apache.tubemq.corebase.utils.TStringUtils;
import org.apache.tubemq.corerpc.exception.StandbyException;
+import org.apache.tubemq.server.common.webbase.WebMethodMapper;
import org.apache.tubemq.server.master.TMaster;
import org.apache.tubemq.server.master.nodemanage.nodebroker.BrokerConfManager;
import org.apache.tubemq.server.master.web.handler.AbstractWebHandler;
import org.apache.tubemq.server.master.web.handler.WebAdminFlowRuleHandler;
import org.apache.tubemq.server.master.web.handler.WebAdminGroupCtrlHandler;
import org.apache.tubemq.server.master.web.handler.WebAdminTopicAuthHandler;
-import org.apache.tubemq.server.master.web.handler.WebApiMapper;
import org.apache.tubemq.server.master.web.handler.WebBrokerDefConfHandler;
import org.apache.tubemq.server.master.web.handler.WebBrokerTopicConfHandler;
import org.apache.tubemq.server.master.web.handler.WebMasterInfoHandler;
@@ -102,7 +102,7 @@ public class Webapi implements Action {
"DesignatedPrimary happened...please check if the other member is down");
}
}
- WebApiMapper.WebApiRegInfo webApiRegInfo = getWebApiRegInfo(isQuery, method);
+ WebMethodMapper.WebApiRegInfo webApiRegInfo = getWebApiRegInfo(isQuery, 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 09b11eb..1b1bfdc 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
@@ -17,7 +17,7 @@
package org.apache.tubemq.server.master.web.handler;
-import static org.apache.tubemq.server.master.web.handler.WebApiMapper.registerWebMethod;
+import static org.apache.tubemq.server.common.webbase.WebMethodMapper.registerWebMethod;
import org.apache.tubemq.server.master.TMaster;
import org.apache.tubemq.server.master.nodemanage.nodebroker.BrokerConfManager;