You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/10/28 18:47:20 UTC

svn commit: r468700 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/components/IfBean.java test/org/apache/tapestry/components/TestIfElse.java

Author: jkuhnert
Date: Sat Oct 28 09:47:19 2006
New Revision: 468700

URL: http://svn.apache.org/viewvc?view=rev&rev=468700
Log:
Fixes bug where existing span blocks were being rendered. 

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java?view=diff&rev=468700&r1=468699&r2=468700
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java Sat Oct 28 09:47:19 2006
@@ -34,6 +34,8 @@
 {
     public static final String IF_VALUE_ATTRIBUTE = "org.mb.tapestry.base.IfValue";
     
+    public static final String SPAN_TAG = "span";
+    
     private boolean _rendering = false;
 
     private boolean _conditionValue;
@@ -81,7 +83,7 @@
             {
                 String element = HiveMind.isNonBlank(getElement()) ? getElement() : getTemplateTagName();
                 
-                boolean render = !cycleRewinding && getRenderTag();
+                boolean render = !cycleRewinding && getRenderTag() && !SPAN_TAG.equalsIgnoreCase(element);
                 
                 if (render)
                 {

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java?view=diff&rev=468700&r1=468699&r2=468700
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java Sat Oct 28 09:47:19 2006
@@ -48,7 +48,7 @@
         return render;
     }
 
-    public void testRenderPlainTrue()
+    public void test_Render_Plain_True()
     {
         IRequestCycle cycle = newMock(IRequestCycle.class);
 
@@ -93,7 +93,7 @@
         verify();
     }
 
-    public void testRenderPlainFalse()
+    public void test_Render_Plain_False()
     {
         IRequestCycle cycle = newCycle();
         IMarkupWriter writer = newWriter();
@@ -137,7 +137,7 @@
         verify();
     }
 
-    public void testRenderInFormTrue()
+    public void test_Render_In_Form_True()
     {
         IMarkupWriter writer = newWriter();
         
@@ -188,7 +188,7 @@
         verify();
     }
 
-    public void testRenderInFormFalse()
+    public void test_Render_In_Form_False()
     {
         IMarkupWriter writer = newWriter();
         
@@ -240,7 +240,7 @@
         verify();
     }
 
-    public void testIgnoreElementWhenRewindingTrue()
+    public void test_Ignore_Element_When_Rewinding_True()
     {
         IMarkupWriter writer = newWriter();
         
@@ -291,7 +291,7 @@
         verify();
     }
 
-    public void testIgnoreElementWhenRewindingFalse()
+    public void test_Ignore_Element_When_Rewinding_False()
     {
         IMarkupWriter writer = newWriter();
         
@@ -426,6 +426,106 @@
         verify();
     }
     
+    public void test_Render_Span_False()
+    {
+        IRequestCycle cycle = newMock(IRequestCycle.class);
+
+        IMarkupWriter writer = newBufferWriter();
+        
+        IfBean conditional = newInstance(IfBean.class, 
+                new Object[] { "condition", Boolean.TRUE,
+            "templateTagName", "span",
+            "renderTag", Boolean.TRUE
+            });
+        
+        ElseBean reverse = (ElseBean) newInstance(ElseBean.class);
+        
+        expect(cycle.renderStackPush(conditional)).andReturn(conditional);
+        
+        expect(cycle.isRewinding()).andReturn(false);
+        
+        expect(cycle.getAttribute(TapestryUtils.FORM_ATTRIBUTE)).andReturn(null);
+        
+        trainResponseBuilder(cycle, writer);
+        
+        IRender body = newRender(writer, cycle);
+        
+        cycle.setAttribute(IfBean.IF_VALUE_ATTRIBUTE, Boolean.TRUE);
+        
+        expect(cycle.renderStackPop()).andReturn(conditional);
+        
+        expect(cycle.renderStackPush(reverse)).andReturn(reverse);
+        
+        expect(cycle.getAttribute(IfBean.IF_VALUE_ATTRIBUTE)).andReturn(Boolean.TRUE);
+        
+        expect(cycle.renderStackPop()).andReturn(reverse);
+        
+        IRender body2 = newRender();
+        
+        replay();
+        
+        conditional.addBody(body);
+        
+        conditional.render(writer, cycle);
+        
+        reverse.addBody(body2);
+        reverse.render(writer, cycle);
+
+        verify();
+        
+        assertBuffer("");
+    }
+    
+    public void test_Render_Div_Tag()
+    {
+        IRequestCycle cycle = newMock(IRequestCycle.class);
+
+        IMarkupWriter writer = newBufferWriter();
+        
+        IfBean conditional = newInstance(IfBean.class, 
+                new Object[] { "condition", Boolean.TRUE,
+            "templateTagName", "div",
+            "renderTag", Boolean.TRUE
+            });
+        
+        ElseBean reverse = (ElseBean) newInstance(ElseBean.class);
+        
+        expect(cycle.renderStackPush(conditional)).andReturn(conditional);
+        
+        expect(cycle.isRewinding()).andReturn(false);
+        
+        expect(cycle.getAttribute(TapestryUtils.FORM_ATTRIBUTE)).andReturn(null);
+        
+        trainResponseBuilder(cycle, writer);
+        
+        IRender body = newRender(writer, cycle);
+        
+        cycle.setAttribute(IfBean.IF_VALUE_ATTRIBUTE, Boolean.TRUE);
+        
+        expect(cycle.renderStackPop()).andReturn(conditional);
+        
+        expect(cycle.renderStackPush(reverse)).andReturn(reverse);
+        
+        expect(cycle.getAttribute(IfBean.IF_VALUE_ATTRIBUTE)).andReturn(Boolean.TRUE);
+        
+        expect(cycle.renderStackPop()).andReturn(reverse);
+        
+        IRender body2 = newRender();
+        
+        replay();
+        
+        conditional.addBody(body);
+        
+        conditional.render(writer, cycle);
+        
+        reverse.addBody(body2);
+        reverse.render(writer, cycle);
+
+        verify();
+        
+        assertBuffer("<div></div>");
+    }
+    
     public static abstract class TestIfBean extends IfBean
     {
     	public TestIfBean() {
@@ -435,4 +535,4 @@
     		return DataSqueezerUtil.createUnitTestSqueezer();
     	}
     }
-}
\ No newline at end of file
+}