[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