[01/25] knox git commit: KNOX-1049 - Default Service or App Context for Topologies

2017-11-02 Thread more
Repository: knox
Updated Branches:
  refs/heads/KNOX-998-Package_Restructuring 9577842b1 -> 1451428f7


KNOX-1049 - Default Service or App Context for Topologies

Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/3a411555
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/3a411555
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/3a411555

Branch: refs/heads/KNOX-998-Package_Restructuring
Commit: 3a411555fa9a89965281604c4e56709325abf743
Parents: a5a8825
Author: Larry McCay 
Authored: Tue Sep 19 20:00:24 2017 -0400
Committer: Larry McCay 
Committed: Tue Sep 19 20:00:24 2017 -0400

--
 .../apache/hadoop/gateway/GatewayFilter.java| 64 +++-
 .../builder/BeanPropertyTopologyBuilder.java| 11 
 .../xml/KnoxFormatXmlTopologyRules.java |  2 +
 .../src/main/resources/conf/topology-v1.xsd |  1 +
 .../service/admin/TopologiesResource.java   | 11 
 .../service/admin/beans/BeanConverter.java  |  2 +
 .../gateway/service/admin/beans/Topology.java   | 11 
 .../hadoop/gateway/topology/Topology.java   |  9 +++
 .../gateway/topology/topology_binding-xml.xml   |  3 +-
 9 files changed, 112 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/knox/blob/3a411555/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
--
diff --git 
a/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java 
b/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
index c92ebfe..2885fe3 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.gateway.config.GatewayConfig;
 import org.apache.hadoop.gateway.filter.AbstractGatewayFilter;
 import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
 import org.apache.hadoop.gateway.i18n.resources.ResourcesFactory;
+import org.apache.hadoop.gateway.topology.Topology;
 import org.apache.hadoop.gateway.util.urltemplate.Matcher;
 import org.apache.hadoop.gateway.util.urltemplate.Parser;
 import org.apache.hadoop.gateway.util.urltemplate.Template;
@@ -43,6 +44,7 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
@@ -122,7 +124,35 @@ public class GatewayFilter implements Filter {
 AbstractGatewayFilter.SOURCE_REQUEST_CONTEXT_URL_ATTRIBUTE_NAME, 
contextWithPathAndQuery );
 
 Matcher.Match match = chains.match( pathWithQueryTemplate );
-
+
+// if there was no match then look for a default service for the topology
+if (match == null) {
+  Topology topology = (Topology) 
servletRequest.getServletContext().getAttribute("org.apache.hadoop.gateway.topology");
+  String defaultServicePath = topology.getDefaultServicePath();
+  if (defaultServicePath != null) {
+try {
+  String newPathWithQuery = defaultServicePath + "/" + 
pathWithQueryTemplate;
+  match = chains.match(Parser.parseLiteral(newPathWithQuery));
+  String origUrl = ((HttpServletRequest) 
servletRequest).getRequestURL().toString();
+  String url = origUrl;
+  if (path.equals("/")) {
+url += defaultServicePath;
+  }
+  else {
+int index = origUrl.indexOf(path);
+url = origUrl.substring(0, index) + "/" + defaultServicePath + 
path;
+  }
+  String contextPath = defaultServicePath;
+  servletRequest = new ForwardedRequest((HttpServletRequest) 
servletRequest, 
+  contextPath, 
+  url);
+} catch (URISyntaxException e) {
+  throw new ServletException( e );
+}
+//((HttpServletRequest) servletRequest).getRequestURL();
+  }
+}
+
 assignCorrelationRequestId();
 // Populate Audit/correlation parameters
 AuditContext auditContext = auditService.getContext();
@@ -387,4 +417,36 @@ public class GatewayFilter implements Filter {
 
   }
 
+  /**
+   * A request wrapper class that wraps a request and adds the context path if
+   * needed.
+   */
+  static class ForwardedRequest extends HttpServletRequestWrapper {
+
+private String newURL;
+private String contextpath;
+
+public ForwardedRequest(final HttpServletRequest request,
+final String contextpath, final String newURL) {
+  super(request);
+  this.newURL = newURL;
+  this.contextpath = contextpath;

[8/8] knox git commit: KNOX-1049 - Default Service or App Context for Topologies

2017-10-29 Thread lmccay
KNOX-1049 - Default Service or App Context for Topologies


Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/710e7848
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/710e7848
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/710e7848

Branch: refs/heads/master
Commit: 710e784871662a54e0e8994b038a49e735f8be2b
Parents: 62a23fe 485520d
Author: Larry McCay 
Authored: Sun Oct 29 15:47:55 2017 -0400
Committer: Larry McCay 
Committed: Sun Oct 29 15:47:55 2017 -0400

--
 .../apache/hadoop/gateway/GatewayFilter.java|  65 +++-
 .../builder/BeanPropertyTopologyBuilder.java|  11 ++
 .../xml/KnoxFormatXmlTopologyRules.java |   2 +
 .../src/main/resources/conf/topology-v1.xsd |   1 +
 .../hadoop/gateway/GatewayFilterTest.java   |  49 +
 .../service/admin/TopologiesResource.java   |  11 ++
 .../service/admin/beans/BeanConverter.java  |   2 +
 .../gateway/service/admin/beans/Topology.java   |  11 ++
 .../services/ambariui/2.2.1/rewrite.xml | 104 +++
 .../services/ambariui/2.2.1/service.xml |  92 
 .../hadoop/gateway/topology/Topology.java   |   9 ++
 .../gateway/topology/topology_binding-xml.xml   |   5 +-
 12 files changed, 359 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/knox/blob/710e7848/gateway-service-admin/src/main/java/org/apache/hadoop/gateway/service/admin/TopologiesResource.java
--



[1/8] knox git commit: KNOX-1049 - Default Service or App Context for Topologies

2017-10-29 Thread lmccay
Repository: knox
Updated Branches:
  refs/heads/master 62a23febb -> 710e78487


KNOX-1049 - Default Service or App Context for Topologies

Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/3a411555
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/3a411555
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/3a411555

Branch: refs/heads/master
Commit: 3a411555fa9a89965281604c4e56709325abf743
Parents: a5a8825
Author: Larry McCay 
Authored: Tue Sep 19 20:00:24 2017 -0400
Committer: Larry McCay 
Committed: Tue Sep 19 20:00:24 2017 -0400

--
 .../apache/hadoop/gateway/GatewayFilter.java| 64 +++-
 .../builder/BeanPropertyTopologyBuilder.java| 11 
 .../xml/KnoxFormatXmlTopologyRules.java |  2 +
 .../src/main/resources/conf/topology-v1.xsd |  1 +
 .../service/admin/TopologiesResource.java   | 11 
 .../service/admin/beans/BeanConverter.java  |  2 +
 .../gateway/service/admin/beans/Topology.java   | 11 
 .../hadoop/gateway/topology/Topology.java   |  9 +++
 .../gateway/topology/topology_binding-xml.xml   |  3 +-
 9 files changed, 112 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/knox/blob/3a411555/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
--
diff --git 
a/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java 
b/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
index c92ebfe..2885fe3 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/GatewayFilter.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.gateway.config.GatewayConfig;
 import org.apache.hadoop.gateway.filter.AbstractGatewayFilter;
 import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
 import org.apache.hadoop.gateway.i18n.resources.ResourcesFactory;
+import org.apache.hadoop.gateway.topology.Topology;
 import org.apache.hadoop.gateway.util.urltemplate.Matcher;
 import org.apache.hadoop.gateway.util.urltemplate.Parser;
 import org.apache.hadoop.gateway.util.urltemplate.Template;
@@ -43,6 +44,7 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
@@ -122,7 +124,35 @@ public class GatewayFilter implements Filter {
 AbstractGatewayFilter.SOURCE_REQUEST_CONTEXT_URL_ATTRIBUTE_NAME, 
contextWithPathAndQuery );
 
 Matcher.Match match = chains.match( pathWithQueryTemplate );
-
+
+// if there was no match then look for a default service for the topology
+if (match == null) {
+  Topology topology = (Topology) 
servletRequest.getServletContext().getAttribute("org.apache.hadoop.gateway.topology");
+  String defaultServicePath = topology.getDefaultServicePath();
+  if (defaultServicePath != null) {
+try {
+  String newPathWithQuery = defaultServicePath + "/" + 
pathWithQueryTemplate;
+  match = chains.match(Parser.parseLiteral(newPathWithQuery));
+  String origUrl = ((HttpServletRequest) 
servletRequest).getRequestURL().toString();
+  String url = origUrl;
+  if (path.equals("/")) {
+url += defaultServicePath;
+  }
+  else {
+int index = origUrl.indexOf(path);
+url = origUrl.substring(0, index) + "/" + defaultServicePath + 
path;
+  }
+  String contextPath = defaultServicePath;
+  servletRequest = new ForwardedRequest((HttpServletRequest) 
servletRequest, 
+  contextPath, 
+  url);
+} catch (URISyntaxException e) {
+  throw new ServletException( e );
+}
+//((HttpServletRequest) servletRequest).getRequestURL();
+  }
+}
+
 assignCorrelationRequestId();
 // Populate Audit/correlation parameters
 AuditContext auditContext = auditService.getContext();
@@ -387,4 +417,36 @@ public class GatewayFilter implements Filter {
 
   }
 
+  /**
+   * A request wrapper class that wraps a request and adds the context path if
+   * needed.
+   */
+  static class ForwardedRequest extends HttpServletRequestWrapper {
+
+private String newURL;
+private String contextpath;
+
+public ForwardedRequest(final HttpServletRequest request,
+final String contextpath, final String newURL) {
+  super(request);
+  this.newURL = newURL;
+  this.contextpath = contextpath;
+}
+
+@Override
+public