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 2009/11/28 11:03:17 UTC
svn commit: r885080 - in /wicket/trunk/wicket/src:
main/java/org/apache/wicket/ main/java/org/apache/wicket/markup/html/
main/java/org/apache/wicket/markup/html/border/
main/java/org/apache/wicket/markup/html/internal/
main/java/org/apache/wicket/marku...
Author: jdonnerstag
Date: Sat Nov 28 10:03:15 2009
New Revision: 885080
URL: http://svn.apache.org/viewvc?rev=885080&view=rev
Log:
removed isTransparentResolver and changed IComponentResolver to return the Component resolved. It doesn't need to handle (render, autoAdd) it anymore.
Added:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/TransparentWebMarkupContainer.java
Removed:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ParentResolver.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
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/html/ContainerWithAssociatedMarkupHelper.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/HeaderPartContainer.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/internal/Enclosure.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/list/ListView.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketLinkTagHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoComponentResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/FragmentResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/IComponentResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/MarkupInheritanceResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ScopedComponentResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketContainerResolver.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/ComponentResolvingPage.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java Sat Nov 28 10:03:15 2009
@@ -45,7 +45,6 @@
import org.apache.wicket.markup.resolver.FragmentResolver;
import org.apache.wicket.markup.resolver.HtmlHeaderResolver;
import org.apache.wicket.markup.resolver.MarkupInheritanceResolver;
-import org.apache.wicket.markup.resolver.ParentResolver;
import org.apache.wicket.markup.resolver.WicketContainerResolver;
import org.apache.wicket.markup.resolver.WicketMessageResolver;
import org.apache.wicket.ng.page.PageManager;
@@ -913,7 +912,6 @@
IPageSettings pageSettings = getPageSettings();
// Install default component resolvers
- pageSettings.addComponentResolver(new ParentResolver());
pageSettings.addComponentResolver(new AutoComponentResolver());
pageSettings.addComponentResolver(new MarkupInheritanceResolver());
pageSettings.addComponentResolver(new HtmlHeaderResolver());
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=885080&r1=885079&r2=885080&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 Sat Nov 28 10:03:15 2009
@@ -3885,7 +3885,7 @@
/**
* @return True if this component or any of its parents is in auto-add mode
*/
- final boolean isAuto()
+ public final boolean isAuto()
{
// Search up hierarchy for FLAG_AUTO
for (Component current = this; current != null; current = current.getParent())
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=885080&r1=885079&r2=885080&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 Sat Nov 28 10:03:15 2009
@@ -164,28 +164,6 @@
return this;
}
- MarkupContainer container = (MarkupContainer)visitChildren(MarkupContainer.class,
- new IVisitor<MarkupContainer>()
- {
- public Object component(MarkupContainer container)
- {
- if (container.isTransparentResolver())
- {
- if (container.getId().equals(child.getId()))
- {
- return container;
- }
- return IVisitor.CONTINUE_TRAVERSAL;
- }
- return IVisitor.CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
- }
- });
-
- if (container != null)
- {
- return container;
- }
-
return null;
}
@@ -268,8 +246,6 @@
}
add(component);
- // Render the child
- component.render();
return true;
}
@@ -339,25 +315,16 @@
// Get child by id
Component child = children_get(id);
- // If the container is transparent, than ask its parent.
- // ParentResolver does something quite similar, but because of <head>,
- // <body>, <wicket:panel> etc. it is quite common to have transparent
- // components. Hence, this is little short cut for a tiny performance
- // optimization.
- if ((child == null) && isTransparentResolver() && (getParent() != null))
- {
- child = getParent().get(path);
- }
-
// Found child?
if (child != null)
{
- final String path2 = Strings.afterFirstPathComponent(path, Component.PATH_SEPARATOR);
+ String path2 = Strings.afterFirstPathComponent(path, Component.PATH_SEPARATOR);
+
// Recurse on latter part of path
return child.get(path2);
}
- return child;
+ return null;
}
/**
@@ -545,20 +512,6 @@
}
/**
- * Some MarkupContainers (e.g. HtmlHeaderContainer) have to be transparent with respect to their
- * child components. A transparent container gets its children from its parent container.
- * <p>
- *
- * @see org.apache.wicket.markup.resolver.ParentResolver
- *
- * @return false. By default a MarkupContainer is not transparent.
- */
- public boolean isTransparentResolver()
- {
- return false;
- }
-
- /**
* @return Iterator that iterates through children in the order they were added
*/
public Iterator<? extends Component> iterator()
@@ -1494,7 +1447,11 @@
final String id = tag.getId();
// Get the component for the id from the given container
- final Component component = get(id);
+ Component component = get(id);
+ if (component == null)
+ {
+ component = ComponentResolvers.resolve(this, markupStream, tag);
+ }
// Failed to find it?
if (component != null)
@@ -1503,11 +1460,6 @@
}
else
{
- if (ComponentResolvers.resolve(this, markupStream, tag))
- {
- return;
- }
-
if (tag instanceof WicketTag)
{
if (((WicketTag)tag).isChildTag())
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=885080&r1=885079&r2=885080&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 Sat Nov 28 10:03:15 2009
@@ -324,8 +324,11 @@
}
if (renderedComponents.add(component) == false)
{
- throw new MarkupException("The component " + component +
- " has the same wicket:id as another component already added at the same level");
+ throw new MarkupException(
+ "The component " +
+ component +
+ " was rendered already. You can render it only once during a render phase. Class relative path: " +
+ component.getClassRelativePath());
}
if (log.isDebugEnabled())
{
@@ -471,7 +474,7 @@
{
try
{
- if (getClass().getConstructor(new Class[] {}) != null)
+ if (getClass().getConstructor(new Class[] { }) != null)
{
bookmarkable = Boolean.TRUE;
}
@@ -734,16 +737,16 @@
Component sibling = iterator2.next();
if (!sibling.isVisible())
{
- boolean isTransparentMarkupContainer = sibling instanceof MarkupContainer &&
- ((MarkupContainer)sibling).isTransparentResolver();
- boolean isComponentResolver = sibling instanceof IComponentResolver;
- if (isTransparentMarkupContainer || isComponentResolver)
+ if (sibling instanceof IComponentResolver)
{
// we found a transparent container that isn't visible
// then ignore this component and only do a debug statement here.
- log.debug(
- "Component {} wasn't rendered but most likely it has a transparent parent: {}",
- component, sibling);
+ if (log.isDebugEnabled())
+ {
+ log.debug(
+ "Component {} wasn't rendered but most likely it has a transparent parent: {}",
+ component, sibling);
+ }
iterator.remove();
continue outerWhile;
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ContainerWithAssociatedMarkupHelper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ContainerWithAssociatedMarkupHelper.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ContainerWithAssociatedMarkupHelper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ContainerWithAssociatedMarkupHelper.java Sat Nov 28 10:03:15 2009
@@ -70,8 +70,6 @@
// Gracefully getAssociateMarkupStream. Throws no exception in case
// markup is not found
final MarkupStream markupStream = container.getAssociatedMarkupStream(false);
-
- // No associated markup => no header section
if (markupStream == null)
{
return;
@@ -97,11 +95,11 @@
if (htmlContainer.okToRenderComponent(headerPart.getScope(), headerPart.getId()))
{
htmlContainer.autoAdd(headerPart, null);
+ headerPart.render();
}
else
{
- // TODO Performance: I haven't found a more efficient
- // solution yet.
+ // TODO Performance: I haven't found a more efficient solution yet.
// Already added but all the components in this header part
// must be touched (that they are rendered)
Response response = container.getRequestCycle().getResponse();
@@ -109,6 +107,7 @@
{
container.getRequestCycle().setResponse(NullResponse.getInstance());
htmlContainer.autoAdd(headerPart, null);
+ headerPart.render();
}
finally
{
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/HeaderPartContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/HeaderPartContainer.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/HeaderPartContainer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/HeaderPartContainer.java Sat Nov 28 10:03:15 2009
@@ -67,18 +67,11 @@
/**
* @see IComponentResolver#resolve(MarkupContainer, MarkupStream, ComponentTag)
*/
- public final boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
- final ComponentTag tag)
+ public final Component resolve(final MarkupContainer container,
+ final MarkupStream markupStream, final ComponentTag tag)
{
// The tag must be resolved against the panel and not against the page
- Component component = this.container.get(tag.getId());
- if (component != null)
- {
- component.render();
- return true;
- }
-
- return false;
+ return this.container.get(tag.getId());
}
/**
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=885080&r1=885079&r2=885080&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 Sat Nov 28 10:03:15 2009
@@ -28,10 +28,10 @@
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.WicketTag;
import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup;
import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
import org.apache.wicket.markup.parser.XmlTag;
+import org.apache.wicket.markup.parser.filter.TransparentWebMarkupContainer;
import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.model.IModel;
@@ -163,9 +163,6 @@
/** */
private int beginOfBodyIndex;
- /** true, if body is currently being rendered */
- private transient boolean rendering;
-
/**
* @see org.apache.wicket.Component#Component(String)
*/
@@ -302,11 +299,11 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
// make sure nested borders are resolved properly
- if (rendering == false)
+ if (body.rendering == false)
{
// We are only interested in border body tags. The tag ID actually is irrelevant since
// always preset with the same default
@@ -315,21 +312,12 @@
WicketTag wtag = (WicketTag)tag;
if (wtag.isBodyTag())
{
- rendering = true;
- try
- {
- body.render();
- }
- finally
- {
- rendering = false;
- }
- return true;
+ return body;
}
}
}
- return false;
+ return null;
}
/**
@@ -440,15 +428,14 @@
/**
* The container to be associated with the <wicket:body> tag
*/
- public class BorderBodyContainer extends WebMarkupContainer
+ public class BorderBodyContainer extends TransparentWebMarkupContainer
{
private static final long serialVersionUID = 1L;
/** remember the original status of the wicket:body tag */
private transient boolean wasOpenCloseTag = false;
- /** More easily create a transparent resolver */
- private boolean transparentResolver;
+ protected boolean rendering;
/**
* Constructor
@@ -461,25 +448,6 @@
}
/**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public final boolean isTransparentResolver()
- {
- return transparentResolver;
- }
-
- /**
- * Make the border body transparent
- *
- * @param value
- */
- public final void setTransparentResolver(final boolean value)
- {
- transparentResolver = value;
- }
-
- /**
* @see org.apache.wicket.Component#onComponentTag(org.apache.wicket.markup.ComponentTag)
*/
@Override
@@ -521,6 +489,24 @@
}
/**
+ * @see org.apache.wicket.MarkupContainer#onRender()
+ */
+ @Override
+ protected void onRender()
+ {
+ rendering = true;
+
+ try
+ {
+ super.onRender();
+ }
+ finally
+ {
+ rendering = false;
+ }
+ }
+
+ /**
* @see org.apache.wicket.Component#getMarkup()
*/
@Override
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java Sat Nov 28 10:03:15 2009
@@ -25,12 +25,12 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupException;
import org.apache.wicket.markup.MarkupStream;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.EnclosureContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
import org.apache.wicket.markup.parser.filter.EnclosureHandler;
+import org.apache.wicket.markup.parser.filter.TransparentWebMarkupContainer;
import org.apache.wicket.response.NullResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -82,7 +82,7 @@
* @author Juergen Donnerstag
* @since 1.3
*/
-public class Enclosure extends WebMarkupContainer
+public class Enclosure extends TransparentWebMarkupContainer
{
private static final long serialVersionUID = 1L;
@@ -114,15 +114,6 @@
}
/**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
-
- /**
* Get the real parent container
*
* @return enclosure's parent markup container
@@ -130,16 +121,9 @@
private MarkupContainer getEnclosureParent()
{
MarkupContainer parent = getParent();
- while (parent != null)
+ while (parent.isAuto())
{
- if (parent.isTransparentResolver())
- {
- parent = parent.getParent();
- }
- else
- {
- break;
- }
+ parent = parent.getParent();
}
if (parent == null)
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java Sat Nov 28 10:03:15 2009
@@ -32,6 +32,8 @@
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.parser.filter.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.ng.WicketRuntimeException;
import org.apache.wicket.response.StringResponse;
@@ -67,7 +69,7 @@
*
* @author Juergen Donnerstag
*/
-public class HtmlHeaderContainer extends WebMarkupContainer
+public class HtmlHeaderContainer extends TransparentWebMarkupContainer
{
private static final long serialVersionUID = 1L;
@@ -241,15 +243,6 @@
}
/**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
-
- /**
* Check if the header component is ok to render within the scope given.
*
* @param scope
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/list/ListView.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/list/ListView.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/list/ListView.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/list/ListView.java Sat Nov 28 10:03:15 2009
@@ -619,8 +619,7 @@
{
final String id = Integer.toString(firstIndex + index);
index++;
- Component c = get(id);
- return c;
+ return get(id);
}
};
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java Sat Nov 28 10:03:15 2009
@@ -19,6 +19,7 @@
import java.text.ParseException;
import java.util.Stack;
+import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupElement;
@@ -153,7 +154,7 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
if ((tag instanceof WicketTag) && ((WicketTag)tag).isEnclosureTag())
@@ -172,14 +173,11 @@
tag.setModified(true);
}
- Enclosure enclosure = new Enclosure(id, tag.getString(EnclosureHandler.CHILD_ATTRIBUTE));
- container.autoAdd(enclosure, markupStream);
-
// Yes, we handled the tag
- return true;
+ return new Enclosure(id, tag.getString(EnclosureHandler.CHILD_ATTRIBUTE));
}
// We were not able to handle the tag
- return false;
+ return null;
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java Sat Nov 28 10:03:15 2009
@@ -27,7 +27,6 @@
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.WicketTag;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.request.IRequestCodingStrategy;
import org.slf4j.Logger;
@@ -144,7 +143,7 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
if ((tag != null) && (tag.getId().startsWith(WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID)))
@@ -155,20 +154,8 @@
// we do not want to mess with the hierarchy, so the container has to be
// transparent as it may have wicket components inside. for example a raw anchor tag
// that contains a label.
- final Component wc = new WebMarkupContainer(id)
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isTransparentResolver()
- {
- return tag.isOpenClose() == false;
- }
- };
-
- container.autoAdd(wc, markupStream);
- return true;
+ return new TransparentWebMarkupContainer(id);
}
- return false;
+ return null;
}
}
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/TransparentWebMarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/TransparentWebMarkupContainer.java?rev=885080&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/TransparentWebMarkupContainer.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/TransparentWebMarkupContainer.java Sat Nov 28 10:03:15 2009
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.wicket.markup.parser.filter;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.resolver.IComponentResolver;
+
+/**
+ * A simple "transparent" markup container.
+ *
+ * @author Juergen Donnerstag
+ */
+public class TransparentWebMarkupContainer extends WebMarkupContainer implements IComponentResolver
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param id
+ */
+ public TransparentWebMarkupContainer(String id)
+ {
+ super(id);
+ }
+
+ /**
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
+ */
+ public Component resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
+ {
+ return getParent().get(tag.getId());
+ }
+}
\ No newline at end of file
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketLinkTagHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketLinkTagHandler.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketLinkTagHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketLinkTagHandler.java Sat Nov 28 10:03:15 2009
@@ -26,7 +26,6 @@
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.WicketTag;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.util.collections.ArrayListStack;
import org.apache.wicket.util.string.StringValueConversionException;
@@ -202,7 +201,7 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
if (tag instanceof WicketTag)
@@ -213,28 +212,11 @@
final String id = tag.getId() + container.getPage().getAutoIndex();
tag.setId(id);
- final Component component = new WebMarkupContainer(id)
- {
- private static final long serialVersionUID = 1L;
-
- /**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
- };
-
- container.autoAdd(component, markupStream);
-
- // Yes, we handled the tag
- return true;
+ return new TransparentWebMarkupContainer(id);
}
}
// We were not able to handle the tag
- return false;
+ return null;
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java Sat Nov 28 10:03:15 2009
@@ -27,7 +27,6 @@
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.util.string.Strings;
@@ -159,7 +158,7 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
+ public Component resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
{
// localize any raw markup that has wicket:message attrs
if ((tag != null) && (tag.getId().startsWith(WICKET_MESSAGE_CONTAINER_ID)))
@@ -174,28 +173,11 @@
}
else
{
- wc = new TransparentContainer(id);
+ wc = new TransparentWebMarkupContainer(id);
}
- container.autoAdd(wc, markupStream);
- return true;
- }
- return false;
- }
-
- private static class TransparentContainer extends WebMarkupContainer
- {
- private static final long serialVersionUID = 1L;
-
- public TransparentContainer(String id)
- {
- super(id);
- }
-
- @Override
- public boolean isTransparentResolver()
- {
- return true;
+ return wc;
}
+ return null;
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java Sat Nov 28 10:03:15 2009
@@ -93,7 +93,9 @@
Component child = it.next();
if (child == null)
{
- throw new IllegalStateException("the render iterator returned null for a child");
+ throw new IllegalStateException(
+ "The render iterator returned null for a child. Container: " +
+ this.toString() + "; Iterator=" + it.toString());
}
renderChild(child);
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoComponentResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoComponentResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoComponentResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoComponentResolver.java Sat Nov 28 10:03:15 2009
@@ -68,18 +68,11 @@
private final Map<Component, MarkupContainer> nestedComponents = new HashMap<Component, MarkupContainer>();
/**
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- * @param container
- * The container parsing its markup
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public final boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
- final ComponentTag tag)
+ public final Component resolve(final MarkupContainer container,
+ final MarkupStream markupStream, final ComponentTag tag)
{
// It must be <wicket:...>
if (tag instanceof WicketTag)
@@ -102,18 +95,10 @@
nestedComponents.put(component, container);
}
- try
- {
- // 2. Add it to the hierarchy and render it
- container.autoAdd(component, markupStream);
- }
- finally
- {
- // 3. remove it from the stack
- nestedComponents.remove(component);
- }
+ // 3. remove it from the stack
+ nestedComponents.remove(component);
- return true;
+ return component;
}
}
}
@@ -128,8 +113,7 @@
Component component = parent.get(tag.getId());
if (component != null)
{
- component.render();
- return true;
+ return component;
}
parent = parent.getParent();
@@ -141,7 +125,7 @@
}
// We were not able to handle the componentId
- return false;
+ return null;
}
/**
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=885080&r1=885079&r2=885080&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 Sat Nov 28 10:03:15 2009
@@ -133,6 +133,8 @@
* type of model object
*/
public final static class AutolinkBookmarkablePageLink<T> extends BookmarkablePageLink<T>
+ implements
+ IComponentResolver
{
private static final long serialVersionUID = 1L;
@@ -166,15 +168,6 @@
}
/**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
-
- /**
*
* @see org.apache.wicket.markup.html.link.BookmarkablePageLink#getURL()
*/
@@ -189,6 +182,16 @@
return url;
}
+
+ /**
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
+ */
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
+ ComponentTag tag)
+ {
+ return getParent().get(tag.getId());
+ }
}
/**
@@ -486,6 +489,8 @@
* @author Juergen Donnerstag
*/
private final static class AutolinkExternalLink extends ExternalLink
+ implements
+ IComponentResolver
{
private static final long serialVersionUID = 1L;
@@ -501,12 +506,13 @@
}
/**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- @Override
- public boolean isTransparentResolver()
+ public Component resolve(MarkupContainer container, MarkupStream markupStream,
+ ComponentTag tag)
{
- return true;
+ return getParent().get(tag.getId());
}
}
@@ -534,6 +540,8 @@
* and users wouldn't know where to add the component to.
*/
private final static class ResourceReferenceAutolink extends WebMarkupContainer
+ implements
+ IComponentResolver
{
private static final long serialVersionUID = 1L;
@@ -570,15 +578,6 @@
}
/**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
-
- /**
* Handles this link's tag.
*
* @param tag
@@ -601,6 +600,16 @@
tag.put(attribute, Strings.replaceAll(url, "&", "&"));
}
}
+
+ /**
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
+ */
+ public Component resolve(MarkupContainer container, MarkupStream markupStream,
+ ComponentTag tag)
+ {
+ return getParent().get(tag.getId());
+ }
}
/**
@@ -750,21 +759,11 @@
}
/**
- * Automatically creates a BookmarkablePageLink component.
- *
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- *
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @param container
- * The container parsing its markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public final boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
- final ComponentTag tag)
+ public final Component resolve(final MarkupContainer container,
+ final MarkupStream markupStream, final ComponentTag tag)
{
// Must be marked as autolink tag
if (tag.isAutolinkEnabled())
@@ -772,22 +771,19 @@
// Try to find the Page matching the href
// Note: to not use tag.getId() because it will be modified while
// resolving the link and hence the 2nd render will fail.
- final Component link = resolveAutomaticLink(container,
- WicketLinkTagHandler.AUTOLINK_ID, tag);
+ Component link = resolveAutomaticLink(container, WicketLinkTagHandler.AUTOLINK_ID, tag);
- // Add the link to the container
- container.autoAdd(link, markupStream);
if (log.isDebugEnabled())
{
log.debug("Added autolink " + link);
}
// Tell the container, we resolved the id
- return true;
+ return link;
}
// We were not able to resolve the id
- return false;
+ return null;
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java Sat Nov 28 10:03:15 2009
@@ -44,11 +44,10 @@
* @param container
* @param markupStream
* @param tag
- * @return <code>true</code> if a component was resolved using one of tried resolvers,
- * <code>false</code> otherwise.
+ * @return <code>null</code> if a component was could not be found
*/
- public static boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
- final ComponentTag tag)
+ public static Component resolve(final MarkupContainer container,
+ final MarkupStream markupStream, final ComponentTag tag)
{
// try to resolve using component hierarchy
@@ -57,9 +56,15 @@
{
if (cursor instanceof IComponentResolver)
{
- if (((IComponentResolver)cursor).resolve(container, markupStream, tag))
+ IComponentResolver resolver = (IComponentResolver)cursor;
+ Component component = resolver.resolve(container, markupStream, tag);
+ if (component != null)
{
- return true;
+ if (component.getParent() == null)
+ {
+ container.autoAdd(component, markupStream);
+ }
+ return component;
}
}
cursor = cursor.getParent();
@@ -71,12 +76,14 @@
.getPageSettings()
.getComponentResolvers())
{
- if (resolver.resolve(container, markupStream, tag))
+ Component component = resolver.resolve(container, markupStream, tag);
+ if (component != null)
{
- return true;
+ container.autoAdd(component, markupStream);
+ return component;
}
}
- return false;
+ return null;
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/FragmentResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/FragmentResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/FragmentResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/FragmentResolver.java Sat Nov 28 10:03:15 2009
@@ -16,10 +16,12 @@
*/
package org.apache.wicket.markup.resolver;
+import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.WicketTag;
+import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
/**
@@ -45,18 +47,10 @@
}
/**
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- *
- * @param container
- * The container parsing its markup
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
// If <wicket:...>
@@ -67,11 +61,12 @@
// If <wicket:fragment ...>
if (wTag.isFragementTag())
{
- return true;
+ String id = wTag.getId() + container.getPage().getAutoIndex();
+ return new WebComponent(id).setVisible(false);
}
}
// We were not able to handle the tag
- return false;
+ return null;
}
}
\ No newline at end of file
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java Sat Nov 28 10:03:15 2009
@@ -16,9 +16,9 @@
*/
package org.apache.wicket.markup.resolver;
+import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Page;
-import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupException;
import org.apache.wicket.markup.MarkupStream;
@@ -27,6 +27,7 @@
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
+import org.apache.wicket.markup.parser.filter.TransparentWebMarkupContainer;
import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
import org.apache.wicket.util.resource.IResourceStream;
@@ -54,20 +55,10 @@
}
/**
- * Try to resolve the tag, then create a component, add it to the container and render it.
- *
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- *
- * @param container
- * The container parsing its markup
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
// Only <head> component tags have the id == "_header"
@@ -75,12 +66,8 @@
{
// Create a special header component which will gather additional
// input the <head> from 'contributors'.
- WebMarkupContainer header = newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
+ return newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
container.getPage().getAutoIndex());
- container.autoAdd(header, markupStream);
-
- // Yes, we handled the tag
- return true;
}
else if ((tag instanceof WicketTag) && ((WicketTag)tag).isHeadTag())
{
@@ -98,22 +85,13 @@
// additional functionality they are merely a means of surrounding relevant
// markup. Thus we simply create a WebMarkupContainer to handle
// the tag.
- final WebMarkupContainer header2 = new WebMarkupContainer(
- HtmlHeaderSectionHandler.HEADER_ID)
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
- };
+ WebMarkupContainer header2 = new TransparentWebMarkupContainer(
+ HtmlHeaderSectionHandler.HEADER_ID);
header2.setRenderBodyOnly(true);
header.add(header2);
- container.autoAdd(header, markupStream);
+ return header;
}
else if (container instanceof HtmlHeaderContainer)
{
@@ -121,50 +99,24 @@
// additional functionality there are merely a means of surrounding
// relevant markup. Thus we simply create a WebMarkupContainer to handle
// the tag.
- final WebMarkupContainer header = new WebMarkupContainer(
- HtmlHeaderSectionHandler.HEADER_ID)
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
- };
-
+ WebMarkupContainer header = new TransparentWebMarkupContainer(
+ HtmlHeaderSectionHandler.HEADER_ID);
header.setRenderBodyOnly(true);
- try
- {
- container.autoAdd(header, markupStream);
- }
- catch (IllegalArgumentException ex)
- {
- throw new WicketRuntimeException("If the root exception says something like "
- + "\"A child with id '_header' already exists\" "
- + "then you most likely forgot to override autoAdd() "
- + "in your bordered page component.", ex);
- }
+ return header;
}
- else
- {
- final Page page = container.getPage();
- final String pageClassName = (page != null) ? page.getClass().getName() : "unknown";
- final IResourceStream stream = markupStream.getResource();
- final String streamName = (stream != null) ? stream.toString() : "unknown";
-
- throw new MarkupException(
- "Mis-placed <wicket:head>. <wicket:head> must be outside of <wicket:panel>, <wicket:border>, and <wicket:extend>. Error occured while rendering page: " +
- pageClassName + " using markup stream: " + streamName);
- }
-
- // Yes, we handled the tag
- return true;
+ final Page page = container.getPage();
+ final String pageClassName = (page != null) ? page.getClass().getName() : "unknown";
+ final IResourceStream stream = markupStream.getResource();
+ final String streamName = (stream != null) ? stream.toString() : "unknown";
+
+ throw new MarkupException(
+ "Mis-placed <wicket:head>. <wicket:head> must be outside of <wicket:panel>, <wicket:border>, and <wicket:extend>. Error occured while rendering page: " +
+ pageClassName + " using markup stream: " + streamName);
}
// We were not able to handle the tag
- return false;
+ return null;
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/IComponentResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/IComponentResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/IComponentResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/IComponentResolver.java Sat Nov 28 10:03:15 2009
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.markup.resolver;
+import org.apache.wicket.Component;
import org.apache.wicket.IClusterable;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
@@ -38,8 +39,8 @@
* The current markupStream
* @param tag
* The current component tag while parsing the markup
- * @return True if component-id was handled by the resolver, false otherwise.
+ * @return null, if not found
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag);
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/MarkupInheritanceResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/MarkupInheritanceResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/MarkupInheritanceResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/MarkupInheritanceResolver.java Sat Nov 28 10:03:15 2009
@@ -16,11 +16,12 @@
*/
package org.apache.wicket.markup.resolver;
+import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.WicketTag;
-import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.parser.filter.TransparentWebMarkupContainer;
import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
/**
@@ -41,17 +42,10 @@
}
/**
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- * @param container
- * The container parsing its markup
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
// It must be <wicket:...>
@@ -63,36 +57,11 @@
if (wicketTag.isExtendTag() || wicketTag.isChildTag())
{
String id = wicketTag.getId() + container.getPage().getAutoIndex();
- container.autoAdd(new MarkupInheritanceContainer(id), markupStream);
- return true;
+ return new TransparentWebMarkupContainer(id);
}
}
- // We were not able to handle the componentId
- return false;
- }
-
- /**
- * This is a WebMarkupContainer, except that it is transparent for it child components.
- */
- private static class MarkupInheritanceContainer extends WebMarkupContainer
- {
- private static final long serialVersionUID = 1L;
- /**
- * @param id
- */
- public MarkupInheritanceContainer(final String id)
- {
- super(id);
- }
-
- /**
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
- */
- @Override
- public boolean isTransparentResolver()
- {
- return true;
- }
+ // We were not able to handle the componentId
+ return null;
}
}
\ No newline at end of file
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ScopedComponentResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ScopedComponentResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ScopedComponentResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ScopedComponentResolver.java Sat Nov 28 10:03:15 2009
@@ -97,7 +97,7 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
// Try to find the component with the parent component.
@@ -109,7 +109,7 @@
parent = parent.getParent();
if (parent == null)
{
- return false;
+ return null;
}
final Component component = parent.get(id);
@@ -118,12 +118,11 @@
IScopedComponent sc = (IScopedComponent)component;
if (sc.isRenderableInSubContainers())
{
- component.render();
- return true;
+ return component;
}
}
}
- return false;
+ return null;
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketContainerResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketContainerResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketContainerResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketContainerResolver.java Sat Nov 28 10:03:15 2009
@@ -16,9 +16,12 @@
*/
package org.apache.wicket.markup.resolver;
+import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.WicketTag;
+import org.apache.wicket.markup.parser.filter.TransparentWebMarkupContainer;
import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -70,25 +73,21 @@
}
/**
- * Try to resolve the tag, then create a component, add it to the container and render it.
- *
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- *
- * @param container
- * The container parsing its markup
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
- // this is only here so we register wicket:container tag, this resolver
- // does not actually do anything special to the tag
- return false;
+ if (tag instanceof WicketTag)
+ {
+ final WicketTag wTag = (WicketTag)tag;
+
+ // this is only here so we register wicket:container tag, this resolver
+ // does not actually do anything special to the tag
+ String id = wTag.getId() + container.getPage().getAutoIndex();
+ return new TransparentWebMarkupContainer(id);
+ }
+ return null;
}
-
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java Sat Nov 28 10:03:15 2009
@@ -110,20 +110,10 @@
private static final String DEFAULT_VALUE = "DEFAULT_WICKET_MESSAGE_RESOLVER_VALUE";
/**
- * Try to resolve the tag, then create a component, add it to the container and render it.
- *
- * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(MarkupContainer,
- * MarkupStream, ComponentTag)
- *
- * @param container
- * The container parsing its markup
- * @param markupStream
- * The current markupStream
- * @param tag
- * The current component tag while parsing the markup
- * @return true, if componentId was handle by the resolver. False, otherwise
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
if (tag instanceof WicketTag)
@@ -144,15 +134,12 @@
.getMarkupSettings()
.getStripWicketTags());
- container.autoAdd(label, markupStream);
-
- // Yes, we handled the tag
- return true;
+ return label;
}
}
// We were not able to handle the tag
- return false;
+ return null;
}
/**
@@ -172,7 +159,7 @@
* tags.
*
*/
- private static class MessageContainer extends MarkupContainer
+ private static class MessageContainer extends MarkupContainer implements IComponentResolver
{
private static final long serialVersionUID = 1L;
@@ -192,13 +179,13 @@
}
/**
- *
- * @see org.apache.wicket.MarkupContainer#isTransparentResolver()
+ * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
+ * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- @Override
- public boolean isTransparentResolver()
+ public Component resolve(MarkupContainer container, MarkupStream markupStream,
+ ComponentTag tag)
{
- return true;
+ return getParent().get(tag.getId());
}
/**
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/ComponentResolvingPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/ComponentResolvingPage.java?rev=885080&r1=885079&r2=885080&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/ComponentResolvingPage.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/ComponentResolvingPage.java Sat Nov 28 10:03:15 2009
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.markup.html.internal;
+import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
@@ -45,7 +46,7 @@
* @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer,
* org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag)
*/
- public boolean resolve(final MarkupContainer container, final MarkupStream markupStream,
+ public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
final ComponentTag tag)
{
if ("test".equals(tag.getId()))
@@ -62,9 +63,8 @@
}
};
- autoAdd(label, markupStream);
- return true;
+ return label;
}
- return false;
+ return null;
}
}
\ No newline at end of file