Author: coheigea
Date: Fri Mar 22 15:02:20 2013
New Revision: 1459825
URL: http://svn.apache.org/r1459825
Log:
Avoiding some Collection creation
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JUtils.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractBindingPolicyValidator.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SamlTokenPolicyValidator.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SecurityContextTokenPolicyValidator.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/UsernameTokenPolicyValidator.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/WSS11PolicyValidator.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/X509TokenPolicyValidator.java
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java
Fri Mar 22 15:02:20 2013
@@ -536,9 +536,11 @@ public class PolicyBasedWSS4JInIntercept
//
// Pre-fetch various results
//
- List<WSSecurityEngineResult> signedResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.SIGN,
signedResults);
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.UT_SIGN,
signedResults);
+ final List<Integer> actions = new ArrayList<Integer>(2);
+ actions.add(WSConstants.SIGN);
+ actions.add(WSConstants.UT_SIGN);
+ List<WSSecurityEngineResult> signedResults =
+ WSS4JUtils.fetchAllActionResults(results, actions);
for (WSSecurityEngineResult result : signedResults) {
List<WSDataRef> sl =
CastUtils.cast((List<?>)result.get(WSSecurityEngineResult.TAG_DATA_REF_URIS));
@@ -549,8 +551,8 @@ public class PolicyBasedWSS4JInIntercept
}
}
- List<WSSecurityEngineResult> encryptResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.ENCR,
encryptResults);
+ List<WSSecurityEngineResult> encryptResults =
+ WSS4JUtils.fetchAllActionResults(results, WSConstants.ENCR);
for (WSSecurityEngineResult result : encryptResults) {
List<WSDataRef> sl =
CastUtils.cast((List<?>)result.get(WSSecurityEngineResult.TAG_DATA_REF_URIS));
@@ -707,13 +709,17 @@ public class PolicyBasedWSS4JInIntercept
List<WSSecurityEngineResult> encryptedResults,
boolean utWithCallbacks
) {
- List<WSSecurityEngineResult> utResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.UT,
utResults);
- WSSecurityUtil.fetchAllActionResults(results,
WSConstants.UT_NOPASSWORD, utResults);
-
- List<WSSecurityEngineResult> samlResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.ST_SIGNED,
samlResults);
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.ST_UNSIGNED,
samlResults);
+ final List<Integer> utActions = new ArrayList<Integer>(2);
+ utActions.add(WSConstants.UT);
+ utActions.add(WSConstants.UT_NOPASSWORD);
+ List<WSSecurityEngineResult> utResults =
+ WSS4JUtils.fetchAllActionResults(results, utActions);
+
+ final List<Integer> samlActions = new ArrayList<Integer>(2);
+ samlActions.add(WSConstants.ST_SIGNED);
+ samlActions.add(WSConstants.ST_UNSIGNED);
+ List<WSSecurityEngineResult> samlResults =
+ WSS4JUtils.fetchAllActionResults(results, samlActions);
// Store the timestamp element
WSSecurityEngineResult tsResult =
WSSecurityUtil.fetchActionResult(results, WSConstants.TS);
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JInInterceptor.java
Fri Mar 22 15:02:20 2013
@@ -383,9 +383,8 @@ public class WSS4JInInterceptor extends
SoapMessage msg, RequestData reqData, List<WSSecurityEngineResult>
wsResult
) throws WSSecurityException {
// Extract the signature action result from the action list
- List<WSSecurityEngineResult> signatureResults = new
ArrayList<WSSecurityEngineResult>();
- signatureResults =
- WSSecurityUtil.fetchAllActionResults(wsResult, WSConstants.SIGN,
signatureResults);
+ List<WSSecurityEngineResult> signatureResults =
+ WSS4JUtils.fetchAllActionResults(wsResult, WSConstants.SIGN);
// Store the last signature result
if (!signatureResults.isEmpty()) {
@@ -397,9 +396,8 @@ public class WSS4JInInterceptor extends
SoapMessage msg, RequestData reqData, List<WSSecurityEngineResult>
wsResult
) throws WSSecurityException {
// Extract the timestamp action result from the action list
- List<WSSecurityEngineResult> timestampResults = new
ArrayList<WSSecurityEngineResult>();
- timestampResults =
- WSSecurityUtil.fetchAllActionResults(wsResult, WSConstants.TS,
timestampResults);
+ List<WSSecurityEngineResult> timestampResults =
+ WSS4JUtils.fetchAllActionResults(wsResult, WSConstants.TS);
if (!timestampResults.isEmpty()) {
msg.put(TIMESTAMP_RESULT,
timestampResults.get(timestampResults.size() - 1));
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JUtils.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JUtils.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JUtils.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/WSS4JUtils.java
Fri Mar 22 15:02:20 2013
@@ -18,11 +18,16 @@
*/
package org.apache.cxf.ws.security.wss4j;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.ws.security.cache.ReplayCacheFactory;
+import org.apache.ws.security.WSSecurityEngineResult;
import org.apache.ws.security.cache.ReplayCache;
/**
@@ -85,5 +90,51 @@ public final class WSS4JUtils {
return null;
}
+ /**
+ * Fetch the result of a given action from a given result list.
+ *
+ * @param resultList The result list to fetch an action from
+ * @param action The action to fetch
+ * @return The result fetched from the result list, null if the result
+ * could not be found
+ */
+ public static List<WSSecurityEngineResult> fetchAllActionResults(
+ List<WSSecurityEngineResult> resultList,
+ int action
+ ) {
+ return fetchAllActionResults(resultList,
Collections.singletonList(action));
+ }
+
+ /**
+ * Fetch the results of a given number of actions action from a given
result list.
+ *
+ * @param resultList The result list to fetch an action from
+ * @param actions The list of actions to fetch
+ * @return The list of matching results fetched from the result list
+ */
+ public static List<WSSecurityEngineResult> fetchAllActionResults(
+ List<WSSecurityEngineResult> resultList,
+ List<Integer> actions
+ ) {
+ List<WSSecurityEngineResult> actionResultList =
Collections.emptyList();
+ if (actions == null || actions.isEmpty()) {
+ return actionResultList;
+ }
+
+ for (WSSecurityEngineResult result : resultList) {
+ //
+ // Check the result of every action whether it matches the given
action
+ //
+ int resultAction =
+
((java.lang.Integer)result.get(WSSecurityEngineResult.TAG_ACTION)).intValue();
+ if (actions.contains(resultAction)) {
+ if (actionResultList.isEmpty()) {
+ actionResultList = new ArrayList<WSSecurityEngineResult>();
+ }
+ actionResultList.add(result);
+ }
+ }
+ return actionResultList;
+ }
}
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractBindingPolicyValidator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractBindingPolicyValidator.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractBindingPolicyValidator.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractBindingPolicyValidator.java
Fri Mar 22 15:02:20 2013
@@ -21,7 +21,6 @@ package org.apache.cxf.ws.security.wss4j
import java.security.PublicKey;
import java.security.cert.X509Certificate;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -44,6 +43,7 @@ import org.apache.cxf.ws.security.policy
import org.apache.cxf.ws.security.policy.model.Token;
import org.apache.cxf.ws.security.policy.model.TokenWrapper;
import org.apache.cxf.ws.security.policy.model.X509Token;
+import org.apache.cxf.ws.security.wss4j.WSS4JUtils;
import org.apache.neethi.Assertion;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSDataRef;
@@ -54,7 +54,6 @@ import org.apache.ws.security.message.to
import org.apache.ws.security.message.token.X509Security;
import org.apache.ws.security.saml.SAMLKeyInfo;
import org.apache.ws.security.saml.ext.AssertionWrapper;
-import org.apache.ws.security.util.WSSecurityUtil;
/**
* Some abstract functionality for validating a security binding.
@@ -78,8 +77,8 @@ public abstract class AbstractBindingPol
List<WSSecurityEngineResult> signedResults,
Message message
) {
- List<WSSecurityEngineResult> timestampResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.TS,
timestampResults);
+ List<WSSecurityEngineResult> timestampResults =
+ WSS4JUtils.fetchAllActionResults(results, WSConstants.TS);
// Check whether we received a timestamp and compare it to the policy
if (includeTimestamp && timestampResults.size() != 1) {
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SamlTokenPolicyValidator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SamlTokenPolicyValidator.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SamlTokenPolicyValidator.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SamlTokenPolicyValidator.java
Fri Mar 22 15:02:20 2013
@@ -33,10 +33,10 @@ import org.apache.cxf.ws.policy.Assertio
import org.apache.cxf.ws.security.policy.SP12Constants;
import org.apache.cxf.ws.security.policy.model.SamlToken;
import org.apache.cxf.ws.security.wss4j.SAMLUtils;
+import org.apache.cxf.ws.security.wss4j.WSS4JUtils;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
import org.apache.ws.security.saml.ext.AssertionWrapper;
-import org.apache.ws.security.util.WSSecurityUtil;
import org.opensaml.common.SAMLVersion;
/**
@@ -62,9 +62,11 @@ public class SamlTokenPolicyValidator ex
body = soapBody;
signed = signedResults;
- List<WSSecurityEngineResult> samlResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.ST_SIGNED,
samlResults);
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.ST_UNSIGNED,
samlResults);
+ final List<Integer> actions = new ArrayList<Integer>(2);
+ actions.add(WSConstants.ST_SIGNED);
+ actions.add(WSConstants.ST_UNSIGNED);
+ List<WSSecurityEngineResult> samlResults =
+ WSS4JUtils.fetchAllActionResults(results, actions);
for (AssertionInfo ai : ais) {
SamlToken samlToken = (SamlToken)ai.getAssertion();
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SecurityContextTokenPolicyValidator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SecurityContextTokenPolicyValidator.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SecurityContextTokenPolicyValidator.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SecurityContextTokenPolicyValidator.java
Fri Mar 22 15:02:20 2013
@@ -19,7 +19,6 @@
package org.apache.cxf.ws.security.wss4j.policyvalidators;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -30,9 +29,9 @@ import org.apache.cxf.ws.policy.Assertio
import org.apache.cxf.ws.policy.AssertionInfoMap;
import org.apache.cxf.ws.security.policy.SP12Constants;
import org.apache.cxf.ws.security.policy.model.SecurityContextToken;
+import org.apache.cxf.ws.security.wss4j.WSS4JUtils;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
-import org.apache.ws.security.util.WSSecurityUtil;
/**
* Validate a SecurityContextToken policy.
@@ -52,8 +51,8 @@ public class SecurityContextTokenPolicyV
return true;
}
- List<WSSecurityEngineResult> sctResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.SCT,
sctResults);
+ List<WSSecurityEngineResult> sctResults =
+ WSS4JUtils.fetchAllActionResults(results, WSConstants.SCT);
for (AssertionInfo ai : ais) {
SecurityContextToken sctPolicy =
(SecurityContextToken)ai.getAssertion();
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/UsernameTokenPolicyValidator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/UsernameTokenPolicyValidator.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/UsernameTokenPolicyValidator.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/UsernameTokenPolicyValidator.java
Fri Mar 22 15:02:20 2013
@@ -31,10 +31,10 @@ import org.apache.cxf.ws.policy.Assertio
import org.apache.cxf.ws.security.policy.SP12Constants;
import org.apache.cxf.ws.security.policy.SPConstants;
import org.apache.cxf.ws.security.policy.model.SupportingToken;
+import org.apache.cxf.ws.security.wss4j.WSS4JUtils;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
import org.apache.ws.security.message.token.UsernameToken;
-import org.apache.ws.security.util.WSSecurityUtil;
/**
* Validate a UsernameToken policy.
@@ -54,9 +54,11 @@ public class UsernameTokenPolicyValidato
return true;
}
- List<WSSecurityEngineResult> utResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.UT,
utResults);
- WSSecurityUtil.fetchAllActionResults(results,
WSConstants.UT_NOPASSWORD, utResults);
+ final List<Integer> actions = new ArrayList<Integer>(2);
+ actions.add(WSConstants.UT);
+ actions.add(WSConstants.UT_NOPASSWORD);
+ List<WSSecurityEngineResult> utResults =
+ WSS4JUtils.fetchAllActionResults(results, actions);
for (AssertionInfo ai : ais) {
org.apache.cxf.ws.security.policy.model.UsernameToken
usernameTokenPolicy =
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/WSS11PolicyValidator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/WSS11PolicyValidator.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/WSS11PolicyValidator.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/WSS11PolicyValidator.java
Fri Mar 22 15:02:20 2013
@@ -19,7 +19,6 @@
package org.apache.cxf.ws.security.wss4j.policyvalidators;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -31,9 +30,9 @@ import org.apache.cxf.ws.policy.Assertio
import org.apache.cxf.ws.policy.AssertionInfoMap;
import org.apache.cxf.ws.security.policy.SP12Constants;
import org.apache.cxf.ws.security.policy.model.Wss11;
+import org.apache.cxf.ws.security.wss4j.WSS4JUtils;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
-import org.apache.ws.security.util.WSSecurityUtil;
/**
* Validate a WSS11 policy.
@@ -52,8 +51,8 @@ public class WSS11PolicyValidator implem
return true;
}
- List<WSSecurityEngineResult> scResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.SC,
scResults);
+ List<WSSecurityEngineResult> scResults =
+ WSS4JUtils.fetchAllActionResults(results, WSConstants.SC);
for (AssertionInfo ai : ais) {
Wss11 wss11 = (Wss11)ai.getAssertion();
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/X509TokenPolicyValidator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/X509TokenPolicyValidator.java?rev=1459825&r1=1459824&r2=1459825&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/X509TokenPolicyValidator.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/X509TokenPolicyValidator.java
Fri Mar 22 15:02:20 2013
@@ -19,7 +19,6 @@
package org.apache.cxf.ws.security.wss4j.policyvalidators;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -31,10 +30,10 @@ import org.apache.cxf.ws.policy.Assertio
import org.apache.cxf.ws.security.policy.SP12Constants;
import org.apache.cxf.ws.security.policy.SPConstants;
import org.apache.cxf.ws.security.policy.model.X509Token;
+import org.apache.cxf.ws.security.wss4j.WSS4JUtils;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
import org.apache.ws.security.message.token.BinarySecurity;
-import org.apache.ws.security.util.WSSecurityUtil;
/**
* Validate an X509 Token policy.
@@ -56,8 +55,8 @@ public class X509TokenPolicyValidator ex
return true;
}
- List<WSSecurityEngineResult> bstResults = new
ArrayList<WSSecurityEngineResult>();
- WSSecurityUtil.fetchAllActionResults(results, WSConstants.BST,
bstResults);
+ List<WSSecurityEngineResult> bstResults =
+ WSS4JUtils.fetchAllActionResults(results, WSConstants.BST);
for (AssertionInfo ai : ais) {
X509Token x509TokenPolicy = (X509Token)ai.getAssertion();