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;


Reply via email to