[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