You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2014/02/21 08:37:56 UTC

[31/31] git commit: WICKET-3335 test fixes

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/723d7d3c
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/723d7d3c
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/723d7d3c

Branch: refs/heads/master
Commit: 723d7d3c9ebe8336897d75d3754685384f017b3a
Parents: abb316c
Author: Igor Vaynberg <ig...@gmail.com>
Authored: Thu Feb 20 23:09:43 2014 -0800
Committer: Igor Vaynberg <ig...@gmail.com>
Committed: Thu Feb 20 23:37:17 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/723d7d3c/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/723d7d3c/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/723d7d3c/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/723d7d3c/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/723d7d3c/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>");