Author: ashakirin
Date: Tue Nov 27 11:18:47 2012
New Revision: 1414128
URL: http://svn.apache.org/viewvc?rev=1414128&view=rev
Log:
Fixed CXF-4461: ClaimsHandler is called only if a requested claim is supported
Modified:
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsManager.java
Modified:
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsManager.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsManager.java?rev=1414128&r1=1414127&r2=1414128&view=diff
==============================================================================
---
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsManager.java
(original)
+++
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsManager.java
Tue Nov 27 11:18:47 2012
@@ -88,7 +88,12 @@ public class ClaimsManager {
if (claimHandlers != null && claimHandlers.size() > 0 && claims !=
null && claims.size() > 0) {
ClaimCollection returnCollection = new ClaimCollection();
for (ClaimsHandler handler : claimHandlers) {
- ClaimCollection claimCollection =
handler.retrieveClaimValues(claims, parameters);
+ RequestClaimCollection supportedClaims =
+ filterHandlerClaims(claims,
handler.getSupportedClaimTypes());
+ if (supportedClaims.isEmpty()) {
+ continue;
+ }
+ ClaimCollection claimCollection =
handler.retrieveClaimValues(supportedClaims, parameters);
if (claimCollection != null && claimCollection.size() !=
0) {
returnCollection.addAll(claimCollection);
}
@@ -128,6 +133,17 @@ public class ClaimsManager {
return null;
}
+ private RequestClaimCollection filterHandlerClaims(RequestClaimCollection
claims,
+ List<URI>
handlerClaimTypes) {
+ RequestClaimCollection supportedClaims = new RequestClaimCollection();
+ for (RequestClaim claim : claims) {
+ if (handlerClaimTypes.contains(claim.getClaimType())) {
+ supportedClaims.add(claim);
+ }
+ }
+ return supportedClaims;
+ }
+
private boolean validateClaimValues(RequestClaimCollection
requestedClaims, ClaimCollection claims) {
for (RequestClaim claim : requestedClaims) {
URI claimType = claim.getClaimType();