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

Reply via email to