[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