[java-opensaml COMMIT] in /trunk: opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AbstractName...

noreply at shibboleth.net noreply at shibboleth.net
Tue Mar 25 16:21:10 EDT 2014


Author: scantor
Date: Tue Mar 25 16:21:10 2014
New Revision: 3734

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3734&view=rev
Log:
Fix a bug in predicate, and add Format-based determination of policy.

Modified:
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AbstractNameIDPolicyPredicate.java
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/profile/impl/logic/AffiliationNameIDPolicyPredicate.java
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/profile/impl/logic/DefaultNameIDPolicyPredicate.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/profile/impl/AddNameIDToSubjectsTest.java

Modified: trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AbstractNameIDPolicyPredicate.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AbstractNameIDPolicyPredicate.java?rev=3734&r1=3733&r2=3734&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AbstractNameIDPolicyPredicate.java (original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AbstractNameIDPolicyPredicate.java Tue Mar 25 16:21:10 2014
@@ -17,14 +17,19 @@
 
 package org.opensaml.saml.common.profile.logic;
 
+import java.util.Collection;
+import java.util.Set;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.saml.common.SAMLObject;
@@ -36,6 +41,7 @@
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
+import com.google.common.collect.Sets;
 
 /**
  * Base class for implementations of {@link NameIDPolicyPredicate} that handles all the basic lookup
@@ -56,6 +62,14 @@
     /** Object lookup function. */
     @NonnullAfterInit private Function<ProfileRequestContext,SAMLObject> objectLookupStrategy;
 
+    /** Formats to apply policy to. */
+    @Nonnull @NonnullElements private Set<String> formats;
+    
+    /** Constructor. */
+    public AbstractNameIDPolicyPredicate() {
+        formats = Sets.newHashSet(NameID.TRANSIENT, NameID.PERSISTENT);
+    }
+    
     /**
      * Set the strategy used to locate the requester ID.
      * 
@@ -90,6 +104,22 @@
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
         
         objectLookupStrategy = Constraint.isNotNull(strategy, "Object lookup strategy cannot be null");
+    }
+    
+    /**
+     * Set the formats to apply the predicate to.
+     * 
+     * @param newFormats    formats to apply predicate to
+     */
+    public synchronized void setFormats(@Nonnull @NonnullElements final Collection<String> newFormats) {
+        Constraint.isNotNull(formats, "Format collection cannot be null");
+        
+        for (final String s : newFormats) {
+            final String trimmed = StringSupport.trimOrNull(s);
+            if (trimmed != null) {
+                formats.add(trimmed);
+            }
+        }
     }
     
     /** {@inheritDoc} */
@@ -105,21 +135,6 @@
     /** {@inheritDoc} */
     @Override
     public boolean apply(@Nullable final ProfileRequestContext input) {
-        
-        final String requesterId;
-        final String responderId;
-        
-        if (requesterIdLookupStrategy != null) {
-            requesterId = requesterIdLookupStrategy.apply(input);
-        } else {
-            requesterId = null;
-        }
-
-        if (responderIdLookupStrategy != null) {
-            responderId = responderIdLookupStrategy.apply(input);
-        } else {
-            responderId = null;
-        }
 
         final SAMLObject target = objectLookupStrategy.apply(input);
         if (target == null) {
@@ -128,29 +143,99 @@
         }
         
         if (target instanceof NameIdentifier) {
-            return doApply(requesterId, responderId, ((NameIdentifier) target).getNameQualifier(), null);
+            return doApply(input, (NameIdentifier) target);
         } else if (target instanceof NameID) {
-            return doApply(requesterId, responderId, ((NameID) target).getNameQualifier(),
-                    ((NameID) target).getSPNameQualifier());
+            return doApply(input, (NameID) target);
         } else if (target instanceof NameIDPolicy) {

[... 190 lines stripped ...]


More information about the commits mailing list