Great news ;) - Henri Gomez ___[_]____ EMAIL : [EMAIL PROTECTED] (. .) PGP KEY : 697ECEDD ...oOOo..(_)..oOOo... PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6
>-----Original Message----- >From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] >Sent: Thursday, May 16, 2002 5:15 AM >To: [EMAIL PROTECTED] >Subject: cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/ant >Tomcat3JSPVersionFile.java Tomcat3Precompiler.java ant.properties > > >keith 02/05/15 20:15:13 > > Modified: . build.xml > Added: src/share/org/apache/tomcat/ant >Tomcat3JSPVersionFile.java > Tomcat3Precompiler.java ant.properties > Log: > Add Tomcat related Ant tasks for precompiling JSPs. > > Revision Changes Path > 1.178 +25 -1 jakarta-tomcat/build.xml > > Index: build.xml > =================================================================== > RCS file: /home/cvs/jakarta-tomcat/build.xml,v > retrieving revision 1.177 > retrieving revision 1.178 > diff -u -r1.177 -r1.178 > --- build.xml 24 Apr 2002 12:26:23 -0000 1.177 > +++ build.xml 16 May 2002 03:15:13 -0000 1.178 > @@ -590,7 +590,7 @@ > </jar> > </target> > > - <target name="tomcat-jars" >depends="prepare,dep.tomcat-util,tomcat_util,stop-tomcat.jar,to >mcat_core,jasper,tomcat_modules,tomcat.jar,facade22,tomcat-startup"> > + <target name="tomcat-jars" >depends="prepare,dep.tomcat-util,tomcat_util,stop-tomcat.jar,to >mcat_core,jasper,tomcat_modules,tomcat.jar,facade22,tomcat-star >tup,tomcat-ant"> > </target> > > <target name="tomcat-jars-new" depends="tomcat-jars"> > @@ -599,6 +599,30 @@ > <!-- ==================== J2EE integration ========== --> > <target name="j2ee"> > <ant antfile="src/j2ee/build.xml" target="tomcat-j2ee.jar"/> > + </target> > + > + > + <!-- ==================== Ant utilities ========== --> > + <target name="tomcat-ant" > > + <javac srcdir="src/share" > + destdir="${tomcat.build}/classes" > > + <include name="org/apache/tomcat/ant/*.java" /> > + <classpath> > + <pathelement path="${ant.lib}/ant.jar" /> > + <pathelement path="${ant.lib}/ant-optional.jar" /> > + <pathelement path="${ant.lib}/optional.jar" /> > + </classpath> > + </javac> > + <mkdir dir="${tomcat.build}/ant" /> > + <jar jarfile="${tomcat.build}/ant/tomcat-ant.jar" > + basedir="${tomcat.build}/classes"> > + <include name="org/apache/tomcat/ant/**" /> > + </jar> > + <jar jarfile="${tomcat.build}/ant/tomcat-ant.jar" > + basedir="src/share/org/apache/tomcat/ant" > + update="yes"> > + <include name="*.properties" /> > + </jar> > </target> > > <!-- ==================== Build all web applications >==================== --> > > > > 1.1 >jakarta-tomcat/src/share/org/apache/tomcat/ant/Tomcat3JSPVersio >nFile.java > > Index: Tomcat3JSPVersionFile.java > =================================================================== > /* > * The Apache Software License, Version 1.1 > * > * Copyright (c) 2002 The Apache Software Foundation. All rights > * reserved. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions > * are met: > * > * 1. Redistributions of source code must retain the above copyright > * notice, this list of conditions and the following disclaimer. > * > * 2. Redistributions in binary form must reproduce the >above copyright > * notice, this list of conditions and the following disclaimer in > * the documentation and/or other materials provided with the > * distribution. > * > * 3. The end-user documentation included with the redistribution, if > * any, must include the following acknowlegement: > * "This product includes software developed by the > * Apache Software Foundation (http://www.apache.org/)." > * Alternately, this acknowlegement may appear in the >software itself, > * if and wherever such third-party acknowlegements >normally appear. > * > * 4. The names "The Jakarta Project", "Ant", and "Apache Software > * Foundation" must not be used to endorse or promote >products derived > * from this software without prior written permission. >For written > * permission, please contact [EMAIL PROTECTED] > * > * 5. Products derived from this software may not be called "Apache" > * nor may "Apache" appear in their names without prior written > * permission of the Apache Group. > * > * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED > * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES > * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR > * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER >CAUSED AND > * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT > * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > * SUCH DAMAGE. > * >==================================================================== > * > * This software consists of voluntary contributions made by many > * individuals on behalf of the Apache Software Foundation. For more > * information on the Apache Software Foundation, please see > * <http://www.apache.org/>. > */ > > package org.apache.tomcat.ant; > > import java.io.File; > import java.io.FileOutputStream; > import java.io.FileInputStream; > import java.io.IOException; > import java.util.Vector; > import org.apache.tools.ant.BuildException; > import org.apache.tools.ant.DirectoryScanner; > import org.apache.tools.ant.Project; > import org.apache.tools.ant.Task; > import org.apache.tools.ant.util.regexp.RegexpMatcher; > import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; > > /** > * Task to create version files used by Tomcat to determine the > * appropriate class to load for a JSP. > * > * This task can accept the following attribute: > * <ul> > * <li>srcdir > * </ul> > * <b>srcdir</b> is required. > * <p> > * When this task executes, it will scan the files in srcdir >which have > * the form <i>name_nnn.class</i>. For each class, if a >corresponding > * version file of the form <i>name.ver</i> does not exist, >it is created > * with version <i>nnn</i>. If the version file exists, >this task verifies that > * it contains the correct version <i>nnn</i>. If not, a >new version file is > * created. > * > * <p>Use this task with the Tomcat3Precompiler to create >the appropriate > * files to pre-populate the Tomcat work directory. > * > * @author Keith Wannamaker <a >href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> > * > * @version $Revision: 1.1 $ > * > * @since Ant 1.6 > * > */ > public class Tomcat3JSPVersionFile extends Task { > private File srcdir; > private RegexpMatcherFactory factory = new >RegexpMatcherFactory(); > > /** Setter for srcdir */ > public void setSrcdir(String srcdir) { > this.srcdir = new File(srcdir); > } > > /** Execute the task */ > public void execute() throws BuildException { > if (srcdir == null) { > throw new BuildException("srcdir attribute >required", location); > } > DirectoryScanner ds = new DirectoryScanner(); > ds.setIncludes(new String [] {"**_?*.class"}); > ds.setBasedir(srcdir); > ds.setCaseSensitive(true); > ds.scan(); > String[] files = ds.getIncludedFiles(); > int count = 0; > for (int i = 0; i < files.length; i++) { > RegexpMatcher rm = factory.newRegexpMatcher(); > rm.setPattern("(.*)_(\\d*).class"); > if (rm.matches(files[i])) { > Vector components = rm.getGroups(files[i]); > String base = (String) components.elementAt(1); > String strVersion = (String) components.elementAt(2); > int version = new Integer(strVersion).intValue(); > File verFile = new File(srcdir, base + ".ver"); > try { > if (verFile.exists()) { > if (readVersionFile(verFile) == version) { > continue; > } > } > log("Creating verion file " + >verFile.getAbsolutePath(), > Project.MSG_VERBOSE); > count++; > writeVersionFile(verFile, version); > } catch (IOException ioe) { > throw new BuildException(ioe); > } > } > } > log("Created " + count + " version file" + ((count >!= 1) ? "s" : "")); > } > > /** > * Read Tomcat 3 version file > */ > private int readVersionFile(File verFile) throws IOException { > FileInputStream stream = new FileInputStream(verFile); > try { > return (int) stream.read(); > } finally { > stream.close(); > } > } > > /** > * Write Tomcat 3 version file > */ > private void writeVersionFile(File verFile, int version) >throws IOException { > FileOutputStream stream = new FileOutputStream(verFile); > try { > stream.write(version); > } finally { > stream.close(); > } > } > > } > > > > > 1.1 >jakarta-tomcat/src/share/org/apache/tomcat/ant/Tomcat3Precompiler.java > > Index: Tomcat3Precompiler.java > =================================================================== > /* > * The Apache Software License, Version 1.1 > * > * Copyright (c) 2001-2002 The Apache Software Foundation. >All rights > * reserved. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions > * are met: > * > * 1. Redistributions of source code must retain the above copyright > * notice, this list of conditions and the following disclaimer. > * > * 2. Redistributions in binary form must reproduce the >above copyright > * notice, this list of conditions and the following disclaimer in > * the documentation and/or other materials provided with the > * distribution. > * > * 3. The end-user documentation included with the redistribution, if > * any, must include the following acknowlegement: > * "This product includes software developed by the > * Apache Software Foundation (http://www.apache.org/)." > * Alternately, this acknowlegement may appear in the >software itself, > * if and wherever such third-party acknowlegements >normally appear. > * > * 4. The names "The Jakarta Project", "Ant", and "Apache Software > * Foundation" must not be used to endorse or promote >products derived > * from this software without prior written permission. >For written > * permission, please contact [EMAIL PROTECTED] > * > * 5. Products derived from this software may not be called "Apache" > * nor may "Apache" appear in their names without prior written > * permission of the Apache Group. > * > * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED > * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES > * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR > * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER >CAUSED AND > * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT > * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > * SUCH DAMAGE. > * >==================================================================== > * > * This software consists of voluntary contributions made by many > * individuals on behalf of the Apache Software Foundation. For more > * information on the Apache Software Foundation, please see > * <http://www.apache.org/>. > */ > > package org.apache.tomcat.ant; > > import org.apache.tools.ant.BuildException; > import org.apache.tools.ant.Project; > import org.apache.tools.ant.types.Commandline; > import org.apache.tools.ant.types.Path; > import org.apache.tools.ant.taskdefs.optional.jsp.JspC; > import org.apache.tools.ant.taskdefs.optional.jsp.JspMangler; > import org.apache.tools.ant.taskdefs.optional.jsp.JspNameMangler; > import >org.apache.tools.ant.taskdefs.optional.jsp.compilers.DefaultJsp >CompilerAdapter; > import org.apache.tools.ant.taskdefs.Java; > > import java.io.File; > import java.util.Enumeration; > import java.util.Vector; > > /** > * This compiler adaptor builds jsps with a naming convention that is > * ready-to-use by Tomcat 3.x. Files are compiled from ><i>foo.jsp</i> > * to <i>foo_1.java</i>. > * > * <p>Use this task with the Tomcat3JSPVersionFile to create >the appropriate > * files to pre-populate the Tomcat work directory. > * > * @author Keith Wannamaker <a >href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> > * @since ant1.6 > */ > public class Tomcat3Precompiler extends DefaultJspCompilerAdapter { > /** > * our execute method which does dependency checks > */ > public boolean execute() > throws BuildException { > getJspc().log("Using Tomcat 3 precompiler", >Project.MSG_VERBOSE); > > Vector sources = getJspc().getCompileList(); > Enumeration enum = sources.elements(); > while (enum.hasMoreElements()) { > Commandline cmd = setupJasperCommand(); > String source = (String) enum.nextElement(); > String base = getBase(source); > addArg(cmd, "-c", base + "_1"); > cmd.createArgument().setValue(source); > compile(cmd); > } > return true; > } > > /** Execute Jasper */ > private boolean compile(Commandline cmd) throws >BuildException { > try { > // Create an instance of the compiler, >redirecting output to > // the project log > // REVISIT. ugly. > Java java = (Java) >(getJspc().getProject()).createTask("java"); > if (getJspc().getClasspath() != null) { > java.setClasspath(getJspc().getClasspath()); > } else { > java.setClasspath(Path.systemClasspath); > } > java.setClassname("org.apache.jasper.JspC"); > String args[] = cmd.getArguments(); > for (int i = 0; i < args.length; i++) { > java.createArg().setValue(args[i]); > } > java.setFailonerror(getJspc().getFailonerror()); > //don't fork > java.setFork(false); > java.execute(); > return true; > } catch (Exception ex) { > //@todo implement failonerror support here? > if (ex instanceof BuildException) { > throw (BuildException) ex; > } else { > throw new BuildException("Error running jsp >compiler: ", > ex, >getJspc().getLocation()); > } > } finally { > getJspc().deleteEmptyJavaFiles(); > } > } > > /** > * Returns filename sans extension and prefix > */ > private String getBase(String filename) { > int lastslash = filename.lastIndexOf('/'); > if (lastslash == -1) { > lastslash = 0; > } > int lastdot = filename.lastIndexOf('.'); > if (lastdot == -1) { > lastdot = filename.length(); > } > return filename.substring(lastslash + 1, lastdot); > } > > /** > * build up a command line > * @return a command line for jasper > */ > private Commandline setupJasperCommand() { > Commandline cmd = new Commandline(); > JspC jspc = getJspc(); > addArg(cmd, "-d", jspc.getDestdir()); > addArg(cmd, "-p", jspc.getPackage()); > addArg(cmd, "-v" + jspc.getVerbose()); > addArg(cmd, "-uriroot", jspc.getUriroot()); > addArg(cmd, "-uribase", jspc.getUribase()); > addArg(cmd, "-ieplugin", jspc.getIeplugin()); > addArg(cmd, "-die9"); > > if (jspc.isMapped()){ > addArg(cmd, "-mapped"); > } > if (jspc.getWebApp() != null) { > File dir = jspc.getWebApp().getDirectory(); > addArg(cmd, "-webapp", dir); > } > return cmd; > } > > /** > * @return an instance of the mangler this compiler uses > */ > public JspMangler createMangler() { > return new TomcatJSPMangler(); > } > > /** > * Special mangler which coverts *.jsp -> *_1.java > */ > private class TomcatJSPMangler implements JspMangler { > public TomcatJSPMangler() { > mangler = new JspNameMangler(); > } > > public String mapJspToJavaName(File jspFile) { > String javaFile = mangler.mapJspToJavaName(jspFile); > int ext = javaFile.lastIndexOf(".java"); > if (ext != -1) { > javaFile = javaFile.substring(0, ext) + "_1.java"; > } > return javaFile; > } > > public String mapPath(String path) { > return mangler.mapPath(path); > } > > private JspMangler mangler; > } > > } > > > > 1.1 >jakarta-tomcat/src/share/org/apache/tomcat/ant/ant.properties > > Index: ant.properties > =================================================================== > # > # jakarta-tomcat custom ant tasks > # <taskdef resource="ant.properties" /> > # > > jspversion=org.apache.tomcat.ant.Tomcat3JSPVersionFile > > > > > >-- >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>