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 2006/11/05 10:49:42 UTC

svn commit: r471388 - in /incubator/wicket/trunk/wicket/src/main/java/wicket/markup: MarkupCache.java loader/AbstractMarkupLoader.java loader/DefaultMarkupLoader.java loader/HeaderCleanupMarkupLoader.java

Author: jdonnerstag
Date: Sun Nov  5 01:49:41 2006
New Revision: 471388

URL: http://svn.apache.org/viewvc?view=rev&rev=471388
Log:
javadoc and cleanups related to recent <wicket:head> changes

Added:
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java   (with props)
Modified:
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/AbstractMarkupLoader.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java?view=diff&rev=471388&r1=471387&r2=471388
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java Sun Nov  5 01:49:41 2006
@@ -28,8 +28,8 @@
 import wicket.Application;
 import wicket.MarkupContainer;
 import wicket.WicketRuntimeException;
-import wicket.markup.loader.AbstractMarkupLoader;
 import wicket.markup.loader.DefaultMarkupLoader;
+import wicket.markup.loader.HeaderCleanupMarkupLoader;
 import wicket.markup.loader.IMarkupLoader;
 import wicket.markup.loader.InheritedMarkupMarkupLoader;
 import wicket.util.listener.IChangeListener;
@@ -413,10 +413,11 @@
 	 */
 	protected IMarkupLoader newMarkupLoader()
 	{
-		AbstractMarkupLoader loaderChain = new InheritedMarkupMarkupLoader(application);
-		loaderChain.setParent(new DefaultMarkupLoader(application));
-
-		return loaderChain;
+		return new InheritedMarkupMarkupLoader(application)
+			.setParent(
+					new HeaderCleanupMarkupLoader(application)
+						.setParent(
+								new DefaultMarkupLoader(application)));
 	}
 
 	/**

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/AbstractMarkupLoader.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/AbstractMarkupLoader.java?view=diff&rev=471388&r1=471387&r2=471388
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/AbstractMarkupLoader.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/AbstractMarkupLoader.java Sun Nov  5 01:49:41 2006
@@ -26,7 +26,7 @@
 import wicket.util.resource.ResourceStreamNotFoundException;
 
 /**
- * Default implementation of a IMarkupLoader. We expect most real
+ * Abstract implementation of a IMarkupLoader. We expect most real
  * implementations of IMarkupLoader to provide there own loadMarkup()
  * implementation and call the default implementation provided in this class if
  * chaining the loaders is required.
@@ -45,12 +45,15 @@
 	}
 
 	/**
+	 * Sets the parent markup loader which allows to chains them.
 	 * 
 	 * @param parent
+	 * @return parent
 	 */
-	public void setParent(final IMarkupLoader parent)
+	public IMarkupLoader setParent(final IMarkupLoader parent)
 	{
 		this.parentLoader = parent;
+		return this;
 	}
 
 	/**

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java?view=diff&rev=471388&r1=471387&r2=471388
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java Sun Nov  5 01:49:41 2006
@@ -22,7 +22,6 @@
 
 import wicket.Application;
 import wicket.MarkupContainer;
-import wicket.markup.MarkupElement;
 import wicket.markup.MarkupFragment;
 import wicket.markup.MarkupResourceStream;
 import wicket.util.resource.ResourceStreamNotFoundException;
@@ -60,42 +59,6 @@
 		MarkupFragment markup = application.getMarkupSettings().getMarkupParserFactory()
 				.newMarkupParser(markupResourceStream).readAndParse();
 
-		checkHeaders(markup);
-
 		return markup;
-	}
-
-	/**
-	 * On Pages with wicket:head and automatically added head tag, move the
-	 * wicket:head tags inside the head tag.
-	 * 
-	 * @param markup
-	 */
-	private void checkHeaders(final MarkupFragment markup)
-	{
-		final MarkupFragment header = MarkupFragmentUtils.getHeadTag(markup);
-		if (header != null)
-		{
-			markup.visitChildren(MarkupFragment.class, new MarkupFragment.IVisitor()
-			{
-				public Object visit(final MarkupElement element, final MarkupFragment parent)
-				{
-					if (element == header)
-					{
-						return CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
-					}
-
-					if (((MarkupFragment)element).getTag().isWicketHeadTag())
-					{
-						if (parent.removeMarkupElement(element) == true)
-						{
-							header.addMarkupElement(header.size() - 1, element);
-						}
-					}
-
-					return CONTINUE_TRAVERSAL;
-				}
-			});
-		}
 	}
 }

Added: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java?view=auto&rev=471388
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java (added)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java Sun Nov  5 01:49:41 2006
@@ -0,0 +1,94 @@
+/*
+ * $Id: MarkupCache.java 4639 2006-02-26 01:44:07 -0800 (Sun, 26 Feb 2006)
+ * jdonnerstag $ $Revision$ $Date: 2006-02-26 01:44:07 -0800 (Sun, 26 Feb
+ * 2006) $
+ * 
+ * ==============================================================================
+ * Licensed 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 wicket.markup.loader;
+
+import java.io.IOException;
+
+import wicket.Application;
+import wicket.MarkupContainer;
+import wicket.markup.MarkupElement;
+import wicket.markup.MarkupFragment;
+import wicket.markup.MarkupResourceStream;
+import wicket.util.resource.ResourceStreamNotFoundException;
+
+/**
+ * On Pages with <wicket:head> and automatically added head tag, it
+ * can happen that <wicket:head> tags are not inside the <head> tag.
+ * Change it by moving <wicket:head> into the <head> tag
+ * 
+ * @author Juergen Donnerstag
+ */
+public class HeaderCleanupMarkupLoader extends AbstractMarkupLoader
+{
+	/** The Wicket application */
+	private final Application application;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param application
+	 */
+	public HeaderCleanupMarkupLoader(final Application application)
+	{
+		this.application = application;
+	}
+
+	/**
+	 * @see wicket.markup.loader.IMarkupLoader#loadMarkup(wicket.MarkupContainer,
+	 *      wicket.markup.MarkupResourceStream)
+	 */
+	public final MarkupFragment loadMarkup(final MarkupContainer container,
+			final MarkupResourceStream markupResourceStream) throws IOException,
+			ResourceStreamNotFoundException
+	{
+		// Invoke the parent markup loader to read and parse the markup
+		final MarkupFragment markup = super.loadMarkup(container, markupResourceStream);
+
+		// On Pages with <wicket:head> and automatically added head tag, it
+		// can happen that <wicket:head> tags are not inside the <head> tag.
+		// Change it by moviing <wicket:head> into the <head> tag
+
+		final MarkupFragment header = MarkupFragmentUtils.getHeadTag(markup);
+		if (header != null)
+		{
+			markup.visitChildren(MarkupFragment.class, new MarkupFragment.IVisitor()
+			{
+				public Object visit(final MarkupElement element, final MarkupFragment parent)
+				{
+					if (element == header)
+					{
+						return CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
+					}
+
+					if (((MarkupFragment)element).getTag().isWicketHeadTag())
+					{
+						if (parent.removeMarkupElement(element) == true)
+						{
+							header.addMarkupElement(header.size() - 1, element);
+						}
+					}
+
+					return CONTINUE_TRAVERSAL;
+				}
+			});
+		}
+
+		return markup;
+	}
+}

Propchange: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java
------------------------------------------------------------------------------
    svn:keywords = "LastChangedDate LastChangedRevision URL"