WICKET-6088 Problem with queued components and setting the model

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

Branch: refs/heads/lambdas
Commit: a04959e974b3a3bf915b7614c532fd9a70d0e16e
Parents: 21c18df
Author: Andrea Del Bene <[email protected]>
Authored: Thu Feb 18 11:16:23 2016 +0100
Committer: Andrea Del Bene <[email protected]>
Committed: Thu Feb 18 12:05:18 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/wicket/MarkupContainer.java | 46 +++++---------------
 .../wicket/markup/html/border/Border.java       |  2 +-
 .../wicket/markup/html/internal/Enclosure.java  | 14 ------
 .../wicket/queueing/ComponentQueueingTest.java  | 34 +++++++++++++++
 4 files changed, 45 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a04959e9/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 1cb41aa..7a5210b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.commons.collections4.map.LinkedMap;
 import org.apache.wicket.core.util.string.ComponentStrings;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.ComponentTag.IAutoComponentFactory;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.Markup;
 import org.apache.wicket.markup.MarkupElement;
@@ -1598,39 +1599,6 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                renderComponentTagBody(markupStream, openTag);
        }
 
-       @Override
-       protected void onInitialize()
-       {
-               super.onInitialize();
-               dequeueAutoComponents();
-       }
-
-       private void dequeueAutoComponents()
-       {
-               // dequeue auto components
-               DequeueContext context = newDequeueContext();
-               if (context != null && context.peekTag() != null)
-               {
-                       for (ComponentTag tag = context.takeTag(); tag != null; 
tag = context.takeTag())
-                       {
-                               ComponentTag.IAutoComponentFactory 
autoComponentFactory = tag
-                                       .getAutoComponentFactory();
-                               if (autoComponentFactory != null)
-                               {
-                                       Component autoComponent = 
autoComponentFactory.newComponent(this, tag);
-                                       addDequeuedComponent(autoComponent, 
tag);
-                               }
-
-                               // Every component is responsible just for its 
own auto components
-                               // so skip to the close tag.
-                               if (tag.isOpen() && !tag.hasNoCloseTag())
-                               {
-                                       context.skipToCloseTag();
-                               }
-                       }
-               }
-       }
-
        /**
         * @see org.apache.wicket.Component#onRender()
         */
@@ -2036,13 +2004,20 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                                // the container does not yet have a child with 
this id, see if we can
                                // dequeue
                                child = dequeue.findComponentToDequeue(tag);
-
+                               
+                               //if tag has an autocomponent factory let's use 
it
+                               if (child == null && 
tag.getAutoComponentFactory() != null)
+                               {
+                                       IAutoComponentFactory 
autoComponentFactory = tag.getAutoComponentFactory();
+                                       child = 
autoComponentFactory.newComponent(this, tag);
+                               }
+                               
                                if (child != null)
                                {
                                        addDequeuedComponent(child, tag);
                                }
                        }
-
+                       
                        if (tag.isOpen() && !tag.hasNoCloseTag())
             {
                            dequeueChild(child, tag, dequeue);
@@ -2100,7 +2075,6 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
        public DequeueContext newDequeueContext()
        {
                IMarkupFragment markup = getRegionMarkup();
-
                if (markup == null)
                {
                        return null;

http://git-wip-us.apache.org/repos/asf/wicket/blob/a04959e9/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
index 42ac16f..63da8f3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
@@ -588,7 +588,7 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
                @Override
                public DequeueContext newDequeueContext()
                {
-                       Border border=findParent(Border.class);
+                       Border border = findParent(Border.class);
                        IMarkupFragment fragment = border.getMarkup();
 
                        if (fragment == null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/a04959e9/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
index e68f4e0..2d72ac0 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
@@ -19,11 +19,9 @@ package org.apache.wicket.markup.html.internal;
 import java.util.Iterator;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
@@ -303,16 +301,4 @@ public class Enclosure extends WebMarkupContainer 
implements IComponentResolver
                                "Programming error: childComponent == enclose 
component; endless loop");
                }
        }
-       
-       @Override
-       public DequeueContext newDequeueContext()
-       {
-               IMarkupFragment markup = 
getMarkupSourcingStrategy().getMarkup(this, null);
-               if (markup == null)
-               {
-                       return null;
-               }
-
-               return new DequeueContext(markup, this, true);
-       }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/a04959e9/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 388e436..1e0cac0 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
@@ -796,6 +796,40 @@ public class ComponentQueueingTest extends WicketTestCase
                
                tester.startPage(page); 
        }
+       
+       /**
+        * https://issues.apache.org/jira/browse/WICKET-6088
+        */
+       @Test
+       public void queueComponentInsideWcAndEnclosure()
+       {
+               TestPage page = new TestPage();
+               page.setPageMarkup(" <div wicket:id=\"container\">\n" +
+                       "    <div wicket:enclosure=\"child\">\n" +
+                       "      <p wicket:id=\"child\">1</p>\n" +
+                       "      <a wicket:id=\"child2\">2</a>\n" +
+                       "    </div>\n" +
+                       "  </div>");
+               
+               WebMarkupContainer container = new 
WebMarkupContainer("container");
+
+               container.queue(new Label("child")
+               {
+                       @Override
+                       protected void onInitialize()
+                       {
+                               super.onInitialize();
+
+                               setDefaultModel(Model.of("test"));
+                       }
+               });
+               
+           container.queue(new WebMarkupContainer("child2").setVisible(false));
+
+           page.queue(container);
+               
+               tester.startPage(page); 
+       }
 
        /**
         * https://issues.apache.org/jira/browse/WICKET-6036

Reply via email to