peterreilly 2003/07/04 02:35:31 Modified: src/main/org/apache/tools/ant AntTypeDefinition.java ComponentHelper.java src/main/org/apache/tools/ant/taskdefs Definer.java Log: Remove cloning of AntTypeDefinition when creating a sub-project PR: 21296 Revision Changes Path 1.3 +22 -27 ant/src/main/org/apache/tools/ant/AntTypeDefinition.java Index: AntTypeDefinition.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/AntTypeDefinition.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AntTypeDefinition.java 4 Jul 2003 08:15:43 -0000 1.2 +++ AntTypeDefinition.java 4 Jul 2003 09:35:31 -0000 1.3 @@ -65,7 +65,6 @@ * @author Peter Reilly */ public class AntTypeDefinition { - private Project project; private String name; private Class clazz; private Class adapterClass; @@ -74,13 +73,11 @@ private ClassLoader classLoader; /** - * Clone this definiton and changed the cloned definitions' project. - * @param p the project the cloned definition lives in + * Clone this definition and changed the cloned definitions' project. * @return the cloned definition */ - public AntTypeDefinition copy(Project p) { + public AntTypeDefinition copy() { AntTypeDefinition copy = new AntTypeDefinition(); - copy.project = p; copy.name = name; copy.clazz = clazz; copy.adapterClass = adapterClass; @@ -91,14 +88,6 @@ } /** - * set the project on the definition - * @param project the project this definition belongs in - */ - public void setProject(Project project) { - this.project = project; - } - - /** * set the definition's name * @param name the name of the definition */ @@ -190,11 +179,12 @@ * (adapted class) if there is an adpater * class and the definition class is not * assignable from the assignable class. + * @param project the current project * @return the exposed class */ - public Class getExposedClass() { + public Class getExposedClass(Project project) { if (adaptToClass != null) { - Class z = getTypeClass(); + Class z = getTypeClass(project); if (z == null) { return null; } @@ -205,14 +195,15 @@ if (adapterClass != null) { return adapterClass; } - return getTypeClass(); + return getTypeClass(project); } /** * get the definition class + * @param project the current project * @return the type of the definition */ - public Class getTypeClass() { + public Class getTypeClass(Project project) { if (clazz != null) { return clazz; } @@ -237,23 +228,24 @@ /** * create an instance of the definition. * The instance may be wrapped in a proxy class. + * @param project the current project * @return the created object */ - public Object create() { - return icreate(); + public Object create(Project project) { + return icreate(project); } /** * Create a component object based on * its definition */ - private Object icreate() { - Class c = getTypeClass(); + private Object icreate(Project project) { + Class c = getTypeClass(project); if (c == null) { return null; } - Object o = createAndSet(c); + Object o = createAndSet(project, c); if (o == null || adapterClass == null) { return o; } @@ -264,7 +256,8 @@ } } - TypeAdapter adapterObject = (TypeAdapter) createAndSet(adapterClass); + TypeAdapter adapterObject = (TypeAdapter) createAndSet( + project, adapterClass); if (adapterObject == null) { return null; } @@ -281,10 +274,11 @@ * <li>if the type is assignable from adapto</li> * <li>if the type can be used with the adapter class</li> * </dl> + * @param project the current project */ - public void checkClass() { + public void checkClass(Project project) { if (clazz == null) { - clazz = getTypeClass(); + clazz = getTypeClass(project); if (clazz == null) { throw new BuildException( "Unable to create class for " + getName()); @@ -298,7 +292,8 @@ needToCheck = false; } if (needToCheck) { - TypeAdapter adapter = (TypeAdapter) createAndSet(adapterClass); + TypeAdapter adapter = (TypeAdapter) createAndSet( + project, adapterClass); if (adapter == null) { throw new BuildException("Unable to create adapter object"); } @@ -311,7 +306,7 @@ * get the constructor of the defintion * and invoke it. */ - private Object createAndSet(Class c) { + private Object createAndSet(Project project, Class c) { try { java.lang.reflect.Constructor ctor = null; boolean noArg = false; 1.15 +8 -12 ant/src/main/org/apache/tools/ant/ComponentHelper.java Index: ComponentHelper.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/ComponentHelper.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- ComponentHelper.java 27 Jun 2003 18:16:59 -0000 1.14 +++ ComponentHelper.java 4 Jul 2003 09:35:31 -0000 1.15 @@ -154,7 +154,6 @@ AntTypeTable typeTable = helper.antTypeTable; for (Iterator i = typeTable.values().iterator(); i.hasNext();) { AntTypeDefinition def = (AntTypeDefinition) i.next(); - def = def.copy(project); antTypeTable.put(def.getName(), def); } } @@ -256,7 +255,6 @@ public void addTaskDefinition(String taskName, Class taskClass) { checkTaskClass(taskClass); AntTypeDefinition def = new AntTypeDefinition(); - def.setProject(project); def.setName(taskName); def.setClassLoader(taskClass.getClassLoader()); def.setClass(taskClass); @@ -386,7 +384,6 @@ */ public void addDataTypeDefinition(String typeName, Class typeClass) { AntTypeDefinition def = new AntTypeDefinition(); - def.setProject(project); def.setName(typeName); def.setClass(typeClass); updateDataTypeDefinition(def); @@ -567,7 +564,7 @@ Class elementClass = element.getClass(); for (Iterator i = antTypeTable.values().iterator(); i.hasNext();) { AntTypeDefinition def = (AntTypeDefinition) i.next(); - if (elementClass == def.getExposedClass()) { + if (elementClass == def.getExposedClass(project)) { return "The <" + def.getName() + "> type"; } } @@ -578,10 +575,11 @@ /** return true if the two definitions are the same */ private boolean sameDefinition( AntTypeDefinition def, AntTypeDefinition old) { - if (! (old.getTypeClass().equals(def.getTypeClass()))) { + if (! (old.getTypeClass(project).equals(def.getTypeClass(project)))) { return false; } - if (! (old.getExposedClass().equals(def.getExposedClass()))) { + if (! (old.getExposedClass(project).equals( + def.getExposedClass(project)))) { return false; } return true; @@ -649,7 +647,6 @@ String name = (String) enum.nextElement(); String className = props.getProperty(name); AntTypeDefinition def = new AntTypeDefinition(); - def.setProject(project); def.setName(name); def.setClassName(className); def.setClassLoader(classLoader); @@ -692,7 +689,6 @@ String name = (String) enum.nextElement(); String className = props.getProperty(name); AntTypeDefinition def = new AntTypeDefinition(); - def.setProject(project); def.setName(name); def.setClassName(className); def.setClassLoader(classLoader); @@ -733,7 +729,7 @@ if (def == null) { return null; } - return def.create(); + return def.create(project); } public Class getTypeClass(String name) { @@ -741,7 +737,7 @@ if (def == null) { return null; } - return def.getTypeClass(); + return def.getTypeClass(project); } public Class getExposedClass(String name) { @@ -749,13 +745,13 @@ if (def == null) { return null; } - return def.getExposedClass(); + return def.getExposedClass(project); } public boolean contains(Object clazz) { for (Iterator i = values().iterator(); i.hasNext();) { AntTypeDefinition def = (AntTypeDefinition) i.next(); - Class c = def.getExposedClass(); + Class c = def.getExposedClass(project); if (c == clazz) return true; } 1.33 +1 -2 ant/src/main/org/apache/tools/ant/taskdefs/Definer.java Index: Definer.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Definer.java,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- Definer.java 4 Jul 2003 08:48:19 -0000 1.32 +++ Definer.java 4 Jul 2003 09:35:31 -0000 1.33 @@ -528,14 +528,13 @@ AntTypeDefinition def = new AntTypeDefinition(); def.setName(name); - def.setProject(getProject()); def.setClassName(classname); def.setClass(cl); def.setAdapterClass(adapterClass); def.setAdaptToClass(adaptToClass); def.setClassLoader(al); if (cl != null) { - def.checkClass(); + def.checkClass(project); } ComponentHelper.getComponentHelper(getProject()) .addDataTypeDefinition(def);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]