Author: markt Date: Tue Jul 9 14:49:28 2013 New Revision: 1501305 URL: http://svn.apache.org/r1501305 Log: Fully fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53737 Enable Jasper to use information from the ServletContext rather than having to re-parse web.xml This commit re-adds the ability to parse web.xml to JspC but now using the same parser as Catalina. Includes extracts from patches by Jeremy Boynes and violetagg. Note: Fragment support is still TODO The need for annotation support still needs to be reviewed.
Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java - copied, changed from r1501304, tomcat/trunk/java/org/apache/catalina/core/ApplicationJspConfigDescriptor.java tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java - copied, changed from r1501304, tomcat/trunk/java/org/apache/catalina/core/ApplicationJspPropertyGroupDescriptor.java tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/TaglibDescriptorImpl.java - copied, changed from r1501304, tomcat/trunk/java/org/apache/catalina/core/ApplicationTaglibDescriptor.java tomcat/trunk/test/org/apache/jasper/servlet/ tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java Removed: tomcat/trunk/java/org/apache/catalina/core/ApplicationJspConfigDescriptor.java tomcat/trunk/java/org/apache/catalina/core/ApplicationJspPropertyGroupDescriptor.java tomcat/trunk/java/org/apache/catalina/core/ApplicationTaglibDescriptor.java Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java tomcat/trunk/java/org/apache/jasper/JspC.java tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/Constants.java tomcat/trunk/res/checkstyle/org-import-control.xml Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1501305&r1=1501304&r2=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Jul 9 14:49:28 2013 @@ -121,6 +121,7 @@ import org.apache.tomcat.util.descriptor import org.apache.tomcat.util.descriptor.web.FilterMap; import org.apache.tomcat.util.descriptor.web.Injectable; import org.apache.tomcat.util.descriptor.web.InjectionTarget; +import org.apache.tomcat.util.descriptor.web.JspConfigDescriptorImpl; import org.apache.tomcat.util.descriptor.web.LoginConfig; import org.apache.tomcat.util.descriptor.web.MessageDestination; import org.apache.tomcat.util.descriptor.web.MessageDestinationRef; @@ -821,7 +822,7 @@ public class StandardContext extends Con private int effectiveMinorVersion = 0; private JspConfigDescriptor jspConfigDescriptor = - new ApplicationJspConfigDescriptor(); + new JspConfigDescriptorImpl(); private Set<String> resourceOnlyServlets = new HashSet<>(); @@ -5696,7 +5697,7 @@ public class StandardContext extends Con applicationListeners = new ApplicationListener[0]; applicationEventListenersObjects = new Object[0]; applicationLifecycleListenersObjects = new Object[0]; - jspConfigDescriptor = new ApplicationJspConfigDescriptor(); + jspConfigDescriptor = new JspConfigDescriptorImpl(); initializers.clear(); Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1501305&r1=1501304&r2=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Tue Jul 9 14:49:28 2013 @@ -67,8 +67,6 @@ import org.apache.catalina.Valve; import org.apache.catalina.WebResource; import org.apache.catalina.WebResourceRoot; import org.apache.catalina.Wrapper; -import org.apache.catalina.core.ApplicationJspPropertyGroupDescriptor; -import org.apache.catalina.core.ApplicationTaglibDescriptor; import org.apache.catalina.core.StandardContext; import org.apache.catalina.core.StandardHost; import org.apache.catalina.util.ContextName; @@ -99,6 +97,7 @@ import org.apache.tomcat.util.descriptor import org.apache.tomcat.util.descriptor.web.FilterDef; import org.apache.tomcat.util.descriptor.web.FilterMap; import org.apache.tomcat.util.descriptor.web.JspPropertyGroup; +import org.apache.tomcat.util.descriptor.web.JspPropertyGroupDescriptorImpl; import org.apache.tomcat.util.descriptor.web.LoginConfig; import org.apache.tomcat.util.descriptor.web.MessageDestinationRef; import org.apache.tomcat.util.descriptor.web.MultipartDef; @@ -106,6 +105,7 @@ import org.apache.tomcat.util.descriptor import org.apache.tomcat.util.descriptor.web.SecurityRoleRef; import org.apache.tomcat.util.descriptor.web.ServletDef; import org.apache.tomcat.util.descriptor.web.SessionConfig; +import org.apache.tomcat.util.descriptor.web.TaglibDescriptorImpl; import org.apache.tomcat.util.descriptor.web.WebXml; import org.apache.tomcat.util.descriptor.web.WebXmlParser; import org.apache.tomcat.util.digester.Digester; @@ -1279,7 +1279,7 @@ public class ContextConfig implements Li for (JspPropertyGroup jspPropertyGroup : webxml.getJspPropertyGroups()) { JspPropertyGroupDescriptor descriptor = - new ApplicationJspPropertyGroupDescriptor(jspPropertyGroup); + new JspPropertyGroupDescriptorImpl(jspPropertyGroup); context.getJspConfigDescriptor().getJspPropertyGroups().add( descriptor); } @@ -1411,7 +1411,7 @@ public class ContextConfig implements Li } } for (Entry<String, String> entry : webxml.getTaglibs().entrySet()) { - TaglibDescriptor descriptor = new ApplicationTaglibDescriptor( + TaglibDescriptor descriptor = new TaglibDescriptorImpl( entry.getValue(), entry.getKey()); context.getJspConfigDescriptor().getTaglibs().add(descriptor); } Modified: tomcat/trunk/java/org/apache/jasper/JspC.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1501305&r1=1501304&r2=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/JspC.java (original) +++ tomcat/trunk/java/org/apache/jasper/JspC.java Tue Jul 9 14:49:28 2013 @@ -1288,7 +1288,7 @@ public class JspC extends Task implement Localizer.getMessage("jsp.error.jspc.uriroot_not_dir")); } - if(context == null) { + if (context == null) { initServletContext(); } @@ -1407,15 +1407,16 @@ public class JspC extends Task implement } mapout.close(); } catch (IOException ioe) { - // noting to do if it fails since we are done with it + // nothing to do if it fails since we are done with it } } } - protected void initServletContext() throws IOException { - // TODO: should we use the Ant Project's log? + protected void initServletContext() throws IOException, JasperException { + // TODO: should we use the Ant Project's log? PrintWriter log = new PrintWriter(System.out); URL resourceBase = new File(uriRoot).getCanonicalFile().toURI().toURL(); + context = new JspCServletContext(log, resourceBase); rctxt = new JspRuntimeContext(context, this); jspConfig = new JspConfig(context); Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java?rev=1501305&r1=1501304&r2=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java (original) +++ tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java Tue Jul 9 14:49:28 2013 @@ -14,10 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.jasper.servlet; - import java.io.File; import java.io.InputStream; import java.io.PrintWriter; @@ -29,6 +27,7 @@ import java.util.EventListener; import java.util.HashSet; import java.util.Hashtable; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.Vector; @@ -43,8 +42,19 @@ import javax.servlet.ServletRegistration import javax.servlet.SessionCookieConfig; import javax.servlet.SessionTrackingMode; import javax.servlet.descriptor.JspConfigDescriptor; +import javax.servlet.descriptor.JspPropertyGroupDescriptor; +import javax.servlet.descriptor.TaglibDescriptor; +import org.apache.jasper.JasperException; +import org.apache.jasper.compiler.Localizer; import org.apache.jasper.util.ExceptionUtils; +import org.apache.tomcat.util.descriptor.web.JspConfigDescriptorImpl; +import org.apache.tomcat.util.descriptor.web.JspPropertyGroup; +import org.apache.tomcat.util.descriptor.web.JspPropertyGroupDescriptorImpl; +import org.apache.tomcat.util.descriptor.web.TaglibDescriptorImpl; +import org.apache.tomcat.util.descriptor.web.WebXml; +import org.apache.tomcat.util.descriptor.web.WebXmlParser; +import org.xml.sax.InputSource; /** @@ -79,6 +89,14 @@ public class JspCServletContext implemen /** + * Merged web.xml for the application. + */ + private final WebXml webXml; + + + private final JspConfigDescriptorImpl jspConfigDescriptor; + + /** * Web application class loader. */ private ClassLoader loader; @@ -91,19 +109,72 @@ public class JspCServletContext implemen * * @param aLogWriter PrintWriter which is used for <code>log()</code> calls * @param aResourceBaseURL Resource base URL + * @throws JasperException */ - public JspCServletContext(PrintWriter aLogWriter, URL aResourceBaseURL) { + public JspCServletContext(PrintWriter aLogWriter, URL aResourceBaseURL) + throws JasperException { myAttributes = new Hashtable<>(); myLogWriter = aLogWriter; myResourceBaseURL = aResourceBaseURL; + // Build the merged web.xml + // TODO - Process fragments + // TODO - Check to see if annotations can impact anything JspC + // cares about and if yes, process fragments too. + this.webXml = new WebXml(); + + WebXmlParser webXmlParser = new WebXmlParser(false, false); + + InputStream webXmlStream = getResourceAsStream( + org.apache.tomcat.util.descriptor.web.Constants. + WEB_XML_LOCATION); + + if (webXmlStream != null) { + URL webXmlUrl; + try { + webXmlUrl = getResource( + org.apache.tomcat.util.descriptor.web.Constants. + WEB_XML_LOCATION); + } catch (MalformedURLException e) { + // Should never happen. Just in case... + throw new JasperException(e); + } + + InputSource source = new InputSource(webXmlUrl.toExternalForm()); + source.setByteStream(webXmlStream); + if (!webXmlParser.parseWebXml(source, webXml, false)) { + throw new JasperException(Localizer.getMessage("")); + } + } + + + + Set<JspPropertyGroup> jspPropertyGroups = webXml.getJspPropertyGroups(); + Map<String,String> tagLibs = webXml.getTaglibs(); + + if (jspPropertyGroups.isEmpty() && tagLibs.isEmpty()) { + jspConfigDescriptor = null; + } else { + jspConfigDescriptor = new JspConfigDescriptorImpl(); + for (JspPropertyGroup jspPropertyGroup : jspPropertyGroups) { + JspPropertyGroupDescriptor descriptor = + new JspPropertyGroupDescriptorImpl(jspPropertyGroup); + jspConfigDescriptor.getJspPropertyGroups().add(descriptor); + + } + for (Entry<String, String> entry : webXml.getTaglibs().entrySet()) { + TaglibDescriptor descriptor = new TaglibDescriptorImpl( + entry.getValue(), entry.getKey()); + jspConfigDescriptor.getTaglibs().add(descriptor); + } + } + } // --------------------------------------------------------- Public Methods - /** * Return the specified context attribute, if any. * @@ -111,9 +182,7 @@ public class JspCServletContext implemen */ @Override public Object getAttribute(String name) { - - return (myAttributes.get(name)); - + return myAttributes.get(name); } @@ -122,9 +191,7 @@ public class JspCServletContext implemen */ @Override public Enumeration<String> getAttributeNames() { - - return (myAttributes.keys()); - + return myAttributes.keys(); } @@ -135,9 +202,7 @@ public class JspCServletContext implemen */ @Override public ServletContext getContext(String uripath) { - - return (null); - + return null; } @@ -146,9 +211,7 @@ public class JspCServletContext implemen */ @Override public String getContextPath() { - - return (null); - + return null; } @@ -159,9 +222,7 @@ public class JspCServletContext implemen */ @Override public String getInitParameter(String name) { - - return (null); - + return null; } @@ -171,9 +232,7 @@ public class JspCServletContext implemen */ @Override public Enumeration<String> getInitParameterNames() { - - return (new Vector<String>().elements()); - + return new Vector<String>().elements(); } @@ -182,9 +241,7 @@ public class JspCServletContext implemen */ @Override public int getMajorVersion() { - - return (3); - + return 3; } @@ -195,9 +252,7 @@ public class JspCServletContext implemen */ @Override public String getMimeType(String file) { - - return (null); - + return null; } @@ -206,9 +261,7 @@ public class JspCServletContext implemen */ @Override public int getMinorVersion() { - - return (1); - + return 1; } @@ -219,9 +272,7 @@ public class JspCServletContext implemen */ @Override public RequestDispatcher getNamedDispatcher(String name) { - - return (null); - + return null; } @@ -256,9 +307,7 @@ public class JspCServletContext implemen */ @Override public RequestDispatcher getRequestDispatcher(String path) { - - return (null); - + return null; } @@ -353,9 +402,7 @@ public class JspCServletContext implemen */ @Override public String getServerInfo() { - - return ("JspCServletContext/1.0"); - + return ("JspC/ApacheTomcat8"); } @@ -369,9 +416,7 @@ public class JspCServletContext implemen @Override @Deprecated public Servlet getServlet(String name) throws ServletException { - - return (null); - + return null; } @@ -380,9 +425,7 @@ public class JspCServletContext implemen */ @Override public String getServletContextName() { - return (getServerInfo()); - } @@ -394,9 +437,7 @@ public class JspCServletContext implemen @Override @Deprecated public Enumeration<String> getServletNames() { - return (new Vector<String>().elements()); - } @@ -408,9 +449,7 @@ public class JspCServletContext implemen @Override @Deprecated public Enumeration<Servlet> getServlets() { - return (new Vector<Servlet>().elements()); - } @@ -421,9 +460,7 @@ public class JspCServletContext implemen */ @Override public void log(String message) { - myLogWriter.println(message); - } @@ -438,9 +475,7 @@ public class JspCServletContext implemen @Override @Deprecated public void log(Exception exception, String message) { - log(message, exception); - } @@ -452,10 +487,8 @@ public class JspCServletContext implemen */ @Override public void log(String message, Throwable exception) { - myLogWriter.println(message); exception.printStackTrace(myLogWriter); - } @@ -466,9 +499,7 @@ public class JspCServletContext implemen */ @Override public void removeAttribute(String name) { - myAttributes.remove(name); - } @@ -480,9 +511,7 @@ public class JspCServletContext implemen */ @Override public void setAttribute(String name, Object value) { - myAttributes.put(name, value); - } @@ -628,13 +657,13 @@ public class JspCServletContext implemen @Override public int getEffectiveMajorVersion() { - return 3; + return webXml.getMajorVersion(); } @Override public int getEffectiveMinorVersion() { - return 0; + return webXml.getMinorVersion(); } @@ -646,7 +675,7 @@ public class JspCServletContext implemen @Override public JspConfigDescriptor getJspConfigDescriptor() { - return null; + return jspConfigDescriptor; } Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/Constants.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/Constants.java?rev=1501305&r1=1501304&r2=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/Constants.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/Constants.java Tue Jul 9 14:49:28 2013 @@ -21,4 +21,6 @@ public class Constants { public static final String PACKAGE_NAME = Constants.class.getPackage().getName(); + public static final String WEB_XML_LOCATION = "/WEB-INF/web.xml"; + } Copied: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java (from r1501304, tomcat/trunk/java/org/apache/catalina/core/ApplicationJspConfigDescriptor.java) URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java?p2=tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java&p1=tomcat/trunk/java/org/apache/catalina/core/ApplicationJspConfigDescriptor.java&r1=1501304&r2=1501305&rev=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationJspConfigDescriptor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java Tue Jul 9 14:49:28 2013 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.catalina.core; +package org.apache.tomcat.util.descriptor.web; import java.util.Collection; import java.util.HashSet; @@ -25,7 +25,7 @@ import javax.servlet.descriptor.JspConfi import javax.servlet.descriptor.JspPropertyGroupDescriptor; import javax.servlet.descriptor.TaglibDescriptor; -public class ApplicationJspConfigDescriptor implements JspConfigDescriptor { +public class JspConfigDescriptorImpl implements JspConfigDescriptor { private final Collection<JspPropertyGroupDescriptor> jspPropertyGroups = new LinkedHashSet<>(); Copied: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java (from r1501304, tomcat/trunk/java/org/apache/catalina/core/ApplicationJspPropertyGroupDescriptor.java) URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java?p2=tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java&p1=tomcat/trunk/java/org/apache/catalina/core/ApplicationJspPropertyGroupDescriptor.java&r1=1501304&r2=1501305&rev=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationJspPropertyGroupDescriptor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java Tue Jul 9 14:49:28 2013 @@ -14,22 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.catalina.core; +package org.apache.tomcat.util.descriptor.web; import java.util.Collection; import javax.servlet.descriptor.JspPropertyGroupDescriptor; -import org.apache.tomcat.util.descriptor.web.JspPropertyGroup; -public class ApplicationJspPropertyGroupDescriptor +public class JspPropertyGroupDescriptorImpl implements JspPropertyGroupDescriptor{ private final JspPropertyGroup jspPropertyGroup; - public ApplicationJspPropertyGroupDescriptor( + public JspPropertyGroupDescriptorImpl( JspPropertyGroup jspPropertyGroup) { this.jspPropertyGroup = jspPropertyGroup; } Copied: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/TaglibDescriptorImpl.java (from r1501304, tomcat/trunk/java/org/apache/catalina/core/ApplicationTaglibDescriptor.java) URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/TaglibDescriptorImpl.java?p2=tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/TaglibDescriptorImpl.java&p1=tomcat/trunk/java/org/apache/catalina/core/ApplicationTaglibDescriptor.java&r1=1501304&r2=1501305&rev=1501305&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationTaglibDescriptor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/TaglibDescriptorImpl.java Tue Jul 9 14:49:28 2013 @@ -15,16 +15,16 @@ * limitations under the License. */ -package org.apache.catalina.core; +package org.apache.tomcat.util.descriptor.web; import javax.servlet.descriptor.TaglibDescriptor; -public class ApplicationTaglibDescriptor implements TaglibDescriptor { +public class TaglibDescriptorImpl implements TaglibDescriptor { private final String location; private final String uri; - public ApplicationTaglibDescriptor(String location, String uri) { + public TaglibDescriptorImpl(String location, String uri) { this.location = location; this.uri = uri; } @@ -54,10 +54,10 @@ public class ApplicationTaglibDescriptor if (this == obj) { return true; } - if (!(obj instanceof ApplicationTaglibDescriptor)) { + if (!(obj instanceof TaglibDescriptorImpl)) { return false; } - ApplicationTaglibDescriptor other = (ApplicationTaglibDescriptor) obj; + TaglibDescriptorImpl other = (TaglibDescriptorImpl) obj; if (location == null) { if (other.location != null) { return false; Modified: tomcat/trunk/res/checkstyle/org-import-control.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/res/checkstyle/org-import-control.xml?rev=1501305&r1=1501304&r2=1501305&view=diff ============================================================================== --- tomcat/trunk/res/checkstyle/org-import-control.xml (original) +++ tomcat/trunk/res/checkstyle/org-import-control.xml Tue Jul 9 14:49:28 2013 @@ -100,6 +100,7 @@ <allow pkg="org.apache.jasper"/> <allow pkg="org.apache.juli"/> <allow pkg="org.apache.tomcat" exact-match="true"/> + <allow pkg="org.apache.tomcat.util.descriptor"/> <allow pkg="org.apache.tomcat.util.scan"/> <allow pkg="org.apache.tools.ant"/> <allow pkg="org.eclipse.jdt"/> Added: tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java?rev=1501305&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java (added) +++ tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java Tue Jul 9 14:49:28 2013 @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.jasper.servlet; + +import java.io.File; +import java.util.Collection; +import java.util.Iterator; + +import javax.servlet.descriptor.JspConfigDescriptor; +import javax.servlet.descriptor.JspPropertyGroupDescriptor; + +import org.junit.Assert; +import org.junit.Test; + +public class TestJspCServletContext { + + @Test + public void testWebapp() throws Exception { + File appDir = new File("test/webapp"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(3, context.getEffectiveMajorVersion()); + Assert.assertEquals(1, context.getEffectiveMinorVersion()); + JspConfigDescriptor jspConfigDescriptor = + context.getJspConfigDescriptor(); + Assert.assertTrue(jspConfigDescriptor.getTaglibs().isEmpty()); + Collection<JspPropertyGroupDescriptor> propertyGroups = + jspConfigDescriptor.getJspPropertyGroups(); + Assert.assertEquals(1, propertyGroups.size()); + JspPropertyGroupDescriptor groupDescriptor = + propertyGroups.iterator().next(); + Assert.assertEquals("text/plain", + groupDescriptor.getDefaultContentType()); + Collection<String> urlPatterns =groupDescriptor.getUrlPatterns(); + Assert.assertEquals(2, urlPatterns.size()); + Iterator<String> iterator = urlPatterns.iterator(); + Assert.assertEquals("/bug49nnn/bug49726a.jsp", iterator.next()); + Assert.assertEquals("/bug49nnn/bug49726b.jsp", iterator.next()); + } + + @Test + public void testWebapp_2_3() throws Exception { + File appDir = new File("test/webapp-2.3"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(2, context.getEffectiveMajorVersion()); + Assert.assertEquals(3, context.getEffectiveMinorVersion()); + } + + @Test + public void testWebapp_2_4() throws Exception { + File appDir = new File("test/webapp-2.4"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(2, context.getEffectiveMajorVersion()); + Assert.assertEquals(4, context.getEffectiveMinorVersion()); + } + + @Test + public void testWebapp_2_5() throws Exception { + File appDir = new File("test/webapp-2.5"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(2, context.getEffectiveMajorVersion()); + Assert.assertEquals(5, context.getEffectiveMinorVersion()); + } + + @Test + public void testWebapp_3_0() throws Exception { + File appDir = new File("test/webapp-3.0"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(3, context.getEffectiveMajorVersion()); + Assert.assertEquals(0, context.getEffectiveMinorVersion()); + } + + @Test + public void testWebapp_3_1() throws Exception { + File appDir = new File("test/webapp-3.1"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(3, context.getEffectiveMajorVersion()); + Assert.assertEquals(1, context.getEffectiveMinorVersion()); + } + + @Test + public void testWebresources() throws Exception { + File appDir = new File("test/webresources/dir1"); + JspCServletContext context = + new JspCServletContext(null, appDir.toURI().toURL()); + Assert.assertEquals(3, context.getEffectiveMajorVersion()); + Assert.assertEquals(1, context.getEffectiveMinorVersion()); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org