Return-Path: Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 29935 invoked by uid 2016); 16 Nov 1999 18:53:43 -0000 Delivered-To: apcore-jakarta-tools-cvs@apache.org Received: (qmail 29909 invoked by uid 259); 16 Nov 1999 18:53:39 -0000 Date: 16 Nov 1999 18:53:39 -0000 Message-ID: <19991116185339.29908.qmail@hyperreal.org> From: costin@hyperreal.org To: jakarta-tools-cvs@apache.org Subject: cvs commit: jakarta-tools/ant/src/main/org/apache/tools/ant Ant.java InvocationHelper.java Project.java Target.java Task.java XmlHelper.java costin 99/11/16 10:53:37 Modified: ant/src/main/org/apache/tools/ant InvocationHelper.java Project.java Target.java Task.java XmlHelper.java Added: ant/src/main/org/apache/tools/ant Ant.java Log: - Added a Ant.java - it does the same thing as Main.java, but uses InvocationHelper and XMLHelper instead of ProjectHelper. - Added few methods to Project, Task, etc - no change in existing methods. ( needed to make them work with XMLHelper) Ant.java allows you to add new tasks without defining them in properties, you can have more than 1 level ( i.e. tasks can have sub-elements), you can use body ( will be usefull in Exec ). ( most of the changes are in different files to keep ant stable ) Revision Changes Path 1.2 +15 -14 jakarta-tools/ant/src/main/org/apache/tools/ant/InvocationHelper.java Index: InvocationHelper.java =================================================================== RCS file: /home/cvs/jakarta-tools/ant/src/main/org/apache/tools/ant/InvocationHelper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- InvocationHelper.java 1999/11/15 23:24:24 1.1 +++ InvocationHelper.java 1999/11/16 18:53:14 1.2 @@ -53,7 +53,7 @@ /** Set a property, using either the setXXX method or a generic setProperty(name, value) * @returns true if success */ - public static void setProperty( Object o, String name, String value ) throws BuildException { + public static void setProperty( Object o, String name, String value ) { // System.out.println("Setting Property " + o.getClass() + " " + name + "=" + value); try { Method setMethod = (Method)getPropertySetter(o, name); @@ -69,25 +69,25 @@ return; } - String msg = "Error setting " + name + " in " + o.getClass(); - throw new BuildException(msg); + // String msg = "Error setting " + name + " in " + o.getClass(); + //throw new BuildException(msg); } catch (IllegalAccessException iae) { String msg = "Error setting value for attrib: " + name; System.out.println("WARNING " + msg); iae.printStackTrace(); - throw new BuildException(msg); + // throw new BuildException(msg); } catch (InvocationTargetException ie) { String msg = "Error setting value for attrib: " + name + " in " + o.getClass().getName(); ie.printStackTrace(); ie.getTargetException().printStackTrace(); - throw new BuildException(msg); + // throw new BuildException(msg); } } /** Set an object property using setter or setAttribute(name). */ - public static void setAttribute( Object o, String name, Object v ) throws BuildException { + public static void setAttribute( Object o, String name, Object v ) { // System.out.println("Set Attribute " + o.getClass() + " " + name + " " + v ); try { Method setMethod = getPropertySetter(o, name); @@ -106,26 +106,27 @@ setMethod.invoke(o, new Object[] {name, v}); return; } - - String msg = "Error setting " + name + " in " + o.getClass(); - throw new BuildException(msg); + + // Silent + // String msg = "Error setting " + name + " in " + o.getClass(); + // throw new BuildException(msg); } catch (IllegalAccessException iae) { String msg = "Error setting value for attrib: " + name; iae.printStackTrace(); - throw new BuildException(msg); + // throw new BuildException(msg); } catch (InvocationTargetException ie) { String msg = "Error setting value for attrib: " + name + " in " + o.getClass().getName(); ie.printStackTrace(); ie.getTargetException().printStackTrace(); - throw new BuildException(msg); + // throw new BuildException(msg); } } /** Calls addXXX( v ) then setAttribute( name, v). */ - public static void addAttribute( Object o, String name, Object v ) throws BuildException { + public static void addAttribute( Object o, String name, Object v ) { try { Method setMethod = getMethod(o, "add" + capitalize( name )); if( setMethod!= null ) { @@ -144,13 +145,13 @@ String msg = "Error setting value for attrib: " + name; iae.printStackTrace(); - throw new BuildException(msg); + // throw new BuildException(msg); } catch (InvocationTargetException ie) { String msg = "Error setting value for attrib: " + name + " in " + o.getClass().getName(); ie.printStackTrace(); ie.getTargetException().printStackTrace(); - throw new BuildException(msg); + // throw new BuildException(msg); } } 1.8 +30 -1 jakarta-tools/ant/src/main/org/apache/tools/ant/Project.java Index: Project.java =================================================================== RCS file: /home/cvs/jakarta-tools/ant/src/main/org/apache/tools/ant/Project.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Project.java 1999/10/31 23:14:14 1.7 +++ Project.java 1999/11/16 18:53:16 1.8 @@ -102,11 +102,18 @@ public void setDefaultTarget(String defaultTarget) { this.defaultTarget = defaultTarget; } - + + // deprecated, use setDefault public String getDefaultTarget() { return defaultTarget; } + // match the attribute name + public void setDefault(String defaultTarget) { + this.defaultTarget = defaultTarget; + } + + public void setName(String name) { this.name = name; } @@ -115,6 +122,17 @@ return name; } + // match basedir attribute in xml + public void setBasedir( String baseD ) throws BuildException { + try { + setBaseDir(new File( new File(baseD).getCanonicalPath())); + } catch (IOException ioe) { + String msg = "Can't set basedir " + baseDir + " due to " + + ioe.getMessage(); + throw new BuildException(msg); + } + } + public void setBaseDir(File baseDir) { this.baseDir = baseDir; String msg = "Project base dir set to: " + baseDir; @@ -122,6 +140,11 @@ } public File getBaseDir() { + if(baseDir==null) { + try { + setBasedir("."); + } catch(BuildException ex) {ex.printStackTrace();} + } return baseDir; } @@ -161,6 +184,12 @@ taskClassDefinitions.put(taskName, taskClass); } + public void addTarget(Target target) { + String msg = " +Target: " + target.getName(); + log(msg, MSG_VERBOSE); + targets.put(target.getName(), target); + } + public void addTarget(String targetName, Target target) { String msg = " +Target: " + targetName; log(msg, MSG_VERBOSE); 1.2 +27 -0 jakarta-tools/ant/src/main/org/apache/tools/ant/Target.java Index: Target.java =================================================================== RCS file: /home/cvs/jakarta-tools/ant/src/main/org/apache/tools/ant/Target.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Target.java 1999/10/09 00:06:05 1.1 +++ Target.java 1999/11/16 18:53:17 1.2 @@ -2,6 +2,7 @@ import java.util.Enumeration; import java.util.Vector; +import java.util.StringTokenizer; /** * @@ -14,7 +15,33 @@ private String name; private Vector dependencies = new Vector(); private Vector tasks = new Vector(); + Project project; + + public void setProject( Project project) { + this.project=project; + } + public Project getProject() { + return project; + } + + public void setDepends( String depS ) { + if (depS.length() > 0) { + StringTokenizer tok = + new StringTokenizer(depS, ",", false); + while (tok.hasMoreTokens()) { + addDependency(tok.nextToken().trim()); + } + } + } + + public void setAttribute(String name, Object value) { + // XXX + if( value instanceof Task) + addTask( (Task)value); + + } + public void setName(String name) { this.name = name; } 1.4 +12 -0 jakarta-tools/ant/src/main/org/apache/tools/ant/Task.java Index: Task.java =================================================================== RCS file: /home/cvs/jakarta-tools/ant/src/main/org/apache/tools/ant/Task.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Task.java 1999/10/15 19:27:44 1.3 +++ Task.java 1999/11/16 18:53:18 1.4 @@ -17,6 +17,7 @@ public abstract class Task { protected Project project = null; + Target target; /** * Sets the project object of this task. This method is used by @@ -31,6 +32,17 @@ this.project = project; } + public void setAttribute( String name, Object v) { + if("target".equals( name ) ) { + Target t=(Target)v; + target=t; + project=t.getProject(); + return; + } + // System.out.println("Set Att " +name + " = " + v ); + // if( v!=null) System.out.println(v.getClass()); + } + /** * Called by the project to let the task do it's work. * 1.2 +5 -3 jakarta-tools/ant/src/main/org/apache/tools/ant/XmlHelper.java Index: XmlHelper.java =================================================================== RCS file: /home/cvs/jakarta-tools/ant/src/main/org/apache/tools/ant/XmlHelper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XmlHelper.java 1999/11/16 00:40:56 1.1 +++ XmlHelper.java 1999/11/16 18:53:20 1.2 @@ -97,6 +97,8 @@ public XmlHelperHandler(Map mapper, Properties props) { tagMapper=mapper; this.props=props; + elemStack = new Object[100]; // depth of the xml doc + tagStack = new String[100]; } public void setDocumentLocator (Locator locator) @@ -107,8 +109,6 @@ public void startDocument () throws SAXException { - elemStack = new Object[100]; // depth of the xml doc - tagStack = new String[100]; sp = 0; } @@ -206,7 +206,9 @@ throws SAXException { String value=new String(buf, offset, len ); - // System.out.println("XXXCH: " + value ); + if( (sp > 0) && elemStack[sp]!=null ) { + InvocationHelper.addAttribute( elemStack[sp], "body", value ); + } } 1.1 jakarta-tools/ant/src/main/org/apache/tools/ant/Ant.java Index: Ant.java =================================================================== package org.apache.tools.ant; import java.beans.*; import java.io.*; import java.io.IOException; import java.lang.reflect.*; import java.util.Hashtable; import java.util.*; import com.sun.xml.parser.Resolver; import com.sun.xml.tree.XmlDocument; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.*; import org.xml.sax.helpers.*; import org.w3c.dom.*; import org.apache.tools.ant.*; /** * * * @author duncan@x180.com * @author costin@dnt.ro */ public class Ant { public static final int MSG_ERR = 0; public static final int MSG_WARN = 1; public static final int MSG_INFO = 2; public static final int MSG_VERBOSE = 3; public int msgOutputLevel = MSG_INFO; private Properties definedProps = new Properties(); public String usage="No usage help"; public String vopt[] = null; Vector targets=new Vector(); static StringBuffer msg; static { String lSep = System.getProperty("line.separator"); msg = new StringBuffer(); msg.append("ant [options] [target]").append(lSep); msg.append("Options: ").append(lSep); msg.append(" -help print this message"); msg.append(lSep); msg.append(" -quiet be extra quiet"); msg.append(lSep); msg.append(" -verbose be extra verbose"); msg.append(lSep); msg.append(" -buildfile use given buildfile"); msg.append(lSep); msg.append(" -D= use value for given property"); msg.append(lSep); } public static void main(String args[] ) { try { Ant ant=new Ant(); ant.setValidOptions( new String[] { "buildfile" } ); if( ! ant.processArgs( args ) ) { return; } Properties props=ant.getProperties(); String fname=props.getProperty("buildfile"); if(fname==null) fname=props.getProperty("file", "build.xml"); File f=new File(fname); TagMap mapper=new TagMap( "org.apache.tools.ant.taskdefs"); mapper.addMap( "project", "org.apache.tools.ant.Project"); mapper.addMap( "target", "org.apache.tools.ant.Target"); Project project=(Project)XmlHelper.readXml(f, props, mapper, null); Enumeration e = props.keys(); while (e.hasMoreElements()) { String arg = (String)e.nextElement(); String value = (String)props.get(arg); project.setProperty(arg, value); } String args1[] = ant.getArgs(); String target = project.getDefaultTarget(); if( args1!=null && args1.length>0 ) target=args1[0]; project.executeTarget(target); } catch(Exception ex ) { ex.printStackTrace(); } } // -------------------- Argument processing -------------------- // XXX move it to a Helper class2 public void setValidOptions( String vopt[] ) { this.vopt=vopt; } public Properties getProperties() { return definedProps; } public String[] getArgs() { String sa[]=new String[ targets.size() ]; for( int i=0; i< sa.length; i++ ) { sa[i]=(String)targets.elementAt(i); } return sa; } public void printUsage() { System.out.println(usage); } public boolean processArgs(String[] args) { for (int i = 0; i < args.length; i++) { String arg = args[i]; if (arg.equals("-help") || arg.equals("help")) { printUsage(); return false; } else if (arg.equals("-quiet") || arg.equals("-q") || arg.equals("q")) { msgOutputLevel = MSG_WARN; } else if (arg.equals("-verbose") || arg.equals("-v") || arg.equals("v")) { msgOutputLevel = MSG_VERBOSE; } else if (arg.startsWith("-D")) { arg = arg.substring(2, arg.length()); String value = args[++i]; definedProps.put(arg, value); } else if (arg.startsWith("-")) { String arg1=arg.substring(1); int type=0; if( vopt != null ) { for( int j=0; j