[java-identity-provider COMMIT] in /trunk/idp-attribute-resolver-impl/src: main/java/net/shibboleth/idp/attribute/res...
noreply at shibboleth.net
noreply at shibboleth.net
Tue Jul 29 04:59:24 EDT 2014
Author: rdw
Date: Tue Jul 29 04:59:24 2014
New Revision: 6351
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6351&view=rev
Log:
Add profileContext to scripted attribute definition (+tests)
Modified:
trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
trunk/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeTest.java
trunk/idp-attribute-resolver-impl/src/test/resources/data/net/shibboleth/idp/attribute/resolver/impl/ad/context.script
trunk/idp-attribute-resolver-impl/src/test/resources/data/net/shibboleth/idp/attribute/resolver/impl/ad/jdk8/context.script
Modified: trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java?rev=6351&r1=6350&r2=6351&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java (original)
+++ trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java Tue Jul 29 04:59:24 2014
@@ -35,14 +35,20 @@
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
+import net.shibboleth.idp.profile.context.RelyingPartyContext;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
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.scripting.EvaluableScript;
+import org.opensaml.messaging.context.navigate.ParentContextLookup;
+import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
import edu.internet2.middleware.shibboleth.common.attribute.provider.V2SAMLProfileRequestContext;
@@ -74,14 +80,25 @@
@Nonnull private final Logger log = LoggerFactory.getLogger(ScriptedAttributeDefinition.class);
/** Script to be evaluated. */
- private EvaluableScript script;
+ @NonnullAfterInit private EvaluableScript script;
+
+ /** Strategy used to locate the {@link ProfileRequestContext} to use. */
+ @Nonnull private Function<AttributeResolutionContext, ProfileRequestContext> prcLookupStrategy;
+
+ /** Constructor. */
+ public ScriptedAttributeDefinition() {
+ // Defaults to ProfileRequestContext -> RelyingPartyContext -> AttributeContext.
+ prcLookupStrategy =
+ Functions.compose(new ParentContextLookup<RelyingPartyContext, ProfileRequestContext>(),
+ new ParentContextLookup<AttributeResolutionContext, RelyingPartyContext>());
+ }
/**
* Gets the script to be evaluated.
*
* @return the script to be evaluated
*/
- @Nullable @NonnullAfterInit public EvaluableScript getScript() {
+ @NonnullAfterInit public EvaluableScript getScript() {
return script;
}
@@ -95,6 +112,29 @@
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
script = Constraint.isNotNull(definitionScript, "Attribute definition script cannot be null");
+ }
+
+ /**
+ * Set the strategy used to locate the {@link ProfileRequestContext} associated with a given
+ * {@link AttributeResolutionContext}.
+ *
+ * @param strategy strategy used to locate the {@link ProfileRequestContext} associated with a given
+ * {@link AttributeResolutionContext}
+ */
+ public void setProfileRequestContextLookupStrategy(
+ @Nonnull final Function<AttributeResolutionContext, ProfileRequestContext> strategy) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
+ prcLookupStrategy = Constraint.isNotNull(strategy, "ProfileRequestContext lookup strategy cannot be null");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void doInitialize() throws ComponentInitializationException {
+ super.doInitialize();
+
+ if (null == script) {
+ throw new ComponentInitializationException(getLogPrefix() + " no script was configured");
+ }
}
/** {@inheritDoc} */
@@ -129,15 +169,6 @@
+ result.getClass().toString() + ")");
}
- }
-
- /** {@inheritDoc} */
- @Override protected void doInitialize() throws ComponentInitializationException {
[... 87 lines stripped ...]
More information about the commits
mailing list