[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