Author: knopp
Date: Sat Sep  1 10:42:51 2007
New Revision: 571837

URL: http://svn.apache.org/viewvc?rev=571837&view=rev
Log:
WICKET-836

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/IFeedback.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java 
(original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java 
Sat Sep  1 10:42:51 2007
@@ -30,6 +30,7 @@
 import org.apache.wicket.authorization.UnauthorizedActionException;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.feedback.FeedbackMessage;
+import org.apache.wicket.feedback.IFeedback;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupStream;
@@ -792,11 +793,7 @@
                internalAttach2();
        }
 
-       /**
-        * Called for every component when the page is getting to be rendered. 
it will call
-        * onBeforeRender for this component and all the child components
-        */
-       public final void beforeRender()
+       private final void internalBeforeRender()
        {
                if (isVisible() && !getFlag(FLAG_RENDERING) && 
!getFlag(FLAG_PREPARED_FOR_RENDER))
                {
@@ -815,6 +812,42 @@
        }
 
        /**
+        * We need to postpone calling beforeRender() on components that 
implement IFeedback, to be sure
+        * that all other component's beforeRender() has been already called, 
so that IFeedbacks can
+        * collect all feedback messages. This is the key under list of 
postponed IFeedback is stored to
+        * request cycle metadata. The List is then iterated over in [EMAIL 
PROTECTED] #prepareForRender()} after
+        * calling [EMAIL PROTECTED] #beforeRender()}, to initialize postponed 
components.
+        */
+       private static final MetaDataKey FEEDBACK_LIST = new 
MetaDataKey(List.class)
+       {
+               private static final long serialVersionUID = 1L;
+       };
+
+       /**
+        * Called for every component when the page is getting to be rendered. 
it will call
+        * onBeforeRender for this component and all the child components
+        */
+       public final void beforeRender()
+       {
+               if (!(this instanceof IFeedback))
+               {
+                       internalBeforeRender();
+               }
+               else
+               {
+                       // this component is a feedback. Feedback must be 
initialized last, so that
+                       // they can collect messages from other components
+                       List feedbacks = 
(List)getRequestCycle().getMetaData(FEEDBACK_LIST);
+                       if (feedbacks == null)
+                       {
+                               feedbacks = new ArrayList();
+                               getRequestCycle().setMetaData(FEEDBACK_LIST, 
(Serializable)feedbacks);
+                       }
+                       feedbacks.add(this);
+               }
+       }
+
+       /**
         * Redirects to any intercept page previously specified by a call to 
redirectToInterceptPage.
         * 
         * @return True if an original destination was redirected to
@@ -1803,6 +1836,16 @@
        public void prepareForRender()
        {
                beforeRender();
+               List feedbacks = 
(List)getRequestCycle().getMetaData(FEEDBACK_LIST);
+               if (feedbacks != null)
+               {
+                       for (Iterator i = feedbacks.iterator(); i.hasNext();)
+                       {
+                               Component feedback = (Component)i.next();
+                               feedback.internalBeforeRender();
+                       }
+               }
+               getRequestCycle().setMetaData(FEEDBACK_LIST, null);
                markRendering();
        }
 
@@ -2020,8 +2063,7 @@
                                // Make sure that while rendering the markup 
stream is found
                                parent.setMarkupStream(markupStream);
 
-                               beforeRender();
-                               markRendering();
+                               prepareForRender();
                                // check authorization
                                // first the component itself
                                // (after attach as otherwise list views etc 
wont work)

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
 Sat Sep  1 10:42:51 2007
@@ -208,8 +208,7 @@
                        this.remove(component);
                }
                add(component);
-               component.beforeRender();
-               component.markRendering();
+               component.prepareForRender();
                if (markupStream == null)
                {
                        component.render();

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java 
(original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java Sat 
Sep  1 10:42:51 2007
@@ -28,7 +28,6 @@
 import org.apache.wicket.authorization.IAuthorizationStrategy;
 import org.apache.wicket.authorization.UnauthorizedActionException;
 import 
org.apache.wicket.authorization.strategies.page.SimplePageAuthorizationStrategy;
-import org.apache.wicket.feedback.IFeedback;
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.WebPage;
@@ -49,72 +48,61 @@
 
 
 /**
- * Abstract base class for pages. As a MarkupContainer subclass, a Page can
- * contain a component hierarchy and markup in some markup language such as
- * HTML. Users of the framework should not attempt to subclass Page directly.
- * Instead they should subclass a subclass of Page that is appropriate to the
- * markup type they are using, such as WebPage (for HTML markup).
+ * Abstract base class for pages. As a MarkupContainer subclass, a Page can 
contain a component
+ * hierarchy and markup in some markup language such as HTML. Users of the 
framework should not
+ * attempt to subclass Page directly. Instead they should subclass a subclass 
of Page that is
+ * appropriate to the markup type they are using, such as WebPage (for HTML 
markup).
  * <ul>
- * <li><b>Construction </b>- When a page is constructed, it is automatically
- * added to the current PageMap in the Session. When a Page is added to the
- * Session's PageMap, the PageMap assigns the Page an id. A PageMap is roughly
- * equivalent to a browser window and encapsulates a set of pages accessible
- * through that window. When a popup window is created, a new PageMap is 
created
- * for the popup.
+ * <li><b>Construction </b>- When a page is constructed, it is automatically 
added to the current
+ * PageMap in the Session. When a Page is added to the Session's PageMap, the 
PageMap assigns the
+ * Page an id. A PageMap is roughly equivalent to a browser window and 
encapsulates a set of pages
+ * accessible through that window. When a popup window is created, a new 
PageMap is created for the
+ * popup.
  * 
- * <li><b>Identity </b>- The Session that a Page is contained in can be
- * retrieved by calling Page.getSession(). Page identifiers start at 0 for each
- * PageMap in the Session and increment as new pages are added to the map. The
- * PageMap-(and Session)-unique identifier assigned to a given Page can be
- * retrieved by calling getId(). So, the first Page added to a new user Session
- * will always be named "0".
+ * <li><b>Identity </b>- The Session that a Page is contained in can be 
retrieved by calling
+ * Page.getSession(). Page identifiers start at 0 for each PageMap in the 
Session and increment as
+ * new pages are added to the map. The PageMap-(and Session)-unique identifier 
assigned to a given
+ * Page can be retrieved by calling getId(). So, the first Page added to a new 
user Session will
+ * always be named "0".
  * 
- * <li><b>LifeCycle </b>- Subclasses of Page which are interested in lifecycle
- * events can override onBeginRequest, onEndRequest() and onModelChanged(). The
- * onBeginRequest() method is inherited from Component. A call to
- * onBeginRequest() is made for every Component on a Page before page rendering
- * begins. At the end of a request (when rendering has completed) to a Page, 
the
+ * <li><b>LifeCycle </b>- Subclasses of Page which are interested in lifecycle 
events can override
+ * onBeginRequest, onEndRequest() and onModelChanged(). The onBeginRequest() 
method is inherited
+ * from Component. A call to onBeginRequest() is made for every Component on a 
Page before page
+ * rendering begins. At the end of a request (when rendering has completed) to 
a Page, the
  * onEndRequest() method is called for every Component on the Page.
  * 
- * <li><b>Nested Component Hierarchy </b>- The Page class is a subclass of
- * MarkupContainer. All MarkupContainers can have "associated markup", which
- * resides alongside the Java code by default. All MarkupContainers are also
- * Component containers. Through nesting, of containers, a Page can contain any
- * arbitrary tree of Components. For more details on MarkupContainers, see
+ * <li><b>Nested Component Hierarchy </b>- The Page class is a subclass of 
MarkupContainer. All
+ * MarkupContainers can have "associated markup", which resides alongside the 
Java code by default.
+ * All MarkupContainers are also Component containers. Through nesting, of 
containers, a Page can
+ * contain any arbitrary tree of Components. For more details on 
MarkupContainers, see
  * [EMAIL PROTECTED] org.apache.wicket.MarkupContainer}.
  * 
- * <li><b>Bookmarkable Pages </b>- Pages can be constructed with any
- * constructor when they are being used in a Wicket session, but if you wish to
- * link to a Page using a URL that is "bookmarkable" (which implies that the 
URL
- * will not have any session information encoded in it, and that you can call
- * this page directly without having a session first directly from your
- * browser), you need to implement your Page with a no-arg constructor or with 
a
- * constructor that accepts a PageParameters argument (which wraps any query
- * string parameters for a request). In case the page has both constructors, 
the
- * constructor with PageParameters will be used.
+ * <li><b>Bookmarkable Pages </b>- Pages can be constructed with any 
constructor when they are
+ * being used in a Wicket session, but if you wish to link to a Page using a 
URL that is
+ * "bookmarkable" (which implies that the URL will not have any session 
information encoded in it,
+ * and that you can call this page directly without having a session first 
directly from your
+ * browser), you need to implement your Page with a no-arg constructor or with 
a constructor that
+ * accepts a PageParameters argument (which wraps any query string parameters 
for a request). In
+ * case the page has both constructors, the constructor with PageParameters 
will be used.
  * 
- * <li><b>Models </b>- Pages, like other Components, can have models (see
- * [EMAIL PROTECTED] IModel}). A Page can be assigned a model by passing one 
to the Page's
- * constructor, by overriding initModel() or with an explicit invocation of
- * setModel(). If the model is a
- * [EMAIL PROTECTED] org.apache.wicket.model.CompoundPropertyModel}, 
Components on the
- * Page can use the Page's model implicitly via container inheritance. If a
- * Component is not assigned a model, the initModel() override in Component 
will
- * cause that Component to use the nearest CompoundModel in the parent chain, 
in
- * this case, the Page's model. For basic CompoundModels, the name of the
- * Component determines which property of the implicit page model the component
- * is bound to. If more control is desired over the binding of Components to 
the
- * page model (for example, if you want to specify some property expression
- * other than the component's name for retrieving the model object),
- * BoundCompoundPropertyModel can be used.
+ * <li><b>Models </b>- Pages, like other Components, can have models (see 
[EMAIL PROTECTED] IModel}). A Page
+ * can be assigned a model by passing one to the Page's constructor, by 
overriding initModel() or
+ * with an explicit invocation of setModel(). If the model is a
+ * [EMAIL PROTECTED] org.apache.wicket.model.CompoundPropertyModel}, 
Components on the Page can use the Page's
+ * model implicitly via container inheritance. If a Component is not assigned 
a model, the
+ * initModel() override in Component will cause that Component to use the 
nearest CompoundModel in
+ * the parent chain, in this case, the Page's model. For basic CompoundModels, 
the name of the
+ * Component determines which property of the implicit page model the 
component is bound to. If more
+ * control is desired over the binding of Components to the page model (for 
example, if you want to
+ * specify some property expression other than the component's name for 
retrieving the model
+ * object), BoundCompoundPropertyModel can be used.
  * 
- * <li><b>Back Button </b>- Pages can support the back button by enabling
- * versioning with a call to setVersioned(boolean). If a Page is versioned and
- * changes occur to it which need to be tracked, a verison manager will be
- * installed using the overridable factory method newVersionManager(). The
- * default version manager returned by the base implementation of this method 
is
- * an instance of UndoPageVersionManager, which manages versions of a page by
- * keeping change records that can be reversed at a later time.
+ * <li><b>Back Button </b>- Pages can support the back button by enabling 
versioning with a call to
+ * setVersioned(boolean). If a Page is versioned and changes occur to it which 
need to be tracked, a
+ * verison manager will be installed using the overridable factory method 
newVersionManager(). The
+ * default version manager returned by the base implementation of this method 
is an instance of
+ * UndoPageVersionManager, which manages versions of a page by keeping change 
records that can be
+ * reversed at a later time.
  * 
  * <li><b>Security </b>- See [EMAIL PROTECTED] IAuthorizationStrategy},
  * [EMAIL PROTECTED] SimplePageAuthorizationStrategy}
@@ -135,11 +123,9 @@
 public abstract class Page extends MarkupContainer implements 
IRedirectListener, IPageMapEntry
 {
        /**
-        * You can set implementation of the interface in the
-        * [EMAIL PROTECTED] Page#serializer} then that implementation will 
handle the
-        * serialization of this page. The serializePage method is called from 
the
-        * writeObject method then the implementation override the default
-        * serialization.
+        * You can set implementation of the interface in the [EMAIL PROTECTED] 
Page#serializer} then that
+        * implementation will handle the serialization of this page. The 
serializePage method is called
+        * from the writeObject method then the implementation override the 
default serialization.
         * 
         * @author jcompagner
         */
@@ -175,15 +161,14 @@
        }
 
        /**
-        * When passed to [EMAIL PROTECTED] Page#getVersion(int)} the latest 
page version is
-        * returned.
+        * When passed to [EMAIL PROTECTED] Page#getVersion(int)} the latest 
page version is returned.
         */
        public static final int LATEST_VERSION = -1;
 
        /**
-        * This is a thread local that is used for serializing page references 
in
-        * this page.It stores a [EMAIL PROTECTED] IPageSerializer} which can 
be set by the
-        * outside world to do the serialization of this page.
+        * This is a thread local that is used for serializing page references 
in this page.It stores a
+        * [EMAIL PROTECTED] IPageSerializer} which can be set by the outside 
world to do the serialization of this
+        * page.
         */
        public static final ThreadLocal serializer = new ThreadLocal();
 
@@ -225,8 +210,8 @@
        private transient Set renderedComponents;
 
        /**
-        * Boolean if the page is stateless, so it doesn't have to be in the 
page
-        * map, will be set in urlFor
+        * Boolean if the page is stateless, so it doesn't have to be in the 
page map, will be set in
+        * urlFor
         */
        private transient Boolean stateless = null;
 
@@ -304,10 +289,9 @@
        }
 
        /**
-        * Called right after a component's listener method (the provided method
-        * argument) was called. This method may be used to clean up 
dependencies,
-        * do logging, etc. NOTE: this method will also be called when
-        * [EMAIL PROTECTED] WebPage#beforeCallComponent(Component, 
RequestListenerInterface)}
+        * Called right after a component's listener method (the provided 
method argument) was called.
+        * This method may be used to clean up dependencies, do logging, etc. 
NOTE: this method will
+        * also be called when [EMAIL PROTECTED] 
WebPage#beforeCallComponent(Component, RequestListenerInterface)}
         * or the method invocation itself failed.
         * 
         * @param component
@@ -325,12 +309,11 @@
        }
 
        /**
-        * Called just before a component's listener method (the provided method
-        * argument) is called. This method may be used to set up dependencies,
-        * enforce authorization, etc. NOTE: if this method fails, the method 
will
-        * not be excuted. Method
-        * [EMAIL PROTECTED] WebPage#afterCallComponent(Component, 
RequestListenerInterface)}
-        * will always be called.
+        * Called just before a component's listener method (the provided 
method argument) is called.
+        * This method may be used to set up dependencies, enforce 
authorization, etc. NOTE: if this
+        * method fails, the method will not be excuted. Method
+        * [EMAIL PROTECTED] WebPage#afterCallComponent(Component, 
RequestListenerInterface)} will always be
+        * called.
         * 
         * @param component
         *            the component that is to be called
@@ -412,8 +395,8 @@
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL.
         * 
-        * This method is called when a component was rendered standalone. If 
it is
-        * a markupcontainer then the rendering for that container is checked.
+        * This method is called when a component was rendered standalone. If 
it is a markupcontainer
+        * then the rendering for that container is checked.
         * 
         * @param component
         * 
@@ -462,10 +445,9 @@
        }
 
        /**
-        * @return The current version number of this page. If the page has been
-        *         changed once, the return value will be 1. If the page has 
not yet
-        *         been revised, the version returned will be 0, indicating 
that the
-        *         page is still in its original state.
+        * @return The current version number of this page. If the page has 
been changed once, the
+        *         return value will be 1. If the page has not yet been 
revised, the version returned
+        *         will be 0, indicating that the page is still in its original 
state.
         */
        public final int getCurrentVersionNumber()
        {
@@ -511,10 +493,9 @@
        }
 
        /**
-        * @return Get a page map entry for this page. By default, this is the 
page
-        *         itself. But if you know of some way to compress the state 
for the
-        *         page, you can return a custom implementation that produces 
the
-        *         page on-the-fly.
+        * @return Get a page map entry for this page. By default, this is the 
page itself. But if you
+        *         know of some way to compress the state for the page, you can 
return a custom
+        *         implementation that produces the page on-the-fly.
         */
        public IPageMapEntry getPageMapEntry()
        {
@@ -539,9 +520,9 @@
        }
 
        /**
-        * Returns whether the page should try to be stateless. To be stateless,
-        * getStatelessHint() of every component on page (and it's behavior) 
must
-        * return true and the page must be bookmarkable.
+        * Returns whether the page should try to be stateless. To be 
stateless, getStatelessHint() of
+        * every component on page (and it's behavior) must return true and the 
page must be
+        * bookmarkable.
         * 
         * @see org.apache.wicket.Component#getStatelessHint()
         */
@@ -551,14 +532,13 @@
        }
 
        /**
-        * Override this method to implement a custom way of producing a 
version of
-        * a Page when it cannot be found in the Session.
+        * Override this method to implement a custom way of producing a 
version of a Page when it
+        * cannot be found in the Session.
         * 
         * @param versionNumber
         *            The version desired
-        * @return A Page object with the component/model hierarchy that was
-        *         attached to this page at the time represented by the 
requested
-        *         version.
+        * @return A Page object with the component/model hierarchy that was 
attached to this page at
+        *         the time represented by the requested version.
         */
        public Page getVersion(final int versionNumber)
        {
@@ -650,14 +630,13 @@
        }
 
        /**
-        * Call this method when the current (ajax) request shouldn't merge the
-        * changes that are happening to the page with the previous version.
+        * Call this method when the current (ajax) request shouldn't merge the 
changes that are
+        * happening to the page with the previous version.
         * 
-        * This is for example needed when you want to redirect to this page in 
an
-        * ajax request and then you do want to version normally..
+        * This is for example needed when you want to redirect to this page in 
an ajax request and then
+        * you do want to version normally..
         * 
-        * This method doesn't do anything if the getRequest().mergeVersion 
doesn't
-        * return true.
+        * This method doesn't do anything if the getRequest().mergeVersion 
doesn't return true.
         */
        public final void ignoreVersionMerge()
        {
@@ -714,12 +693,10 @@
        }
 
        /**
-        * Override this method and return true if your page is used to display
-        * Wicket errors. This can help the framework prevent infinite failure
-        * loops.
+        * Override this method and return true if your page is used to display 
Wicket errors. This can
+        * help the framework prevent infinite failure loops.
         * 
-        * @return True if this page is intended to display an error to the end
-        *         user.
+        * @return True if this page is intended to display an error to the end 
user.
         */
        public boolean isErrorPage()
        {
@@ -727,10 +704,9 @@
        }
 
        /**
-        * Gets whether the page is stateless. Components on stateless page 
must not
-        * render any statefull urls, and components on statefull page must not
-        * render any stateless urls. Statefull urls are urls, which refer to a
-        * certain (current) page instance.
+        * Gets whether the page is stateless. Components on stateless page 
must not render any
+        * statefull urls, and components on statefull page must not render any 
stateless urls.
+        * Statefull urls are urls, which refer to a certain (current) page 
instance.
         * 
         * @return Whether to page is stateless
         */
@@ -791,16 +767,16 @@
        }
 
        /**
-        * Convenience method. Search for children of type fromClass and invoke
-        * their respective removePersistedFormData() methods.
+        * Convenience method. Search for children of type fromClass and invoke 
their respective
+        * removePersistedFormData() methods.
         * 
         * @see Form#removePersistentFormComponentValues(boolean)
         * 
         * @param formClass
         *            Form to be selected. Pages may have more than one Form.
         * @param disablePersistence
-        *            if true, disable persistence for all FormComponents on 
that
-        *            page. If false, it will remain unchanged.
+        *            if true, disable persistence for all FormComponents on 
that page. If false, it
+        *            will remain unchanged.
         */
        public final void removePersistedFormData(final Class formClass,
                        final boolean disablePersistence)
@@ -858,23 +834,6 @@
                // Set form component values from cookies
                setFormComponentValuesFromCookies();
 
-               // First, give priority to IFeedback instances, as they have to
-               // collect their messages before components like ListViews
-               // remove any child components
-               visitChildren(IFeedback.class, new IVisitor()
-               {
-                       public Object component(Component component)
-                       {
-                               ((IFeedback)component).updateFeedback();
-                               return IVisitor.CONTINUE_TRAVERSAL;
-                       }
-               });
-
-               if (this instanceof IFeedback)
-               {
-                       ((IFeedback)this).updateFeedback();
-               }
-
                try
                {
                        prepareForRender();
@@ -953,8 +912,8 @@
        }
 
        /**
-        * This returns a page instance that is rollbacked the number of 
versions
-        * that is specified compared to the current page.
+        * This returns a page instance that is rollbacked the number of 
versions that is specified
+        * compared to the current page.
         * 
         * This is a rollback including ajax versions.
         * 
@@ -972,9 +931,8 @@
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL.
         * 
-        * Set the id for this Page. This method is called by PageMap when a 
Page is
-        * added because the id, which is assigned by PageMap, is not known 
until
-        * this time.
+        * Set the id for this Page. This method is called by PageMap when a 
Page is added because the
+        * id, which is assigned by PageMap, is not known until this time.
         * 
         * @param id
         *            The id
@@ -985,9 +943,9 @@
        }
 
        /**
-        * Sets whether the page should try to be stateless. To be stateless,
-        * getStatelessHint() of every component on page (and it's behavior) 
must
-        * return true and the page must be bookmarkable.
+        * Sets whether the page should try to be stateless. To be stateless, 
getStatelessHint() of
+        * every component on page (and it's behavior) must return true and the 
page must be
+        * bookmarkable.
         * 
         * @param value
         *            whether the page should try to be stateless
@@ -1040,8 +998,8 @@
         * Throw an exception if not all components rendered.
         * 
         * @param renderedContainer
-        *            The page itself if it was a full page render or the 
container
-        *            that was rendered standalone
+        *            The page itself if it was a full page render or the 
container that was rendered
+        *            standalone
         */
        private final void checkRendering(final MarkupContainer 
renderedContainer)
        {
@@ -1125,8 +1083,7 @@
        }
 
        /**
-        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR
-        * OVERRIDE.
+        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR 
OVERRIDE.
         * 
         */
        private final void endVersion()
@@ -1306,21 +1263,18 @@
        }
 
        /**
-        * Set-up response with appropriate content type, locale and encoding. 
The
-        * locale is set equal to the session's locale. The content type header
-        * contains information about the markup type (@see #getMarkupType()) 
and
-        * the encoding. The response (and request) encoding is determined by an
-        * application setting (@see
-        * ApplicationSettings#getResponseRequestEncoding()). In addition, if 
the
-        * page's markup contains a xml declaration like &lt?xml ... ?&gt; an 
xml
-        * declaration with proper encoding information is written to the 
output as
-        * well, provided it is not disabled by an applicaton setting (@see
+        * Set-up response with appropriate content type, locale and encoding. 
The locale is set equal
+        * to the session's locale. The content type header contains 
information about the markup type
+        * (@see #getMarkupType()) and the encoding. The response (and request) 
encoding is determined
+        * by an application setting (@see 
ApplicationSettings#getResponseRequestEncoding()). In
+        * addition, if the page's markup contains a xml declaration like 
&lt?xml ... ?&gt; an xml
+        * declaration with proper encoding information is written to the 
output as well, provided it is
+        * not disabled by an applicaton setting (@see
         * ApplicationSettings#getStripXmlDeclarationFromOutput()).
         * <p>
-        * Note: Prior to Wicket 1.1 the output encoding was determined by the
-        * page's markup encoding. Because this caused uncertainties about the
-        * /request/ encoding, it has been changed in favour of the new, much 
safer,
-        * approach. Please see the Wiki for more details.
+        * Note: Prior to Wicket 1.1 the output encoding was determined by the 
page's markup encoding.
+        * Because this caused uncertainties about the /request/ encoding, it 
has been changed in favour
+        * of the new, much safer, approach. Please see the Wiki for more 
details.
         */
        protected void configureResponse()
        {
@@ -1350,8 +1304,7 @@
        }
 
        /**
-        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR
-        * OVERRIDE.
+        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR 
OVERRIDE.
         * 
         * @see org.apache.wicket.Component#internalOnModelChanged()
         */
@@ -1372,8 +1325,7 @@
        }
 
        /**
-        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR
-        * OVERRIDE.
+        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR 
OVERRIDE.
         * 
         * @param map
         */
@@ -1507,8 +1459,8 @@
 
        /**
         * @param pageMap
-        *            Sets this page into the page map with the given name. If 
the
-        *            page map does not yet exist, it is automatically created.
+        *            Sets this page into the page map with the given name. If 
the page map does not yet
+        *            exist, it is automatically created.
         */
        final void setPageMap(final IPageMap pageMap)
        {

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 Sat Sep  1 10:42:51 2007
@@ -584,34 +584,6 @@
 
                // process feedback
 
-               // TODO do we need these special pre-attach feedback traversals 
all over
-               // the place?
-               it = markupIdToComponent.values().iterator();
-               while (it.hasNext())
-               {
-                       final Component component = (Component)it.next();
-
-                       if (component instanceof MarkupContainer)
-                       {
-                               MarkupContainer container = 
(MarkupContainer)component;
-
-                               // collect feedback
-                               container.visitChildren(IFeedback.class, new 
IVisitor()
-                               {
-                                       public Object component(Component 
component)
-                                       {
-                                               
((IFeedback)component).updateFeedback();
-                                               return 
IVisitor.CONTINUE_TRAVERSAL;
-                                       }
-                               });
-                       }
-
-                       if (component instanceof IFeedback)
-                       {
-                               ((IFeedback)component).updateFeedback();
-                       }
-               }
-
                // we need to attach feedback components here because they are 
not
                // attached in MarkupContainer#attachChildren()
                it = markupIdToComponent.values().iterator();

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
 Sat Sep  1 10:42:51 2007
@@ -49,9 +49,8 @@
         * Constructor. Creates a model for all feedback messages on the page.
         * 
         * @param component
-        *            The component where the page will be get from for which
-        *            messages will be displayed usually the same page as the 
one
-        *            feedbackpanel is attached to
+        *            The component where the page will be get from for which 
messages will be displayed
+        *            usually the same page as the one feedbackpanel is 
attached to
         */
        public FeedbackMessagesModel(Component component)
        {
@@ -62,14 +61,13 @@
        }
 
        /**
-        * Constructor. Creates a model for all feedback messags accepted by the
-        * given filter.
+        * Constructor. Creates a model for all feedback messags accepted by 
the given filter.
         * 
         * @param filter
         *            The filter to apply
         * @param page
-        *            Page for which messages will be displayed - usually the 
same
-        *            page as the one feedbackpanel is attached to
+        *            Page for which messages will be displayed - usually the 
same page as the one
+        *            feedbackpanel is attached to
         * 
         */
        public FeedbackMessagesModel(Page page, IFeedbackMessageFilter filter)
@@ -152,8 +150,7 @@
         * Override this method to post process to the FeedbackMessage list.
         * 
         * @param messages
-        *            List of sorted and filtered FeedbackMessages for further
-        *            processing
+        *            List of sorted and filtered FeedbackMessages for further 
processing
         * @return The processed FeedbackMessage list
         */
        protected List processMessages(final List messages)

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/IFeedback.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/IFeedback.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/IFeedback.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/feedback/IFeedback.java
 Sat Sep  1 10:42:51 2007
@@ -17,18 +17,15 @@
 package org.apache.wicket.feedback;
 
 /**
- * Interface for components that present some kind of feedback to the user,
- * normally based on the feedback messages attached to various components on a
- * given page.
+ * Interface for components that present some kind of feedback to the user, 
normally based on the
+ * feedback messages attached to various components on a given page.
+ * 
+ * This is basically a marker interface that tells Wicket that this 
component's onBeforeRender
+ * method must be called after all non feedback components have been 
initialized.
  * 
  * @author Jonathan Locke
  * @author Eelco Hillenius
  */
 public interface IFeedback
 {
-       /**
-        * This method is called on any component implementing IFeedback when 
it is
-        * time for the component to update its feedback display
-        */
-       void updateFeedback();
 }

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
 Sat Sep  1 10:42:51 2007
@@ -36,9 +36,8 @@
 
 
 /**
- * A panel that displays [EMAIL PROTECTED] 
org.apache.wicket.feedback.FeedbackMessage}s in
- * a list view. The maximum number of messages to show can be set with
- * setMaxMessages().
+ * A panel that displays [EMAIL PROTECTED] 
org.apache.wicket.feedback.FeedbackMessage}s in a list view. The
+ * maximum number of messages to show can be set with setMaxMessages().
  * 
  * @see org.apache.wicket.feedback.FeedbackMessage
  * @see org.apache.wicket.feedback.FeedbackMessages
@@ -75,9 +74,8 @@
                                private static final long serialVersionUID = 1L;
 
                                /**
-                                * Returns feedbackPanel + the message level, eg
-                                * 'feedbackPanelERROR'. This is used as the 
class of the li /
-                                * span elements.
+                                * Returns feedbackPanel + the message level, 
eg 'feedbackPanelERROR'. This is used
+                                * as the class of the li / span elements.
                                 * 
                                 * @see 
org.apache.wicket.model.IModel#getObject()
                                 */
@@ -110,6 +108,9 @@
 
        /**
         * @see org.apache.wicket.Component#Component(String)
+        * 
+        * @param id
+        * @param filter
         */
        public FeedbackPanel(final String id, IFeedbackMessageFilter filter)
        {
@@ -124,7 +125,7 @@
                        }
                };
                add(messagesContainer);
-               this.messageListView = new MessageListView("messages");
+               messageListView = new MessageListView("messages");
                messageListView.setVersioned(false);
                messagesContainer.add(messageListView);
 
@@ -136,9 +137,8 @@
 
 
        /**
-        * Search messages that this panel will render, and see if there is any
-        * message of level ERROR or up. This is a convenience method; same as
-        * calling 'anyMessage(FeedbackMessage.ERROR)'.
+        * Search messages that this panel will render, and see if there is any 
message of level ERROR
+        * or up. This is a convenience method; same as calling 
'anyMessage(FeedbackMessage.ERROR)'.
         * 
         * @return whether there is any message for this panel of level ERROR 
or up
         */
@@ -148,8 +148,7 @@
        }
 
        /**
-        * Search messages that this panel will render, and see if there is any
-        * message.
+        * Search messages that this panel will render, and see if there is any 
message.
         * 
         * @return whether there is any message for this panel
         */
@@ -159,8 +158,8 @@
        }
 
        /**
-        * Search messages that this panel will render, and see if there is any
-        * message of the given level.
+        * Search messages that this panel will render, and see if there is any 
message of the given
+        * level.
         * 
         * @param level
         *            the level, see FeedbackMessage
@@ -195,8 +194,7 @@
        }
 
        /**
-        * @return Model for feedback messages on which you can install filters 
and
-        *         other properties
+        * @return Model for feedback messages on which you can install filters 
and other properties
         */
        public final FeedbackMessagesModel getFeedbackMessagesModel()
        {
@@ -253,12 +251,12 @@
 
        /**
         * @param maxMessages
-        *            The maximum number of feedback messages that this feedback
-        *            panel should show at one time
+        *            The maximum number of feedback messages that this 
feedback panel should show at
+        *            one time
         */
        public final void setMaxMessages(int maxMessages)
        {
-               this.messageListView.setViewSize(maxMessages);
+               messageListView.setViewSize(maxMessages);
        }
 
        /**
@@ -278,7 +276,7 @@
        public void updateFeedback()
        {
                // Force model to load
-               messageListView.getModelObject();
+               // getFeedbackMessagesModel().preloadMessages();
        }
 
        /**
@@ -286,9 +284,8 @@
         * 
         * @param message
         *            the message
-        * @return the css class; by default, this returns feedbackPanel + the
-        *         message level, eg 'feedbackPanelERROR', but you can override 
this
-        *         method to provide your own
+        * @return the css class; by default, this returns feedbackPanel + the 
message level, eg
+        *         'feedbackPanelERROR', but you can override this method to 
provide your own
         */
        protected String getCSSClass(final FeedbackMessage message)
        {
@@ -317,9 +314,8 @@
        }
 
        /**
-        * Generates a component that is used to display the message inside the
-        * feedback panel. This component must handle being attached to
-        * <code>span</code> tags.
+        * Generates a component that is used to display the message inside the 
feedback panel. This
+        * component must handle being attached to <code>span</code> tags.
         * 
         * By default a [EMAIL PROTECTED] Label} is used.
         * 

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java?rev=571837&r1=571836&r2=571837&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java
 Sat Sep  1 10:42:51 2007
@@ -17,15 +17,13 @@
 package org.apache.wicket.request.target.component;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.RequestCycle;
-import org.apache.wicket.Component.IVisitor;
-import org.apache.wicket.feedback.IFeedback;
 
 /**
- * Default implementation of [EMAIL PROTECTED] 
org.apache.wicket.request.target.component.IComponentRequestTarget}.
- * Target that denotes a single component instance.
+ * Default implementation of
+ * [EMAIL PROTECTED] 
org.apache.wicket.request.target.component.IComponentRequestTarget}. Target 
that denotes
+ * a single component instance.
  * 
  * @author Eelco Hillenius
  */
@@ -73,26 +71,6 @@
                        // Render the component
                        try
                        {
-                               // collect feedback
-                               if (component instanceof MarkupContainer)
-                               {
-                                       MarkupContainer container = 
(MarkupContainer)component;
-
-                                       
container.visitChildren(IFeedback.class, new IVisitor()
-                                       {
-                                               public Object 
component(Component component)
-                                               {
-                                                       
((IFeedback)component).updateFeedback();
-                                                       return 
IVisitor.CONTINUE_TRAVERSAL;
-                                               }
-                                       });
-                               }
-
-                               if (component instanceof IFeedback)
-                               {
-                                       ((IFeedback)component).updateFeedback();
-                               }
-
                                // attach
                                component.attach();
 


Reply via email to