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: [email protected]
For additional commands, e-mail: [email protected]