[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml: saml1/profile/impl/AddNameIdenti...

noreply at shibboleth.net noreply at shibboleth.net
Tue Jan 28 16:35:29 EST 2014


Author: scantor
Date: Tue Jan 28 16:35:29 2014
New Revision: 3582

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3582&view=rev
Log:
IDP-362: legacy generator won't be mappable by Format, so support a fallback in actions

Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddNameIdentifierToSubjects.java
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddNameIDToSubjects.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddNameIdentifierToSubjects.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddNameIdentifierToSubjects.java?rev=3582&r1=3581&r2=3582&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddNameIdentifierToSubjects.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddNameIdentifierToSubjects.java Tue Jan 28 16:35:29 2014
@@ -92,6 +92,9 @@
     /** Map of formats to generators. */
     @Nonnull @NonnullElements private Map<String, List<SAML1NameIdentifierGenerator>> nameIdGeneratorMap;
 
+    /** Fallback generator, generally for legacy support. */
+    @Nullable private SAML1NameIdentifierGenerator defaultNameIdGenerator;
+    
     /** Formats to try. */
     @Nonnull @NonnullElements private List<String> formats;
     
@@ -159,7 +162,23 @@
      */
     public synchronized void setNameIdentifierGenerators(
             @Nonnull @NullableElements Map<String, List<SAML1NameIdentifierGenerator>> generators) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
         nameIdGeneratorMap = Constraint.isNotNull(generators, "NameIdentifierGenerator map cannot be null");
+    }
+
+    /**
+     * Set the NameID generator to try if no generator(s) are mapped to a desired format.
+     * 
+     * <p>This is generally used for legacy support of the V2 attribute encoder approach,
+     * which is format neutral and can't be mapped explicitly.</p>
+     * 
+     * @param generator a fallback default generator, if any
+     */
+    public synchronized void setDefaultNameIDGenerator(@Nullable final SAML1NameIdentifierGenerator generator) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
+        defaultNameIdGenerator = generator;
     }
     
     /** {@inheritDoc} */
@@ -233,9 +252,15 @@
         // See if we can generate one.
         for (final String format : formats) {
             log.debug("{} Trying to generate NameIdentifier with Format {}", getLogPrefix(), format);
-            final List<SAML1NameIdentifierGenerator> generators = nameIdGeneratorMap.get(format);
-            if (generators == null) {
-                continue;
+            List<SAML1NameIdentifierGenerator> generators = nameIdGeneratorMap.get(format);
+            if (generators == null || generators.isEmpty()) {
+                if (defaultNameIdGenerator != null) {
+                    log.debug("{} No generators installed for Format {}, trying default/fallback method",
+                            getLogPrefix(), format);
+                    generators = Collections.singletonList(defaultNameIdGenerator);
+                } else {
+                    continue;
+                }
             }
             for (final SAML1NameIdentifierGenerator generator : generators) {
                 if (generator != null && generator.apply(profileRequestContext)) {

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddNameIDToSubjects.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddNameIDToSubjects.java?rev=3582&r1=3581&r2=3582&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddNameIDToSubjects.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddNameIDToSubjects.java Tue Jan 28 16:35:29 2014
@@ -89,6 +89,9 @@
     
     /** Map of formats to generators. */
     @Nonnull @NonnullElements private Map<String, List<SAML2NameIDGenerator>> nameIdGeneratorMap;
+    
+    /** Fallback generator, generally for legacy support. */
+    @Nullable private SAML2NameIDGenerator defaultNameIdGenerator;
 
     /** Formats to try. */
     @Nonnull @NonnullElements private List<String> formats;
@@ -157,7 +160,23 @@
      */
     public synchronized void setNameIDGenerators(
             @Nonnull @NullableElements Map<String, List<SAML2NameIDGenerator>> generators) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
         nameIdGeneratorMap = Constraint.isNotNull(generators, "NameIDGenerator map cannot be null");
+    }
+    
+    /**

[... 34 lines stripped ...]


More information about the commits mailing list