You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2018/08/03 20:46:07 UTC

[18/36] storm git commit: STORM-1311: UI Migration from clj to java

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/common/AuthorizationExceptionMapper.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/common/AuthorizationExceptionMapper.java b/storm-webapp/src/main/java/org/apache/storm/daemon/common/AuthorizationExceptionMapper.java
index 57467e1..251ada8 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/common/AuthorizationExceptionMapper.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/common/AuthorizationExceptionMapper.java
@@ -21,6 +21,8 @@ package org.apache.storm.daemon.common;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.ExceptionMapper;
 import javax.ws.rs.ext.Provider;
@@ -28,13 +30,16 @@ import javax.ws.rs.ext.Provider;
 import org.apache.storm.generated.AuthorizationException;
 import org.json.simple.JSONValue;
 
+import static org.apache.storm.daemon.ui.exceptionmappers.ExceptionMapperUtils.getResponse;
+
 @Provider
 public class AuthorizationExceptionMapper implements ExceptionMapper<AuthorizationException> {
+
+    @Inject
+    public javax.inject.Provider<HttpServletRequest> request;
+
     @Override
     public Response toResponse(AuthorizationException ex) {
-        Map<String, String> body = new HashMap<>();
-        body.put("error", "Not Authorized");
-        body.put("errorMessage", ex.get_msg());
-        return Response.status(403).entity(JSONValue.toJSONString(body)).type("application/json").build();
+        return getResponse(ex, request);
     }
 }

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/common/JsonResponseBuilder.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/common/JsonResponseBuilder.java b/storm-webapp/src/main/java/org/apache/storm/daemon/common/JsonResponseBuilder.java
index dc39bc6..6ca0fdc 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/common/JsonResponseBuilder.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/common/JsonResponseBuilder.java
@@ -22,7 +22,7 @@ import java.util.Collections;
 import java.util.Map;
 import javax.ws.rs.core.Response;
 
-import org.apache.storm.ui.UIHelpers;
+import org.apache.storm.daemon.ui.UIHelpers;
 
 /**
  * Response builder for JSON. It utilizes {@link UIHelpers} to construct JSON body and headers.

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java b/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
index 7d3ef5d..559993d 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
@@ -29,6 +29,8 @@ import org.apache.storm.Config;
 import org.apache.storm.DaemonConfig;
 import org.apache.storm.daemon.drpc.webapp.DRPCApplication;
 import org.apache.storm.daemon.drpc.webapp.ReqContextFilter;
+import org.apache.storm.daemon.ui.FilterConfiguration;
+import org.apache.storm.daemon.ui.UIHelpers;
 import org.apache.storm.generated.DistributedRPC;
 import org.apache.storm.generated.DistributedRPCInvocations;
 import org.apache.storm.metric.StormMetricsRegistry;
@@ -36,8 +38,6 @@ import org.apache.storm.security.auth.IHttpCredentialsPlugin;
 import org.apache.storm.security.auth.ServerAuthUtils;
 import org.apache.storm.security.auth.ThriftConnectionType;
 import org.apache.storm.security.auth.ThriftServer;
-import org.apache.storm.ui.FilterConfiguration;
-import org.apache.storm.ui.UIHelpers;
 import org.apache.storm.utils.ObjectReader;
 import org.apache.storm.utils.Utils;
 import org.eclipse.jetty.server.Server;
@@ -189,22 +189,25 @@ public class DRPCServer implements AutoCloseable {
             closed = true;
         }
     }
-    
+
     /**
+     * The port the DRPC handler server is listening on.
      * @return The port the DRPC handler server is listening on.
      */
     public int getDrpcPort() {
         return handlerServer.getPort();
     }
-    
+
     /**
+     * The port the DRPC invoke server is listening on.
      * @return The port the DRPC invoke server is listening on.
      */
     public int getDrpcInvokePort() {
         return invokeServer.getPort();
     }
-    
+
     /**
+     * The port the HTTP server is listening on. Not available until {@link #start() } has run.
      * @return The port the HTTP server is listening on. Not available until {@link #start() } has run.
      */
     public int getHttpServerPort() {

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/webapp/ReqContextFilter.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/webapp/ReqContextFilter.java b/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/webapp/ReqContextFilter.java
index cec6828..e16c6db 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/webapp/ReqContextFilter.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/webapp/ReqContextFilter.java
@@ -28,10 +28,14 @@ import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.ext.Provider;
 
 import org.apache.storm.security.auth.IHttpCredentialsPlugin;
 import org.apache.storm.security.auth.ReqContext;
 
+@Provider
+@PreMatching
 public class ReqContextFilter implements Filter {
     private final IHttpCredentialsPlugin httpCredsHandler;
 

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/LogviewerServer.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/LogviewerServer.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/LogviewerServer.java
index bd45ddd..07ac14b 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/LogviewerServer.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/LogviewerServer.java
@@ -34,9 +34,9 @@ import org.apache.storm.daemon.logviewer.utils.DirectoryCleaner;
 import org.apache.storm.daemon.logviewer.utils.LogCleaner;
 import org.apache.storm.daemon.logviewer.utils.WorkerLogs;
 import org.apache.storm.daemon.logviewer.webapp.LogviewerApplication;
+import org.apache.storm.daemon.ui.FilterConfiguration;
+import org.apache.storm.daemon.ui.UIHelpers;
 import org.apache.storm.metric.StormMetricsRegistry;
-import org.apache.storm.ui.FilterConfiguration;
-import org.apache.storm.ui.UIHelpers;
 import org.apache.storm.utils.ConfigUtils;
 import org.apache.storm.utils.ObjectReader;
 import org.apache.storm.utils.Utils;

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
index 0f498b3..32e79eb 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
@@ -37,7 +37,6 @@ import static java.util.stream.Collectors.toCollection;
 import static java.util.stream.Collectors.toList;
 import static org.apache.commons.lang.StringEscapeUtils.escapeHtml;
 
-import j2html.TagCreator;
 import j2html.tags.DomContent;
 
 import java.io.ByteArrayOutputStream;
@@ -65,13 +64,12 @@ import org.apache.storm.daemon.logviewer.utils.DirectoryCleaner;
 import org.apache.storm.daemon.logviewer.utils.LogviewerResponseBuilder;
 import org.apache.storm.daemon.logviewer.utils.ResourceAuthorizer;
 import org.apache.storm.daemon.logviewer.utils.WorkerLogs;
+import org.apache.storm.daemon.ui.InvalidRequestException;
+import org.apache.storm.daemon.ui.UIHelpers;
 import org.apache.storm.daemon.utils.StreamUtil;
 import org.apache.storm.daemon.utils.UrlBuilder;
-import org.apache.storm.ui.InvalidRequestException;
-import org.apache.storm.ui.UIHelpers;
 import org.apache.storm.utils.ConfigUtils;
 import org.apache.storm.utils.ServerUtils;
-import org.apache.storm.utils.Utils;
 import org.jooq.lambda.Unchecked;
 
 public class LogviewerLogPageHandler {
@@ -103,7 +101,7 @@ public class LogviewerLogPageHandler {
      * @param user username
      * @param port worker's port, null for all workers
      * @param topologyId topology ID, null for all topologies
-     * @param callback callback for JSONP
+     * @param callback callbackParameterName for JSONP
      * @param origin origin
      * @return list of worker logs for given criteria
      */

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
index 8d552e9..a26396c 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
@@ -59,9 +59,9 @@ import org.apache.storm.daemon.logviewer.utils.DirectoryCleaner;
 import org.apache.storm.daemon.logviewer.utils.LogviewerResponseBuilder;
 import org.apache.storm.daemon.logviewer.utils.ResourceAuthorizer;
 import org.apache.storm.daemon.logviewer.utils.WorkerLogs;
+import org.apache.storm.daemon.ui.InvalidRequestException;
 import org.apache.storm.daemon.utils.StreamUtil;
 import org.apache.storm.daemon.utils.UrlBuilder;
-import org.apache.storm.ui.InvalidRequestException;
 import org.apache.storm.utils.ObjectReader;
 import org.apache.storm.utils.ServerUtils;
 import org.apache.storm.utils.Utils;
@@ -117,7 +117,7 @@ public class LogviewerLogSearchHandler {
      * @param search search string
      * @param numMatchesStr the count of maximum matches
      * @param offsetStr start offset for log file
-     * @param callback callback for JSONP
+     * @param callback callbackParameterName for JSONP
      * @param origin origin
      * @return Response containing JSON content representing search result
      */
@@ -173,7 +173,7 @@ public class LogviewerLogSearchHandler {
      * @param fileOffsetStr index (offset) of the log files
      * @param offsetStr start offset for log file
      * @param searchArchived true if the request wants to search also archived files, false if not
-     * @param callback callback for JSONP
+     * @param callback callbackParameterName for JSONP
      * @param origin origin
      * @return Response containing JSON content representing search result
      */

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/utils/LogviewerResponseBuilder.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/utils/LogviewerResponseBuilder.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/utils/LogviewerResponseBuilder.java
index ee94435..b92a559 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/utils/LogviewerResponseBuilder.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/utils/LogviewerResponseBuilder.java
@@ -40,7 +40,7 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.StreamingOutput;
 
 import org.apache.storm.daemon.common.JsonResponseBuilder;
-import org.apache.storm.ui.UIHelpers;
+import org.apache.storm.daemon.ui.UIHelpers;
 
 public class LogviewerResponseBuilder {
 
@@ -61,7 +61,7 @@ public class LogviewerResponseBuilder {
      * Build a Response object representing success response with JSON entity.
      *
      * @param entity entity object to represent it as JSON
-     * @param callback callback for JSONP
+     * @param callback callbackParameterName for JSONP
      * @param origin origin
      * @see {@link JsonResponseBuilder}
      */
@@ -112,7 +112,7 @@ public class LogviewerResponseBuilder {
      * Build a Response object representing unauthorized user, with JSON response.
      *
      * @param user username
-     * @param callback callback for JSONP
+     * @param callback callbackParameterName for JSONP
      */
     public static Response buildUnauthorizedUserJsonResponse(String user, String callback) {
         return new JsonResponseBuilder().setData(UIHelpers.unauthorizedUserJson(user))
@@ -123,7 +123,7 @@ public class LogviewerResponseBuilder {
      * Build a Response object representing exception, with JSON response.
      *
      * @param ex Exception object
-     * @param callback callback for JSONP
+     * @param callback callbackParameterName for JSONP
      */
     public static Response buildExceptionJsonResponse(Exception ex, String callback) {
         int statusCode = 500;

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
index b46c6a9..85285ac 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
@@ -38,10 +38,11 @@ import org.apache.storm.daemon.logviewer.handler.LogviewerLogDownloadHandler;
 import org.apache.storm.daemon.logviewer.handler.LogviewerLogPageHandler;
 import org.apache.storm.daemon.logviewer.handler.LogviewerLogSearchHandler;
 import org.apache.storm.daemon.logviewer.handler.LogviewerProfileHandler;
+import org.apache.storm.daemon.ui.InvalidRequestException;
+import org.apache.storm.daemon.ui.UIHelpers;
+import org.apache.storm.daemon.ui.resources.StormApiResource;
 import org.apache.storm.metric.StormMetricsRegistry;
 import org.apache.storm.security.auth.IHttpCredentialsPlugin;
-import org.apache.storm.ui.InvalidRequestException;
-import org.apache.storm.ui.UIHelpers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -137,7 +138,7 @@ public class LogviewerResource {
         String user = httpCredsHandler.getUserName(request);
         String topologyId = request.getParameter("topoId");
         String portStr = request.getParameter("port");
-        String callback = request.getParameter("callback");
+        String callback = request.getParameter("callbackParameterName");
         String origin = request.getHeader("Origin");
 
         return logviewer.listLogFiles(user, portStr != null ? Integer.parseInt(portStr) : null, topologyId, callback, origin);
@@ -154,7 +155,7 @@ public class LogviewerResource {
         String user = httpCredsHandler.getUserName(request);
         String topologyId = request.getParameter("topoId");
         String portStr = request.getParameter("port");
-        String callback = request.getParameter("callback");
+        String callback = request.getParameter(StormApiResource.callbackParameterName);
         String origin = request.getHeader("Origin");
 
         return logviewer.listLogFiles(user, portStr != null ? Integer.parseInt(portStr) : null, topologyId, callback, origin);
@@ -223,7 +224,7 @@ public class LogviewerResource {
         String searchString = request.getParameter("search-string");
         String numMatchesStr = request.getParameter("num-matches");
         String startByteOffset = request.getParameter("start-byte-offset");
-        String callback = request.getParameter("callback");
+        String callback = request.getParameter(StormApiResource.callbackParameterName);
         String origin = request.getHeader("Origin");
 
         try {
@@ -251,7 +252,7 @@ public class LogviewerResource {
         String startFileOffset = request.getParameter("start-file-offset");
         String startByteOffset = request.getParameter("start-byte-offset");
         String searchArchived = request.getParameter("search-archived");
-        String callback = request.getParameter("callback");
+        String callback = request.getParameter(StormApiResource.callbackParameterName);
         String origin = request.getHeader("Origin");
 
         return logSearchHandler.deepSearchLogsForTopology(topologyId, user, searchString, numMatchesStr, portStr,

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/ui/FilterConfiguration.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/FilterConfiguration.java b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/FilterConfiguration.java
new file mode 100644
index 0000000..be9ecd5
--- /dev/null
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/FilterConfiguration.java
@@ -0,0 +1,68 @@
+/**
+ * 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.storm.daemon.ui;
+
+import java.util.Map;
+
+public class FilterConfiguration {
+    private String filterClass;
+    private String filterName;
+    private Map<String, String> filterParams;
+
+    /**
+     * FilterConfiguration.
+     * @param filterClass filterClass
+     * @param filterParams filterParams
+     */
+    public FilterConfiguration(String filterClass, Map<String, String> filterParams) {
+        this.filterParams = filterParams;
+        this.filterClass = filterClass;
+        this.filterName = null;
+    }
+
+    /**
+     * FilterConfiguration.
+     * @param filterClass filterClass
+     * @param filterName filterName
+     * @param filterParams filterParams
+     */
+    public FilterConfiguration(String filterClass, String filterName, Map<String, String> filterParams) {
+        this.filterClass = filterClass;
+        this.filterName = filterName;
+        this.filterParams = filterParams;
+    }
+
+    public String getFilterName() {
+        return filterName;
+    }
+
+    public void setFilterName(String filterName) {
+        this.filterName = filterName;
+    }
+
+    public String getFilterClass() {
+        return filterClass;
+    }
+
+    public void setFilterClass(String filterClass) {
+        this.filterClass = filterClass;
+    }
+
+    public Map<String, String> getFilterParams() {
+        return filterParams;
+    }
+
+    public void setFilterParams(Map<String, String> filterParams) {
+        this.filterParams = filterParams;
+    }
+}

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/ui/IConfigurator.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/IConfigurator.java b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/IConfigurator.java
new file mode 100644
index 0000000..93a557b
--- /dev/null
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/IConfigurator.java
@@ -0,0 +1,19 @@
+/**
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.storm.daemon.ui;
+
+import org.eclipse.jetty.server.Server;
+
+public interface IConfigurator {
+    void execute(Server s);
+}

http://git-wip-us.apache.org/repos/asf/storm/blob/034ac677/storm-webapp/src/main/java/org/apache/storm/daemon/ui/InvalidRequestException.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/InvalidRequestException.java b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/InvalidRequestException.java
new file mode 100644
index 0000000..1745c11
--- /dev/null
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/InvalidRequestException.java
@@ -0,0 +1,38 @@
+/*
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.storm.daemon.ui;
+
+public class InvalidRequestException extends Exception {
+
+    public InvalidRequestException() {
+        super();
+    }
+
+    public InvalidRequestException(String msg) {
+        super(msg);
+    }
+
+    public InvalidRequestException(String msg, Throwable cause) {
+        super(msg, cause);
+    }
+
+    public InvalidRequestException(Throwable cause) {
+        super(cause);
+    }
+}