tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Casey Lucas <clu...@armassolutions.com>
Subject Re: cvs commit: jakarta-tomcat/proposals/build2/ant tomcat.jsp
Date Thu, 03 May 2001 14:55:35 GMT

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

cmanolache@yahoo.com 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() );
> > >         }
> > >       }
> > >   }
> > >
> >

Mime
View raw message