[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
Mon Oct 3 21:15:05 EDT 2016
Author: scantor
Date: Mon Oct 3 21:15:05 2016
New Revision: 8457
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=8457&view=rev
Log:
Add timer hooks to resolver and filter.
Modified:
trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
Modified: trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java?rev=8457&r1=8456&r2=8457&view=diff
==============================================================================
--- trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java (original)
+++ trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java Mon Oct 3 21:15:05 2016
@@ -33,6 +33,8 @@
import net.shibboleth.idp.attribute.filter.AttributeFilterPolicy;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterWorkContext;
+import net.shibboleth.idp.profile.context.RelyingPartyContext;
+import net.shibboleth.idp.profile.context.TimerContext;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
@@ -42,9 +44,13 @@
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
+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.Predicates;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
@@ -62,6 +68,9 @@
/** Log prefix. */
private String logPrefix;
+ /** Strategy to get the {@link ProfileRequestContext}. */
+ @Nonnull private Function<AttributeFilterContext,ProfileRequestContext> profileContextStrategy;
+
/**
* Constructor.
*
@@ -75,6 +84,11 @@
final ArrayList<AttributeFilterPolicy> checkedPolicies = new ArrayList<>();
CollectionSupport.addIf(checkedPolicies, policies, Predicates.notNull());
filterPolicies = ImmutableList.copyOf(Iterables.filter(checkedPolicies, Predicates.notNull()));
+
+ // Defaults to ProfileRequestContext -> RelyingPartyContext -> AttributeFilterContext.
+ profileContextStrategy =
+ Functions.compose(new ParentContextLookup<RelyingPartyContext, ProfileRequestContext>(),
+ new ParentContextLookup<AttributeFilterContext, RelyingPartyContext>());
}
/**
@@ -100,30 +114,38 @@
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
Constraint.isNotNull(filterContext, "Attribute filter context can not be null");
- final Map<String, IdPAttribute> prefilteredAttributes = filterContext.getPrefilteredIdPAttributes();
-
- // Create work context to hold intermediate results.
- filterContext.getSubcontext(AttributeFilterWorkContext.class, true);
-
- log.debug("{} Beginning process of filtering the following {} attributes: {}", new Object[] {getLogPrefix(),
- prefilteredAttributes.size(), prefilteredAttributes.keySet(),});
-
- final List<AttributeFilterPolicy> policies = getFilterPolicies();
- for (final AttributeFilterPolicy policy : policies) {
- policy.apply(filterContext);
- }
-
- IdPAttribute filteredAttribute;
- for (final String attributeId : filterContext.getPrefilteredIdPAttributes().keySet()) {
- final Collection filteredAttributeValues = getFilteredValues(attributeId, filterContext);
- if (null != filteredAttributeValues && !filteredAttributeValues.isEmpty()) {
- try {
- filteredAttribute = prefilteredAttributes.get(attributeId).clone();
- } catch (final CloneNotSupportedException e) {
- throw new AttributeFilterException(e);
+
+ final boolean timerStarted = startTimer(filterContext);
+ try {
+ final Map<String, IdPAttribute> prefilteredAttributes = filterContext.getPrefilteredIdPAttributes();
+
+ // Create work context to hold intermediate results.
+ filterContext.getSubcontext(AttributeFilterWorkContext.class, true);
+
[... 227 lines stripped ...]
More information about the commits
mailing list