You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2010/10/17 12:51:06 UTC

svn commit: r1023452 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html: WebMarkupContainerWithAssociatedMarkup.java border/Border.java form/FormComponentPanel.java panel/Panel.java

Author: jdonnerstag
Date: Sun Oct 17 10:51:06 2010
New Revision: 1023452

URL: http://svn.apache.org/viewvc?rev=1023452&view=rev
Log:
eliminated copy & paste around getMarkup() with Panel and FormComponentPanel

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java?rev=1023452&r1=1023451&r2=1023452&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/WebMarkupContainerWithAssociatedMarkup.java Sun Oct 17 10:51:06 2010
@@ -88,13 +88,12 @@ public class WebMarkupContainerWithAssoc
 	/**
 	 * Search the child's markup in the header section of the markup
 	 * 
-	 * @param markup
 	 * @param child
 	 * @return Null, if not found
 	 */
-	public IMarkupFragment findMarkupInAssociatedFileHeader(final IMarkupFragment markup,
-		final Component child)
+	public IMarkupFragment findMarkupInAssociatedFileHeader(final Component child)
 	{
+		IMarkupFragment markup = getAssociatedMarkup();
 		IMarkupFragment childMarkup = null;
 		MarkupStream stream = new MarkupStream(markup);
 		while (stream.skipUntil(ComponentTag.class) && (childMarkup == null))

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java?rev=1023452&r1=1023451&r2=1023452&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/border/Border.java Sun Oct 17 10:51:06 2010
@@ -405,7 +405,7 @@ public abstract class Border extends Web
 			return childMarkup;
 		}
 
-		return findMarkupInAssociatedFileHeader(markup, child);
+		return findMarkupInAssociatedFileHeader(child);
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java?rev=1023452&r1=1023451&r2=1023452&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java Sun Oct 17 10:51:06 2010
@@ -19,12 +19,11 @@ package org.apache.wicket.markup.html.fo
 import org.apache.wicket.Component;
 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.WicketTag;
 import org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper;
 import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.html.panel.Panel.PanelMarkupHelper;
 import org.apache.wicket.markup.parser.XmlTag;
 import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
 import org.apache.wicket.model.IModel;
@@ -226,66 +225,6 @@ public abstract class FormComponentPanel
 	@Override
 	public IMarkupFragment getMarkup(final Component child)
 	{
-		IMarkupFragment markup = getAssociatedMarkup();
-		if (markup == null)
-		{
-			throw new MarkupException("Failed to find associated markup file. Component: " +
-				toString());
-		}
-
-		// Find <wicket:panel>
-		IMarkupFragment panelMarkup = findPanelTag(markup);
-		if (panelMarkup == null)
-		{
-			throw new MarkupException(
-				"Expected to find <wicket:panel> in associated markup file. Markup: " +
-					markup.toString());
-		}
-
-		// If child == null, return the markup starting with <wicket:panel>
-		if (child == null)
-		{
-			return panelMarkup;
-		}
-
-		// else, find the markup fragment for the child component
-		return panelMarkup.find(child.getId());
-	}
-
-	/**
-	 * Search for &lt;wicket:'name' ...&gt; on the same level, but ignoring other "transparent" tags
-	 * such as &lt;wicket:enclosure&gt; etc.
-	 * 
-	 * @param markup
-	 * @param name
-	 * @return null, if not found
-	 */
-	private final IMarkupFragment findPanelTag(final IMarkupFragment markup)
-	{
-		MarkupStream stream = new MarkupStream(markup);
-
-		while (stream.skipUntil(ComponentTag.class))
-		{
-			ComponentTag tag = stream.getTag();
-			if (tag.isOpen() || tag.isOpenClose())
-			{
-				if (tag instanceof WicketTag)
-				{
-					WicketTag wtag = (WicketTag)tag;
-					if (wtag.isPanelTag())
-					{
-						return stream.getMarkupFragment();
-					}
-				}
-				if (tag.isOpen() && !tag.hasNoCloseTag() && !(tag instanceof WicketTag))
-				{
-					stream.skipToMatchingCloseTag(tag);
-				}
-			}
-
-			stream.next();
-		}
-
-		return null;
+		return PanelMarkupHelper.getMarkup(this, child);
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java?rev=1023452&r1=1023451&r2=1023452&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Panel.java Sun Oct 17 10:51:06 2010
@@ -17,6 +17,7 @@
 package org.apache.wicket.markup.html.panel;
 
 import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupException;
@@ -138,68 +139,87 @@ public abstract class Panel extends WebM
 	@Override
 	public IMarkupFragment getMarkup(final Component child)
 	{
-		IMarkupFragment markup = getAssociatedMarkup();
-		if (markup == null)
+		IMarkupFragment markup = PanelMarkupHelper.getMarkup(this, child);
+		if ((child == null) || (markup != null))
 		{
-			throw new MarkupNotFoundException(
-				"Failed to find markup file associated with panel. Panel: " + this.toString());
+			return markup;
 		}
 
-		// Find <wicket:panel>
-		IMarkupFragment panelMarkup = findPanelTag(markup);
-		if (panelMarkup == null)
-		{
-			throw new MarkupNotFoundException(
-				"Expected to find <wicket:panel> in associated markup file. Markup: " +
-					markup.toString());
-		}
-
-		// If child == null, than return the markup fragment starting with <wicket:panel>
-		if (child == null)
-		{
-			return panelMarkup;
-		}
-
-		// Find the markup for the child component
-		IMarkupFragment childMarkup = panelMarkup.find(child.getId());
-		if (childMarkup != null)
-		{
-			return childMarkup;
-		}
-
-		return findMarkupInAssociatedFileHeader(markup, child);
+		return findMarkupInAssociatedFileHeader(child);
 	}
 
 	/**
-	 * Search for &lt;wicket:panel ...&gt; on the same level.
+	 * Re-useable helper
 	 * 
-	 * @param markup
-	 * @param name
-	 * @return null, if not found
 	 */
-	private final IMarkupFragment findPanelTag(final IMarkupFragment markup)
+	public static class PanelMarkupHelper
 	{
-		MarkupStream stream = new MarkupStream(markup);
+		/**
+		 * @see org.apache.wicket.MarkupContainer#getMarkup(org.apache.wicket.Component)
+		 * 
+		 * @param parent
+		 * @param child
+		 * @return The markup associated with the child
+		 */
+		public static IMarkupFragment getMarkup(final MarkupContainer parent, final Component child)
+		{
+			IMarkupFragment markup = parent.getAssociatedMarkup();
+			if (markup == null)
+			{
+				throw new MarkupNotFoundException("Failed to find markup file associated. " +
+					parent.getClass().getSimpleName() + ": " + parent.toString());
+			}
 
-		while (stream.skipUntil(ComponentTag.class))
+			// Find <wicket:panel>
+			IMarkupFragment panelMarkup = findPanelTag(markup);
+			if (panelMarkup == null)
+			{
+				throw new MarkupNotFoundException(
+					"Expected to find <wicket:panel> in associated markup file. Markup: " +
+						markup.toString());
+			}
+
+			// If child == null, than return the markup fragment starting with <wicket:panel>
+			if (child == null)
+			{
+				return panelMarkup;
+			}
+
+			// Find the markup for the child component
+			return panelMarkup.find(child.getId());
+		}
+
+		/**
+		 * Search for &lt;wicket:panel ...&gt; on the same level.
+		 * 
+		 * @param markup
+		 * @param name
+		 * @return null, if not found
+		 */
+		private final static IMarkupFragment findPanelTag(final IMarkupFragment markup)
 		{
-			ComponentTag tag = stream.getTag();
-			if (tag.isOpen() || tag.isOpenClose())
+			MarkupStream stream = new MarkupStream(markup);
+
+			while (stream.skipUntil(ComponentTag.class))
 			{
-				if (tag instanceof WicketTag)
+				ComponentTag tag = stream.getTag();
+				if (tag.isOpen() || tag.isOpenClose())
 				{
-					WicketTag wtag = (WicketTag)tag;
-					if (wtag.isPanelTag())
+					if (tag instanceof WicketTag)
 					{
-						return stream.getMarkupFragment();
+						WicketTag wtag = (WicketTag)tag;
+						if (wtag.isPanelTag())
+						{
+							return stream.getMarkupFragment();
+						}
 					}
+					stream.skipToMatchingCloseTag(tag);
 				}
-				stream.skipToMatchingCloseTag(tag);
+
+				stream.next();
 			}
 
-			stream.next();
+			return null;
 		}
-
-		return null;
 	}
 }