Author: jdonnerstag
Date: Sun Oct 18 14:17:56 2009
New Revision: 826445

URL: http://svn.apache.org/viewvc?rev=826445&view=rev
Log:
on MarkupFragments: changed autoAdd to use new render

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/link/AbstractLink.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/EnclosureTest.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=826445&r1=826444&r2=826445&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 Sun Oct 
18 14:17:56 2009
@@ -465,6 +465,9 @@
         */
        int generatedMarkupId = -1;
 
+       /** Must only be used by auto components */
+       private transient IMarkupFragment markup;
+
        /**
         * The object that holds the component state.
         * <p>
@@ -704,6 +707,11 @@
         */
        public IMarkupFragment getMarkup()
        {
+               if (markup != null)
+               {
+                       return markup;
+               }
+
                if (parent == null)
                {
                        throw new MarkupException(
@@ -714,6 +722,17 @@
        }
 
        /**
+        * Set the markup for the component. Note that the component's markup 
variable is transient and
+        * thus must only be used for one render cycle. E.g. auto-component are 
using it.
+        * 
+        * @param markup
+        */
+       public final void setMarkup(final IMarkupFragment markup)
+       {
+               this.markup = markup;
+       }
+
+       /**
         * Callback method invoked after the component was added to its parent 
AND you can walk up the
         * hierarchy up until the Page. That is, all parents must be have been 
added to their parents as
         * well. Add this point in time {...@link #getMarkup() getMarkup} is 
guaranteed to be available.
@@ -2139,7 +2158,7 @@
                {
                        // Invoke prepareForRender only if this is the root 
component to be rendered
                        MarkupContainer parent = getParent();
-                       if ((parent == null) || (parent.getFlag(FLAG_RENDERING) 
== false))
+                       if ((parent == null) || (parent.getFlag(FLAG_RENDERING) 
== false) || isAuto())
                        {
                                prepareForRender();
                        }

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=826445&r1=826444&r2=826445&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 
Sun Oct 18 14:17:56 2009
@@ -255,24 +255,14 @@
                        children_remove(index);
                }
                add(component);
-               component.prepareForRender();
-               try
-               {
-                       if (markupStream == null)
-                       {
-                               // Allow currently invisible components to be 
re-rendered as well
-                               if (component.getParent() != null)
-                               {
-                                       markupStream = 
component.findMarkupStream();
-                               }
-                       }
 
-                       component.render(markupStream);
-               }
-               finally
+               component.render();
+
+               if (markupStream != null)
                {
-                       component.afterRender();
+                       markupStream.skipComponent();
                }
+
                return true;
        }
 

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java?rev=826445&r1=826444&r2=826445&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
 Sun Oct 18 14:17:56 2009
@@ -109,6 +109,9 @@
                return this;
        }
 
+       /**
+        * @see org.apache.wicket.Component#onBeforeRender()
+        */
        @Override
        protected void onBeforeRender()
        {
@@ -157,7 +160,8 @@
        protected void onComponentTagBody(final MarkupStream markupStream, 
final ComponentTag openTag)
        {
                // Draw anything before the body?
-               if (!isLinkEnabled() && getBeforeDisabledLink() != null)
+               boolean beforeAfter = (!isLinkEnabled() && 
getBeforeDisabledLink() != null);
+               if (beforeAfter)
                {
                        getResponse().write(getBeforeDisabledLink());
                }
@@ -166,7 +170,7 @@
                renderComponentTagBody(markupStream, openTag);
 
                // Draw anything after the body?
-               if (!isLinkEnabled() && getAfterDisabledLink() != null)
+               if (beforeAfter)
                {
                        getResponse().write(getAfterDisabledLink());
                }

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=826445&r1=826444&r2=826445&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
 Sun Oct 18 14:17:56 2009
@@ -24,7 +24,6 @@
 import org.apache.wicket.behavior.AbstractBehavior;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupElement;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.WicketTag;
@@ -153,8 +152,6 @@
                        String id = WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID +
                                container.getPage().getAutoIndex();
 
-                       final IMarkupFragment markup = 
markupStream.getMarkupFragment();
-
                        // 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.
@@ -162,15 +159,6 @@
                        {
                                private static final long serialVersionUID = 1L;
 
-                               /**
-                                * @see org.apache.wicket.Component#getMarkup()
-                                */
-                               @Override
-                               public IMarkupFragment getMarkup()
-                               {
-                                       return markup;
-                               }
-
                                @Override
                                public boolean isTransparentResolver()
                                {
@@ -178,6 +166,7 @@
                                }
                        };
 
+                       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=826445&r1=826444&r2=826445&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
 Sun Oct 18 14:17:56 2009
@@ -23,7 +23,6 @@
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupElement;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.WicketTag;
@@ -214,8 +213,6 @@
                                final String id = tag.getId() + 
container.getPage().getAutoIndex();
                                tag.setId(id);
 
-                               final IMarkupFragment markup = 
markupStream.getMarkupFragment();
-
                                final Component component = new 
WebMarkupContainer(id)
                                {
                                        private static final long 
serialVersionUID = 1L;
@@ -228,17 +225,9 @@
                                        {
                                                return true;
                                        }
-
-                                       /**
-                                        * @see 
org.apache.wicket.Component#getMarkup()
-                                        */
-                                       @Override
-                                       public IMarkupFragment getMarkup()
-                                       {
-                                               return markup;
-                                       }
                                };
 
+                               
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=826445&r1=826444&r2=826445&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
 Sun Oct 18 14:17:56 2009
@@ -28,6 +28,7 @@
 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;
@@ -774,6 +775,9 @@
                        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=826445&r1=826444&r2=826445&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
 Sun Oct 18 14:17:56 2009
@@ -20,7 +20,6 @@
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 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;
@@ -76,8 +75,9 @@
                {
                        // Create a special header component which will gather 
additional
                        // input the <head> from 'contributors'.
-                       final WebMarkupContainer header = 
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
+                       WebMarkupContainer header = 
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
                                container.getPage().getAutoIndex());
+                       header.setMarkup(markupStream.getMarkupFragment());
                        container.autoAdd(header, markupStream);
 
                        // Yes, we handled the tag
@@ -90,11 +90,9 @@
                        // head first.
                        if (container instanceof WebPage)
                        {
-                               final IMarkupFragment markup = 
markupStream.getMarkupFragment();
-
                                // Create a special header component which will 
gather
                                // additional input the <head> from 
'contributors'.
-                               final MarkupContainer header = 
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
+                               MarkupContainer header = 
newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
                                        container.getPage().getAutoIndex());
 
                                // It is <wicket:head>. Because they do not 
provide any
@@ -111,14 +109,9 @@
                                        {
                                                return true;
                                        }
-
-                                       @Override
-                                       public IMarkupFragment getMarkup()
-                                       {
-                                               return markup;
-                                       }
                                };
 
+                               
header2.setMarkup(markupStream.getMarkupFragment());
                                header2.setRenderBodyOnly(true);
 
                                header.add(header2);
@@ -127,8 +120,6 @@
                        }
                        else if (container instanceof HtmlHeaderContainer)
                        {
-                               final IMarkupFragment markup = 
markupStream.getMarkupFragment();
-
                                // It is <wicket:head>. Because they do not 
provide any
                                // additional functionality there are merely a 
means of surrounding
                                // relevant markup. Thus we simply create a 
WebMarkupContainer to handle
@@ -143,13 +134,8 @@
                                        {
                                                return true;
                                        }
-
-                                       @Override
-                                       public IMarkupFragment getMarkup()
-                                       {
-                                               return markup;
-                                       }
                                };
+                               
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=826445&r1=826444&r2=826445&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
 Sun Oct 18 14:17:56 2009
@@ -65,14 +65,14 @@
                        // It must be <wicket:extend...>
                        if (wicketTag.isExtendTag())
                        {
-                               container.autoAdd(new 
TransparentWebMarkupContainer(id), markupStream);
+                               container.autoAdd(new 
MarkupInheritanceContainer(id), markupStream);
                                return true;
                        }
 
                        // It must be <wicket:child...>
                        if (wicketTag.isChildTag())
                        {
-                               container.autoAdd(new 
TransparentWebMarkupContainer(id), markupStream);
+                               container.autoAdd(new 
MarkupInheritanceContainer(id), markupStream);
                                return true;
                        }
                }
@@ -83,14 +83,14 @@
        /**
         * This is a WebMarkupContainer, except that it is transparent for it 
child components.
         */
-       private static class TransparentWebMarkupContainer extends 
WebMarkupContainer
+       private static class MarkupInheritanceContainer extends 
WebMarkupContainer
        {
                private static final long serialVersionUID = 1L;
 
                /**
                 * @param id
                 */
-               public TransparentWebMarkupContainer(final String id)
+               public MarkupInheritanceContainer(final String id)
                {
                        super(id);
                }

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=826445&r1=826444&r2=826445&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
 Sun Oct 18 14:17:56 2009
@@ -26,7 +26,6 @@
 import org.apache.wicket.Response;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupElement;
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupStream;
@@ -140,9 +139,8 @@
                                }
 
                                final String id = "_message_" + 
container.getPage().getAutoIndex();
-                               MessageContainer label = new 
MessageContainer(id, messageKey,
-                                       markupStream.getMarkupFragment());
-
+                               MessageContainer label = new 
MessageContainer(id, messageKey);
+                               
label.setMarkup(markupStream.getMarkupFragment());
                                
label.setRenderBodyOnly(container.getApplication()
                                        .getMarkupSettings()
                                        .getStripWicketTags());
@@ -179,8 +177,6 @@
        {
                private static final long serialVersionUID = 1L;
 
-               private final IMarkupFragment markupFragment;
-
                /**
                 * Construct.
                 * 
@@ -188,14 +184,11 @@
                 * @param messageKey
                 * @param markupFragment
                 */
-               public MessageContainer(final String id, final String 
messageKey,
-                       final IMarkupFragment markupFragment)
+               public MessageContainer(final String id, final String 
messageKey)
                {
                        // The message key becomes the model
                        super(id, new Model<String>(messageKey));
 
-                       this.markupFragment = markupFragment;
-
                        setEscapeModelStrings(false);
                }
 
@@ -414,14 +407,5 @@
                        }
                        super.onComponentTag(tag);
                }
-
-               /**
-                * @see org.apache.wicket.Component#getMarkup()
-                */
-               @Override
-               public IMarkupFragment getMarkup()
-               {
-                       return markupFragment;
-               }
        }
 }
\ No newline at end of file

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java?rev=826445&r1=826444&r2=826445&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
 Sun Oct 18 14:17:56 2009
@@ -118,7 +118,7 @@
         */
        public void testVisibilityOfChildren() throws Exception
        {
-               // render with enclosure initally visible
+               // render with enclosure initially visible
                tester.startPage(EnclosurePage_6.class);
                String doc = tester.getServletResponse().getDocument();
                assertTrue(doc.contains("content1"));


Reply via email to