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/12/03 20:05:34 UTC

svn commit: r1041955 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket: ./ markup/ markup/html/panel/ markup/resolver/ request/handler/

Author: jdonnerstag
Date: Fri Dec  3 19:05:33 2010
New Revision: 1041955

URL: http://svn.apache.org/viewvc?rev=1041955&view=rev
Log:
transient MarkupContainer.markupStream no longer needed (because of markup fragments)

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupCache.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/PageProvider.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Fri Dec  3 19:05:33 2010
@@ -2154,7 +2154,7 @@ public abstract class Component
 	 *            if this is false only the PREPARED_FOR_RENDER flag is removed from component, the
 	 *            RENDERING flag is not set.
 	 * 
-	 * @see #prepareForRender(boolean)
+	 * @see #internalPrepareForRender(boolean)
 	 */
 	public final void markRendering(boolean setRenderingFlag)
 	{
@@ -2194,19 +2194,14 @@ public abstract class Component
 	 * <p>
 	 * Prepares the component and it's children for rendering. On whole page render this method must
 	 * be called on the page. On AJAX request, this method must be called on updated component.
-	 * </p>
-	 * 
-	 * TODO this method is not part of public api, so rename to internalPrepareForRender
 	 * 
 	 * @param setRenderingFlag
 	 *            Whether to set the rendering flag. This must be true if the page is about to be
 	 *            rendered. However, there are usecases to call this method without an immediate
 	 *            render (e.g. on stateless listner request target to build the component
 	 *            hierarchy), in that case setRenderingFlag should be false
-	 * 
-	 * 
 	 */
-	public void prepareForRender(boolean setRenderingFlag)
+	public void internalPrepareForRender(boolean setRenderingFlag)
 	{
 		beforeRender();
 
@@ -2245,7 +2240,7 @@ public abstract class Component
 	 */
 	public final void prepareForRender()
 	{
-		prepareForRender(true);
+		internalPrepareForRender(true);
 	}
 
 	/**
@@ -2291,11 +2286,11 @@ public abstract class Component
 			MarkupContainer parent = getParent();
 			if ((parent == null) || (parent.getFlag(FLAG_RENDERING) == false) || isAuto())
 			{
-				prepareForRender(true);
+				internalPrepareForRender(true);
 			}
 
 			// Do the render
-			render_();
+			internalRender();
 		}
 		catch (final RuntimeException ex)
 		{
@@ -2329,20 +2324,19 @@ public abstract class Component
 	/**
 	 * Performs a render of this component as part of a Page level render process.
 	 */
-	private final void render_()
+	private final void internalRender()
 	{
-		// Step 1: Make sure there is a markup available for the Component
+		// Make sure there is a markup available for the Component
 		IMarkupFragment markup = getMarkup();
 		if (markup == null)
 		{
 			throw new MarkupNotFoundException("Markup not found for Component: " + toString());
 		}
 
-		// Step 2: A markup stream based on the markup should yield the same result.
-		// We want to use the new markup stream
+		// MarkupStream is an Iterator for the markup
 		MarkupStream markupStream = new MarkupStream(markup);
-		setMarkupStream(markupStream);
 
+		// Flag: we stated the render process
 		markRendering(true);
 
 		MarkupElement elem = markup.get(0);
@@ -3956,21 +3950,6 @@ public abstract class Component
 	}
 
 	/**
-	 * The markup stream will be assigned to the component at the beginning of the component render
-	 * phase. It is temporary working variable only.
-	 * 
-	 * @see #findMarkupStream()
-	 * @see MarkupContainer#getMarkupStream()
-	 * 
-	 * @param markupStream
-	 *            The current markup stream which should be applied by the component to render
-	 *            itself
-	 */
-	protected void setMarkupStream(final MarkupStream markupStream)
-	{
-	}
-
-	/**
 	 * @param <V>
 	 *            The model type
 	 * @param model

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java Fri Dec  3 19:05:33 2010
@@ -100,12 +100,6 @@ public abstract class MarkupContainer ex
 	private Object children;
 
 	/**
-	 * The markup stream for this container. This variable is used only during the render phase to
-	 * provide access to the current element within the stream.
-	 */
-	private transient MarkupStream markupStream;
-
-	/**
 	 * @see org.apache.wicket.Component#Component(String)
 	 */
 	public MarkupContainer(final String id)
@@ -447,16 +441,6 @@ public abstract class MarkupContainer ex
 	}
 
 	/**
-	 * Get the markup stream set on this container.
-	 * 
-	 * @return Returns the markup stream set on this container.
-	 */
-	public final MarkupStream getMarkupStream()
-	{
-		return markupStream;
-	}
-
-	/**
 	 * Get the childs markup
 	 * 
 	 * @see Component#getMarkup()
@@ -691,8 +675,8 @@ public abstract class MarkupContainer ex
 	}
 
 	/**
-	 * Renders the entire associated markup stream for a container such as a Border or Panel. Any
-	 * leading or trailing raw markup in the associated markup is skipped.
+	 * Renders the entire associated markup for a container such as a Border or Panel. Any leading
+	 * or trailing raw markup in the associated markup is skipped.
 	 * 
 	 * @param openTagName
 	 *            the tag to render the associated markup for
@@ -702,11 +686,8 @@ public abstract class MarkupContainer ex
 	public final void renderAssociatedMarkup(final String openTagName, final String exceptionMessage)
 	{
 		// Get markup associated with Border or Panel component
-		final MarkupStream originalMarkupStream = getMarkupStream();
 		final MarkupStream associatedMarkupStream = new MarkupStream(getMarkup(null));
 
-		setMarkupStream(associatedMarkupStream);
-
 		// Get open tag in associated markup of border component
 		MarkupElement elem = associatedMarkupStream.get();
 		if ((elem instanceof ComponentTag) == false)
@@ -753,7 +734,6 @@ public abstract class MarkupContainer ex
 			}
 
 			renderClosingComponentTag(associatedMarkupStream, associatedMarkupOpenTag, false);
-			setMarkupStream(originalMarkupStream);
 		}
 		finally
 		{
@@ -876,9 +856,9 @@ public abstract class MarkupContainer ex
 		buffer.append(super.toString(detailed));
 		if (detailed)
 		{
-			if (getMarkupStream() != null)
+			if (getMarkup() != null)
 			{
-				buffer.append(", markupStream = " + getMarkupStream());
+				buffer.append(", markup = " + new MarkupStream(getMarkup()).toString());
 			}
 
 			if (children_size() != 0)
@@ -912,7 +892,7 @@ public abstract class MarkupContainer ex
 	 * 
 	 * @param <S>
 	 *            The type that goes into the Visitor.component() method.
-	 * 
+	 * @param <R>
 	 * @param clazz
 	 *            The class of child to visit, or null to visit all children
 	 * @param visitor
@@ -920,7 +900,6 @@ public abstract class MarkupContainer ex
 	 * @return The return value from a visitor which halted the traversal, or null if the entire
 	 *         traversal occurred
 	 */
-
 	public final <S extends Component, R> R visitChildren(final Class<?> clazz,
 		final IVisitor<S, R> visitor)
 	{
@@ -931,6 +910,7 @@ public abstract class MarkupContainer ex
 	 * Traverses all child components in this container, calling the visitor's visit method at each
 	 * one.
 	 * 
+	 * @param <R>
 	 * @param visitor
 	 *            The visitor to call back to
 	 * @return The return value from a visitor which halted the traversal, or null if the entire
@@ -1609,18 +1589,6 @@ public abstract class MarkupContainer ex
 	}
 
 	/**
-	 * Set markup stream for this container.
-	 * 
-	 * @param markupStream
-	 *            The markup stream
-	 */
-	@Override
-	protected final void setMarkupStream(final MarkupStream markupStream)
-	{
-		this.markupStream = markupStream;
-	}
-
-	/**
 	 * 
 	 */
 	private static class ComponentSourceEntry extends org.apache.wicket.ComponentSourceEntry

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java Fri Dec  3 19:05:33 2010
@@ -377,17 +377,17 @@ public abstract class Page extends Marku
 	}
 
 	/**
-	 * @see org.apache.wicket.Component#prepareForRender(boolean)
+	 * @see org.apache.wicket.Component#internalPrepareForRender(boolean)
 	 */
 	@Override
-	public void prepareForRender(boolean setRenderingFlag)
+	public void internalPrepareForRender(boolean setRenderingFlag)
 	{
 		if (!getFlag(FLAG_INITIALIZED))
 		{
 			// initialize the page if not yet initialized
 			initialize();
 		}
-		super.prepareForRender(setRenderingFlag);
+		super.internalPrepareForRender(setRenderingFlag);
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java Fri Dec  3 19:05:33 2010
@@ -19,7 +19,6 @@ package org.apache.wicket.markup;
 import java.util.Locale;
 
 import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.util.string.AppendingStringBuffer;
 
 
 /**
@@ -40,7 +39,7 @@ public class DefaultMarkupCacheKeyProvid
 
 	/**
 	 * Construct a proper key value for the cache
-	 *
+	 * 
 	 * @param container
 	 *            The container requesting the markup
 	 * @param clazz
@@ -51,7 +50,7 @@ public class DefaultMarkupCacheKeyProvid
 	public String getCacheKey(final MarkupContainer container, final Class<?> clazz)
 	{
 		final String classname = clazz.getName();
-		final AppendingStringBuffer buffer = new AppendingStringBuffer(classname.length() + 64);
+		final StringBuilder buffer = new StringBuilder(classname.length() + 64);
 		buffer.append(classname);
 
 		final Locale locale = container.getLocale();
@@ -63,7 +62,7 @@ public class DefaultMarkupCacheKeyProvid
 			final boolean hasLocale = locale.getLanguage().length() != 0;
 			final boolean hasCountry = locale.getCountry().length() != 0;
 			final boolean hasVariant = locale.getVariant().length() != 0;
-			
+
 			if (hasCountry || (hasLocale && hasVariant))
 			{
 				buffer.append('_').append(locale.getCountry());
@@ -74,13 +73,16 @@ public class DefaultMarkupCacheKeyProvid
 			}
 		}
 		if (container.getStyle() != null)
+		{
 			buffer.append('_').append(container.getStyle());
+		}
 
 		if (container.getVariation() != null)
+		{
 			buffer.append('_').append(container.getVariation());
+		}
 
 		buffer.append('.').append(container.getMarkupType().getExtension());
-
 		return buffer.toString();
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupCache.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupCache.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupCache.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/IMarkupCache.java Fri Dec  3 19:05:33 2010
@@ -21,8 +21,8 @@ import org.apache.wicket.settings.IMarku
 
 /**
  * Each Wicket application has a single IMarkupCache associated with it (see {@link IMarkupSettings}
- * ). The markup cache is used by every Component to get its associated markup stream. Note that it
- * is the markup caches responsibility to load the markup, if not yet done.
+ * ). Via {@link MarkupFactory} the markup cache is used by every Component to get its associated
+ * markup stream.
  * 
  * @author Juergen Donnerstag
  */

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/MarkupCache.java Fri Dec  3 19:05:33 2010
@@ -43,6 +43,7 @@ import org.slf4j.LoggerFactory;
  * version.
  * 
  * @see IMarkupSettings
+ * @see MarkupFactory
  * 
  * @author Jonathan Locke
  * @author Juergen Donnerstag
@@ -52,10 +53,10 @@ public class MarkupCache implements IMar
 	/** Log for reporting. */
 	private static final Logger log = LoggerFactory.getLogger(MarkupCache.class);
 
-	/** Map of markup tags by class (exactly what is in the file). */
+	/** The actual cache: location => Markup */
 	private final ICache<CharSequence, Markup> markupCache;
 
-	/** Map of markup tags by class (exactly what is in the file). */
+	/** Add extra indirection to the cache: key => location */
 	private final ICache<CharSequence, CharSequence> markupKeyCache;
 
 	/** The markup cache key provider used by MarkupCache */
@@ -378,7 +379,7 @@ public class MarkupCache implements IMar
 	{
 		if (cacheKey != null)
 		{
-			String locationString = (String)markupKeyCache.get(cacheKey);
+			CharSequence locationString = markupKeyCache.get(cacheKey);
 			if (locationString != null)
 			{
 				return markupCache.get(locationString);

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java Fri Dec  3 19:05:33 2010
@@ -166,7 +166,6 @@ public class Fragment extends WebMarkupC
 	private void renderFragment(final ComponentTag openTag)
 	{
 		MarkupStream stream = new MarkupStream(getMarkup(null));
-		setMarkupStream(stream);
 
 		// Get the fragments open tag
 		ComponentTag fragmentOpenTag = stream.getTag();

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java Fri Dec  3 19:05:33 2010
@@ -47,8 +47,8 @@ import org.slf4j.LoggerFactory;
  * "autolink" by the MarkupParser for all tags with href attribute, such as anchor and link tags
  * with no explicit wicket id. E.g. &lt;a href="Home.html"&gt;
  * <p>
- * If href points to a *.html file, a BookmarkablePageLink<?> will automatically be created, except for
- * absolute paths, where an ExternalLink is created.
+ * If href points to a *.html file, a BookmarkablePageLink<?> will automatically be created, except
+ * for absolute paths, where an ExternalLink is created.
  * <p>
  * If href points to a *.html file, it resolves the given URL by searching for a page class, either
  * relative or absolute, specified by the href attribute of the tag. If relative the href URL must
@@ -90,22 +90,22 @@ public final class AutoLinkResolver impl
 		{
 			if (!pathInfo.absolute && (pathInfo.path != null) && (pathInfo.path.length() > 0))
 			{
-				// Href is relative. Create a resource reference pointing at
-				// this file
+				// Href is relative. Create a resource reference pointing at this file
 
 				// <wicket:head> components are handled differently. We can
 				// not use the container, because it is the container the
 				// header has been added to (e.g. the Page). What we need
 				// however, is the component (e.g. a Panel) which
 				// contributed it.
-				Class<? extends Component> clazz = container.getMarkupStream().getContainerClass();
+				MarkupStream markupStream = new MarkupStream(container.getMarkup());
+				Class<? extends Component> clazz = markupStream.getContainerClass();
 
 				// However if the markup stream is a merged markup stream (inheritance), than we
 				// need the class of the markup file which contained the tag.
-				if ((container.getMarkupStream().get() instanceof ComponentTag) &&
-					(container.getMarkupStream().getTag().getMarkupClass() != null))
+				if ((markupStream.get() instanceof ComponentTag) &&
+					(markupStream.getTag().getMarkupClass() != null))
 				{
-					clazz = container.getMarkupStream().getTag().getMarkupClass();
+					clazz = markupStream.getTag().getMarkupClass();
 				}
 
 				// Create the component implementing the link
@@ -441,11 +441,10 @@ public final class AutoLinkResolver impl
 					parentWithContainer = container.findParentWithAssociatedMarkup();
 				}
 				if ((parentWithContainer instanceof Page) && !pathInfo.path.startsWith("/") &&
-					page.getMarkupStream().isMergedMarkup())
+					new MarkupStream(page.getMarkup()).isMergedMarkup())
 				{
-					Class<? extends Page> clazz = (Class<? extends Page>)container.getMarkupStream()
-						.getTag()
-						.getMarkupClass();
+					Class<? extends Page> clazz = (Class<? extends Page>)new MarkupStream(
+						container.getMarkup()).getTag().getMarkupClass();
 					if (clazz != null)
 					{
 						// Href is relative. Resolve the url given relative to

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/PageProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/PageProvider.java?rev=1041955&r1=1041954&r2=1041955&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/PageProvider.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/PageProvider.java Fri Dec  3 19:05:33 2010
@@ -260,7 +260,7 @@ public class PageProvider implements IPa
 				freshCreated = true;
 				if (prepareForRenderNewPage() && page instanceof Page)
 				{
-					((Page)page).prepareForRender(false);
+					((Page)page).internalPrepareForRender(false);
 				}
 			}
 		}