Author: musachy Date: Tue Aug 4 15:11:37 2009 New Revision: 800838 URL: http://svn.apache.org/viewvc?rev=800838&view=rev Log: add support for includes
Added: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPRuntime.java struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes1.jsp struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes2.jsp struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes3.jsp struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/printParam.jsp struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/sub/ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/sub/simple0.jsp - copied, changed from r800609, struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/simple0.jsp struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/tag0.jsp Modified: struts/sandbox/trunk/struts2-jsp-plugin/pom.xml struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/EmbeddedJSPResult.java struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPLoader.java struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/ServletCache.java struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/JspCompilationContext.java struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/compiler/Generator.java struts/sandbox/trunk/struts2-jsp-plugin/src/main/resources/struts-plugin.xml struts/sandbox/trunk/struts2-jsp-plugin/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes0.jsp Modified: struts/sandbox/trunk/struts2-jsp-plugin/pom.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/pom.xml?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/pom.xml (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/pom.xml Tue Aug 4 15:11:37 2009 @@ -1,7 +1,7 @@ <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"> <modelVersion>4.0.0</modelVersion> - <parent> + <parent> <groupId>org.apache.struts</groupId> <artifactId>struts2-plugins</artifactId> <version>2.1.8-SNAPSHOT</version> @@ -47,15 +47,42 @@ <artifactId>xwork-core</artifactId> <version>2.1.5-SNAPSHOT</version> </dependency> + <dependency> - <groupId>tomcat</groupId> - <artifactId>jasper-runtime</artifactId> - <version>5.5.23</version> + <groupId>org.easymock</groupId> + <artifactId>easymock</artifactId> + <version>2.4</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>commons-el</groupId> + <artifactId>commons-el</artifactId> + <version>1.0</version> + <scope>provided</scope> </dependency> </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <forkMode>never</forkMode> + </configuration> + </plugin> + </plugins> + </build> + </project> Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/EmbeddedJSPResult.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/EmbeddedJSPResult.java?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/EmbeddedJSPResult.java (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/EmbeddedJSPResult.java Tue Aug 4 15:11:37 2009 @@ -4,6 +4,7 @@ import org.apache.struts2.ServletActionContext; import org.apache.struts2.jasper.JasperException; import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; @@ -15,13 +16,9 @@ public class EmbeddedJSPResult extends StrutsResultSupport { private static final Logger LOG = LoggerFactory.getLogger(EmbeddedJSPResult.class); - //maps from jsp path -> pagelet - private static final ServletCache servletCache = new ServletCache(ServletActionContext.getServletContext()); + protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { - Servlet servlet = servletCache.get(finalLocation); - HttpJspPage page = (HttpJspPage) servlet; - page.jspInit(); - page._jspService(ServletActionContext.getRequest(), ServletActionContext.getResponse()); + JSPRuntime.handle(finalLocation); } } Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPLoader.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPLoader.java?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPLoader.java (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPLoader.java Tue Aug 4 15:11:37 2009 @@ -27,15 +27,22 @@ import javax.servlet.Servlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.servlet.jsp.JspPage; import javax.tools.*; import java.io.*; import java.net.*; import java.util.Arrays; +import java.util.List; +import java.util.ArrayList; +import java.security.CodeSource; +import java.security.ProtectionDomain; import org.apache.struts2.jasper.JasperException; import org.apache.struts2.jasper.JspC; +import org.apache.struts2.jasper.compiler.JspUtil; import org.apache.struts2.compiler.MemoryClassLoader; import org.apache.struts2.compiler.MemoryJavaFileObject; +import org.apache.commons.lang.xwork.StringUtils; /** * Uses jasper to extract a JSP from the classpath to a file and compile it @@ -46,28 +53,33 @@ private static MemoryClassLoader classLoader = new MemoryClassLoader(); private static final String DEFAULT_PACKAGE = "org.apache.struts2.jsp"; - private static final String DEFAULT_PATH = "org/apache/jsp"; - public Servlet load(String location, ServletContext servletContext) throws Exception { + public Servlet load(String location) throws Exception { + location = StringUtils.substringBeforeLast(location, "?"); + String source = compileJSP(location); + +// System.out.print(source); + String className = toClassName(location); compileJava(className, source); Class clazz = Class.forName(className, false, classLoader); - return createServlet(clazz, servletContext); + return createServlet(clazz); } private String toClassName(String location) { - String[] splitted = location.split("\\.|/"); - return DEFAULT_PACKAGE + "." + splitted[splitted.length - 2] + "_jsp"; + String className = StringUtils.substringBeforeLast(location, ".jsp"); + className = JspUtil.makeJavaPackage(className); + return DEFAULT_PACKAGE + "." + className + "_jsp"; } /** * Creates and inits a servlet */ - private Servlet createServlet(Class clazz, ServletContext servletContext) throws IllegalAccessException, InstantiationException, ServletException { + private Servlet createServlet(Class clazz) throws IllegalAccessException, InstantiationException, ServletException { Servlet servlet = (Servlet) clazz.newInstance(); - JSPServletConfig config = new JSPServletConfig(servletContext); + JSPServletConfig config = new JSPServletConfig(ServletActionContext.getServletContext()); servlet.init(config); return servlet; @@ -108,8 +120,23 @@ }; + //build classpath + List<String> optionList = new ArrayList<String>(); + StringBuilder classPath = new StringBuilder(); + //this jar + classPath.append(getJarUrl(EmbeddedJSPResult.class)); + classPath.append(";"); + //servlet api + classPath.append(getJarUrl(Servlet.class)); + classPath.append(";"); + //jsp api + classPath.append(getJarUrl(JspPage.class)); + + optionList.addAll(Arrays.asList("-classpath", classPath.toString())); + + JavaCompiler.CompilationTask task = compiler.getTask( - null, jfm, diagnostics, null, null, + null, jfm, diagnostics, optionList, null, Arrays.asList(sourceCodeObject)); if (!task.call()) { @@ -117,6 +144,20 @@ } } + protected String getJarUrl(Class clazz) { + ProtectionDomain protectionDomain = clazz.getProtectionDomain(); + CodeSource codeSource = protectionDomain.getCodeSource(); + URL loc = codeSource.getLocation(); + try { + File file = new File(loc.toURI()); + return file.getAbsolutePath(); + } catch (URISyntaxException e) { + //can this ever happen? + LOG.error("Unable to get the jar file for class", e, clazz.getName()); + } + return loc.toExternalForm(); + } + private String compileJSP(String location) throws JasperException { JspC jspC = new JspC(); //TODO: get this from context so OSGI works Added: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPRuntime.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPRuntime.java?rev=800838&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPRuntime.java (added) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/JSPRuntime.java Tue Aug 4 15:11:37 2009 @@ -0,0 +1,45 @@ +package org.apache.struts2; + +import org.apache.struts2.views.util.UrlHelper; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.Servlet; +import javax.servlet.jsp.HttpJspPage; +import java.util.Map; + +import com.opensymphony.xwork2.ActionContext; + + +public abstract class JSPRuntime { + //maps from jsp path -> pagelet + private static final ServletCache servletCache = new ServletCache(); + + public static void handle(String location) throws Exception { + handle(location, false); + } + + public static void handle(String location, boolean flush) throws Exception { + final HttpServletResponse response = ServletActionContext.getResponse(); + final HttpServletRequest request = ServletActionContext.getRequest(); + + int i = location.indexOf("?"); + if (i > 0) { + //extract params from the url and add them to the request + Map parameters = ActionContext.getContext().getParameters(); + String query = location.substring(i + 1); + Map queryParams = UrlHelper.parseQueryString(query, true); + if (queryParams != null && !queryParams.isEmpty()) + parameters.putAll(queryParams); + location = location.substring(0, i); + } + + Servlet servlet = servletCache.get(location); + HttpJspPage page = (HttpJspPage) servlet; + page.jspInit(); + + page._jspService(request, response); + if (flush) + response.flushBuffer(); + } +} Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/ServletCache.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/ServletCache.java?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/ServletCache.java (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/ServletCache.java Tue Aug 4 15:11:37 2009 @@ -33,19 +33,13 @@ private final JSPLoader jspLoader = new JSPLoader(); - private final ServletContext servletContext; - - public ServletCache(ServletContext servletContext) { - this.servletContext = servletContext; - } - public Servlet get(final String location) throws InterruptedException { while (true) { Future<Servlet> future = cache.get(location); if (future == null) { Callable<Servlet> loadJSPCallable = new Callable<Servlet>() { public Servlet call() throws Exception { - return jspLoader.load(location, servletContext); + return jspLoader.load(location); } }; FutureTask<Servlet> futureTask = new FutureTask<Servlet>(loadJSPCallable); Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/JspCompilationContext.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/JspCompilationContext.java?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/JspCompilationContext.java (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/JspCompilationContext.java Tue Aug 4 15:11:37 2009 @@ -36,6 +36,7 @@ import org.apache.struts2.jasper.compiler.ServletWriter; import org.apache.struts2.jasper.servlet.JasperLoader; import org.apache.struts2.jasper.servlet.JspServletWrapper; +import org.apache.commons.lang.xwork.StringUtils; import com.opensymphony.xwork2.util.finder.ClassLoaderInterface; /** @@ -360,15 +361,20 @@ } return pkgName; } else { - return basePackageName; + String dPackageName = getDerivedPackageName(); + if (dPackageName.length() == 0) { + return basePackageName; + } + return basePackageName + '.' + getDerivedPackageName(); } + } private String getDerivedPackageName() { if (derivedPackageName == null) { int iSep = jspUri.lastIndexOf('/'); derivedPackageName = (iSep > 0) ? - JspUtil.makeJavaPackage(jspUri.substring(1,iSep)) : ""; + JspUtil.makeJavaPackage(jspUri.substring(0,iSep)) : ""; } return derivedPackageName; } @@ -529,7 +535,11 @@ } } - // ==================== Manipulating the class ==================== + public String getJspUri() { + return jspUri; + } + +// ==================== Manipulating the class ==================== public Class load() throws JasperException, FileNotFoundException @@ -563,7 +573,7 @@ return (c == '/' || c == '\\'); } - private static final String canonicalURI(String s) { + public static final String canonicalURI(String s) { if (s == null) return null; StringBuffer result = new StringBuffer(); final int len = s.length(); Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/compiler/Generator.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/compiler/Generator.java?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/compiler/Generator.java (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/java/org/apache/struts2/jasper/compiler/Generator.java Tue Aug 4 15:11:37 2009 @@ -42,6 +42,8 @@ import org.apache.struts2.jasper.JasperException; import org.apache.struts2.jasper.JspCompilationContext; import org.apache.struts2.jasper.runtime.JspRuntimeLibrary; +import org.apache.struts2.JSPRuntime; +import org.apache.commons.lang.xwork.StringUtils; import org.xml.sax.Attributes; /** @@ -896,10 +898,10 @@ } out.printin( - "org.apache.struts2.jasper.runtime.JspRuntimeLibrary.include(request, response, " + JSPRuntime.class.getName() + ".handle(" + pageParam); printParams(n, pageParam, page.isLiteral()); - out.println(", out, " + isFlush + ");"); + out.println(", " + isFlush + ");"); n.setEndJavaLine(out.getJavaLine()); } Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/main/resources/struts-plugin.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/main/resources/struts-plugin.xml?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/main/resources/struts-plugin.xml (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/main/resources/struts-plugin.xml Tue Aug 4 15:11:37 2009 @@ -29,7 +29,7 @@ <package name="jsp-default" extends="struts-default"> <result-types> - <result-type name="jsp" class="org.apache.struts2.EmbeddedJSPResult"/> + <result-type name="embeddedJsp" class="org.apache.struts2.EmbeddedJSPResult"/> </result-types> </package> Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/java/org/apache/struts2/EmbeddedJSPResultTest.java Tue Aug 4 15:11:37 2009 @@ -1,18 +1,23 @@ package org.apache.struts2; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.conversion.impl.XWorkConverter; +import com.opensymphony.xwork2.inject.Container; +import com.opensymphony.xwork2.util.ValueStack; import junit.framework.TestCase; import org.apache.commons.io.FileUtils; -import org.apache.struts2.EmbeddedJSPResult; -import org.apache.struts2.JSPLoader; -import org.springframework.mock.web.MockHttpServletRequest; +import org.easymock.EasyMock; +import org.easymock.IAnswer; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; -import com.opensymphony.xwork2.ActionContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import java.util.HashMap; +import java.util.Map; public class EmbeddedJSPResultTest extends TestCase { - private MockHttpServletRequest request; + private HttpServletRequest request; private MockHttpServletResponse response; private MockServletContext context; @@ -26,14 +31,47 @@ assertEquals("hello", response.getContentAsString()); } - public void testInclude() throws Exception { + public void testIncludeSimple() throws Exception { //mock objects EmbeddedJSPResult result = new EmbeddedJSPResult(); result.setLocation("org/apache/struts2/includes0.jsp"); result.execute(null); - assertEquals("Test", response.getContentAsString()); + assertEquals("helloTest", cleanup(response.getContentAsString())); + } + + public void testIncludeSimpleWithDirective() throws Exception { + //mock objects + EmbeddedJSPResult result = new EmbeddedJSPResult(); + + result.setLocation("org/apache/struts2/includes3.jsp"); + result.execute(null); + + assertEquals("helloTest", cleanup(response.getContentAsString())); + } + + public void testIncludeWithSubdir() throws Exception { + EmbeddedJSPResult result = new EmbeddedJSPResult(); + + result.setLocation("org/apache/struts2/includes1.jsp"); + result.execute(null); + + assertEquals("subTest", cleanup(response.getContentAsString())); + } + + public void testIncludeWithParam() throws Exception { + //mock objects + EmbeddedJSPResult result = new EmbeddedJSPResult(); + + result.setLocation("org/apache/struts2/includes2.jsp"); + result.execute(null); + + assertEquals("JGTest", cleanup(response.getContentAsString())); + } + + private String cleanup(String str) { + return str.replaceAll("\\s", ""); } @@ -41,17 +79,59 @@ protected void setUp() throws Exception { super.setUp(); - request = new MockHttpServletRequest(); + request = EasyMock.createNiceMock(HttpServletRequest.class); response = new MockHttpServletResponse(); context = new MockServletContext(); + final Map params = new HashMap(); + + HttpSession session = EasyMock.createNiceMock(HttpSession.class); + EasyMock.replay(session); + + EasyMock.expect(request.getSession()).andReturn(session).anyTimes(); + EasyMock.expect(request.getParameterMap()).andReturn(params).anyTimes(); + EasyMock.expect(request.getParameter("username")).andAnswer(new IAnswer<String>() { + @Override + public String answer() throws Throwable { + return ((String[])params.get("username"))[0]; + } + }); + + EasyMock.replay(request); + ActionContext actionContext = new ActionContext(new HashMap<String, Object>()); ActionContext.setContext(actionContext); + actionContext.setParameters(params); ServletActionContext.setRequest(request); ServletActionContext.setResponse(response); ServletActionContext.setServletContext(context); + + //mock value stack + Map stackContext = new HashMap(); + ValueStack valueStack = EasyMock.createNiceMock(ValueStack.class); + EasyMock.expect(valueStack.getContext()).andReturn(stackContext).anyTimes(); + EasyMock.replay(valueStack); + + //mock converter + XWorkConverter converter = new DummyConverter(); + + //mock container + Container container = EasyMock.createNiceMock(Container.class); + EasyMock.expect(container.getInstance(XWorkConverter.class)).andReturn(converter).anyTimes(); + EasyMock.replay(container); + stackContext.put(ActionContext.CONTAINER, container); + actionContext.setContainer(container); + + actionContext.setValueStack(valueStack); + + //XWorkConverter conv = ((Container)stack.getContext().get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class); if (JSPLoader.JSP_DIR.exists()) FileUtils.forceDelete(JSPLoader.JSP_DIR); } } + +//converter has a protected default constructor...meh +class DummyConverter extends XWorkConverter { + +} Modified: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes0.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes0.jsp?rev=800838&r1=800837&r2=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes0.jsp (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes0.jsp Tue Aug 4 15:11:37 2009 @@ -1,2 +1,2 @@ -<jsp:include page="simple0.jsp" /> +<jsp:include page="org/apache/struts2/simple0.jsp" /> Test \ No newline at end of file Added: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes1.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes1.jsp?rev=800838&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes1.jsp (added) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes1.jsp Tue Aug 4 15:11:37 2009 @@ -0,0 +1,2 @@ +<jsp:include page="org/apache/struts2/sub/simple0.jsp" /> +Test \ No newline at end of file Added: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes2.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes2.jsp?rev=800838&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes2.jsp (added) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes2.jsp Tue Aug 4 15:11:37 2009 @@ -0,0 +1,4 @@ +<jsp:include page="org/apache/struts2/printParam.jsp" > + <jsp:param name="username" value="JG" /> +</jsp:include> +Test \ No newline at end of file Added: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes3.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes3.jsp?rev=800838&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes3.jsp (added) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/includes3.jsp Tue Aug 4 15:11:37 2009 @@ -0,0 +1,2 @@ +<%@ include file="org/apache/struts2/simple0.jsp" %> +Test Added: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/printParam.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/printParam.jsp?rev=800838&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/printParam.jsp (added) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/printParam.jsp Tue Aug 4 15:11:37 2009 @@ -0,0 +1 @@ +<%= request.getParameter("username") %> Copied: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/sub/simple0.jsp (from r800609, struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/simple0.jsp) URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/sub/simple0.jsp?p2=struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/sub/simple0.jsp&p1=struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/simple0.jsp&r1=800609&r2=800838&rev=800838&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/simple0.jsp (original) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/sub/simple0.jsp Tue Aug 4 15:11:37 2009 @@ -1 +1 @@ -hello \ No newline at end of file +sub \ No newline at end of file Added: struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/tag0.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/tag0.jsp?rev=800838&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/tag0.jsp (added) +++ struts/sandbox/trunk/struts2-jsp-plugin/src/test/resources/org/apache/struts2/tag0.jsp Tue Aug 4 15:11:37 2009 @@ -0,0 +1,3 @@ +<%@ taglib prefix="dt" uri="http://displaytag.sf.net" %> +<dt:table /> +OtherText \ No newline at end of file