Author: markt
Date: Fri Nov 16 22:45:28 2012
New Revision: 1410609

URL: http://svn.apache.org/viewvc?rev=1410609&view=rev
Log:
Follow up on the fix for 
https://issues.apache.org/bugzilla/show_bug.cgi?id=54011
Need to use the body as the default if no default attribute is defined

Modified:
    tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Out.java
    tomcat/trunk/test/org/apache/jasper/tagplugins/jstl/core/TestOut.java

Modified: tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Out.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Out.java?rev=1410609&r1=1410608&r2=1410609&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Out.java (original)
+++ tomcat/trunk/java/org/apache/jasper/tagplugins/jstl/core/Out.java Fri Nov 
16 22:45:28 2012
@@ -42,6 +42,7 @@ public final class Out implements TagPlu
         String strValName = ctxt.getTemporaryVariableName();
         String strDefName = ctxt.getTemporaryVariableName();
         String strEscapeXmlName = ctxt.getTemporaryVariableName();
+        String strSkipBodyName = ctxt.getTemporaryVariableName();
 
         //according to the tag file, the value attribute is mandatory.
         ctxt.generateJavaSource("String " + strValName + " = null;");
@@ -77,12 +78,16 @@ public final class Out implements TagPlu
 
         //main part.
         ctxt.generateJavaSource(
+                "boolean " + strSkipBodyName + " = " +
                 "org.apache.jasper.tagplugins.jstl.core.Out.output(out, " +
                 strValName + ", " + strDefName + ", " + strEscapeXmlName +
                 ");");
+        ctxt.generateJavaSource("if(!" + strSkipBodyName + ") {");
+        ctxt.generateBody();
+        ctxt.generateJavaSource("}");
     }
 
-    public static void output(JspWriter out, String value, String defaultValue,
+    public static boolean output(JspWriter out, String value, String 
defaultValue,
             boolean escapeXml) throws IOException {
         String v = value != null ? value : defaultValue;
         if (v != null) {
@@ -90,6 +95,9 @@ public final class Out implements TagPlu
                 v = org.apache.jasper.tagplugins.jstl.Util.escapeXml(v);
             }
             out.write(v);
+            return true;
+        } else {
+            return false;
         }
     }
 }

Modified: tomcat/trunk/test/org/apache/jasper/tagplugins/jstl/core/TestOut.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/jasper/tagplugins/jstl/core/TestOut.java?rev=1410609&r1=1410608&r2=1410609&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/jasper/tagplugins/jstl/core/TestOut.java 
(original)
+++ tomcat/trunk/test/org/apache/jasper/tagplugins/jstl/core/TestOut.java Fri 
Nov 16 22:45:28 2012
@@ -38,4 +38,20 @@ public class TestOut extends AbstractTes
         Assert.assertTrue(body.contains("OK - 1"));
         Assert.assertTrue(body.contains("OK - 2"));
     }
+
+    @Test
+    public void testBug54144() throws Exception {
+        ByteChunk res = new ByteChunk();
+
+        int rc = getUrl("http://localhost:"; + getPort() +
+                "/test/bug54144.jsp", res, null);
+
+        Assert.assertEquals(HttpServletResponse.SC_OK, rc);
+
+        String body = res.toString();
+        Assert.assertTrue(body.contains("OK - 1"));
+        Assert.assertTrue(body.contains("OK - 2"));
+        Assert.assertTrue(body.contains("OK - 3"));
+        Assert.assertFalse(body.contains("FAIL"));
+    }
 }



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

Reply via email to