Repository: wicket
Updated Branches:
  refs/heads/master fb06b1b6f -> 25fe3f68a


WICKET-6076 Problem with queued components and enclosure


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/25fe3f68
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/25fe3f68
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/25fe3f68

Branch: refs/heads/master
Commit: 25fe3f68aa25d3e1f8f3e19383ed79b10ff308a7
Parents: fb06b1b
Author: Andrea Del Bene <[email protected]>
Authored: Thu Jan 14 15:53:08 2016 +0100
Committer: Andrea Del Bene <[email protected]>
Committed: Thu Jan 14 18:18:08 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/wicket/MarkupContainer.java   |  5 ++---
 .../wicket/queueing/ComponentQueueingTest.java    | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/25fe3f68/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java 
b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index 916b994..d4f4630 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -1010,7 +1010,7 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                
                // if we have a path to page dequeue any container children.
                // we can do it only if page is not already rendering!
-               if (page != null && !page.getFlag(FLAG_RENDERING) && child 
instanceof MarkupContainer)
+               if (page != null && child instanceof MarkupContainer)
                {
                    MarkupContainer childContainer = (MarkupContainer)child;
                    // if we are already dequeueing there is no need to dequeue 
again
@@ -1873,13 +1873,12 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                modCounter = 0;
                removals_clear();
 
-               if (queue != null && !queue.isEmpty())
+               if (queue != null && !queue.isEmpty() && hasBeenRendered())
                {
                        throw new WicketRuntimeException(
                                        String.format("Detach called on 
component with id '%s' while it had a non-empty queue: %s",
                                                        getId(), queue));
                }
-               queue = null;
        }
 
        private transient ComponentQueue queue;

http://git-wip-us.apache.org/repos/asf/wicket/blob/25fe3f68/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
index 3039a27..58445bc 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
@@ -606,7 +606,25 @@ public class ComponentQueueingTest extends WicketTestCase
                tester.startPage(p);
                assertEquals("", tester.getLastResponseAsString());
        }
+       
+       /**
+        * Test autocomponent inside not-queue region
+        */
+       @Test
+       public void autosInsideNotQueueRegion()
+       {
+               TestPage p = new TestPage();
+               p.setPageMarkup("<div 
wicket:id='outerContainer'><wicket:enclosure><div 
wicket:id='a'></div></wicket:enclosure></div>");
+               Label a = new Label("a", "a");
+               WebMarkupContainer outer;
+               p.add(outer = new WebMarkupContainer("outerContainer"));
+               outer.queue(a);
+               
+               tester.startPage(p);
 
+               assertTrue(a.getParent() instanceof Enclosure);
+       }
+       
        @Test
        public void border1()
        {

Reply via email to