costin 2002/12/07 08:04:39
Modified: src/main/org/apache/tools/ant Project.java
Log:
Roll back. I'll do more testing and try again...
Revision Changes Path
1.120 +33 -110 jakarta-ant/src/main/org/apache/tools/ant/Project.java
Index: Project.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/Project.java,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -r1.119 -r1.120
--- Project.java 6 Dec 2002 23:45:07 -0000 1.119
+++ Project.java 7 Dec 2002 16:04:38 -0000 1.120
@@ -70,7 +70,6 @@
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.ant.util.JavaEnvUtils;
import org.apache.tools.ant.util.WeakishReference;
-import org.apache.tools.ant.util.LazyHashtable;
/**
* Central representation of an Ant project. This class defines an
@@ -169,14 +168,14 @@
*/
private Hashtable inheritedProperties = new Hashtable();
/** Map of references within the project (paths etc) (String to Object).
*/
- private Hashtable references = new AntRefTable(this);
+ private Hashtable references = new Hashtable();
/** Name of the project's default target. */
private String defaultTarget;
/** Map from data type names to implementing classes (String to Class).
*/
- private Hashtable dataClassDefinitions = new AntTaskTable(this, false);
+ private Hashtable dataClassDefinitions = new Hashtable();
/** Map from task names to implementing classes (String to Class). */
- private Hashtable taskClassDefinitions = new AntTaskTable(this, true);
+ private Hashtable taskClassDefinitions = new Hashtable();
/**
* Map from task names to vectors of created tasks
* (String to Vector of Task). This is used to invalidate tasks if
@@ -261,9 +260,22 @@
}
props.load(in);
in.close();
- ((AntTaskTable)taskClassDefinitions).addDefinitions( props );
-
+ Enumeration enum = props.propertyNames();
+ while (enum.hasMoreElements()) {
+ String key = (String) enum.nextElement();
+ String value = props.getProperty(key);
+ try {
+ Class taskClass = Class.forName(value);
+ addTaskDefinition(key, taskClass);
+ } catch (NoClassDefFoundError ncdfe) {
+ log("Could not load a dependent class ("
+ + ncdfe.getMessage() + ") for task " + key,
MSG_DEBUG);
+ } catch (ClassNotFoundException cnfe) {
+ log("Could not load class (" + value
+ + ") for task " + key, MSG_DEBUG);
+ }
+ }
} catch (IOException ioe) {
throw new BuildException("Can't load default task list");
}
@@ -279,9 +291,19 @@
props.load(in);
in.close();
- ((AntTaskTable)dataClassDefinitions).addDefinitions(props);
-
-
+ Enumeration enum = props.propertyNames();
+ while (enum.hasMoreElements()) {
+ String key = (String) enum.nextElement();
+ String value = props.getProperty(key);
+ try {
+ Class dataClass = Class.forName(value);
+ addDataTypeDefinition(key, dataClass);
+ } catch (NoClassDefFoundError ncdfe) {
+ // ignore...
+ } catch (ClassNotFoundException cnfe) {
+ // ignore...
+ }
+ }
} catch (IOException ioe) {
throw new BuildException("Can't load default datatype list");
}
@@ -768,7 +790,7 @@
this.baseDir = baseDir;
setPropertyInternal("basedir", this.baseDir.getPath());
String msg = "Project base dir set to: " + this.baseDir;
- log(msg, MSG_VERBOSE);
+ log(msg, MSG_VERBOSE);
}
/**
@@ -2053,103 +2075,4 @@
}
- // Should move to a separate public class - and have API to add
- // listeners, etc.
- private static class AntRefTable extends Hashtable {
- Project project;
- public AntRefTable(Project project) {
- super();
- this.project=project;
- }
-
- public Object get(Object key) {
- //System.out.println("AntRefTable.get " + key);
- Object o=super.get(key);
- if( o instanceof UnknownElement ) {
- ((UnknownElement)o).maybeConfigure();
- o=((UnknownElement)o).getTask();
- }
- return o;
- }
- }
-
- private static class AntTaskTable extends LazyHashtable {
- Project project;
- Properties props;
- boolean tasks=false;
-
- public AntTaskTable( Project p, boolean tasks ) {
- this.project=p;
- this.tasks=tasks;
- }
-
- public void addDefinitions( Properties props ) {
- this.props=props;
- }
-
- protected void initAll( ) {
- if( initAllDone ) return;
- project.log("InitAll", Project.MSG_DEBUG);
- if( props==null ) return;
- Enumeration enum = props.propertyNames();
- while (enum.hasMoreElements()) {
- String key = (String) enum.nextElement();
- Class taskClass=getTask( key );
- if( taskClass!=null ) {
- // This will call a get() and a put()
- if( tasks )
- project.addTaskDefinition(key, taskClass);
- else
- project.addDataTypeDefinition(key, taskClass );
- }
- }
- initAllDone=true;
- }
-
- protected Class getTask(String key) {
- if( props==null ) return null; // for tasks loaded before init()
- String value=props.getProperty(key);
- if( value==null) {
- project.log( "No class name for " + key, Project.MSG_VERBOSE
);
- return null;
- }
- try {
- Class taskClass=null;
- if( project.getCoreLoader() != null &&
-
!("only".equals(project.getProperty("build.sysclasspath")))) {
- try {
- taskClass=project.getCoreLoader().loadClass(value);
- if( taskClass != null ) return taskClass;
- } catch( Exception ex ) {
- }
- }
- taskClass = Class.forName(value);
- return taskClass;
- } catch (NoClassDefFoundError ncdfe) {
- project.log("Could not load a dependent class ("
- + ncdfe.getMessage() + ") for task " + key,
Project.MSG_DEBUG);
- } catch (ClassNotFoundException cnfe) {
- project.log("Could not load class (" + value
- + ") for task " + key, Project.MSG_DEBUG);
- }
- return null;
- }
-
- // Hashtable implementation
- public Object get( Object key ) {
- Object orig=super.get( key );
- if( orig!= null ) return orig;
- if( ! (key instanceof String) ) return null;
- project.log("Get task " + key, Project.MSG_DEBUG );
- Object taskClass=getTask( (String) key);
- if( taskClass != null)
- super.put( key, taskClass );
- return taskClass;
- }
-
- public boolean contains( Object key ) {
- return get( key ) != null;
- }
-
- }
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>