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();
+ }
+ }
}