[01/25] knox git commit: KNOX-1049 - Default Service or App Context for Topologies
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 McCayAuthored: 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
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 McCayAuthored: 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
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 McCayAuthored: 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