You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by kr...@apache.org on 2018/10/23 15:41:44 UTC

knox git commit: KNOX-16 - Implement IdentityAsserterHttpServletRequestWrapper.ServletInputStreamWrapper methods for performance

Repository: knox
Updated Branches:
  refs/heads/master b8ddf1e32 -> 78c3bad46


KNOX-16 - Implement IdentityAsserterHttpServletRequestWrapper.ServletInputStreamWrapper methods for performance

Signed-off-by: Kevin Risden <kr...@apache.org>


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

Branch: refs/heads/master
Commit: 78c3bad46748ff1396acdc2b113089282edc597d
Parents: b8ddf1e
Author: Kevin Risden <kr...@apache.org>
Authored: Tue Oct 23 11:09:48 2018 -0400
Committer: Kevin Risden <kr...@apache.org>
Committed: Tue Oct 23 11:09:48 2018 -0400

----------------------------------------------------------------------
 ...entityAsserterHttpServletRequestWrapper.java | 86 ++++++++++++++------
 1 file changed, 61 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/78c3bad4/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/IdentityAsserterHttpServletRequestWrapper.java
----------------------------------------------------------------------
diff --git a/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/IdentityAsserterHttpServletRequestWrapper.java b/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/IdentityAsserterHttpServletRequestWrapper.java
index 4031c56..4061a30 100644
--- a/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/IdentityAsserterHttpServletRequestWrapper.java
+++ b/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/IdentityAsserterHttpServletRequestWrapper.java
@@ -34,10 +34,10 @@ import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.security.Principal;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -51,7 +51,7 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
   private static final String PRINCIPAL_PARAM = "user.name";
   private static final String DOAS_PRINCIPAL_PARAM = "doAs";
   
-  String username = null;
+  private String username;
 
   public IdentityAsserterHttpServletRequestWrapper( HttpServletRequest request, String principal ) {
     super(request);
@@ -83,11 +83,11 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
   }
 
   private Map<String, String[]> convertValuesToStringArrays(Map<String, List<String>> params) {
-    Map<String, String[]> arrayMap = new HashMap<String, String[]>();
-    String name = null;
+    Map<String, String[]> arrayMap = new HashMap<>();
+    String name;
     Enumeration<String> names = getParameterNames();
     while (names.hasMoreElements()) {
-      name = (String) names.nextElement();
+      name = names.nextElement();
       arrayMap.put(name, getParameterValues(name));
     }
     return arrayMap;
@@ -102,7 +102,7 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
       if (params == null) {
         params = new HashMap<>();
       }
-      e = Collections.enumeration((Collection<String>) params.keySet());
+      e = Collections.enumeration(params.keySet());
     } catch (UnsupportedEncodingException e1) {
       log.unableToGetParamsFromQueryString(e1);
     }
@@ -119,7 +119,7 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
       if (params == null) {
         params = new HashMap<>();
       }
-      p = (String[]) params.get(name).toArray(p);
+      p = params.get(name).toArray(p);
     } catch (UnsupportedEncodingException e) {
       log.unableToGetParamsFromQueryString(e);
     }
@@ -241,7 +241,7 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
       }
       body = urlEncode( params, encoding );
       // ASCII is OK here because the urlEncode about should have already escaped
-      return new ServletInputStreamWrapper( new ByteArrayInputStream( body.getBytes( "US-ASCII" ) ) );
+      return new ServletInputStreamWrapper( new ByteArrayInputStream( body.getBytes(StandardCharsets.US_ASCII.name()) ) );
     } else {
       return super.getInputStream();
     }
@@ -261,23 +261,22 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
       String name = entry.getKey();
       if( name != null && name.length() > 0 ) {
         List<String> values = entry.getValue();
-        if( values == null || values.size() == 0 ) {
+        if( values == null || values.isEmpty() ) {
           sb.append( entry.getKey() );
         } else {
-          for( int i = 0; i < values.size(); i++ ) {
-            String value = values.get(i);
-              if( sb.length() > 0 ) {
-                sb.append( "&" );
-              }
-              try {
-                sb.append( urlEncode( name, encoding ) );
-                if( value != null ) {
-                  sb.append("=");
-                  sb.append(urlEncode(value, encoding));
-                }
-              } catch( IllegalArgumentException e ) {
-                log.skippingUnencodableParameter( name, value, encoding, e );
+          for (String value : values) {
+            if (sb.length() > 0) {
+              sb.append("&");
+            }
+            try {
+              sb.append(urlEncode(name, encoding));
+              if (value != null) {
+                sb.append("=");
+                sb.append(urlEncode(value, encoding));
               }
+            } catch (IllegalArgumentException e) {
+              log.skippingUnencodableParameter(name, value, encoding, e);
+            }
           }
         }
       }
@@ -285,8 +284,7 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
     return sb.toString();
   }
 
-  private static class ServletInputStreamWrapper extends
-      SynchronousServletInputStreamAdapter {
+  private static class ServletInputStreamWrapper extends SynchronousServletInputStreamAdapter {
 
     private InputStream stream;
 
@@ -299,6 +297,44 @@ private static SpiGatewayMessages log = MessagesFactory.get( SpiGatewayMessages.
       return stream.read();
     }
 
-  }
+    @Override
+    public int read(byte[] b) throws IOException {
+      return stream.read(b);
+    }
+
+    @Override
+    public int read(byte[] b, int off, int len) throws IOException {
+      return stream.read(b, off, len);
+    }
+
+    @Override
+    public long skip(long n) throws IOException {
+      return stream.skip(n);
+    }
+
+    @Override
+    public int available() throws IOException {
+      return stream.available();
+    }
 
+    @Override
+    public void close() throws IOException {
+      stream.close();
+    }
+
+    @Override
+    public synchronized void mark(int readlimit) {
+      stream.mark(readlimit);
+    }
+
+    @Override
+    public synchronized void reset() throws IOException {
+      stream.reset();
+    }
+
+    @Override
+    public boolean markSupported() {
+      return stream.markSupported();
+    }
+  }
 }