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

noreply at shibboleth.net noreply at shibboleth.net
Thu Mar 13 23:13:43 EDT 2014


Author: scantor
Date: Thu Mar 13 23:13:42 2014
New Revision: 3695

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3695&view=rev
Log:
Reduce code duplication in NameID generators, add Persistent SAML2 generator.

Modified:
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/AbstractNameIdentifierGenerator.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/AbstractSAML1NameIdentifierGeneratorTest.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddNameIdentifierToSubjectsTest.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/profile/AbstractSAML2NameIDGeneratorTest.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/AbstractNameIdentifierGenerator.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/AbstractNameIdentifierGenerator.java?rev=3695&r1=3694&r2=3695&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/AbstractNameIdentifierGenerator.java (original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/AbstractNameIdentifierGenerator.java Thu Mar 13 23:13:42 2014
@@ -32,6 +32,7 @@
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.saml.common.SAMLObject;
 
+import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -57,6 +58,12 @@
     /** A predicate indicating whether the component applies to a request. */
     @Nonnull private Predicate<ProfileRequestContext> activationCondition;
 
+    /** Optional lookup function for obtaining default NameQualifier. */
+    @Nullable private Function<ProfileRequestContext,String> defaultIdPNameQualifierLookupStrategy;
+    
+    /** Optional lookup function for obtaining default SPNameQualifier. */
+    @Nullable private Function<ProfileRequestContext,String> defaultSPNameQualifierLookupStrategy;
+    
     /** Flag allowing qualifier(s) to be omitted when they would match defaults or are not set. */
     private boolean omitQualifiers;
 
@@ -86,6 +93,48 @@
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
 
         activationCondition = Constraint.isNotNull(condition, "Predicate cannot be null");
+    }
+    
+    /**
+     * Get the lookup strategy to obtain the default IdP NameQualifier.
+     * 
+     * @return lookup strategy
+     */
+    @Nullable public Function<ProfileRequestContext,String> getDefaultIdPNameQualifierLookupStrategy() {
+        return defaultIdPNameQualifierLookupStrategy;
+    }
+    
+    /**
+     * Set the lookup strategy to obtain the default IdP NameQualifier.
+     * 
+     * @param strategy lookup strategy
+     */
+    public void setDefaultIdPNameQualifierLookupStrategy(
+            @Nullable final Function<ProfileRequestContext,String> strategy) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
+        defaultIdPNameQualifierLookupStrategy = strategy;
+    }
+
+    /**
+     * Get the lookup strategy to obtain the default SPNameQualifier.
+     * 
+     * @return lookup strategy
+     */
+    @Nullable public Function<ProfileRequestContext,String> getDefaultSPNameQualifierLookupStrategy() {
+        return defaultSPNameQualifierLookupStrategy;
+    }
+    
+    /**
+     * Set the lookup strategy to obtain the default SPNameQualifier.
+     * 
+     * @param strategy lookup strategy
+     */
+    public void setDefaultSPNameQualifierLookupStrategy(
+            @Nullable final Function<ProfileRequestContext,String> strategy) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
+        defaultSPNameQualifierLookupStrategy = strategy;
     }
 
     /**
@@ -255,7 +304,9 @@
             @Nonnull final ProfileRequestContext profileRequestContext) {
         if (idpNameQualifier != null) {
             if (omitQualifiers) {
-                if (!Objects.equal(idpNameQualifier, getDefaultIdPNameQualifier(profileRequestContext))) {
+                if (defaultIdPNameQualifierLookupStrategy == null
+                        || !Objects.equal(idpNameQualifier,
+                                defaultIdPNameQualifierLookupStrategy.apply(profileRequestContext))) {
                     return idpNameQualifier;
                 } else {
                     return null;
@@ -263,8 +314,8 @@
             } else {
                 return idpNameQualifier;
             }
-        } else if (!omitQualifiers) {
-            return getDefaultIdPNameQualifier(profileRequestContext);
+        } else if (!omitQualifiers && defaultIdPNameQualifierLookupStrategy != null) {

[... 205 lines stripped ...]


More information about the commits mailing list