You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/03/06 08:40:13 UTC

svn commit: r1574785 - in /tomcat/trunk: java/org/apache/jasper/JspC.java java/org/apache/jasper/servlet/JspCServletContext.java test/org/apache/jasper/servlet/TestJspCServletContext.java

Author: markt
Date: Thu Mar  6 07:40:12 2014
New Revision: 1574785

URL: http://svn.apache.org/r1574785
Log:
Better fix for BZ56199
Fix failing unit tests caused by original fix.

Modified:
    tomcat/trunk/java/org/apache/jasper/JspC.java
    tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
    tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java

Modified: tomcat/trunk/java/org/apache/jasper/JspC.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1574785&r1=1574784&r2=1574785&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/JspC.java (original)
+++ tomcat/trunk/java/org/apache/jasper/JspC.java Thu Mar  6 07:40:12 2014
@@ -1463,17 +1463,11 @@ public class JspC extends Task implement
         PrintWriter log = new PrintWriter(System.out);
         URL resourceBase = new File(uriRoot).getCanonicalFile().toURI().toURL();
 
-        context = new JspCServletContext(log, resourceBase, classLoader);
+        context = new JspCServletContext(log, resourceBase, classLoader,
+                isValidateXml(), isBlockExternal());
         if (isValidateTld()) {
             context.setInitParameter(Constants.XML_VALIDATION_TLD_INIT_PARAM, "true");
         }
-        if (isValidateXml()) {
-            context.setInitParameter(Constants.XML_VALIDATION_INIT_PARAM, "true");
-        }
-        context.setInitParameter(Constants.XML_BLOCK_EXTERNAL_INIT_PARAM,
-                String.valueOf(isBlockExternal()));
-
-        context.processWebXml();
 
         TldScanner scanner = new TldScanner(
                 context, true, isValidateTld(), isBlockExternal());

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=1574785&r1=1574784&r2=1574785&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java Thu Mar  6 07:40:12 2014
@@ -45,7 +45,6 @@ import javax.servlet.SessionCookieConfig
 import javax.servlet.SessionTrackingMode;
 import javax.servlet.descriptor.JspConfigDescriptor;
 
-import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.compiler.Localizer;
 import org.apache.jasper.util.ExceptionUtils;
@@ -115,35 +114,28 @@ public class JspCServletContext implemen
      *
      * @param aLogWriter PrintWriter which is used for <code>log()</code> calls
      * @param aResourceBaseURL Resource base URL
+     * @param classLoader   Class loader for this {@link ServletContext}
+     * @param validate      Should a validating parser be used to parse web.xml?
+     * @param blockExternal Should external entities be blocked when parsing
+     *                      web.xml?
      * @throws JasperException
      */
-    public JspCServletContext(PrintWriter aLogWriter, URL aResourceBaseURL, ClassLoader classLoader)
-        throws JasperException {
+    public JspCServletContext(PrintWriter aLogWriter, URL aResourceBaseURL,
+            ClassLoader classLoader, boolean validate, boolean blockExternal)
+            throws JasperException {
 
         myAttributes = new HashMap<>();
         myParameters = new ConcurrentHashMap<>();
         myLogWriter = aLogWriter;
         myResourceBaseURL = aResourceBaseURL;
         this.loader = classLoader;
-    }
-
-    public void processWebXml() throws JasperException {
-        this.webXml = buildMergedWebXml();
+        this.webXml = buildMergedWebXml(validate, blockExternal);
         jspConfigDescriptor = webXml.getJspConfigDescriptor();
     }
 
-    private WebXml buildMergedWebXml() throws JasperException {
+    private WebXml buildMergedWebXml(boolean validate, boolean blockExternal)
+            throws JasperException {
         WebXml webXml = new WebXml();
-        String blockExternalString = getInitParameter(
-                Constants.XML_BLOCK_EXTERNAL_INIT_PARAM);
-        boolean blockExternal;
-        if (blockExternalString == null) {
-            blockExternal = true;
-        } else {
-            blockExternal = Boolean.parseBoolean(blockExternalString);
-        }
-        boolean validate = Boolean.parseBoolean(
-                getInitParameter(Constants.XML_VALIDATION_INIT_PARAM));
         WebXmlParser webXmlParser = new WebXmlParser(validate, validate, blockExternal);
         // Use this class's classloader as Ant will have set the TCCL to its own
         webXmlParser.setClassLoader(getClass().getClassLoader());

Modified: 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=1574785&r1=1574784&r2=1574785&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java (original)
+++ tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java Thu Mar  6 07:40:12 2014
@@ -31,8 +31,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp() throws Exception {
         File appDir = new File("test/webapp");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(3, context.getEffectiveMajorVersion());
         Assert.assertEquals(1, context.getEffectiveMinorVersion());
         JspConfigDescriptor jspConfigDescriptor =
@@ -62,8 +62,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp_2_2() throws Exception {
         File appDir = new File("test/webapp-2.2");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(2, context.getEffectiveMajorVersion());
         Assert.assertEquals(2, context.getEffectiveMinorVersion());
     }
@@ -71,8 +71,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp_2_3() throws Exception {
         File appDir = new File("test/webapp-2.3");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(2, context.getEffectiveMajorVersion());
         Assert.assertEquals(3, context.getEffectiveMinorVersion());
     }
@@ -80,8 +80,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp_2_4() throws Exception {
         File appDir = new File("test/webapp-2.4");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(2, context.getEffectiveMajorVersion());
         Assert.assertEquals(4, context.getEffectiveMinorVersion());
     }
@@ -89,8 +89,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp_2_5() throws Exception {
         File appDir = new File("test/webapp-2.5");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(2, context.getEffectiveMajorVersion());
         Assert.assertEquals(5, context.getEffectiveMinorVersion());
     }
@@ -98,8 +98,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp_3_0() throws Exception {
         File appDir = new File("test/webapp-3.0");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(3, context.getEffectiveMajorVersion());
         Assert.assertEquals(0, context.getEffectiveMinorVersion());
     }
@@ -107,8 +107,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebapp_3_1() throws Exception {
         File appDir = new File("test/webapp-3.1");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(3, context.getEffectiveMajorVersion());
         Assert.assertEquals(1, context.getEffectiveMinorVersion());
     }
@@ -116,8 +116,8 @@ public class TestJspCServletContext {
     @Test
     public void testWebresources() throws Exception {
         File appDir = new File("test/webresources/dir1");
-        JspCServletContext context =
-                new JspCServletContext(null, appDir.toURI().toURL(), null);
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(3, context.getEffectiveMajorVersion());
         Assert.assertEquals(1, context.getEffectiveMinorVersion());
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r1574785 - in /tomcat/trunk: java/org/apache/jasper/JspC.java java/org/apache/jasper/servlet/JspCServletContext.java test/org/apache/jasper/servlet/TestJspCServletContext.java

Posted by Mark Thomas <ma...@apache.org>.
On 06/03/2014 08:46, Konstantin Kolinko wrote:
> 2014-03-06 11:40 GMT+04:00  <ma...@apache.org>:
>> Author: markt
>> Date: Thu Mar  6 07:40:12 2014
>> New Revision: 1574785
>>
>> URL: http://svn.apache.org/r1574785
>> Log:
>> Better fix for BZ56199
>> Fix failing unit tests caused by original fix.
>>
>> Modified:
>>     tomcat/trunk/java/org/apache/jasper/JspC.java
>>     tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
>>     tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java
>>
>> Modified: tomcat/trunk/java/org/apache/jasper/JspC.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1574785&r1=1574784&r2=1574785&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/org/apache/jasper/JspC.java (original)
>> +++ tomcat/trunk/java/org/apache/jasper/JspC.java Thu Mar  6 07:40:12 2014
>> @@ -1463,17 +1463,11 @@ public class JspC extends Task implement
>>          PrintWriter log = new PrintWriter(System.out);
>>          URL resourceBase = new File(uriRoot).getCanonicalFile().toURI().toURL();
>>
>> -        context = new JspCServletContext(log, resourceBase, classLoader);
>> +        context = new JspCServletContext(log, resourceBase, classLoader,
>> +                isValidateXml(), isBlockExternal());
>>          if (isValidateTld()) {
>>              context.setInitParameter(Constants.XML_VALIDATION_TLD_INIT_PARAM, "true");
>>          }
>> -        if (isValidateXml()) {
>> -            context.setInitParameter(Constants.XML_VALIDATION_INIT_PARAM, "true");
>> -        }
>> -        context.setInitParameter(Constants.XML_BLOCK_EXTERNAL_INIT_PARAM,
>> -                String.valueOf(isBlockExternal()));
> 
> 
> Aren't there classes in Jasper that are reading
> Constants.XML_BLOCK_EXTERNAL_INIT_PARAM
> init parameter.  With this change it is not set any more.
> 
> Though setting it can be moved into JspCServletContext constructor.

Yes. I'll get that fixed.

The XML validation constant can be removed though. It is no longer used.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r1574785 - in /tomcat/trunk: java/org/apache/jasper/JspC.java java/org/apache/jasper/servlet/JspCServletContext.java test/org/apache/jasper/servlet/TestJspCServletContext.java

Posted by Konstantin Kolinko <kn...@gmail.com>.
2014-03-06 11:40 GMT+04:00  <ma...@apache.org>:
> Author: markt
> Date: Thu Mar  6 07:40:12 2014
> New Revision: 1574785
>
> URL: http://svn.apache.org/r1574785
> Log:
> Better fix for BZ56199
> Fix failing unit tests caused by original fix.
>
> Modified:
>     tomcat/trunk/java/org/apache/jasper/JspC.java
>     tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
>     tomcat/trunk/test/org/apache/jasper/servlet/TestJspCServletContext.java
>
> Modified: tomcat/trunk/java/org/apache/jasper/JspC.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1574785&r1=1574784&r2=1574785&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/jasper/JspC.java (original)
> +++ tomcat/trunk/java/org/apache/jasper/JspC.java Thu Mar  6 07:40:12 2014
> @@ -1463,17 +1463,11 @@ public class JspC extends Task implement
>          PrintWriter log = new PrintWriter(System.out);
>          URL resourceBase = new File(uriRoot).getCanonicalFile().toURI().toURL();
>
> -        context = new JspCServletContext(log, resourceBase, classLoader);
> +        context = new JspCServletContext(log, resourceBase, classLoader,
> +                isValidateXml(), isBlockExternal());
>          if (isValidateTld()) {
>              context.setInitParameter(Constants.XML_VALIDATION_TLD_INIT_PARAM, "true");
>          }
> -        if (isValidateXml()) {
> -            context.setInitParameter(Constants.XML_VALIDATION_INIT_PARAM, "true");
> -        }
> -        context.setInitParameter(Constants.XML_BLOCK_EXTERNAL_INIT_PARAM,
> -                String.valueOf(isBlockExternal()));


Aren't there classes in Jasper that are reading
Constants.XML_BLOCK_EXTERNAL_INIT_PARAM
init parameter.  With this change it is not set any more.

Though setting it can be moved into JspCServletContext constructor.

> -
> -        context.processWebXml();
>
>          TldScanner scanner = new TldScanner(
>                  context, true, isValidateTld(), isBlockExternal());
>
(...)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org