Repository: wicket
Updated Branches:
  refs/heads/sandbox/component-queueing-2 63d15c5c3 -> 1fd9d57c0


WICKET-3335 test fixes


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

Branch: refs/heads/sandbox/component-queueing-2
Commit: 1fd9d57c0954f393e7cf6b6391d2f69c2815674d
Parents: 63d15c5
Author: Igor Vaynberg <[email protected]>
Authored: Thu Feb 20 23:09:43 2014 -0800
Committer: Igor Vaynberg <[email protected]>
Committed: Thu Feb 20 23:18:25 2014 -0800

----------------------------------------------------------------------
 .../java/org/apache/wicket/DequeueContext.java  | 44 +++++++++++++-----
 .../java/org/apache/wicket/MarkupContainer.java | 48 ++++++++++++++++----
 .../wicket/markup/html/border/Border.java       | 12 +++--
 .../markup/repeater/AbstractRepeater.java       |  4 +-
 .../markupFragments/MarkupFragmentTest.java     |  2 +
 5 files changed, 85 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1fd9d57c/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java 
b/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
index 99c102d..a5bb925 100644
--- a/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
+++ b/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
@@ -1,9 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.wicket;
 
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupElement;
 import org.apache.wicket.util.collections.ArrayListStack;
+import org.apache.wicket.util.lang.Args;
 
 /**
  * Context for component dequeueing. Keeps track of markup position and 
container stack.
@@ -71,7 +88,7 @@ public final class DequeueContext
        }
 
        /**
-        * Peeks markup tag that would be retrieved by call to {@link #popTag()}
+        * Peeks markup tag that would be retrieved by call to {@link 
#takeTag()}
         * 
         * @return
         */
@@ -85,27 +102,30 @@ public final class DequeueContext
         * 
         * @return
         */
-       public ComponentTag popTag()
+       public ComponentTag takeTag()
        {
-               ComponentTag taken = next;
-               tags.push(taken);
-               next = nextTag();
+               ComponentTag taken=next;
+               if (taken.isOpen() && !taken.hasNoCloseTag())
+               {
+                       tags.push(taken);
+               }
+               else if (tags.size() > 0 && taken.closes(tags.peek()))
+               {
+                       tags.pop();
+               }
+               next=nextTag();
                return taken;
        }
        
        /**
-        * Skips to the closing tag of the tag retrieved from last call to 
{@link #popTag()}
+        * Skips to the closing tag of the tag retrieved from last call to 
{@link #takeTag()}
         */
        public void skipToCloseTag()
        {
-               if (tags.peek().isOpen())
-               {
                        while (!next.closes(tags.peek()))
                        {
                                next = nextTag();
                        }
-                       tags.pop();
-               }
        }
        
        private ComponentTag nextTag()
@@ -117,7 +137,7 @@ public final class DequeueContext
                        {
                                ComponentTag tag = (ComponentTag)element;
                                ComponentTag open = tag.isClose() ? 
tag.getOpenTag() : tag;
-                               if (canDequeueTag(open))
+                               if (open != null && canDequeueTag(open))
                                {
                                        index++;
                                        return tag;
@@ -129,6 +149,8 @@ public final class DequeueContext
        
        private boolean canDequeueTag(ComponentTag open)
        {
+               Args.notNull(open, "open");
+
                if (containers.size() < 1)
                {
                        // TODO queueing message: called too early

http://git-wip-us.apache.org/repos/asf/wicket/blob/1fd9d57c/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 f6f0255..3cc5fcc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -1715,6 +1715,17 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                return result;
        }
 
+       @Override
+       protected void onBeforeRender()
+       {
+               super.onBeforeRender();
+               // if (this instanceof IQueueRegion)
+               // {
+               // dequeue();
+               // }
+       }
+
+
        /**
         * 
         * @see org.apache.wicket.Component#onBeforeRenderChildren()
@@ -2079,9 +2090,10 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
        {
                while (dequeue.isAtOpenOrOpenCloseTag())
                {
-                       ComponentTag tag = dequeue.popTag();
-
+                       ComponentTag tag = dequeue.takeTag();
+       
                        // see if child is already added to parent
+
                        Component child = get(tag.getId()); // TODO queueing 
add this into findInQueue and
                                                                                
                // rename it to dequeue
        
@@ -2101,24 +2113,40 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                                        }
                                }
                        }
-
-                       if (child == null || tag.isOpenClose() || !(child 
instanceof MarkupContainer))
+                       if (child == null || !(child instanceof 
MarkupContainer))
                        {
                                // could not dequeue, or does not contain 
children
-                               dequeue.skipToCloseTag();
+       
+                               if (tag.isOpen())
+                               {
+                                       dequeue.skipToCloseTag();
+                               }
                        }
                        else
                        {
                                MarkupContainer container = 
(MarkupContainer)child;
-                               dequeue.pushContainer(container);
-                               container.dequeue(dequeue);
-                               dequeue.popContainer();
+                               if (container instanceof IQueueRegion)
+                               {
+                                       // if this is a dequeue container we do 
not process its markup, it will do so
+                                       // itself when it is dequeued for the 
first time
+                                       if (tag.isOpen())
+                                       {
+                                               dequeue.skipToCloseTag();
+                                       }
+                               }
+                               else if (tag.isOpen())
+                               {
+                                       // this component has more markup and 
possibly more children to dequeue
+                                       dequeue.pushContainer(container);
+                                       container.dequeue(dequeue);
+                                       dequeue.popContainer();
+                               }
                        }
 
-                       if (tag.isOpen() && tag.hasNoCloseTag() == false)
+                       if (tag.isOpen() && !tag.hasNoCloseTag())
                        {
                                // pull the close tag off
-                               ComponentTag close = dequeue.popTag();
+                               ComponentTag close = dequeue.takeTag();
                                if (!close.closes(tag))
                                {
                                        // sanity check

http://git-wip-us.apache.org/repos/asf/wicket/blob/1fd9d57c/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 057553c..c44d60b 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
@@ -163,7 +163,7 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
                super(id, model);
 
                body = new BorderBodyContainer(id + "_" + BODY);
-               queueToBorder(body);
+               addToBorder(body);
        }
 
        /**
@@ -540,8 +540,14 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
                @Override
                public IMarkupFragment getDequeueMarkup()
                {
-                       Border border = findParent(Border.class);
-                       IMarkupFragment fragment = border.getMarkup();
+                       Border border=findParent(Border.class);
+                       IMarkupFragment 
fragment=findParent(Border.class).getMarkup();
+
+                       if (fragment == null)
+                       {
+                               return null;
+                       }
+
                        /*
                         * we want to get the contents of the border here (the 
markup that
                         * is represented by the body tag) to do this we need 
to strip the

http://git-wip-us.apache.org/repos/asf/wicket/blob/1fd9d57c/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
index 7b7bb4e..c71ef08 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
@@ -177,6 +177,8 @@ public abstract class AbstractRepeater extends 
WebMarkupContainer
                                }
                        }       
                }
-               dequeue.skipToCloseTag();
+
+                       dequeue.skipToCloseTag();
+
        }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/1fd9d57c/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
index 83b518f..fa91473 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
@@ -178,6 +178,7 @@ public class MarkupFragmentTest extends WicketTestCase
 
                assertNull(border.getBodyContainer().getAssociatedMarkup());
 
+               border.dequeue();
                markup = border.getBodyContainer().getMarkup();
                compareMarkupWithString(markup, "<wicket:body/>");
 
@@ -218,6 +219,7 @@ public class MarkupFragmentTest extends WicketTestCase
                assertNull(border.getBodyContainer().getAssociatedMarkup());
 
                // See explanation in BaseBorder.BorderBodyContainer.getMarkup()
+               border.dequeue();
                markup = 
border.getBodyContainer().getParent().getMarkup(border.getBodyContainer());
                compareMarkupWithString(markup, 
"<wicket:body>333</wicket:body>");
 

Reply via email to