Author: jdonnerstag
Date: Tue Oct 20 08:20:23 2009
New Revision: 826995
URL: http://svn.apache.org/viewvc?rev=826995&view=rev
Log:
on MarkupFragment: reviewed autoAdd()
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/markup/html/internal/HtmlHeaderContainer.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/resolver/AutoLinkResolver.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/MarkupInheritanceResolver.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/Component.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=826995&r1=826994&r2=826995&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 Tue Oct
20 08:20:23 2009
@@ -198,7 +198,6 @@
*/
public abstract class Component implements IClusterable, IConverterLocator
{
-
/**
* Generic component visitor interface for component traversals.
*
@@ -727,7 +726,7 @@
*
* @param markup
*/
- public final void setMarkup(final IMarkupFragment markup)
+ final void setMarkup(final IMarkupFragment markup)
{
this.markup = markup;
}
@@ -1563,7 +1562,7 @@
if (page == null)
{
// Give up with a nice exception
- throw new IllegalStateException("No Page found for
component " + this);
+ throw new WicketRuntimeException("No Page found for
component " + this);
}
return page;
@@ -2449,8 +2448,17 @@
*/
public final void rendered()
{
- // Tell the page that the component rendered
- getPage().componentRendered(this);
+ Page page = findPage();
+ if (page != null)
+ {
+ // Tell the page that the component rendered
+ page.componentRendered(this);
+ }
+ else
+ {
+ log.error("Component is not connected to a Page. Cannot
register the component as being rendered. Component: " +
+ toString());
+ }
}
/**
@@ -4052,7 +4060,13 @@
}
/**
- * Sets the parent of a component.
+ * THIS IS A WICKET INTERNAL API. DO NOT USE IT.
+ *
+ * Sets the parent of a component. Typically what you really want is
parent.add(child).
+ * <p/>
+ * Note that calling setParent() and not parent.add() will connect the
child to the parent, but
+ * the parent will not know the child. This might not be a problem in
some cases, but e.g.
+ * child.onDetach() will not be invoked (since the parent doesn't know
it is his child).
*
* @param parent
* The parent container
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -246,9 +246,20 @@
throw new IllegalArgumentException("argument component
may not be null");
}
- /* Replace strategy */
+ // Replace strategy
component.setAuto(true);
+ if (markupStream != null)
+ {
+ component.setMarkup(markupStream.getMarkupFragment());
+ }
+
+ // Add the child to the parent.
+
+ // Arguably child.setParent() can be used as well. It connects
the child to the parent and
+ // that's all what most auto-components need. Unfortunately
child.onDetach() will not / can
+ // not be invoked, since the parent doesn't known its one of
his children. Hence we need to
+ // properly add it.
int index = children_indexOf(component);
if (index >= 0)
{
@@ -256,6 +267,7 @@
}
add(component);
+ // Render the child
component.render();
if (markupStream != 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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -32,6 +32,7 @@
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.ng.WicketRuntimeException;
import org.apache.wicket.response.StringResponse;
@@ -229,7 +230,7 @@
*/
public Object component(Component component)
{
- if (component.isVisible())
+ if (component.isVisibleInHierarchy())
{
component.renderHead(container);
return IVisitor.CONTINUE_TRAVERSAL;
@@ -335,6 +336,12 @@
@Override
public IMarkupFragment getMarkup()
{
+ if (getParent() == null)
+ {
+ throw new WicketRuntimeException(
+ "Bug: The Wicket internal instance of
HtmlHeaderContainer is not connected to a parent");
+ }
+
// Get the page markup
IMarkupFragment markup = getPage().getMarkup();
if (markup == null)
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -166,14 +166,15 @@
{
id = wicketId.toString();
}
+
if (id == null)
{
id = "enclosure-" +
container.getPage().getAutoIndex();
tag.setId(id);
tag.setModified(true);
}
- final Enclosure enclosure = new Enclosure(id,
-
tag.getString(EnclosureHandler.CHILD_ATTRIBUTE));
+
+ Enclosure enclosure = new Enclosure(id,
tag.getString(EnclosureHandler.CHILD_ATTRIBUTE));
container.autoAdd(enclosure, markupStream);
// Yes, we handled the tag
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -166,7 +166,6 @@
}
};
- wc.setMarkup(markupStream.getMarkupFragment());
container.autoAdd(wc, markupStream);
return true;
}
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -227,7 +227,6 @@
}
};
-
component.setMarkup(markupStream.getMarkupFragment());
container.autoAdd(component, markupStream);
// Yes, we handled the tag
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -28,7 +28,6 @@
import org.apache.wicket.ResourceReference;
import org.apache.wicket.application.IClassResolver;
import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.PackageResource;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -775,9 +774,6 @@
final Component link = resolveAutomaticLink(container,
WicketLinkTagHandler.AUTOLINK_ID, tag);
- IMarkupFragment markup =
markupStream.getMarkupFragment();
- link.setMarkup(markup);
-
// Add the link to the container
container.autoAdd(link, markupStream);
if (log.isDebugEnabled())
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -77,7 +77,6 @@
// input the <head> from 'contributors'.
WebMarkupContainer header =
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
container.getPage().getAutoIndex());
- header.setMarkup(markupStream.getMarkupFragment());
container.autoAdd(header, markupStream);
// Yes, we handled the tag
@@ -111,9 +110,7 @@
}
};
-
header2.setMarkup(markupStream.getMarkupFragment());
header2.setRenderBodyOnly(true);
-
header.add(header2);
container.autoAdd(header, markupStream);
@@ -135,7 +132,7 @@
return true;
}
};
-
header.setMarkup(markupStream.getMarkupFragment());
+
header.setRenderBodyOnly(true);
try
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -18,8 +18,6 @@
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
-import org.apache.wicket.markup.MarkupException;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.WicketTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -60,18 +58,11 @@
if (tag instanceof WicketTag)
{
final WicketTag wicketTag = (WicketTag)tag;
- final String id = wicketTag.getId() +
container.getPage().getAutoIndex();
// It must be <wicket:extend...>
- if (wicketTag.isExtendTag())
- {
- container.autoAdd(new
MarkupInheritanceContainer(id), markupStream);
- return true;
- }
-
- // It must be <wicket:child...>
- if (wicketTag.isChildTag())
+ if (wicketTag.isExtendTag() || wicketTag.isChildTag())
{
+ String id = wicketTag.getId() +
container.getPage().getAutoIndex();
container.autoAdd(new
MarkupInheritanceContainer(id), markupStream);
return true;
}
@@ -103,29 +94,5 @@
{
return true;
}
-
- /**
- * @see org.apache.wicket.Component#getMarkup()
- */
- @Override
- public IMarkupFragment getMarkup()
- {
- // In case parent is a Panel or Border, than get the
associate markup file
- IMarkupFragment markup = getParent().getMarkup(null);
- if (markup == null)
- {
- throw new MarkupException("Unable to find
Markup for Component: " +
- getParent().toString());
- }
-
- if (getId().startsWith("_child"))
- {
- return markup.find(null, "_child", 0);
- }
- else
- {
- return markup.find(null, "_extend", 0);
- }
- }
}
}
\ No newline at end of file
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -140,7 +140,6 @@
final String id = "_message_" +
container.getPage().getAutoIndex();
MessageContainer label = new
MessageContainer(id, messageKey);
-
label.setMarkup(markupStream.getMarkupFragment());
label.setRenderBodyOnly(container.getApplication()
.getMarkupSettings()
.getStripWicketTags());
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=826995&r1=826994&r2=826995&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
Tue Oct 20 08:20:23 2009
@@ -50,7 +50,7 @@
{
if ("test".equals(tag.getId()))
{
- autoAdd(new Label("test", "TEST")
+ Label label = new Label("test", "TEST")
{
private static final long serialVersionUID = 1L;
@@ -60,7 +60,9 @@
onDetachWasCalledOnAutoAddedComponent =
true;
super.onDetach();
}
- }, markupStream);
+ };
+
+ autoAdd(label, markupStream);
return true;
}
return false;