You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by su...@apache.org on 2016/10/17 16:03:52 UTC

knox git commit: KNOX-754 scope change to just the Location header

Repository: knox
Updated Branches:
  refs/heads/master febf20c05 -> 2d77f09f8


KNOX-754 scope change to just the Location header


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

Branch: refs/heads/master
Commit: 2d77f09f86134f4b665a7bbae2d7c04461e114fc
Parents: febf20c
Author: Sumit Gupta <su...@apache.org>
Authored: Mon Oct 17 12:03:15 2016 -0400
Committer: Sumit Gupta <su...@apache.org>
Committed: Mon Oct 17 12:03:15 2016 -0400

----------------------------------------------------------------------
 .../filter/rewrite/impl/UrlRewriteResponse.java  | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/2d77f09f/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
index 2c9c70d..182efda 100644
--- 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
@@ -112,12 +112,16 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
     return IGNORE_HEADER_NAMES.contains( name );
   }
 
-  private String rewriteValue( String value, String rule ) {
+  private String rewriteValue(String value, String rule, boolean encode ) {
     try {
       Template input = Parser.parseLiteral( value );
       Template output = rewriter.rewrite( this, input, UrlRewriter.Direction.OUT, rule );
       if( output != null ) {
-        value = output.toEncodedString();
+        if (encode) {
+          value = output.toEncodedString();
+        } else {
+          value = output.getPattern();
+        }
       }
     } catch( URISyntaxException e ) {
       LOG.failedToParseValueForUrlRewrite( value );
@@ -129,7 +133,7 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
   @Override
   public void setHeader( String name, String value ) {
     if( !ignoreHeader( name) ) {
-      value = rewriteValue( value, pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name ) );
+      value = rewriteValue( value, pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name ), needsEncoding(name) );
       super.setHeader( name, value );
     }
   }
@@ -139,11 +143,18 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
   public void addHeader( String name, String value ) {
     if( !ignoreHeader( name ) ) {
       String rule = pickFirstRuleWithEqualsIgnoreCasePathMatch( headersFilterConfig, name );
-      value = rewriteValue( value, rule );
+      value = rewriteValue( value, rule, needsEncoding(name) );
       super.addHeader( name, value );
     }
   }
 
+  private boolean needsEncoding( String name ) {
+    if ( name.equalsIgnoreCase("Location") ) {
+      return true;
+    }
+    return false;
+  }
+
   @Override
   public OutputStream getRawOutputStream() throws IOException {
     return response.getOutputStream();