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


Reply via email to