Fixed a thread-safety bug. See bugzilla #464.
authorwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Fri, 1 Sep 2006 15:16:47 +0000 (15:16 +0000)
committerwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Fri, 1 Sep 2006 15:16:47 +0000 (15:16 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@2006 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/aa/attrresolv/provider/CompositeAttributeDefinition.java

index 6bea384..be12d32 100644 (file)
@@ -79,9 +79,6 @@ public class CompositeAttributeDefinition extends BaseAttributeDefinition implem
        // Names of source attributes in a Set for convenience of checking membership
        private Set<String> sourceNamesSet;
 
-       // Number of values that each source attribute has (must be same for all attributes)
-       private int valueCount = -1;
-
        public CompositeAttributeDefinition(Element e) throws ResolutionPlugInException {
 
                super(e);
@@ -136,7 +133,7 @@ public class CompositeAttributeDefinition extends BaseAttributeDefinition implem
         * Get ordered attribute values for all source attributes from the dependent data connectors. The values of all
         * multi-valued attribute MUST be ordered and MUST be of same size or else the results can be unpredictable.
         */
-       private void addAttributesFromConnectors(Dependencies depends, Attributes sourceAttrs)
+       private void addAttributesFromConnectors(Dependencies depends, Attributes sourceAttrs, int valueCount)
                        throws ResolutionPlugInException {
 
                Iterator connectorDependIt = connectorDependencyIds.iterator();
@@ -170,7 +167,7 @@ public class CompositeAttributeDefinition extends BaseAttributeDefinition implem
         * Get ordered attribute values for all source attributes from the dependent attributes. The values of all
         * multi-valued attribute MUST be ordered and MUST be of same size or else the results can be unpredictable.
         */
-       private void addAttributesFromAttributeDependencies(Dependencies depends, Attributes sourceAttrs)
+       private void addAttributesFromAttributeDependencies(Dependencies depends, Attributes sourceAttrs, int valueCount)
                        throws ResolutionPlugInException {
 
                Iterator attrDependIt = attributeDependencyIds.iterator();
@@ -214,10 +211,13 @@ public class CompositeAttributeDefinition extends BaseAttributeDefinition implem
 
                super.resolve(attribute, principal, requester, responder, depends);
 
+               // Number of values that each source attribute has (must be same for all attributes)
+               int valueCount = -1;
+
                // Collect attribute values from dependencies
                BasicAttributes attributes = new BasicAttributes();
-               addAttributesFromConnectors(depends, attributes);
-               addAttributesFromAttributeDependencies(depends, attributes);
+               addAttributesFromConnectors(depends, attributes, valueCount);
+               addAttributesFromAttributeDependencies(depends, attributes, valueCount);
 
                // If we got this far, all attributes are ordered and have 'valueCount' number of values
                for (int i = 0; i < valueCount; i++) {