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);