Author: gscokart Date: Mon Aug 25 06:53:06 2008 New Revision: 688725 URL: http://svn.apache.org/viewvc?rev=688725&view=rev Log: Fix possible raise condition when modifying/reading restrictedDefinitions (missing from previous checkin)
Modified: ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java Modified: ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java?rev=688725&r1=688724&r2=688725&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java Mon Aug 25 06:53:06 2008 @@ -1585,24 +1585,26 @@ if (definitions == null) { return null; } - for (int i = 0; i < definitions.size(); ++i) { - AntTypeDefinition d = (AntTypeDefinition) definitions.get(i); - Class exposedClass = d.getExposedClass(helper.getProject()); - if (exposedClass == null) { - continue; + synchronized (definitions) { + for (int i = 0; i < definitions.size(); ++i) { + AntTypeDefinition d = (AntTypeDefinition) definitions.get(i); + Class exposedClass = d.getExposedClass(helper.getProject()); + if (exposedClass == null) { + continue; + } + Method method = findMatchingMethod(exposedClass, methods); + if (method == null) { + continue; + } + if (matchedDefinitionClass != null) { + throw new BuildException( + "ambiguous: restricted definitions for " + + componentName + " " + + matchedDefinitionClass + " and " + exposedClass); + } + matchedDefinitionClass = exposedClass; + definition = d; } - Method method = findMatchingMethod(exposedClass, methods); - if (method == null) { - continue; - } - if (matchedDefinitionClass != null) { - throw new BuildException( - "ambiguous: restricted definitions for " - + componentName + " " - + matchedDefinitionClass + " and " + exposedClass); - } - matchedDefinitionClass = exposedClass; - definition = d; } return definition; }