[java-identity-provider COMMIT] in /trunk/idp-attribute-filter-impl/src: main/java/net/shibboleth/idp/attribute/filte...
noreply at shibboleth.net
noreply at shibboleth.net
Tue Jul 29 05:00:12 EDT 2014
Author: rdw
Date: Tue Jul 29 05:00:12 2014
New Revision: 6352
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6352&view=rev
Log:
Add profileContext to scripted attribute filters (+tests)
Modified:
trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java
trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRule.java
trunk/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcherTest.java
trunk/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRuleTest.java
Modified: trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java?rev=6352&r1=6351&r2=6352&view=diff
==============================================================================
--- trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java (original)
+++ trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java Tue Jul 29 05:00:12 2014
@@ -32,6 +32,8 @@
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.filter.Matcher;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
+import net.shibboleth.idp.profile.context.RelyingPartyContext;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
@@ -41,9 +43,13 @@
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 com.google.common.base.Objects;
/**
@@ -55,10 +61,13 @@
UnmodifiableComponent {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(ScriptedMatcher.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(ScriptedMatcher.class);
/** Script to be evaluated. */
- private EvaluableScript script;
+ @NonnullAfterInit private EvaluableScript script;
+
+ /** Strategy used to locate the {@link ProfileRequestContext} to use. */
+ @Nonnull private Function<AttributeFilterContext, ProfileRequestContext> prcLookupStrategy;
/** Log prefix. */
private String logPrefix;
@@ -70,6 +79,10 @@
*/
public ScriptedMatcher(@Nonnull final EvaluableScript matchingScript) {
setScript(matchingScript);
+ // Defaults to ProfileRequestContext -> RelyingPartyContext -> AttributeContext.
+ prcLookupStrategy =
+ Functions.compose(new ParentContextLookup<RelyingPartyContext, ProfileRequestContext>(),
+ new ParentContextLookup<AttributeFilterContext, RelyingPartyContext>());
}
/**
@@ -90,6 +103,20 @@
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
script = Constraint.isNotNull(matcherScript, "Attribute value matching script can not be null");
+ }
+
+ /**
+ * Set the strategy used to locate the {@link ProfileRequestContext} associated with a given
+ * {@link AttributeFilterContext}.
+ *
+ * @param strategy strategy used to locate the {@link ProfileRequestContext} associated with a given
+ * {@link AttributeFilterContext}
+ */
+ public void setProfileRequestContextLookupStrategy(
+ @Nonnull final Function<AttributeFilterContext, ProfileRequestContext> strategy) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
+ prcLookupStrategy = Constraint.isNotNull(strategy, "ProfileRequestContext lookup strategy cannot be null");
}
/**
@@ -115,6 +142,8 @@
final EvaluableScript currentScript = script;
final SimpleScriptContext scriptContext = new SimpleScriptContext();
scriptContext.setAttribute("filterContext", filterContext, ScriptContext.ENGINE_SCOPE);
+ scriptContext
+ .setAttribute("profileContext", prcLookupStrategy.apply(filterContext), ScriptContext.ENGINE_SCOPE);
scriptContext.setAttribute("attribute", attribute, ScriptContext.ENGINE_SCOPE);
try {
@@ -141,11 +170,10 @@
/** {@inheritDoc} */
[... 425 lines stripped ...]
More information about the commits
mailing list