[Jsptest-svn-commits] SF.net SVN: jsptest: [211] tags
Status: Alpha
Brought to you by:
lkoskela
From: <lko...@us...> - 2008-04-09 20:02:02
|
Revision: 211 http://jsptest.svn.sourceforge.net/jsptest/?rev=211&view=rev Author: lkoskela Date: 2008-04-09 13:01:48 -0700 (Wed, 09 Apr 2008) Log Message: ----------- [maven-release-plugin] copy for tag jsptest-0.15 Added Paths: ----------- tags/jsptest-0.15/ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml tags/jsptest-0.15/jsptest-acceptance/pom.xml tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml tags/jsptest-0.15/jsptest-generic/pom.xml tags/jsptest-0.15/jsptest-jsp12/pom.xml tags/jsptest-0.15/jsptest-jsp20/pom.xml tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java tags/jsptest-0.15/jsptest-jsp21/pom.xml tags/jsptest-0.15/pom.xml Removed Paths: ------------- tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml tags/jsptest-0.15/jsptest-acceptance/pom.xml tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml tags/jsptest-0.15/jsptest-generic/pom.xml tags/jsptest-0.15/jsptest-jsp12/pom.xml tags/jsptest-0.15/jsptest-jsp20/pom.xml tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java tags/jsptest-0.15/jsptest-jsp21/pom.xml tags/jsptest-0.15/pom.xml Copied: tags/jsptest-0.15 (from rev 208, trunk) Deleted: tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml =================================================================== --- trunk/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-acceptance</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-acceptance-jsp12</artifactId> - <packaging>jar</packaging> - <name>Acceptance tests for the JspTest variant for the JSP 1.2 specification.</name> - <description /> - <dependencies> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-jsp12</artifactId> - </dependency> - </dependencies> -</project> Copied: tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml (from rev 210, trunk/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp12/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-acceptance</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-acceptance-jsp12</artifactId> + <packaging>jar</packaging> + <name>Acceptance tests for the JspTest variant for the JSP 1.2 specification.</name> + <description /> + <dependencies> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-jsp12</artifactId> + </dependency> + </dependencies> +</project> Deleted: tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml =================================================================== --- trunk/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-acceptance</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-acceptance-jsp20</artifactId> - <packaging>jar</packaging> - <name>Acceptance tests for the JspTest variant for the JSP 2.0 specification.</name> - <description /> - <dependencies> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-jsp20</artifactId> - </dependency> - </dependencies> -</project> Copied: tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml (from rev 210, trunk/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp20/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-acceptance</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-acceptance-jsp20</artifactId> + <packaging>jar</packaging> + <name>Acceptance tests for the JspTest variant for the JSP 2.0 specification.</name> + <description /> + <dependencies> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-jsp20</artifactId> + </dependency> + </dependencies> +</project> Deleted: tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml =================================================================== --- trunk/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,20 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-acceptance</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-acceptance-jsp21</artifactId> - <version>0.15-SNAPSHOT</version> - <packaging>jar</packaging> - <name>Acceptance tests for the JspTest variant for the JSP 2.1 specification.</name> - <description /> - <dependencies> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-jsp21</artifactId> - </dependency> - </dependencies> -</project> Copied: tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml (from rev 210, trunk/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-acceptance/jsptest-acceptance-jsp21/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-acceptance</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-acceptance-jsp21</artifactId> + <version>0.15</version> + <packaging>jar</packaging> + <name>Acceptance tests for the JspTest variant for the JSP 2.1 specification.</name> + <description /> + <dependencies> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-jsp21</artifactId> + </dependency> + </dependencies> +</project> Deleted: tags/jsptest-0.15/jsptest-acceptance/pom.xml =================================================================== --- trunk/jsptest-acceptance/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-acceptance/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-acceptance</artifactId> - <name>JspTest root project for acceptance test modules</name> - <description>This POM acts as a virtual root for the acceptance test projects for different JSP specification variants of JspTest.</description> - <packaging>pom</packaging> - <modules> - <module>jsptest-acceptance-jsp12</module> - <module>jsptest-acceptance-jsp20</module> - <module>jsptest-acceptance-jsp21</module> - </modules> -</project> Copied: tags/jsptest-0.15/jsptest-acceptance/pom.xml (from rev 210, trunk/jsptest-acceptance/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-acceptance/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-acceptance/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-acceptance</artifactId> + <name>JspTest root project for acceptance test modules</name> + <description>This POM acts as a virtual root for the acceptance test projects for different JSP specification variants of JspTest.</description> + <packaging>pom</packaging> + <modules> + <module>jsptest-acceptance-jsp12</module> + <module>jsptest-acceptance-jsp20</module> + <module>jsptest-acceptance-jsp21</module> + </modules> +</project> Deleted: tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml =================================================================== --- trunk/jsptest-generic/jsptest-common/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,34 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-generic</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-common</artifactId> - <version>0.15-SNAPSHOT</version> - <packaging>jar</packaging> - <name>Common utilities</name> - <description>Common utilities for the components of JspTest, including the JSP version-specific compiler implementations.</description> - <profiles> - <profile> - <id>default-tools.jar</id> - <activation> - <property> - <name>java.vendor</name> - <value>Sun Microsystems Inc.</value> - </property> - </activation> - <dependencies> - <dependency> - <groupId>com.sun</groupId> - <artifactId>tools</artifactId> - <version>1.4.2</version> - <scope>system</scope> - <systemPath>${java.home}/../lib/tools.jar</systemPath> - </dependency> - </dependencies> - </profile> - </profiles> -</project> Copied: tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml (from rev 210, trunk/jsptest-generic/jsptest-common/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-generic/jsptest-common/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-generic</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-common</artifactId> + <version>0.15</version> + <packaging>jar</packaging> + <name>Common utilities</name> + <description>Common utilities for the components of JspTest, including the JSP version-specific compiler implementations.</description> + <profiles> + <profile> + <id>default-tools.jar</id> + <activation> + <property> + <name>java.vendor</name> + <value>Sun Microsystems Inc.</value> + </property> + </activation> + <dependencies> + <dependency> + <groupId>com.sun</groupId> + <artifactId>tools</artifactId> + <version>1.4.2</version> + <scope>system</scope> + <systemPath>${java.home}/../lib/tools.jar</systemPath> + </dependency> + </dependencies> + </profile> + </profiles> +</project> Deleted: tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml =================================================================== --- trunk/jsptest-generic/jsptest-compiler-api/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,14 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-generic</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-compiler-api</artifactId> - <version>0.15-SNAPSHOT</version> - <packaging>jar</packaging> - <name>Internal compiler API</name> - <description>A common internal API for the different versions of JSP version-specific compilers.</description> -</project> Copied: tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml (from rev 210, trunk/jsptest-generic/jsptest-compiler-api/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-generic/jsptest-compiler-api/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-generic</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-compiler-api</artifactId> + <version>0.15</version> + <packaging>jar</packaging> + <name>Internal compiler API</name> + <description>A common internal API for the different versions of JSP version-specific compilers.</description> +</project> Deleted: tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml =================================================================== --- trunk/jsptest-generic/jsptest-framework/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-generic</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-framework</artifactId> - <version>0.15-SNAPSHOT</version> - <packaging>jar</packaging> - <name>Core framework</name> - <description>The core framework functionality for JspTest.</description> - <dependencies> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-compiler-api</artifactId> - <version>0.15-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-common</artifactId> - <version>0.15-SNAPSHOT</version> - </dependency> - </dependencies> -</project> Copied: tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml (from rev 210, trunk/jsptest-generic/jsptest-framework/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-generic/jsptest-framework/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-generic</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-framework</artifactId> + <version>0.15</version> + <packaging>jar</packaging> + <name>Core framework</name> + <description>The core framework functionality for JspTest.</description> + <dependencies> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-compiler-api</artifactId> + <version>0.15</version> + </dependency> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-common</artifactId> + <version>0.15</version> + </dependency> + </dependencies> +</project> Deleted: tags/jsptest-0.15/jsptest-generic/pom.xml =================================================================== --- trunk/jsptest-generic/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-generic/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,41 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-generic</artifactId> - <version>0.15-SNAPSHOT</version> - <name>JspTest root project for the generic components</name> - <description>This POM acts as a virtual root for the set of generic components that make up JspTest.</description> - <packaging>pom</packaging> - <modules> - <module>jsptest-common</module> - <module>jsptest-compiler-api</module> - <module>jsptest-framework</module> - </modules> - <dependencies> - <dependency> - <groupId>jtidy</groupId> - <artifactId>jtidy</artifactId> - <version>4aug2000r7-dev</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>3.8.2</version> - </dependency> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>1.2.13</version> - </dependency> - <dependency> - <groupId>jaxen</groupId> - <artifactId>jaxen</artifactId> - <version>1.1.1</version> - </dependency> - </dependencies> -</project> Copied: tags/jsptest-0.15/jsptest-generic/pom.xml (from rev 210, trunk/jsptest-generic/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-generic/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-generic/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,41 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-generic</artifactId> + <version>0.15</version> + <name>JspTest root project for the generic components</name> + <description>This POM acts as a virtual root for the set of generic components that make up JspTest.</description> + <packaging>pom</packaging> + <modules> + <module>jsptest-common</module> + <module>jsptest-compiler-api</module> + <module>jsptest-framework</module> + </modules> + <dependencies> + <dependency> + <groupId>jtidy</groupId> + <artifactId>jtidy</artifactId> + <version>4aug2000r7-dev</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.2</version> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.13</version> + </dependency> + <dependency> + <groupId>jaxen</groupId> + <artifactId>jaxen</artifactId> + <version>1.1.1</version> + </dependency> + </dependencies> +</project> Deleted: tags/jsptest-0.15/jsptest-jsp12/pom.xml =================================================================== --- trunk/jsptest-jsp12/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-jsp12/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,41 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-jsp12</artifactId> - <packaging>jar</packaging> - <name>JspTest for JSP 1.2</name> - <description>JspTest variant suitable for testing JavaServer Pages that follow the JSP 1.2 specification.</description> - <dependencies> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-framework</artifactId> - </dependency> -<!-- needed for JSTL/TLD configuration --> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>jstl</artifactId> - <version>1.0.2</version> - </dependency> - <dependency> - <groupId>taglibs</groupId> - <artifactId>standard</artifactId> - <version>1.0.2</version> - </dependency> -<!-- Provides the Jasper JSP compiler --> - <dependency> - <groupId>tomcat</groupId> - <artifactId>jasper-compiler</artifactId> - <version>4.1.30</version> - </dependency> - <dependency> - <groupId>tomcat</groupId> - <artifactId>jasper-runtime</artifactId> - <version>4.1.30</version> - </dependency> - </dependencies> -</project> Copied: tags/jsptest-0.15/jsptest-jsp12/pom.xml (from rev 210, trunk/jsptest-jsp12/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-jsp12/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-jsp12/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,41 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-jsp12</artifactId> + <packaging>jar</packaging> + <name>JspTest for JSP 1.2</name> + <description>JspTest variant suitable for testing JavaServer Pages that follow the JSP 1.2 specification.</description> + <dependencies> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-framework</artifactId> + </dependency> +<!-- needed for JSTL/TLD configuration --> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + <version>1.0.2</version> + </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.0.2</version> + </dependency> +<!-- Provides the Jasper JSP compiler --> + <dependency> + <groupId>tomcat</groupId> + <artifactId>jasper-compiler</artifactId> + <version>4.1.30</version> + </dependency> + <dependency> + <groupId>tomcat</groupId> + <artifactId>jasper-runtime</artifactId> + <version>4.1.30</version> + </dependency> + </dependencies> +</project> Deleted: tags/jsptest-0.15/jsptest-jsp20/pom.xml =================================================================== --- trunk/jsptest-jsp20/pom.xml 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-jsp20/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -1,53 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest</artifactId> - <version>0.15-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jsptest-jsp20</artifactId> - <packaging>jar</packaging> - <name>JspTest for JSP 2.0</name> - <description>JspTest variant suitable for testing JavaServer Pages that follow the JSP 2.0 specification.</description> - <dependencies> - <dependency> - <groupId>net.sf.jsptest</groupId> - <artifactId>jsptest-framework</artifactId> - </dependency> -<!-- needed for JSTL/TLD configuration --> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>jstl</artifactId> - <version>1.1.2</version> - </dependency> - <dependency> - <groupId>taglibs</groupId> - <artifactId>standard</artifactId> - <version>1.1.2</version> - </dependency> -<!-- Provides the Jasper JSP compiler --> - <dependency> - <groupId>tomcat</groupId> - <artifactId>jasper-compiler</artifactId> - <version>5.5.15</version> - </dependency> - <dependency> - <groupId>tomcat</groupId> - <artifactId>jasper-runtime</artifactId> - <version>5.5.15</version> - </dependency> - </dependencies> - <build> - <plugins> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <descriptors> - <descriptor>src/main/assembly/bin.xml</descriptor> - </descriptors> - </configuration> - </plugin> - </plugins> - </build> -</project> Copied: tags/jsptest-0.15/jsptest-jsp20/pom.xml (from rev 210, trunk/jsptest-jsp20/pom.xml) =================================================================== --- tags/jsptest-0.15/jsptest-jsp20/pom.xml (rev 0) +++ tags/jsptest-0.15/jsptest-jsp20/pom.xml 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,53 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest</artifactId> + <version>0.15</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>jsptest-jsp20</artifactId> + <packaging>jar</packaging> + <name>JspTest for JSP 2.0</name> + <description>JspTest variant suitable for testing JavaServer Pages that follow the JSP 2.0 specification.</description> + <dependencies> + <dependency> + <groupId>net.sf.jsptest</groupId> + <artifactId>jsptest-framework</artifactId> + </dependency> +<!-- needed for JSTL/TLD configuration --> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + <version>1.1.2</version> + </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.1.2</version> + </dependency> +<!-- Provides the Jasper JSP compiler --> + <dependency> + <groupId>tomcat</groupId> + <artifactId>jasper-compiler</artifactId> + <version>5.5.15</version> + </dependency> + <dependency> + <groupId>tomcat</groupId> + <artifactId>jasper-runtime</artifactId> + <version>5.5.15</version> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/main/assembly/bin.xml</descriptor> + </descriptors> + </configuration> + </plugin> + </plugins> + </build> +</project> Deleted: tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java =================================================================== --- trunk/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java 2008-04-09 19:52:32 UTC (rev 208) +++ tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java 2008-04-09 20:01:48 UTC (rev 211) @@ -1,416 +0,0 @@ -/* - * Copyright 2007 Lasse Koskela. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.sf.jsptest.compiler.jsp20; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.jsp.tagext.TagInfo; - -import net.sf.jsptest.compiler.JspCompilationInfo; -import net.sf.jsptest.compiler.java.CommandLineJavac; -import net.sf.jsptest.compiler.java.JavaCompiler; -import net.sf.jsptest.compiler.java.SunJavaC; -import net.sf.jsptest.compiler.jsp20.mock.MockOptions; -import net.sf.jsptest.compiler.jsp20.mock.MockServletConfig; -import net.sf.jsptest.compiler.jsp20.mock.MockTagInfo; -import net.sf.jsptest.utils.Path; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.jasper.EmbeddedServletOptions; -import org.apache.jasper.JasperException; -import org.apache.jasper.JspCompilationContext; -import org.apache.jasper.Options; -import org.apache.jasper.compiler.AntCompiler; -import org.apache.jasper.compiler.Compiler; -import org.apache.jasper.compiler.JspRuntimeContext; -import org.apache.jasper.compiler.ServletWriter; -import org.apache.jasper.servlet.JspCServletContext; -import org.apache.jasper.servlet.JspServletWrapper; - -/** - * The <tt>JasperTestCase</tt> provides a facility for compiling JavaServer - * Pages outside a real Servlet/JSP container. - * <p> - * It makes use of Jakarta Tomcat's Jasper JSP compiler to compile a JSP file - * into Java source code, and then Sun's javac implementation to compile the - * Java source code into Java bytecode. - * <p> - * The resulting .class file is written under a "WEB-INF/classes" directory - * under the "web root" defined by concrete subclasses through the - * implementation of <tt>getWebRoot()</tt>. If you want the .class files to - * be generated somewhere else than under the web root, you can also override - * <tt>getClassOutputBaseDir()</tt>, which specifies the root directory for - * the compiled .class files. - * <p> - * The resulting Servlet class gets its package based on the - * <tt>getJspPackageName()</tt> method which can be overridden if necessary. - * The default is "jsp" which means that, for example, a JSP named - * "front_page.jsp" would eventually be translated into a class file - * "[webroot]/WEB-INF/classes/jsp/front_page_jsp.class" where "jsp/" is the JSP - * package name and "front_page_jsp.class" the normalized class name derived - * from the source JSP file's name. - * - * @author Lasse Koskela - */ -public class JasperCompiler { - - private static final Log log = LogFactory - .getLog(JasperCompiler.class); - - private static JavaCompiler COMPILER = determineJavaCompiler(); - - private String webRoot; - - private String classOutputBaseDir; - - private String jspPackageName; - - public JasperCompiler() { - webRoot = "."; - classOutputBaseDir = "."; - } - - /** - * Sets the "web root", i.e. the root directory of your exploded J2EE web - * application. In other words, this is the directory under which you should - * have a subdirectory named "WEB-INF". - */ - public void setWebRoot(String webRoot) { - this.webRoot = webRoot; - } - - /** - * Sets the directory where generated .class file(s) should be written.. - */ - public void setClassOutputBaseDir(String directory) { - this.classOutputBaseDir = directory; - } - - /** - * Compile the specified JSP source file into bytecode. - * - * @param path - * The path to the JSP source file to compile, given relative - * to the web root. - * @param mockTaglibs - * Mapping of tagnames to tag handler classes - */ - public JspCompilationInfo compile(String path, Map mockTaglibs) - throws Exception { - JspCompilationInfo info = createJspCompilationInfo(path, - mockTaglibs); - if (info.jspCompilationRequired()) { - compileJsp(info); - compileJavaToBytecode(info); - } else { - log.debug(" No compilation needed for " - + info.getJspSource()); - } - return info; - } - - /** - * Sets the package name for the generated Java classes. The default package - * name is "jsp". - */ - public void setJspPackageName(String packageName) { - this.jspPackageName = packageName; - } - - /** - * Returns the package name for the generated Java class. - */ - private String getJspPackageName() { - if (jspPackageName != null) { - return jspPackageName; - } else { - return "jsp"; - } - } - - private JspCompilationInfo createJspCompilationInfo(String jsp, - Map mockTaglibs) { - JspCompilationInfo info = new JspCompilationInfo(); - info.setJspPath(jsp); - info.setClassOutputDir(classOutputBaseDir); - info.setJspSource(resolveJspSourceFile(jsp)); - info.setWebRoot(getWebRoot()); - info.setTaglibs(mockTaglibs); - resolveJavaSourceFile(info); - resolveClassFileLocation(info); - resolveClassName(info); - return info; - } - - private String getWebRoot() { - File root = new File(webRoot); - if (root.exists() && root.isDirectory()) { - return root.getAbsolutePath(); - } else { - return resolveWebRootFromClassPath(); - } - } - - private String resolveWebRootFromClassPath() { - String path = webRoot; - if (path.startsWith("./")) { - path = path.substring(2); - } - URL url = getClass().getClassLoader().getResource(path); - if (url == null) { - return webRoot; - } - if (!url.toExternalForm().startsWith("file:")) { - log - .info("Web root referenced a non-filesystem resource: " - + url); - return webRoot; - } - return new File(url.toExternalForm().substring( - "file:".length())).getAbsolutePath(); - } - - private void compileJsp(JspCompilationInfo info) throws Exception { - assertTrue("Source file " - + new File(info.getJspSource()).getAbsolutePath() - + " does not exist", new File(info.getJspSource()) - .exists()); - PrintWriter logWriter = new PrintWriter(new StringWriter()); - URL baseUrl = new File(info.getWebRoot()).toURL(); - ServletContext sContext = new JspCServletContext(logWriter, - baseUrl); - ServletConfig sConfig = new MockServletConfig(sContext); - Options options = createOptions(sContext, sConfig, info); - JspRuntimeContext rtContext = new JspRuntimeContext(sContext, - options); - JspServletWrapper sWrapper = makeWrapper(sContext, options, - rtContext); - JspCompilationContext cContext = createJspCompilationContext( - info, sContext, options, rtContext, sWrapper, - new StringWriter()); - logCompilation(info.getJspSource(), info.getClassOutputDir()); - compileJspToJava(sWrapper, cContext); - File javaFile = new File(info.getJavaSource()); - assertTrue("Failed to generate .java source code to " - + javaFile.getAbsolutePath(), javaFile.exists()); - info.compilationWasSuccessful(); - } - - private void compileJspToJava( - JspServletWrapper jspServletWrapper, - JspCompilationContext jspCompilationContext) - throws FileNotFoundException, JasperException, Exception { - Compiler compiler = new AntCompiler(); - compiler.init(jspCompilationContext, jspServletWrapper); - compiler.compile(); - } - - private JspCompilationContext createJspCompilationContext( - JspCompilationInfo info, ServletContext servletContext, - Options options, JspRuntimeContext jspRuntimeContext, - JspServletWrapper jspServletWrapper, - StringWriter stringWriter) { - boolean isErrorPage = false; - JspCompilationContext cContext = new JspCompilationContext( - info.getJspPath(), isErrorPage, options, - servletContext, jspServletWrapper, jspRuntimeContext); - cContext.getOutputDir(); // forces creation of the directory tree - cContext.setServletJavaFileName(info.getJavaSource()); - cContext.setServletPackageName(getJspPackageName()); - cContext.setWriter(new ServletWriter(new PrintWriter( - stringWriter))); - createPathToGeneratedJavaSource(info); - return cContext; - } - - private void createPathToGeneratedJavaSource( - JspCompilationInfo info) { - new File(info.getJavaSource()).getParentFile().mkdirs(); - } - - private JspServletWrapper makeWrapper( - ServletContext servletContext, Options options, - JspRuntimeContext jspRuntimeContext) - throws MalformedURLException, JasperException { - TagInfo tagInfo = new MockTagInfo(); - String tagFilePath = "/"; - URL tagFileJarUrl = new File(".").toURL(); - JspServletWrapper wrapper = new JspServletWrapper( - servletContext, options, tagFilePath, tagInfo, - jspRuntimeContext, tagFileJarUrl); - return wrapper; - } - - private Options createOptions(ServletContext ctx, - ServletConfig cfg, JspCompilationInfo info) { - Options options = new EmbeddedServletOptions(cfg, ctx); - return new MockOptions(options, ctx, info.getTaglibs()); - } - - private void resolveJavaSourceFile(JspCompilationInfo info) { - File dir = new File(info.getClassOutputDir()); - if (getJspPackageName().length() > 0) { - dir = new File(dir, getJspPackageName().replace('.', '/')); - } - dir.mkdirs(); - String name = resolveJavaSourceFileName(info.getJspPath()); - info.setJavaSource(new File(dir, name).getPath()); - } - - private String resolveJavaSourceFileName(String jspPath) { - String name = encodeSpecialCharacters(jspPath); - // name = name.replace(".jsp", "_jsp.java"); - if (name.startsWith("/")) { - name = name.substring(1); - } - return name + ".java"; - } - - private String encodeSpecialCharacters(String name) { - StringBuffer result = new StringBuffer(); - char[] chars = name.toCharArray(); - for (int i = 0; i < chars.length; i++) { - if (chars[i] == '-') { - result.append("_002d"); - } else if (chars[i] == '_') { - result.append("_005f"); - } else if (chars[i] == '.') { - result.append("_002e"); - } else { - result.append(chars[i]); - } - } - return result.toString(); - } - - private String resolveJspSourceFile(String jsp) { - if (jsp.startsWith("/")) { - jsp = jsp.substring(1); - } - return new File(getWebRoot(), jsp).getPath(); - } - - private void resolveClassName(JspCompilationInfo info) { - String baseName = new File(info.getJavaSource()).getName(); - baseName = baseName.substring(0, baseName.indexOf(".")); - String packageName = getPackagePrefix() - + getSubDirPackagePrefix(info); - info.setClassName(packageName + baseName); - } - - private String getPackagePrefix() { - String packagePrefix = getJspPackageName(); - if (packagePrefix != null && packagePrefix.length() > 0) { - packagePrefix = packagePrefix + "."; - } - return packagePrefix; - } - - private String getSubDirPackagePrefix(JspCompilationInfo info) { - String dirPrefix = info.getJspPath(); - if (dirPrefix.startsWith("/")) { - dirPrefix = dirPrefix.substring(1); - } - int lastSlashIndex = dirPrefix.lastIndexOf("/"); - if (lastSlashIndex != -1) { - dirPrefix = dirPrefix.substring(0, lastSlashIndex); - dirPrefix = encodeSpecialCharacters(dirPrefix); - dirPrefix = dirPrefix.replace('/', '.') + "."; - } else { - dirPrefix = ""; - } - return dirPrefix; - } - - private void compileJavaToBytecode(JspCompilationInfo info) - throws Exception { - File classFile = new File(info.getClassFile()); - classFile.delete(); - logCompilation(info.getJavaSource(), info.getClassOutputDir()); - boolean ok = javac().compile(info.getJavaSource(), - info.getClassOutputDir(), getClassPath()); - assertTrue("javac failed", ok); - assertTrue("Failed to compile .java file to " - + classFile.getAbsolutePath(), classFile.exists()); - } - - private String[] getClassPath() { - Path cp = new Path(); - cp.addSystemProperty("java.class.path"); - cp.addContainer(javax.servlet.jsp.tagext.JspTag.class); - cp.addContainer(javax.servlet.jsp.jstl.core.LoopTag.class); - cp.addContainer(javax.servlet.http.HttpServlet.class); - cp.addContainer(org.apache.taglibs.standard.Version.class); - cp.addContainer(org.apache.jasper.JspC.class); - cp.addContainer(org.apache.jasper.compiler.Compiler.class); - cp.addContainer(org.apache.jasper.runtime.HttpJspBase.class); - cp.add(new File("target", "test-classes")); - cp.add(new File("target", "classes").getAbsolutePath()); - return cp.toStringArray(); - } - - private void resolveClassFileLocation(JspCompilationInfo info) { - String file = info.getJavaSource().replace(".java", ".class"); - info.setClassFile(file); - } - - private static void assertTrue(String errorMessage, - boolean condition) { - if (!condition) { - throw new RuntimeException(errorMessage); - } - } - - private static JavaCompiler determineJavaCompiler() { - List compilers = new ArrayList(); - // this doesn't work because with Maven we need to set the classpath - // explicitly as the "current" classpath does not include our - // dependencies - compilers.add(new SunJavaC()); - compilers.add(new CommandLineJavac()); - for (Iterator i = compilers.iterator(); i.hasNext();) { - JavaCompiler compiler = (JavaCompiler) i.next(); - if (compiler.isAvailable()) { - log.debug("Using JavaCompiler: " - + compiler.getClass().getName()); - return compiler; - } - } - throw new RuntimeException( - "No JavaCompiler implementation available on the system"); - } - - private static JavaCompiler javac() { - return COMPILER; - } - - private void logCompilation(String src, String dst) { - log.debug(" Compiling " + src + " to " + dst); - } -} Copied: tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java (from rev 209, trunk/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java) =================================================================== --- tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java (rev 0) +++ tags/jsptest-0.15/jsptest-jsp20/src/main/java/net/sf/jsptest/compiler/jsp20/JasperCompiler.java 2008-04-09 20:01:48 UTC (rev 211) @@ -0,0 +1,415 @@ +/* + * Copyright 2007 Lasse Koskela. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.sf.jsptest.compiler.jsp20; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.jsp.tagext.TagInfo; + +import net.sf.jsptest.compiler.JspCompilationInfo; +import net.sf.jsptest.compiler.java.CommandLineJavac; +import net.sf.jsptest.compiler.java.JavaCompiler; +import net.sf.jsptest.compiler.java.SunJavaC; +import net.sf.jsptest.compiler.jsp20.mock.MockOptions; +import net.sf.jsptest.compiler.jsp20.mock.MockServletConfig; +import net.sf.jsptest.compiler.jsp20.mock.MockTagInfo; +import net.sf.jsptest.utils.Path; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jasper.EmbeddedServletOptions; +import org.apache.jasper.JasperException; +import org.apache.jasper.JspCompilationContext; +import org.apache.jasper.Options; +import org.apache.jasper.compiler.AntCompiler; +import org.apache.jasper.compiler.Compiler; +import org.apache.jasper.compiler.JspRuntimeContext; +import org.apache.jasper.compiler.ServletWriter; +import org.apache.jasper.servlet.JspCServletContext; +import org.apache.jasper.servlet.JspServletWrapper; + +/** + * The <tt>JasperTestCase</tt> provides a facility for compiling JavaServer + * Pages outside a real Servlet/JSP container. + * <p> + * It makes use of Jakarta Tomcat's Jasper JSP compiler to compile a JSP file + * into Java source code, and then Sun's javac implementation to compile the + * Java source code into Java bytecode. + * <p> + * The resulting .class file is written under a "WEB-INF/classes" directory + * under the "web root" defined by concrete subclasses through the + * implementation of <tt>getWebRoot()</tt>. If you want the .class files to + * be generated somewhere else than under the web root, you can also override + * <tt>getClassOutputBaseDir()</tt>, which specifies the root directory for + * the compiled .class files. + * <p> + * The resulting Servlet class gets its package based on the + * <tt>getJspPackageName()</tt> method which can be overridden if necessary. + * The default is "jsp" which means that, for example, a JSP named + * "front_page.jsp" would eventually be translated into a class file + * "[webroot]/WEB-INF/classes/jsp/front_page_jsp.class" where "jsp/" is the JSP + * package name and "front_page_jsp.class" the normalized class name derived + * from the source JSP file's name. + * + * @author Lasse Koskela + */ +public class JasperCompiler { + + private static final Log log = LogFactory + .getLog(JasperCompiler.class); + + private static JavaCompiler COMPILER = determineJavaCompiler(); + + private String webRoot; + + private String classOutputBaseDir; + + private String jspPackageName; + + public JasperCompiler() { + webRoot = "."; + classOutputBaseDir = "."; + } + + /** + * Sets the "web root", i.e. the root directory of your exploded J2EE web + * application. In other words, this is the directory under which you should + * have a subdirectory named "WEB-INF". + */ + public void setWebRoot(String webRoot) { + this.webRoot = webRoot; + } + + /** + * Sets the directory where generated .class file(s) should be written.. + */ + public void setClassOutputBaseDir(String directory) { + this.classOutputBaseDir = directory; + } + + /** + * Compile the specified JSP source file into bytecode. + * + * @param path + * The path to the JSP source file to compile, given relative + * to the web root. + * @param mockTaglibs + * Mapping of tagnames to tag handler classes + */ + public JspCompilationInfo compile(String path, Map mockTaglibs) + throws Exception { + JspCompilationInfo info = createJspCompilationInfo(path, + mockTaglibs); + if (info.jspCompilationRequired()) { + compileJsp(info); + compileJavaToBytecode(info); + } else { + log.debug(" No compilation needed for " + + info.getJspSource()); + } + return info; + } + + /** + * Sets the package name for the generated Java classes. The default package + * name is "jsp". + */ + public void setJspPackageName(String packageName) { + this.jspPackageName = packageName; + } + + /** + * Returns the package name for the generated Java class. + */ + private String getJspPackageName() { + if (jspPackageName != null) { + return jspPackageName; + } else { + return "jsp"; + } + } + + private JspCompilationInfo createJspCompilationInfo(String jsp, + Map mockTaglibs) { + JspCompilationInfo info = new JspCompilationInfo(); + info.setJspPath(jsp); + info.setClassOutputDir(classOutputBaseDir); + info.setJspSource(resolveJspSourceFile(jsp)); + info.setWebRoot(getWebRoot()); + info.setTaglibs(mockTaglibs); + resolveJavaSourceFile(info); + resolveClassFileLocation(info); + resolveClassName(info); + return info; + } + + private String getWebRoot() { + File root = new File(webRoot); + if (root.exists() && root.isDirectory()) { + return root.getAbsolutePath(); + } else { + return resolveWebRootFromClassPath(); + } + } + + private String resolveWebRootFromClassPath() { + String path = webRoot; + if (path.startsWith("./")) { + path = path.substring(2); + } + URL url = getClass().getClassLoader().getResource(path); + if (url == null) { + return webRoot; + } + if (!url.toExternalForm().startsWith("file:")) { + log + .info("Web root referenced a non-filesystem resource: " + + url); + return webRoot; + } + return new File(url.toExternalForm().substring( + "file:".length())).getAbsolutePath(); + } + + private void compileJsp(JspCompilationInfo info) throws Exception { + assertTrue("Source file " + + new File(info.getJspSource()).getAbsolutePath() + + " does not exist", new File(info.getJspSource()) + .exists()); + PrintWriter logWriter = new PrintWriter(new StringWriter()); + URL baseUrl = new File(info.getWebRoot()).toURL(); + ServletContext sContext = new JspCServletContext(logWriter, + baseUrl); + ServletConfig sConfig = new MockServletConfig(sContext); + Options options = createOptions(sContext, sConfig, info); + JspRuntimeContext rtContext = new JspRuntimeContext(sContext, + options); + JspServletWrapper sWrapper = makeWrapper(sContext, options, + rtContext); + JspCompilationContext cContext = createJspCompilationContext( + info, sContext, options, rtContext, sWrapper, + new StringWriter()); + logCompilation(info.getJspSource(), info.getClassOutputDir()); + compileJspToJava(sWrapper, cContext); + File javaFile = new File(info.getJavaSource()); + assertTrue("Failed to generate .java source code to " + + javaFile.getAbsolutePath(), javaFile.exists()); + info.compilationWasSuccessful(); + } + + private void compileJspToJava( + JspServletWrapper jspServletWrapper, + JspCompilationContext jspCompilationContext) + throws FileNotFoundException, JasperException, Exception { + Compiler compiler = new AntCompiler(); + compiler.init(jspCompilationContext, jspServletWrapper); + compiler.compile(); + } + + private JspCompilationContext createJspCompilationContext( + JspCompilationInfo info, ServletContext servletContext, + Options options, JspRuntimeContext jspRuntimeContext, + JspServletWrapper jspServletWrapper, + StringWriter stringWriter) { + boolean isErrorPage = false; + JspCompilationContext cContext = new JspCompilationContext( + info.getJspPath(), isErrorPage, options, + servletContext, jspServletWrapper, jspRuntimeContext); + cContext.getOutputDir(); // forces creation of the directory tree + cContext.setServletJavaFileName(info.getJavaSource()); + cContext.setServletPackageName(getJspPackageName()); + cContext.setWriter(new ServletWriter(new PrintWriter( + stringWriter))); + createPathToGeneratedJavaSource(info); + return cContext; + } + + private void createPathToGeneratedJavaSource( + JspCompilationInfo info) { + new File(info.getJavaSource()).getParentFile().mkdirs(); + } + + private JspServletWrapper makeWrapper( + ServletContext servletContext, Options options, + JspRuntimeContext jspRuntimeContext) + throws MalformedURLException, JasperException { + TagInfo tagInfo = new MockTagInfo(); + String tagFilePath = "/"; + URL tagFileJarUrl = new File(".").toURL(); + JspServletWrapper wrapper = new JspServletWrapper( + servletContext, options, tagFilePath, tagInfo, + jspRuntimeContext, tagFileJarUrl); + return wrapper; + } + + private Options createOptions(ServletContext ctx, + ServletConfig cfg, JspCompilationInfo info) { + Options options = new EmbeddedServletOptions(cfg, ctx); + return new MockOptions(options, ctx, info.getTaglibs()); + } + + private void resolveJavaSourceFile(JspCompilationInfo info) { + File dir = new File(info.getClassOutputDir()); + if (getJspPackageName().length() > 0) { + dir = new File(dir, getJspPackageName().replace('.', '/')); + } + dir.mkdirs(); + String name = resolveJavaSourceFileName(info.getJspPath()); + info.setJavaSource(new File(dir, name).getPath()); + } + + private String resolveJavaSourceFileName(String jspPath) { + String name = encodeSpecialCharacters(jspPath); + if (name.startsWith("/")) { + name = name.substring(1); + } + return name + ".java"; + } + + private String encodeSpecialCharacters(String name) { + StringBuffer result = new StringBuffer(); + char[] chars = name.toCharArray(); + for (int i = 0; i < chars.length; i++) { + if (chars[i] == '-') { + result.append("_002d"); + } else if (chars[i] == '_') { + result.append("_005f"); + } else if (chars[i] == '.') { + result.append("_"); + } else { + result.append(chars[i]); + } + } + return result.toString(); + } + + private String resolveJspSourceFile(String jsp) { + if (jsp.startsWith("/")) { + jsp = jsp.substring(1); + } + return new File(getWebRoot(), jsp).getPath(); + } + + private void resolveClassName(JspCompilationInfo info) { + String baseName = new File(info.getJavaSource()).getName(); + baseName = baseName.substring(0, baseName.indexOf(".")); + String packageName = getPackagePrefix() + + getSubDirPackagePrefix(info); + info.setClassName(packageName + baseName); + } + + private String getPackagePrefix() { + String packagePrefix = getJspPackageName(); + if (packagePrefix != null && packagePrefix.length() > 0) { + packagePrefix = packagePrefix + "."; + } + return packagePrefix; + } + + private String getSubDirPackagePrefix(JspCompilationInfo info) { + String dirPrefix = info.getJspPath(); + if (dirPrefi... [truncated message content] |