Author: cbrisson Date: Wed Apr 25 11:08:51 2012 New Revision: 1330192 URL: http://svn.apache.org/viewvc?rev=1330192&view=rev Log: applying Jarkko patch for javacc & maven (tests are fine) - issue VELOCITY-819
Removed: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/JJTParserState.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/Parser.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/ParserConstants.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/ParserTokenManager.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/Token.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/TokenMgrError.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/build.sh Modified: velocity/engine/trunk/velocity-engine-core/pom.xml velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/BUILD_README.txt Modified: velocity/engine/trunk/velocity-engine-core/pom.xml URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/pom.xml?rev=1330192&r1=1330191&r2=1330192&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/pom.xml (original) +++ velocity/engine/trunk/velocity-engine-core/pom.xml Wed Apr 25 11:08:51 2012 @@ -11,6 +11,14 @@ <version>2.0.0-SNAPSHOT</version> <name>Apache Velocity - Engine</name> + <properties> + <!-- command line switch -Dparser.create=true generates the parser files --> + <parser.create>false</parser.create> + + <!-- command line switch -Dparser.nodefiles=true generates AST Node classes (new structures added to parser) --> + <parser.nodefiles>false</parser.nodefiles> + </properties> + <build> <plugins> <plugin> @@ -69,7 +77,7 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> - <skip>true</skip> + <skip>${maven.test.skip}</skip> <systemProperties> <property> <name>test</name> @@ -98,6 +106,91 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>javacc-maven-plugin</artifactId> + <version>2.6</version> + <executions> + <execution> + <id>jjtree-javacc</id> + <goals> + <goal>jjtree-javacc</goal> + </goals> + </execution> + </executions> + <configuration> + <isStatic>false</isStatic> + <buildParser>true</buildParser> + <buildNodeFiles>${parser.nodefiles}</buildNodeFiles> + <multi>true</multi> + <debugParser>false</debugParser> + <jdkVersion>1.4</jdkVersion> + <nodeUsesParser>true</nodeUsesParser> + <nodePackage>org.apache.velocity.runtime.parser</nodePackage> + <sourceDirectory>${basedir}/src/main/parser</sourceDirectory> + <interimDirectory>${basedir}/src/main/java</interimDirectory> + <outputDirectory>${basedir}/src/main/java</outputDirectory> + </configuration> + </plugin> + <plugin> + <artifactId>maven-antrun-plugin</artifactId> + <version>1.7</version> + <executions> + <execution> + <id>parser-init</id> + <phase>initialize</phase> + <configuration> + <target if="${parser.create}"> + <delete quiet="true" verbose="false"> + <fileset dir="${basedir}/src/main/java/org/apache/velocity/runtime/parser" + includes="AST*.java,Parser*.java,Token*.java"/> + </delete> + </target> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + <execution> + <id>parser-cleanup</id> + <phase>process-sources</phase> + <configuration> + <target> + <!-- delete unnecessary files generated by JavaCC --> + <delete quiet="true" verbose="false"> + <fileset dir="${basedir}/src/main/java/org/apache/velocity/runtime/parser" + includes="Node.java,ParserVisitor.java,SimpleNode.java"/> + </delete> + <!-- fix JJTParserState class to use our custom Node class --> + <replace file="${basedir}/src/main/java/org/apache/velocity/runtime/parser/JJTParserState.java"> + <replacetoken>import org.apache.velocity.runtime.parser.node.Node;</replacetoken> + <replacevalue></replacevalue> + </replace> + <replace file="${basedir}/src/main/java/org/apache/velocity/runtime/parser/JJTParserState.java"> + <replacetoken>package org.apache.velocity.runtime.parser;</replacetoken> + <replacevalue>package org.apache.velocity.runtime.parser; import org.apache.velocity.runtime.parser.node.Node;</replacevalue> + </replace> + <!-- if we just generated AST Node classes by JavaCC, end the build here and give instructions --> + <condition property="stop"><istrue value="${parser.nodefiles}"/></condition> + <fail if="stop"><![CDATA[- +------------------------------------------------------------------------------- +Velocity AST Node classes created to src/main/java/org/apache/velocity/runtime/parser + +1. Delete already existing AST Node classes from this directory +2. Move the new generated AST Node class(es) to src/main/java/org/apache/velocity/runtime/parser/node +3. Change the package name of the new AST Node(s) in the source code file +4. Write the source code to support the new desired functionality of that node +------------------------------------------------------------------------------- +]]> +</fail> + </target> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> <dependencies> Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/BUILD_README.txt URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/BUILD_README.txt?rev=1330192&r1=1330191&r2=1330192&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/BUILD_README.txt (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/BUILD_README.txt Wed Apr 25 11:08:51 2012 @@ -1,28 +1,22 @@ -Quick Note: ------------ -The parser is a 'special' piece of the build tree - currently it doesn't -behave as everything else due to javacc and the package layout. +The following Parser related source files will be generated by Maven (and thus not stored in version control): +Parser.java +ParserConstants.java +ParserTokenManager.java +ParserTreeConstants.java +Token.java +TokenMgrError.java +JJTParserState.java -1) The build script in this directory will take care of the simple case -when the parser is modified via Parser.jjt. It runs 'jjtree' on Parser.jjt -to make the AST nodes (which are then deleted later - more on this in a bit) -and creates Parser.jj for javacc. +See pom.xml how this magic works. -2) Javacc is then run on Parser.jj to make Parser.java, which will be compiled -like any other piece of java source via build-velocity.sh (or whatever follows.) -3) In the event that something 'serious' changes, such as an AST node is created -or altered, it must be *manually* moved to the node subdirectory, and have it's -package declaration fixed. This should be an extremely rare event at this point -and will change with javacc 2.0. -4) When committing changes, to aid readability to those watching the cvs commit -messages, please commit Parser.jjt separately from the .jj and .java -files generated from .jjt. +To recreate Parser (using src/parser/Parser.jjt), use a command line switch: +mvn -Dparser.create=true package --gmj -5) Finally, note that in order to create code that will compile with JDK 1.5, -you will need to use JavaCC 3.2 or later (replaces variable "enumeration" with "e". (WGH) +If there are new structures or nodetypes in the Parser.jjt, generate the new AST nodefiles by using a command line switch: +mvn -Dparser.nodefiles=true package +Maven build will display the instructions. \ No newline at end of file