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 17:57:09 UTC

svn commit: r471461 - in /incubator/wicket/trunk/wicket/src/main/java/wicket: ./ markup/html/ markup/loader/ markup/parser/filter/ markup/parser/onLoadListener/ markup/resolver/ protocol/http/portlet/

Author: jdonnerstag
Date: Sun Nov  5 08:57:08 2006
New Revision: 471461

URL: http://svn.apache.org/viewvc?view=rev&rev=471461
Log:
further cleanup of header changes

Modified:
    incubator/wicket/trunk/wicket/src/main/java/wicket/Application.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/InheritedMarkupMarkupLoader.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/WicketTagIdentifier.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/AbstractMarkupLoadListener.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/IMarkupLoadListener.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/resolver/IComponentResolver.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/protocol/http/portlet/PortletPage.java

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/Application.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/Application.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/Application.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/Application.java Sun Nov  5 08:57:08 2006
@@ -728,6 +728,7 @@
 		pageSettings.addComponentResolver(new FragmentResolver());
 		pageSettings.addComponentResolver(new AutoComponentResolver());
 
+		// Install default markup load listener
 		getMarkupSettings().addMarkupLoadListener(new WicketHeaderMarkupLoadListener());
 
 		// Install button image resource factory

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java Sun Nov  5 08:57:08 2006
@@ -34,9 +34,7 @@
 import wicket.Response;
 import wicket.Session;
 import wicket.behavior.AbstractBehavior;
-import wicket.markup.ComponentTag;
 import wicket.markup.MarkupFragment;
-import wicket.markup.MarkupStream;
 import wicket.markup.html.internal.HeaderContainer;
 import wicket.markup.html.internal.HtmlBodyContainer;
 import wicket.markup.html.internal.HtmlHeaderContainer;
@@ -283,41 +281,13 @@
 	 */
 	protected void onAssociatedMarkupLoaded(final MarkupFragment markup)
 	{
-		if (get(HtmlHeaderSectionHandler.HEADER_ID) == null)
-		{
-			// Add a Body container if the associated markup contains a <body> tag
-			// get markup stream gracefully
-			MarkupStream markupStream = new MarkupStream(markup);
-			
-			// The <body> container. It can be accessed, replaced
-			// and attribute modifiers can be attached. <body> tags without
-			// wicket:id get automatically a wicket:id assigned.
-			while (markupStream.hasMoreComponentTags())
-			{
-				final ComponentTag tag = markupStream.getTag();
-				if (tag.isOpen() && tag.isBodyTag())
-				{
-					// Add a default container if the tag has the default
-					// name. If the tag has a wicket:id, than the user
-					// must create the component.
-					if (BodyOnLoadHandler.BODY_ID.equals(tag.getId()))
-					{
-						new HtmlBodyContainer(this, tag.getId());
-					}
-					// remember the id of the tag
-					bodyContainer = new BodyContainer(this, tag.getId());
-					break;
-				}
-			}
-		}
+		new HtmlBodyContainer(this, BodyOnLoadHandler.BODY_ID);
+		this.bodyContainer = new BodyContainer(this, BodyOnLoadHandler.BODY_ID);
 		
 		// The <head> container. It can be accessed, replaced
 		// and attribute modifiers can be attached.
 		// HtmlHeaderSectionHandler guarantees the <head> tag does exist.
-		if (get(HtmlHeaderSectionHandler.HEADER_ID) == null)
-		{
-			new HtmlHeaderContainer(this, HtmlHeaderSectionHandler.HEADER_ID);
-		}
+		new HtmlHeaderContainer(this, HtmlHeaderSectionHandler.HEADER_ID);
 
 		// if automatic multi window support is on, add a page checker instance
 		if (getApplication().getPageSettings().getAutomaticMultiWindowSupport())

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/InheritedMarkupMarkupLoader.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/InheritedMarkupMarkupLoader.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/InheritedMarkupMarkupLoader.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/InheritedMarkupMarkupLoader.java Sun Nov  5 08:57:08 2006
@@ -37,7 +37,6 @@
 import wicket.markup.MarkupStream;
 import wicket.markup.parser.XmlTag;
 import wicket.markup.parser.filter.HtmlHeaderSectionHandler;
-import wicket.markup.parser.filter.WicketMessageTagHandler;
 import wicket.markup.parser.filter.WicketTagIdentifier;
 import wicket.util.listener.IChangeListener;
 import wicket.util.resource.ResourceStreamNotFoundException;
@@ -263,7 +262,7 @@
 									break;
 								}
 							}
-							
+
 							throw new MarkupException(markupStream,
 									"No wicket components are allowed in the preview area in between the wicket:child tag");
 						}
@@ -439,24 +438,20 @@
 				return CONTINUE_TRAVERSAL;
 			}
 		});
-		
+
 		// Make sure that wicket:head tags don't have doublicate ids.
 		mergedMarkup.visitChildren(MarkupFragment.class, new MarkupFragment.IVisitor()
 		{
 			private int index = 0;
-			
+
 			public Object visit(final MarkupElement element, final MarkupFragment parent)
 			{
-				MarkupFragment fragment = (MarkupFragment) element;
+				MarkupFragment fragment = (MarkupFragment)element;
 				ComponentTag tag = fragment.getTag();
-				if ((tag != null) && tag.isWicketTag() && WicketTagIdentifier.isReqisteredForUniqueId(tag))
+				if ((tag != null) && tag.isWicketTag()
+						&& WicketTagIdentifier.isRegisteredToHaveUniqueId(tag))
 				{
 					String id = Component.AUTO_COMPONENT_PREFIX + tag.getName() + index++;
-					tag.setId(id);
-				}
-				else if ((tag != null) && tag.getId().startsWith(WicketMessageTagHandler.WICKET_MESSAGE_CONTAINER_ID))
-				{
-					String id = WicketMessageTagHandler.WICKET_MESSAGE_CONTAINER_ID + index++;
 					tag.setId(id);
 				}
 				return CONTINUE_TRAVERSAL;

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/WicketTagIdentifier.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/WicketTagIdentifier.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/WicketTagIdentifier.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/WicketTagIdentifier.java Sun Nov  5 08:57:08 2006
@@ -51,16 +51,16 @@
 
 	static
 	{
-		// register wicket:head
+		// register wicket:head, wicket:extend, etc.
 		registerTagWhichRequiresUniqueId("head");
 	}
-	
+
 	/** The current markup needed to get the markups namespace */
 	private final IMarkup markup;
 
 	/** auto increment to create unique ids */
 	private int index;
-	
+
 	/**
 	 * Construct.
 	 * 
@@ -71,7 +71,7 @@
 	{
 		this.markup = markup;
 	}
-	
+
 	/**
 	 * Get the next tag from the next MarkupFilter in the chain and search for
 	 * Wicket specific tags.
@@ -113,7 +113,7 @@
 			}
 			tag.setId(id);
 
-			if (wellKnownTagNames.contains(xmlTag.getName()) == false)
+			if (isRegisteredToHaveUniqueId(tag) == false)
 			{
 				throw new ParseException("Unkown tag name with Wicket namespace: '"
 						+ xmlTag.getName()
@@ -160,5 +160,16 @@
 	public final static void registerTagWhichRequiresUniqueId(final String tag)
 	{
 		requiresUniqueId.add(tag);
+	}
+
+	/**
+	 * 
+	 * @param tag
+	 *            The tag (name) to check
+	 * @return True, if tag is is required to be unique
+	 */
+	public final static boolean isRegisteredToHaveUniqueId(final ComponentTag tag)
+	{
+		return wellKnownTagNames.contains(tag.getName());
 	}
 }

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/AbstractMarkupLoadListener.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/AbstractMarkupLoadListener.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/AbstractMarkupLoadListener.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/AbstractMarkupLoadListener.java Sun Nov  5 08:57:08 2006
@@ -23,6 +23,7 @@
 import wicket.markup.MarkupFragment;
 
 /**
+ * A little helper for markup load listeners
  * 
  * @author Juergen Donnerstag
  */

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/IMarkupLoadListener.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/IMarkupLoadListener.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/IMarkupLoadListener.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/onLoadListener/IMarkupLoadListener.java Sun Nov  5 08:57:08 2006
@@ -26,6 +26,23 @@
  * Markup load listeners can be registered with the application and are invoked
  * after Markup has been loaded from disk. As Wicket will internally cache the
  * markup it is really only called when loaded.
+ * <p>
+ * IMarkupLoadListener and IComponentResolver seem to be similar at first, but
+ * IMarkupLoadListener is signifcantly less powerful. Comparison:
+ * <ul>
+ * <li>IMarkupLoadListener are executed after the associated markup has been
+ * loaded</li>
+ * <li>IComponentResolver are executed during the render phase if a component
+ * can not be found by simply asking the parent container</li>
+ * <li>IMarkupLoadListener can only add new (auto-)components to the container
+ * associated with the markup file</li>
+ * <li>IComponentResolver will add new (auto-)components to the container
+ * associated with markup fragment currently being rendered</li>
+ * <li>All (auto-)components are removed after the render phase. Hence,
+ * components created via IComponentResolver have a shorter lifecycle</li>
+ * <li>Because components created via IComponentResolver during the render
+ * phase, there is no need to sync them in a clustered environment</li>
+ * </ul>
  * 
  * @see WebMarkupContainerWithAssociatedMarkup#getAssociatedMarkup(boolean)
  * 

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/resolver/IComponentResolver.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/resolver/IComponentResolver.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/resolver/IComponentResolver.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/resolver/IComponentResolver.java Sun Nov  5 08:57:08 2006
@@ -29,6 +29,23 @@
  * ApplicationSettings maintains a list of IComponentResolvers.
  * IComponentResolvers are responsible for mapping component names to Wicket
  * components.
+ * <p>
+ * IMarkupLoadListener and IComponentResolver seem to be similar at first, but
+ * IMarkupLoadListener is signifcantly less powerful. Comparison:
+ * <ul>
+ * <li>IMarkupLoadListener are executed after the associated markup has been
+ * loaded</li>
+ * <li>IComponentResolver are executed during the render phase if a component
+ * can not be found by simply asking the parent container</li>
+ * <li>IMarkupLoadListener can only add new (auto-)components to the container
+ * associated with the markup file</li>
+ * <li>IComponentResolver will add new (auto-)components to the container
+ * associated with markup fragment currently being rendered</li>
+ * <li>All (auto-)components are removed after the render phase. Hence,
+ * components created via IComponentResolver have a shorter lifecycle</li>
+ * <li>Because components created via IComponentResolver during the render
+ * phase, there is no need to sync them in a clustered environment</li>
+ * </ul>
  * 
  * @author Juergen Donnerstag
  */

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/protocol/http/portlet/PortletPage.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/protocol/http/portlet/PortletPage.java?view=diff&rev=471461&r1=471460&r2=471461
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/protocol/http/portlet/PortletPage.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/protocol/http/portlet/PortletPage.java Sun Nov  5 08:57:08 2006
@@ -203,11 +203,8 @@
 	@Override
 	protected void onAssociatedMarkupLoaded(MarkupFragment markup)
 	{
-		if (get(HtmlHeaderSectionHandler.HEADER_ID) == null)
-		{
-			// HtmlHeaderSectionHandler guarantees that a <head> tag exists
-			new PortletHeaderContainer(this, HtmlHeaderSectionHandler.HEADER_ID);
-		}
+		// HtmlHeaderSectionHandler guarantees that a <head> tag exists
+		new PortletHeaderContainer(this, HtmlHeaderSectionHandler.HEADER_ID);
 		
 		// default
 		super.onAssociatedMarkupLoaded(markup);