http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java deleted file mode 100644 index be1eca5..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/FrontendFunctionProcessor.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.FrontendFunctionDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteEnvironment; -import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteResources; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteContext; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteFunctionProcessor; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteResolver; -import org.apache.hadoop.gateway.i18n.resources.ResourcesFactory; -import org.apache.hadoop.gateway.services.GatewayServices; - -import java.net.URI; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class FrontendFunctionProcessor implements UrlRewriteFunctionProcessor<FrontendFunctionDescriptor> { - - private static UrlRewriteResources RES = ResourcesFactory.get( UrlRewriteResources.class ); - - private Map<String,UrlRewriteResolver> resolvers; - - @Override - public String name() { - return FrontendFunctionDescriptor.FUNCTION_NAME; - } - - @Override - public void initialize( UrlRewriteEnvironment environment, FrontendFunctionDescriptor descriptor ) throws Exception { - if( environment == null ) { - throw new IllegalArgumentException( "environment==null" ); - } - URI frontend = environment.getAttribute( FrontendFunctionDescriptor.FRONTEND_URI_ATTRIBUTE ); - resolvers = new HashMap<>(); - if( frontend == null ) { - resolvers.put( "url", new ParamResolver( "gateway.url" ) ); - resolvers.put( "addr", new ParamResolver( "gateway.addr" ) ); - resolvers.put( "scheme", new ParamResolver( "gateway.scheme" ) ); - resolvers.put( "host", new ParamResolver( "gateway.host" ) ); - resolvers.put( "port", new ParamResolver( "gateway.port" ) ); - resolvers.put( "path", new ParamResolver( "gateway.path" ) ); - } else { - resolvers.put( "url", new FixedResolver( frontend.toString() ) ); - resolvers.put( "addr", new FixedResolver( frontend.getHost() + ":" + frontend.getPort() ) ); - resolvers.put( "scheme", new FixedResolver( frontend.getScheme() ) ); - resolvers.put( "host", new FixedResolver( frontend.getHost() ) ); - resolvers.put( "port", new FixedResolver( Integer.toString( frontend.getPort() ) ) ); - resolvers.put( "path", new FixedResolver( frontend.getPath() ) ); - } - resolvers.put( "topology", new FixedResolver( (String)environment.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE) ) ); - resolvers.put( "address", resolvers.get( "addr" ) ); - } - - @Override - public void destroy() throws Exception { - resolvers.clear(); - } - - @Override - public List<String> resolve( UrlRewriteContext context, List<String> parameters ) throws Exception { - String parameter = "url"; - if( parameters != null && parameters.size() > 0 ) { - String first = parameters.get( 0 ); - if( first != null ) { - parameter = first; - } - } - parameter = parameter.trim().toLowerCase(); - UrlRewriteResolver resolver = resolvers.get( parameter ); - if( resolver == null ) { - throw new IllegalArgumentException( RES.invalidFrontendFunctionParameter( parameter ) ); - } - List<String> results = resolver.resolve( context, parameters ); - return results; - } - - private static class ParamResolver implements UrlRewriteResolver { - - private String paramName; - - private ParamResolver( String paramName ) { - this.paramName = paramName; - } - - @Override - public List<String> resolve( UrlRewriteContext context, List<String> parameter ) throws Exception { - return context.getParameters().resolve( paramName ); - } - - } - - private static class FixedResolver implements UrlRewriteResolver { - - private List<String> fixedValues; - - private FixedResolver( String... fixedValues ) { - this.fixedValues = Arrays.asList( fixedValues ); - } - - @Override - public List<String> resolve( UrlRewriteContext context, List<String> parameter ) throws Exception { - return fixedValues; - } - - } - -}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteContextImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteContextImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteContextImpl.java deleted file mode 100644 index 4a153d0..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteContextImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteEnvironment; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriter; -import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteContext; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteFunctionProcessor; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.util.urltemplate.Evaluator; -import org.apache.hadoop.gateway.util.urltemplate.Params; -import org.apache.hadoop.gateway.util.urltemplate.Resolver; -import org.apache.hadoop.gateway.util.urltemplate.Template; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class UrlRewriteContextImpl implements UrlRewriteContext { - - private static final UrlRewriteMessages LOG = MessagesFactory.get( UrlRewriteMessages.class ); - - private UrlRewriteEnvironment environment; - private Resolver resolver; - private Evaluator evaluator; - private Map<String,UrlRewriteFunctionProcessor> functions; - private ContextParameters params; - private UrlRewriter.Direction direction; - private Template originalUrl; - private Template currentUrl; - - public UrlRewriteContextImpl( - UrlRewriteEnvironment environment, - Resolver resolver, - Map<String,UrlRewriteFunctionProcessor> functions, - UrlRewriter.Direction direction, - Template url ) { - this.environment = environment; - this.resolver = resolver; - this.functions = functions; - this.params = new ContextParameters(); - this.evaluator = new ContextEvaluator(); - this.direction = direction; - this.originalUrl = url; - this.currentUrl = url; - } - - @Override - public UrlRewriter.Direction getDirection() { - return direction; - } - - @Override - public Template getOriginalUrl() { - return originalUrl; - } - - @Override - public Template getCurrentUrl() { - return currentUrl; - } - - @Override - public void setCurrentUrl( Template url ) { - currentUrl = url; - } - - @Override - public void addParameters( Params parameters ) { - params.add( parameters ); - } - - @Override - public Params getParameters() { - return params; - } - - @Override - public Evaluator getEvaluator() { - return evaluator; - } - - private class ContextParameters implements Params { - - Map<String,List<String>> map = new HashMap<>(); - - @Override - public Set<String> getNames() { - return map.keySet(); - } - - @Override - public List<String> resolve( String name ) { - List<String> values = map.get( name ); // Try to find the name in the context map. - if( values == null ) { - try { - values = resolver.resolve( name ); - if( values == null ) { - values = environment.resolve( name ); // Try to find the name in the environment. - } - } catch( Exception e ) { - LOG.failedToFindValuesByParameter( name, e ); - // Ignore it and return null. - } - } - return values; - } - - public void add( Params params ) { - for( String name : params.getNames() ) { - map.put( name, params.resolve( name ) ); - } - } - - } - - private class ContextEvaluator implements Evaluator { - - @Override - public List<String> evaluate( String function, List<String> parameters ) { - List<String> results = null; - UrlRewriteFunctionProcessor processor = functions.get( function ); - if( processor != null ) { - try { - results = processor.resolve( UrlRewriteContextImpl.this, parameters ); - } catch( Exception e ) { - LOG.failedToInvokeRewriteFunction( function, e ); - results = null; - } - } - return results; - } - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteDeploymentContributor.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteDeploymentContributor.java deleted file mode 100644 index d48468c..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteDeploymentContributor.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.deploy.DeploymentContext; -import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributorBase; -import org.apache.hadoop.gateway.descriptor.FilterDescriptor; -import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor; -import org.apache.hadoop.gateway.descriptor.ResourceDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptorFactory; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletContextListener; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter; -import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.topology.Provider; -import org.apache.hadoop.gateway.topology.Service; -import org.jboss.shrinkwrap.api.asset.StringAsset; - -import java.io.IOException; -import java.io.StringWriter; -import java.util.List; - -public class UrlRewriteDeploymentContributor extends ProviderDeploymentContributorBase { - - private static final String PROVIDER_ROLE_NAME = "rewrite"; - private static final String PROVIDER_IMPL_NAME = "url-rewrite"; - private static final String PARAM_SERVICE_ROLE = "service.role"; - private static final UrlRewriteMessages LOG = MessagesFactory.get( UrlRewriteMessages.class ); - - @Override - public String getRole() { - return PROVIDER_ROLE_NAME; - } - - @Override - public String getName() { - return PROVIDER_IMPL_NAME; - } - - public void initializeContribution( DeploymentContext context ) { - context.addDescriptor( getRole(), UrlRewriteRulesDescriptorFactory.create() ); - } - - public void contributeProvider( DeploymentContext context, Provider provider ) { - } - - public void finalizeContribution( DeploymentContext context ) { - // Write the descriptor into the archive. - UrlRewriteRulesDescriptor descriptor = context.getDescriptor( getRole() ); - StringWriter writer = new StringWriter(); - try { - UrlRewriteRulesDescriptorFactory.store( descriptor, "xml", writer ); - } catch( IOException e ) { - LOG.failedToWriteRulesDescriptor( e ); - } - String asset = writer.toString(); - context.getWebArchive().addAsWebInfResource( - new StringAsset( asset ), - UrlRewriteServletContextListener.DESCRIPTOR_DEFAULT_FILE_NAME ); - - // Tell the provider the location of the descriptor. - context.getWebAppDescriptor().createListener().listenerClass( UrlRewriteServletContextListener.class.getName() ); - context.getWebAppDescriptor().createContextParam() - .paramName( UrlRewriteServletContextListener.DESCRIPTOR_LOCATION_INIT_PARAM_NAME ) - .paramValue( UrlRewriteServletContextListener.DESCRIPTOR_DEFAULT_LOCATION ); -// ServletType<WebAppDescriptor> servlet = findServlet( context, context.getTopology().getName() ); -// servlet.createInitParam() -// .paramName( UrlRewriteServletContextListener.DESCRIPTOR_LOCATION_INIT_PARAM_NAME ) -// .paramValue( DESCRIPTOR_FILE_NAME ); - } - - @Override - public void contributeFilter( - DeploymentContext context, - Provider provider, - Service service, - ResourceDescriptor resource, - List<FilterParamDescriptor> params ) { - FilterDescriptor filterDescriptor = resource.addFilter(); - filterDescriptor.role( getRole() ).name( getName() ).impl( UrlRewriteServletFilter.class ).params( params ); - filterDescriptor.param().name(PARAM_SERVICE_ROLE).value(service.getRole()); - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterApplyDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterApplyDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterApplyDescriptorImpl.java deleted file mode 100644 index ff3c4d5..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterApplyDescriptorImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterApplyDescriptor; - -public class UrlRewriteFilterApplyDescriptorImpl - extends UrlRewriteFilterSelectorDescriptorBase<UrlRewriteFilterApplyDescriptor> - implements UrlRewriteFilterApplyDescriptor { - - private String rule; - - @Override - public String rule() { - return rule; - } - - @Override - public UrlRewriteFilterApplyDescriptor rule( String rule ) { - this.rule = rule; - return this; - } - - public void setRule( String rule ) { - this.rule = rule; - } - - public String getRule() { - return rule; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterBufferDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterBufferDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterBufferDescriptorImpl.java deleted file mode 100644 index d8ac83d..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterBufferDescriptorImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterApplyDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterBufferDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterDetectDescriptor; - -public class UrlRewriteFilterBufferDescriptorImpl - extends UrlRewriteFilterGroupDescriptorBase - implements UrlRewriteFilterBufferDescriptor { - - @Override - public UrlRewriteFilterDetectDescriptor addDetect( String path, String value ) { - UrlRewriteFilterDetectDescriptor detect = new UrlRewriteFilterDetectDescriptorImpl(); - detect.path( path ); - detect.value( value ); - addSelector( detect ); - return detect; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterContentDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterContentDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterContentDescriptorImpl.java deleted file mode 100644 index 3d42537..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterContentDescriptorImpl.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterBufferDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor; - -public class UrlRewriteFilterContentDescriptorImpl - extends UrlRewriteFilterGroupDescriptorBase - implements UrlRewriteFilterContentDescriptor { - - private String type; - - private String asType; - - public UrlRewriteFilterContentDescriptorImpl() { - } - - @Override - public String type() { - return this.type; - } - - @Override - public String asType() { - return asType; - } - - @Override - public UrlRewriteFilterContentDescriptor type( String type ) { - this.type = type; - return this; - } - - @Override - public UrlRewriteFilterContentDescriptor asType( String type ) { - asType = type; - return this; - } - - public void setType(String type ) { - type( type ); - } - - public String getType() { - return type; - } - - public String getAsType() { - return asType; - } - - public void setAsType(String asType) { - this.asType = asType; - } - - @Override - public UrlRewriteFilterBufferDescriptor addBuffer( String path ) { - UrlRewriteFilterBufferDescriptor descriptor = new UrlRewriteFilterBufferDescriptorImpl(); - descriptor.path( path ); - addSelector( descriptor ); - return descriptor; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDescriptorImpl.java deleted file mode 100644 index 5a72547..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDescriptorImpl.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterDescriptor; -import org.apache.hadoop.gateway.util.MimeTypeMap; - -import javax.activation.MimeType; -import javax.activation.MimeTypeParseException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class UrlRewriteFilterDescriptorImpl implements UrlRewriteFilterDescriptor { - - private String name; - private List<UrlRewriteFilterContentDescriptor> contentList = new ArrayList<UrlRewriteFilterContentDescriptor>(); - private MimeTypeMap<UrlRewriteFilterContentDescriptor> contentMap = new MimeTypeMap<UrlRewriteFilterContentDescriptor>(); - - public UrlRewriteFilterDescriptorImpl() { - } - - @Override - public String name() { - return this.name; - } - - public String getName() { - return name; - } - - @Override - public UrlRewriteFilterDescriptor name( String name ) { - this.name = name; - return this; - } - - public void setName( String name ) { - this.name = name; - } - - @Override - public List<UrlRewriteFilterContentDescriptor> getContents() { - return contentList; - } - - @Override - public UrlRewriteFilterContentDescriptor getContent( String type ) { - return contentMap.get( type ); - } - - @Override - public UrlRewriteFilterContentDescriptor getContent( MimeType type ) { - return contentMap.get( type ); - } - - @Override - public UrlRewriteFilterContentDescriptor addContent( String type ) { - UrlRewriteFilterContentDescriptorImpl impl = new UrlRewriteFilterContentDescriptorImpl(); - impl.type( type ); - contentList.add( impl ); - try { - contentMap.put( new MimeType( type ), impl ); - } catch( MimeTypeParseException e ) { - throw new IllegalArgumentException( type, e ); - } - return impl; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDetectDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDetectDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDetectDescriptorImpl.java deleted file mode 100644 index b4b14a6..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterDetectDescriptorImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterDetectDescriptor; - -public class UrlRewriteFilterDetectDescriptorImpl - extends UrlRewriteFilterGroupDescriptorBase - implements UrlRewriteFilterDetectDescriptor { - - private String value; - private Object compiledValue; - - @Override - public String value() { - return value; - } - - @Override - public UrlRewriteFilterDetectDescriptor value( String value ) { - this.value = value; - return this; - } - - public void setValue( String value ) { - this.value = value; - } - - public String getValue() { - return value; - } - - @Override - public <C> C compiledValue() { - return (C)compiledValue; - } - - @Override - public UrlRewriteFilterDetectDescriptor compiledValue( String compiledValue ) { - this.compiledValue = compiledValue; - return this; - } - - @Override - public <C> C compiledValue( Compiler<C> compiler ) { - compiledValue = compiler.compile( value, (C)compiledValue ); - return (C)compiledValue; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterGroupDescriptorBase.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterGroupDescriptorBase.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterGroupDescriptorBase.java deleted file mode 100644 index 228cfa4..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterGroupDescriptorBase.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterApplyDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterGroupDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterPathDescriptor; - -import java.util.ArrayList; -import java.util.List; - -public class UrlRewriteFilterGroupDescriptorBase - extends UrlRewriteFilterSelectorDescriptorBase - implements UrlRewriteFilterGroupDescriptor { - - private List<UrlRewriteFilterPathDescriptor> selectors = new ArrayList<UrlRewriteFilterPathDescriptor>(); - - @Override - public List<UrlRewriteFilterPathDescriptor> getSelectors() { - return selectors; - } - - @Override - public void addSelector( UrlRewriteFilterPathDescriptor selector ) { - this.selectors.add( selector ); - } - - @Override - public UrlRewriteFilterApplyDescriptor addApply( String path, String rule ) { - UrlRewriteFilterApplyDescriptor apply = new UrlRewriteFilterApplyDescriptorImpl(); - apply.path( path ); - apply.rule( rule ); - addSelector( apply ); - return apply; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterReader.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterReader.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterReader.java deleted file mode 100644 index c291468..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterReader.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import java.util.regex.Pattern; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterPathDescriptor; - - -public interface UrlRewriteFilterReader { - - public String filterValueString( String name, String value, String rule ); - - public static class RegexCompiler implements UrlRewriteFilterPathDescriptor.Compiler<Pattern> { - @Override - public Pattern compile( String expression, Pattern compiled ) { - if( compiled != null ) { - return compiled; - } else { - return Pattern.compile( expression ); - } - } - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterScopeDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterScopeDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterScopeDescriptorImpl.java deleted file mode 100644 index bdebe69..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterScopeDescriptorImpl.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterScopeDescriptor; - -public class UrlRewriteFilterScopeDescriptorImpl - extends UrlRewriteFilterGroupDescriptorBase - implements UrlRewriteFilterScopeDescriptor { -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterSelectorDescriptorBase.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterSelectorDescriptorBase.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterSelectorDescriptorBase.java deleted file mode 100644 index ff4ab22..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFilterSelectorDescriptorBase.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterPathDescriptor; - -public class UrlRewriteFilterSelectorDescriptorBase<T> implements UrlRewriteFilterPathDescriptor<T> { - - private String path; - private Object compiledPath; - - @Override - public String path() { - return path; - } - - @Override - public T path( String path ) { - this.path = path; - return (T)this; - } - - public void setPath( String path ) { - this.path = path; - } - - public String getPath() { - return path; - } - - @Override - public <C> C compiledPath() { - return (C)compiledPath; - } - - @Override - @SuppressWarnings("unchecked") - public T compiledPath( Object compiledPath ) { - this.compiledPath = compiledPath; - return (T)this; - } - - @Override - public <C> C compiledPath( Compiler<C> compiler ) { - compiledPath = compiler.compile( path, (C)compiledPath ); - return (C)compiledPath; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFunctionProcessorFactory.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFunctionProcessorFactory.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFunctionProcessorFactory.java deleted file mode 100644 index 2676cfc..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteFunctionProcessorFactory.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFunctionDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFunctionDescriptorFactory; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteFunctionProcessor; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.Map; -import java.util.ServiceLoader; - -public abstract class UrlRewriteFunctionProcessorFactory { - - private static final Map<Class<? extends UrlRewriteFunctionDescriptor>,Map<String,Class<? extends UrlRewriteFunctionProcessor>>> MAP - = loadProcessors(); - - private UrlRewriteFunctionProcessorFactory() { - } - - public static UrlRewriteFunctionProcessor create( String name, UrlRewriteFunctionDescriptor descriptor ) - throws IllegalAccessException, InstantiationException { - UrlRewriteFunctionProcessor processor; - if( descriptor == null ) { - descriptor = UrlRewriteFunctionDescriptorFactory.create( name ); - } - Map<String,Class<? extends UrlRewriteFunctionProcessor>> typeMap; - typeMap = MAP.get( descriptor.getClass() ); - if( typeMap == null ) { - Class<? extends UrlRewriteFunctionDescriptor> descriptorInterface = getDescriptorInterface( descriptor ); - typeMap = MAP.get( descriptorInterface ); - } - if( typeMap == null ) { - throw new IllegalArgumentException( descriptor.getClass().getName() ); - } else { - Class<? extends UrlRewriteFunctionProcessor> processorClass = typeMap.get( name ); - if( processorClass == null ) { - throw new IllegalArgumentException( name ); - } else { - processor = processorClass.newInstance(); - } - } - return processor; - } - - private static Map<Class<? extends UrlRewriteFunctionDescriptor>,Map<String,Class<? extends UrlRewriteFunctionProcessor>>> loadProcessors() { - Map<Class<? extends UrlRewriteFunctionDescriptor>,Map<String,Class<? extends UrlRewriteFunctionProcessor>>> descriptorMap - = new HashMap<>(); - ServiceLoader<UrlRewriteFunctionProcessor> processors = ServiceLoader.load( UrlRewriteFunctionProcessor.class ); - for( UrlRewriteFunctionProcessor processor : processors ) { - Class<? extends UrlRewriteFunctionDescriptor> descriptorInterface = getDescriptorInterface( processor ); - Map<String,Class<? extends UrlRewriteFunctionProcessor>> typeMap = descriptorMap.get( descriptorInterface ); - if( typeMap == null ) { - typeMap = new HashMap<>(); - descriptorMap.put( descriptorInterface, typeMap ); - } - String functionName = processor.name(); - typeMap.put( functionName, processor.getClass() ); - } - return descriptorMap; - } - - private static Class<? extends UrlRewriteFunctionDescriptor> getDescriptorInterface( - UrlRewriteFunctionDescriptor descriptor ) { - Class<? extends UrlRewriteFunctionDescriptor> descriptorClass = null; - for( Type interfaceType : descriptor.getClass().getGenericInterfaces() ) { - Class genericClass = (Class)interfaceType; - if( UrlRewriteFunctionDescriptor.class.isAssignableFrom( genericClass ) ) { - descriptorClass = uncheckedDescriptorClassCast( genericClass ); - break; - } - } - return descriptorClass; - } - - private static Class<? extends UrlRewriteFunctionDescriptor> getDescriptorInterface( - UrlRewriteFunctionProcessor processor ) { - Class<? extends UrlRewriteFunctionDescriptor> descriptorClass = null; - Class<? extends UrlRewriteFunctionProcessor> processorClass = processor.getClass(); - for( Type interfaceType : processorClass.getGenericInterfaces() ) { - if( UrlRewriteFunctionProcessor.class.isAssignableFrom( - (Class)((ParameterizedType)interfaceType).getRawType() ) ) { - ParameterizedType interfaceClass = (ParameterizedType)interfaceType; - descriptorClass = uncheckedDescriptorClassCast( interfaceClass.getActualTypeArguments()[ 0 ] ); - break; - } - } - return descriptorClass; - } - - @SuppressWarnings("unchecked") - private static Class<? extends UrlRewriteFunctionDescriptor> uncheckedDescriptorClassCast( Type type ) { - return (Class<? extends UrlRewriteFunctionDescriptor>)type; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java deleted file mode 100644 index de9331b..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequest.java +++ /dev/null @@ -1,265 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.AbstractGatewayFilter; -import org.apache.hadoop.gateway.filter.GatewayRequestWrapper; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletContextListener; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteStreamFilterFactory; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriter; -import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.util.MimeTypes; -import org.apache.hadoop.gateway.util.urltemplate.Parser; -import org.apache.hadoop.gateway.util.urltemplate.Resolver; -import org.apache.hadoop.gateway.util.urltemplate.Template; - -import javax.activation.MimeType; -import javax.servlet.FilterConfig; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.net.URISyntaxException; -import java.net.URLDecoder; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.List; - -import static org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteUtil.pickFirstRuleWithEqualsIgnoreCasePathMatch; - -public class UrlRewriteRequest extends GatewayRequestWrapper implements Resolver { - - private static final UrlRewriteMessages LOG = MessagesFactory.get( UrlRewriteMessages.class ); - private static final String[] EMPTY_STRING_ARRAY = new String[]{}; - - private FilterConfig config; - private UrlRewriter rewriter; - private String urlRuleName; - private String bodyFilterName; - private String headersFilterName; - private UrlRewriteFilterContentDescriptor headersFilterConfig; - private String cookiesFilterName; - - /** - * Constructs a request object wrapping the given request. - * - * @throws IllegalArgumentException if the request is null - */ - public UrlRewriteRequest( FilterConfig config, HttpServletRequest request ) throws IOException { - super( request ); - this.config = config; - this.rewriter = UrlRewriteServletContextListener.getUrlRewriter( config.getServletContext() ); - this.urlRuleName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_URL_RULE_PARAM ); - this.bodyFilterName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_BODY_FILTER_PARAM ); - this.headersFilterName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_HEADERS_FILTER_PARAM ); - this.headersFilterConfig = getRewriteFilterConfig( headersFilterName, UrlRewriteServletFilter.HEADERS_MIME_TYPE ); - this.cookiesFilterName = config.getInitParameter( UrlRewriteServletFilter.REQUEST_COOKIES_FILTER_PARAM ); - } - - private Template getSourceUrl() { - Template urlTemplate; - //KNOX-439[ - //StringBuffer urlString = super.getRequestURL(); - StringBuffer urlString = new StringBuffer( 128 ); - urlString.append( getScheme() ); - urlString.append( "://" ); - urlString.append( getServerName() ); - urlString.append( ":" ); - urlString.append( getServerPort() ); - urlString.append( super.getRequestURI() ); - //] - String queryString = super.getQueryString(); - if( queryString != null ) { - urlString.append( '?' ); - urlString.append( queryString ); - } - try { - urlTemplate = Parser.parseLiteral( urlString.toString() ); - } catch( URISyntaxException e ) { - LOG.failedToParseValueForUrlRewrite( urlString.toString() ); - // Shouldn't be possible given that the URL is constructed from parts of an existing URL. - urlTemplate = null; - } - return urlTemplate; - } - - // Note: Source url was added to the request attributes by the GatewayFilter doFilter method. - private Template getTargetUrl() { - boolean rewriteRequestUrl = true; - Template targetUrl; - if( rewriteRequestUrl ) { - targetUrl = (Template)getAttribute( AbstractGatewayFilter.TARGET_REQUEST_URL_ATTRIBUTE_NAME ); - if( targetUrl == null ) { - Template sourceUrl = getSourceUrl(); - targetUrl = rewriter.rewrite( this, sourceUrl, UrlRewriter.Direction.IN, urlRuleName ); - setAttribute( AbstractGatewayFilter.TARGET_REQUEST_URL_ATTRIBUTE_NAME, targetUrl ); - } - } else { - targetUrl = (Template)getAttribute( AbstractGatewayFilter.SOURCE_REQUEST_URL_ATTRIBUTE_NAME ); - } - return targetUrl; - } - - private String[] splitTargetUrl( Template url ) { - if( url == null ) { - return EMPTY_STRING_ARRAY; - } else { - String s = url.toString(); - return s.split( "\\?" ); - } - } - - @Override - public StringBuffer getRequestURL() { - return new StringBuffer( getRequestURI() ); - } - - //TODO: I think this method is implemented wrong based on the HttpServletRequest.getRequestURI docs. - // It should not include the scheme or authority parts. - @Override - public String getRequestURI() { - String[] split = splitTargetUrl( getTargetUrl() ); - if( split.length > 0 ) { - return split[0]; - } else { - return ""; - } - } - - @Override - public String getQueryString() { - String[] split = splitTargetUrl( getTargetUrl() ); - if( split.length > 1 ) { - try { - return URLDecoder.decode(split[1], "UTF-8"); - } catch ( UnsupportedEncodingException e ) { - LOG.failedToDecodeQueryString(split[1], e); - return split[1]; - } - } else { - return null; - } - } - - private String rewriteValue( UrlRewriter rewriter, String value, String rule ) { - try { - Template input = Parser.parseLiteral( value ); - Template output = rewriter.rewrite( this, input, UrlRewriter.Direction.IN, rule ); - value = output.getPattern(); - } catch( URISyntaxException e ) { - LOG.failedToParseValueForUrlRewrite( value ); - } - return value; - } - - @Override - public String getHeader( String name ) { - String value = super.getHeader( name ); - if( value != null ) { - value = rewriteValue( rewriter, super.getHeader( name ), pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name ) ); - } - return value; - } - - @SuppressWarnings("unchecked") - public Enumeration getHeaders( String name ) { - return new EnumerationRewriter( rewriter, super.getHeaders( name ), pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name ) ); - } - - @Override - public List<String> resolve( String name ) { - return Arrays.asList( config.getInitParameter( name ) ); - } - - private class EnumerationRewriter implements Enumeration<String> { - - private UrlRewriter rewriter; - private Enumeration<String> delegate; - private String rule; - - private EnumerationRewriter( UrlRewriter rewriter, Enumeration<String> delegate, String rule ) { - this.rewriter = rewriter; - this.delegate = delegate; - this.rule = rule; - } - - @Override - public boolean hasMoreElements() { - return delegate.hasMoreElements(); - } - - @Override - public String nextElement() { - return rewriteValue( rewriter, delegate.nextElement(), rule ); - } - } - - @Override - public ServletInputStream getInputStream() throws IOException { - ServletInputStream input = super.getInputStream(); - if( getContentLength() != 0 ) { - MimeType mimeType = getMimeType(); - UrlRewriteFilterContentDescriptor filterContentConfig = getRewriteFilterConfig( bodyFilterName, mimeType ); - if (filterContentConfig != null) { - String asType = filterContentConfig.asType(); - if ( asType != null && asType.trim().length() > 0 ) { - mimeType = MimeTypes.create(asType, getCharacterEncoding()); - } - } - InputStream stream = UrlRewriteStreamFilterFactory.create( mimeType, null, input, rewriter, this, UrlRewriter.Direction.IN, filterContentConfig ); - input = new UrlRewriteRequestStream( stream ); - } - return input; - } - - @Override - public BufferedReader getReader() throws IOException { - return new BufferedReader( new InputStreamReader( getInputStream(), getCharacterEncoding() ) ); - } - - @Override - public int getContentLength() { - // The rewrite might change the content length so return the default of -1 to indicate the length is unknown. - int contentLength = super.getContentLength(); - if( contentLength > 0 ) { - contentLength = -1; - } - return contentLength; - } - - private UrlRewriteFilterContentDescriptor getRewriteFilterConfig( String filterName, MimeType mimeType ) { - UrlRewriteFilterContentDescriptor filterContentConfig = null; - UrlRewriteRulesDescriptor rewriteConfig = rewriter.getConfig(); - if( rewriteConfig != null ) { - UrlRewriteFilterDescriptor filterConfig = rewriteConfig.getFilter( filterName ); - if( filterConfig != null ) { - filterContentConfig = filterConfig.getContent( mimeType ); - } - } - return filterContentConfig; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequestStream.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequestStream.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequestStream.java deleted file mode 100644 index 1904d15..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRequestStream.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import java.io.IOException; -import java.io.InputStream; - -import org.apache.hadoop.gateway.servlet.SynchronousServletInputStreamAdapter; - -//TODO: This needs to be coded much more efficiently! -public class UrlRewriteRequestStream extends SynchronousServletInputStreamAdapter { - - private InputStream stream; - - public UrlRewriteRequestStream( InputStream stream ) { - this.stream = stream; - } - - @Override - public int read() throws IOException { - return stream.read(); - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java deleted file mode 100644 index d4e31e3..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java +++ /dev/null @@ -1,330 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.GatewayResponseWrapper; -import org.apache.hadoop.gateway.filter.ResponseStreamer; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletContextListener; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteServletFilter; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteStreamFilterFactory; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriter; -import org.apache.hadoop.gateway.filter.rewrite.i18n.UrlRewriteMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.util.MimeTypes; -import org.apache.hadoop.gateway.util.Urls; -import org.apache.hadoop.gateway.util.urltemplate.Params; -import org.apache.hadoop.gateway.util.urltemplate.Parser; -import org.apache.hadoop.gateway.util.urltemplate.Template; -import org.apache.commons.io.IOUtils; - -import javax.activation.MimeType; -import javax.servlet.FilterConfig; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.InetAddress; -import java.net.URISyntaxException; -import java.net.UnknownHostException; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; -import java.util.zip.ZipException; - -import static org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteUtil.getRewriteFilterConfig; -import static org.apache.hadoop.gateway.filter.rewrite.impl.UrlRewriteUtil.pickFirstRuleWithEqualsIgnoreCasePathMatch; - -/** - * - */ -public class UrlRewriteResponse extends GatewayResponseWrapper implements Params, ResponseStreamer { - - private static final UrlRewriteMessages LOG = MessagesFactory.get( UrlRewriteMessages.class ); - - // An 8K buffer better matches the underlying buffer sizes. - // Testing with 16K made no appreciable difference. - private static final int STREAM_BUFFER_SIZE = 8 * 1024; - - private static final Set<String> IGNORE_HEADER_NAMES = new HashSet<>(); - static { - IGNORE_HEADER_NAMES.add( "Content-Length" ); - } - - private static final String REQUEST_PARAM_PREFIX = "request."; - private static final String CLUSTER_PARAM_PREFIX = "cluster."; - private static final String GATEWAY_PARAM_PREFIX = "gateway."; - public static final String INBOUND_QUERY_PARAM_PREFIX = "query.param."; - - private UrlRewriter rewriter; - private FilterConfig config; - private HttpServletRequest request; - private HttpServletResponse response; - private ServletOutputStream output; - private String bodyFilterName; - private String headersFilterName; - private UrlRewriteFilterContentDescriptor headersFilterConfig; - private String cookiesFilterName; - private String xForwardedHostname; - private String xForwardedPort; - private String xForwardedScheme; - - public UrlRewriteResponse( FilterConfig config, HttpServletRequest request, HttpServletResponse response ) - throws IOException { - super( response ); - this.rewriter = UrlRewriteServletContextListener.getUrlRewriter( config.getServletContext() ); - this.config = config; - this.request = request; - this.response = response; - this.output = null; - getXForwardedHeaders(); - this.bodyFilterName = config.getInitParameter( UrlRewriteServletFilter.RESPONSE_BODY_FILTER_PARAM ); - this.headersFilterName = config.getInitParameter( UrlRewriteServletFilter.RESPONSE_HEADERS_FILTER_PARAM ); - this.headersFilterConfig = getRewriteFilterConfig( rewriter.getConfig(), headersFilterName, UrlRewriteServletFilter.HEADERS_MIME_TYPE ); - this.cookiesFilterName = config.getInitParameter( UrlRewriteServletFilter.RESPONSE_COOKIES_FILTER_PARAM ); - } - - protected boolean ignoreHeader( String name ) { - return IGNORE_HEADER_NAMES.contains( name ); - } - - private String rewriteValue( String value, String rule ) { - try { - Template input = Parser.parseLiteral( value ); - Template output = rewriter.rewrite( this, input, UrlRewriter.Direction.OUT, rule ); - if( output != null ) { - value = output.toString(); - } - } catch( URISyntaxException e ) { - LOG.failedToParseValueForUrlRewrite( value ); - } - return value; - } - - // Ignore the Content-Length from the dispatch respond since the respond body may be rewritten. - @Override - public void setHeader( String name, String value ) { - if( !ignoreHeader( name) ) { - value = rewriteValue( value, pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name ) ); - super.setHeader( name, value ); - } - } - - // Ignore the Content-Length from the dispatch respond since the respond body may be rewritten. - @Override - public void addHeader( String name, String value ) { - if( !ignoreHeader( name ) ) { - String rule = pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name ); - value = rewriteValue( value, rule ); - super.addHeader( name, value ); - } - } - - @Override - public OutputStream getRawOutputStream() throws IOException { - return response.getOutputStream(); - } - - @Override - public void streamResponse( InputStream input, OutputStream output ) throws IOException { - InputStream inStream; - OutputStream outStream; - boolean isGzip = false; - BufferedInputStream inBuffer = new BufferedInputStream(input); - try { - // Use this way to check whether the input stream is gzip compressed, in case - // the content encoding header is unknown, as it could be unset in inbound response - inBuffer.mark(STREAM_BUFFER_SIZE); - inStream = new GZIPInputStream(inBuffer); - isGzip = true; - } catch (ZipException e) { - inBuffer.reset(); - inStream = inBuffer; - } catch (IOException e) { - inBuffer.reset(); - inStream = inBuffer; - } - - MimeType mimeType = getMimeType(); - UrlRewriteFilterContentDescriptor filterContentConfig = - getRewriteFilterConfig( rewriter.getConfig(), bodyFilterName, mimeType ); - if (filterContentConfig != null) { - String asType = filterContentConfig.asType(); - if ( asType != null && asType.trim().length() > 0 ) { - mimeType = MimeTypes.create(asType, getCharacterEncoding()); - } - } - InputStream filteredInput = UrlRewriteStreamFilterFactory.create( - mimeType, null, inStream, rewriter, this, UrlRewriter.Direction.OUT, filterContentConfig ); - outStream = (isGzip) ? new GZIPOutputStream(output) : output; - IOUtils.copyLarge( filteredInput, outStream, new byte[STREAM_BUFFER_SIZE] ); - //KNOX-685: outStream.flush(); - outStream.close(); - } - - //TODO: Need to buffer the output here and when it is closed, rewrite it and then write the result to the stream. - // This should only happen if the caller isn't using the streaming model. - @Override - public ServletOutputStream getOutputStream() throws IOException { - if( output == null ) { - output = new UrlRewriteResponseStream( this ); - } - return output; - } - - @Override - public Set<String> getNames() { - return Collections.emptySet(); - } - - @Override - @SuppressWarnings( "unchecked" ) - public List<String> resolve( String name ) { - if( name.startsWith( REQUEST_PARAM_PREFIX ) ) { - return Arrays.asList( getRequestParam( name.substring( REQUEST_PARAM_PREFIX.length() ) ) ); - } else if ( name.startsWith( GATEWAY_PARAM_PREFIX ) ) { - return Arrays.asList( getGatewayParam( name.substring( GATEWAY_PARAM_PREFIX.length() ) ) ); - } else if ( name.startsWith( CLUSTER_PARAM_PREFIX ) ) { - return Arrays.asList( getClusterParam( name.substring( GATEWAY_PARAM_PREFIX.length() ) ) ); - } else if ( name.startsWith( INBOUND_QUERY_PARAM_PREFIX ) ) { - return getInboundQueryParam(name.substring(INBOUND_QUERY_PARAM_PREFIX.length())); - } else { - return Arrays.asList( config.getInitParameter( name ) ); - } - } - - // KNOX-464: Doing this because Jetty only returns the string version of the IP address for request.getLocalName(). - // Hopefully the local hostname will be cached so this will not be a significant performance hit. - // Previously this was an inline request.getServerName() but this ended up mixing the hostname from the Host header - // and the local port which was making load balancer configuration difficult if not impossible. - private String getRequestLocalHostName() { - String hostName = request.getLocalName(); - try { - hostName = InetAddress.getByName( hostName ).getHostName(); - } catch( UnknownHostException e ) { - // Ignore it and use the original hostname. - } - return hostName; - } - - private String getGatewayParam( String name ) { - if( "url".equals( name ) ) { - if( xForwardedPort == null ) { - return xForwardedScheme + "://" + xForwardedHostname + request.getContextPath(); - } else { - return xForwardedScheme + "://" + xForwardedHostname + ":" + xForwardedPort + request.getContextPath(); - } - } else if( "scheme".equals( name ) ) { - return xForwardedScheme; - } else if( "host".equals( name ) ) { - return xForwardedHostname; - } else if( "port".equals( name ) ) { - return xForwardedPort; - } else if( "addr".equals( name ) || "address".equals( name ) ) { - if( xForwardedPort == null ) { - return xForwardedHostname; - } else { - return xForwardedHostname + ":" + xForwardedPort; - } - } else if( "path".equals( name ) ) { - return request.getContextPath(); - } else { - return null; - } - } - - private String getClusterParam( String name ) { - if( "name".equals( name ) ) { - return config.getServletContext().getServletContextName(); - } else { - return null; - } - } - - private List <String> getInboundQueryParam(String name ){ - List <String> inboundHosts = null; - if( this.request!=null ) - inboundHosts = - Arrays.asList( this.request.getParameterValues(name)); - return inboundHosts; - } - - private String getRequestParam( String name ) { - if( "host".equals( name ) ) { - return request.getServerName(); - } else if ( "port".equals( name ) ) { - return Integer.toString( request.getLocalPort() ); - } else if ( "scheme".equals( name ) ) { - return request.getScheme(); - } else if ( "context-path".equals( name ) ) { - return Urls.stripLeadingSlash( request.getContextPath() ); - } else { - config.getServletContext().getServletContextName(); - return null; - } - } - - @SuppressWarnings("deprecation") - public String encodeUrl( String url ) { - return this.encodeURL( url ); - } - - //TODO: Route these through the rewriter. - public String encodeURL( String url ) { - throw new UnsupportedOperationException(); - } - - @SuppressWarnings("deprecation") - public String encodeRedirectUrl( String url ) { - return this.encodeRedirectURL( url ); - } - - //TODO: Route these through the rewriter. - public String encodeRedirectURL( String url ) { - throw new UnsupportedOperationException(); - } - - private void getXForwardedHeaders() { - xForwardedHostname = request.getHeader( "X-Forwarded-Host" ); - xForwardedPort = request.getHeader( "X-Forwarded-Port" ); - xForwardedScheme = request.getHeader( "X-Forwarded-Proto" ); - if ( xForwardedScheme == null ) { - xForwardedScheme = request.getScheme(); - } - if ( xForwardedHostname != null ) { - int separator = xForwardedHostname.indexOf( ":" ); - if ( separator > 0 ) { - //a specific port in the forwarded host wins - xForwardedPort = xForwardedHostname.substring(separator + 1, xForwardedHostname.length()); - xForwardedHostname = xForwardedHostname.substring( 0, separator ); - } - } else { - xForwardedHostname = getRequestLocalHostName(); - xForwardedPort = Integer.toString( request.getLocalPort() ); - } - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponseStream.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponseStream.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponseStream.java deleted file mode 100644 index 41117bd..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponseStream.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.GatewayResponse; -import org.apache.hadoop.gateway.servlet.SynchronousServletOutputStreamAdapter; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; - -//TODO: This needs to be coded much more efficiently! -public class UrlRewriteResponseStream extends SynchronousServletOutputStreamAdapter { - - private static final int DEFAULT_BUFFER_SIZE = 1024; - - private GatewayResponse response; - private ByteArrayOutputStream buffer; - - public UrlRewriteResponseStream( GatewayResponse response ) { - this.response = response; - this.buffer = new ByteArrayOutputStream( DEFAULT_BUFFER_SIZE ); - } - - @Override - public void write( int b ) throws IOException { - buffer.write( b ); - } - - @Override - public void close() throws IOException { - InputStream stream = new ByteArrayInputStream( buffer.toByteArray() ); - response.streamResponse( stream ) ; - stream.close(); - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java deleted file mode 100644 index c0396a2..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleDescriptorImpl.java +++ /dev/null @@ -1,194 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRuleDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteStepDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriter; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteFlowDescriptorBase; -import org.apache.hadoop.gateway.util.urltemplate.Parser; -import org.apache.hadoop.gateway.util.urltemplate.Template; - -import java.net.URISyntaxException; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import java.util.StringTokenizer; - -public class UrlRewriteRuleDescriptorImpl extends UrlRewriteFlowDescriptorBase<UrlRewriteRuleDescriptor> implements UrlRewriteRuleDescriptor { - - private String name; - private String scope; - private String pattern; - private Template template; - private EnumSet<UrlRewriter.Direction> directions; - - public UrlRewriteRuleDescriptorImpl() { - super( "rule" ); - } - - @Override - public String name() { - return this.name; - } - - @Override - public UrlRewriteRuleDescriptor name( String name ) { - this.name = name; - return this; - } - - public void setName( String name ) { - name( name ); - } - - public String getName() { - return name; - } - - public String getScope() { - return scope; - } - - public void setScope(String scope) { - scope( scope ); - } - - @Override - public String scope() { - return scope; - } - - @Override - public UrlRewriteStepDescriptor scope( String scope ) { - this.scope = scope; - return this; - } - - @Override - public EnumSet<UrlRewriter.Direction> directions() { - return directions; - } - - @Override - public UrlRewriteRuleDescriptor directions( String directions ) { - this.directions = parseDirections( directions ); - return this; - } - - public void setDirections( String directions ) { - directions( directions ); - } - - public void setDirection( String directions ) { - directions( directions ); - } - - public void setDir( String directions ) { - directions( directions ); - } - - public String getDir() { - String s = null; - if( directions != null ) { - StringBuilder sb = new StringBuilder(); - for( UrlRewriter.Direction direction: directions ) { - if( sb.length() > 0 ) { - sb.append( ',' ); - } - sb.append( direction.toString() ); - } - s = sb.toString(); - } - return s; - } - - @Override - public UrlRewriteRuleDescriptor directions( UrlRewriter.Direction... directions ) { - return this; - } - - @Override - public String pattern() { - return pattern; - } - - @Override - public UrlRewriteRuleDescriptor pattern( String pattern ) throws URISyntaxException { - this.pattern = pattern; - this.template = Parser.parseTemplate( pattern ); - return this; - } - - public void setPattern( String pattern ) throws URISyntaxException { - pattern( pattern ); - } - - public void setUrl( String pattern ) throws URISyntaxException { - pattern( pattern ); - } - - public String getPattern() { - return pattern(); - } - - @Override - public Template template() { - return template; - } - - @Override - public UrlRewriteRuleDescriptor template( Template template ) { - this.template = template; - this.pattern = template.toString(); - return this; - } - - private static EnumSet<UrlRewriter.Direction> parseDirections( String directions ) { - EnumSet<UrlRewriter.Direction> set = EnumSet.noneOf( UrlRewriter.Direction.class ); - StringTokenizer parser = new StringTokenizer( directions, " ,;:/|+" ); - while( parser.hasMoreTokens() ) { - UrlRewriter.Direction direction = parseDirection( parser.nextToken() ); - if( direction != null ) { - set.add( direction ); - } - } - return set; - } - - private static UrlRewriter.Direction parseDirection( String direction ) { - direction = direction.trim().toLowerCase(); - return directionNameMap.get( direction ); - } - - private static Map<String,UrlRewriter.Direction> directionNameMap = new HashMap<>(); - static { - directionNameMap.put( "inbound", UrlRewriter.Direction.IN ); - directionNameMap.put( "in", UrlRewriter.Direction.IN ); - directionNameMap.put( "i", UrlRewriter.Direction.IN ); - directionNameMap.put( "request", UrlRewriter.Direction.IN ); - directionNameMap.put( "req", UrlRewriter.Direction.IN ); - - directionNameMap.put( "outbound", UrlRewriter.Direction.OUT ); - directionNameMap.put( "out", UrlRewriter.Direction.OUT ); - directionNameMap.put( "o", UrlRewriter.Direction.OUT ); - directionNameMap.put( "response", UrlRewriter.Direction.OUT ); - directionNameMap.put( "res", UrlRewriter.Direction.OUT ); - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorHolder.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorHolder.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorHolder.java deleted file mode 100644 index 708fd8c..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorHolder.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.config.GatewayConfig; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteEnvironment; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRuleDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.ext.ScopedMatcher; - -import java.util.List; - -public class UrlRewriteRuleProcessorHolder extends UrlRewriteStepProcessorHolder { - - private String ruleName; - - private String scope; - - public void initialize( UrlRewriteEnvironment environment, UrlRewriteRuleDescriptor descriptor ) throws Exception { - super.initialize( environment, descriptor ); - ruleName = descriptor.name(); - //if a scope is set in the rewrite file, use that - if (descriptor.scope() != null) { - scope = descriptor.scope(); - } else { - //by convention the name of the rules start with ROLENAME/servicename/direction - //use the first part of the name to determine the scope, therefore setting the scope of a rule to - //be local to that service - int slashIndex = ruleName.indexOf('/'); - if (slashIndex > 0) { - scope = ruleName.substring( 0, slashIndex ); - } - //check config to see if the is an override configuration for a given service to have all its rules set to global - GatewayConfig gatewayConfig = environment.getAttribute(GatewayConfig.GATEWAY_CONFIG_ATTRIBUTE); - if (gatewayConfig != null) { - List<String> globalRulesServices = gatewayConfig.getGlobalRulesServices(); - if ( globalRulesServices.contains(scope) ) { - scope = ScopedMatcher.GLOBAL_SCOPE; - } - } - } - } - - public String getRuleName() { - return ruleName; - } - - public String getScope() { - return scope; - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorImpl.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorImpl.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorImpl.java deleted file mode 100644 index a07a9f0..0000000 --- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteRuleProcessorImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * 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.hadoop.gateway.filter.rewrite.impl; - -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteEnvironment; -import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRuleDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.ext.UrlRewriteMatchDescriptor; -import org.apache.hadoop.gateway.filter.rewrite.ext.UrlRewriteMatchDescriptorExt; -import org.apache.hadoop.gateway.filter.rewrite.ext.UrlRewriteMatchProcessorExt; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteContext; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteStepProcessor; -import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteStepStatus; - -public class UrlRewriteRuleProcessorImpl implements UrlRewriteStepProcessor<UrlRewriteRuleDescriptor> { - - private UrlRewriteMatchProcessorExt matchProcessor; - - @Override - public String getType() { - return "rule"; - } - - @Override - public void initialize( UrlRewriteEnvironment environment, UrlRewriteRuleDescriptor descriptor ) throws Exception { - UrlRewriteMatchDescriptor matchDescriptor = new UrlRewriteMatchDescriptorExt(); - matchDescriptor.operation( "matches" ); - matchDescriptor.flow( descriptor.flow() ); - matchDescriptor.template( descriptor.template() ); - matchProcessor = new UrlRewriteMatchProcessorExt(); - matchProcessor.initialize( environment, matchDescriptor ); - } - - @Override - public UrlRewriteStepStatus process( UrlRewriteContext context ) throws Exception { - return matchProcessor.process( context ); - } - - @Override - public void destroy() { - matchProcessor.destroy(); - } - -}