[java-shib-common COMMIT] /branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/attribute/resolver...

noreply at shibboleth.net noreply at shibboleth.net
Wed Jan 20 20:59:02 EST 2016


Author: putmanb
Date: Wed Jan 20 20:59:02 2016
New Revision: 1143

URL: http://svn.shibboleth.net/view/java-shib-common?rev=1143&view=rev
Log:
SIDP-630: Using two attribute dependencies in a templated attribute yields erroneous output.
Just adding an ERROR level log once, when > 1 AttributeDefinition dependency is detected.

Modified:
    branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/attribute/resolver/provider/attributeDefinition/TemplateAttributeDefinition.java

Modified: branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/attribute/resolver/provider/attributeDefinition/TemplateAttributeDefinition.java
URL: http://svn.shibboleth.net/view/java-shib-common/branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/attribute/resolver/provider/attributeDefinition/TemplateAttributeDefinition.java?rev=1143&r1=1142&r2=1143&view=diff
==============================================================================
--- branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/attribute/resolver/provider/attributeDefinition/TemplateAttributeDefinition.java	(original)
+++ branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/attribute/resolver/provider/attributeDefinition/TemplateAttributeDefinition.java	Wed Jan 20 20:59:02 2016
@@ -38,7 +38,6 @@
 import edu.internet2.middleware.shibboleth.common.attribute.provider.BasicAttribute;
 import edu.internet2.middleware.shibboleth.common.attribute.resolver.AttributeResolutionException;
 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethResolutionContext;
-import edu.internet2.middleware.shibboleth.common.util.StringResourceLoader;
 import edu.internet2.middleware.shibboleth.common.util.VelocityStringResourceRepositoryAdaptor;
 
 /**
@@ -65,6 +64,9 @@
      * IDs of the attributes used in this composite.
      */
     private List<String> sourceAttributes;
+    
+    /** Flag to track whether need to check and log error on too many attribute dependencies. */
+    private boolean checkAttributeDependencies;
 
     /**
      * Constructor.
@@ -74,11 +76,16 @@
     public TemplateAttributeDefinition(VelocityEngine newVelocityEngine) {
         velocity = newVelocityEngine;
         sourceAttributes = new ArrayList<String>();
+        checkAttributeDependencies = true;
     }
 
     /** {@inheritDoc} */
     protected BaseAttribute doResolve(ShibbolethResolutionContext resolutionContext)
             throws AttributeResolutionException {
+        if (checkAttributeDependencies) {
+            checkAttributeDependencies(resolutionContext);
+        }
+
         Map<String, Iterator> sourceValues = new HashMap<String, Iterator>();
         BasicAttribute<Object> attribute = new BasicAttribute<Object>();
         attribute.setId(getId());
@@ -126,6 +133,30 @@
     }
 
     /**
+     * Check and log error if the number of AttributeDefinition dependencies is greater than 1.
+     * 
+     * @param resolutionContext the current attribute resolution context
+     */
+    private void checkAttributeDependencies(ShibbolethResolutionContext resolutionContext) {
+        if (!checkAttributeDependencies) {
+            return;
+        }
+        checkAttributeDependencies = false;
+        
+        int numAttributeDeps = 0;
+        for (String id : getDependencyIds()) {
+            if (resolutionContext.getResolvedAttributeDefinitions().containsKey(id)) {
+                numAttributeDeps++;
+            }
+        }
+        
+        if (numAttributeDeps > 1) {
+            log.error("Template AttributeDefinition may have a maximum of 1 AttributeDefinition dependency, saw: {}. " 
+                    + "Output from the definition will not be what is expected.", numAttributeDeps);
+        }
+    }
+
+    /**
      * Initialize the attribute definition and prepare it for use.
      * 
      * @throws Exception if unable to initialize attribute definition



More information about the commits mailing list