Hey costin, Sure thing. We recently moved and have been very busy but I'm starting to have a little more time (knock on wood). I should be able to help out with at least the pooling stuff, so just let me know if you have specific ideas or need help. -casey [EMAIL PROTECTED] wrote: > > Hi Casey, > > Sorry, I have too many things for now - the web based build is going to > wait a bit. If you could check in the changes, great.( I hope you got the > commit access ) > > BTW, I have few ideas for the pooling in jasper34 ( I would like to make > the pool pluggable, and managed by the container ). Getting the code > generator to work is first, but I hope in few weeks to finally merge the 2 > runtimes and make the changes, and I hope you can review ( or help > :-) some of it. > > Costin > > On Sun, 29 Apr 2001, Casey Lucas wrote: > > > > > Costin, > > > > Web based build will be a nice addition -- cool. > > > > Small comment though. Keep in mind that I don't have a complete understanding > > of all associated code, but at first glance, it appears that AntTag won't work > > correctly if tag pooling is being used. I think the fix is simple though. Just > > reset the list of targets and args at tag start time: > > > > > > > 1.1 jakarta-tomcat/proposals/build2/WEB-INF/src/AntTag.java > > > > > > Index: AntTag.java > > > =================================================================== > > > package tadm; > > > import java.util.*; > > > import java.io.*; > > > import java.net.URL; > > > import javax.servlet.http.*; > > > import javax.servlet.*; > > > > > > import javax.servlet.jsp.*; > > > import javax.servlet.jsp.tagext.*; > > > > > > import org.apache.tools.ant.*; > > > > > > /** > > > * This tag will run ant tasks > > > * > > > */ > > > public class AntTag extends TagSupport { > > > > > > public AntTag() {} > > > > > > public int doStartTag() throws JspException { > > > > add: > > > > args.clear() > > targets.clear() // or removeAllElements() etc. > > > > > > > try { > > > pageContext.setAttribute("antProperties", > > > args); > > > } catch (Exception ex ) { > > > ex.printStackTrace(); > > > } > > > return EVAL_BODY_INCLUDE; > > > } > > > > > > public int doEndTag() throws JspException { > > > runTest(); > > > return EVAL_PAGE; > > > } > > > > > > // -------------------- child tag support -------------------- > > > Properties args=new Properties(); > > > Vector targets=new Vector(); > > > > > > public void setProperty( String name, String value ) { > > > System.out.println("Adding property " + name + "=" + value ); > > > args.put(name, value ); > > > } > > > > > > public String getProperty( String name ) { > > > System.out.println("Getting property " + name ); > > > return args.getProperty(name ); > > > } > > > > > > public void addTarget( String n ) { > > > System.out.println("Adding target " + n ); > > > targets.addElement( n ); > > > } > > > > > > //-------------------- Properties -------------------- > > > > > > /** Set the name of the test.xml, relative to the base dir. > > > * For example, /WEB-INF/test-tomcat.xml > > > */ > > > public void setTestFile( String s ) { > > > args.put("ant.file", s); > > > } > > > > > > /** Set the target - a subset of tests to be run > > > */ > > > public void setTarget( String s ) { > > > addTarget(s); > > > } > > > > > > public void setDebug( String s ) { > > > args.put( "debug", s); > > > } > > > > > > // -------------------- Implementation methods -------------------- > > > > > > private void runTest() throws JspException { > > > PrintWriter out=null; > > > try { > > > out=pageContext.getResponse().getWriter(); > > > pageContext.getOut().flush(); > > > out.flush(); // we need a writer for ant > > > > > > Project project=new Project(); > > > > > > AntServletLogger log=new AntServletLogger(); > > > log.setWriter( out ); > > > project.addBuildListener( log ); > > > > > > project.init(); > > > > > > Enumeration argsE=args.propertyNames(); > > > while( argsE.hasMoreElements() ) { > > > String k=(String)argsE.nextElement(); > > > String v=args.getProperty( k ); > > > if( k!=null && v!= null ) > > > project.setUserProperty( k, v ); > > > } > > > > > > String antFileN=args.getProperty("ant.file"); > > > if( antFileN==null ) > > > throw new JspException( "ant.file not specified"); > > > File antF=new File(antFileN); > > > ProjectHelper.configureProject( project, > > > antF ); > > > > > > // pre-execution properties > > > Hashtable antProperties=project.getProperties(); > > > argsE=antProperties.keys(); > > > while( argsE.hasMoreElements() ) { > > > String k=(String)argsE.nextElement(); > > > String v=(String)antProperties.get( k ); > > > if( k!=null && v!= null ) > > > args.put( k, v ); // includes "revision" > > > } > > > > > > if( targets.size()==0 ) { > > > //targets.addElement("client"); > > > } > > > > > > project.executeTargets( targets ); > > > > > > // post-execution properties > > > antProperties=project.getProperties(); > > > > > > argsE=antProperties.keys(); > > > while( argsE.hasMoreElements() ) { > > > String k=(String)argsE.nextElement(); > > > String v=(String)antProperties.get( k ); > > > if( k!=null && v!= null ) > > > args.put( k, v ); > > > } > > > > > > } catch( BuildException ex ) { > > > if( out==null ) out=new PrintWriter(System.out); > > > ex.printStackTrace(out); > > > Throwable ex1=ex.getException(); > > > out.println("Root cause: " ); > > > if( ex1!=null) > > > ex1.printStackTrace(out); > > > out.flush(); > > > throw new JspException( ex.toString() ); > > > } catch( IOException ioex ) { > > > if( out==null ) out=new PrintWriter(System.out); > > > ioex.printStackTrace(out); > > > throw new JspException( ioex.toString() ); > > > } > > > } > > > } > > > > >