Author: knopp
Date: Wed Jul  2 04:33:18 2008
New Revision: 673363

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

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/request/target/component/BookmarkableListenerInterfaceRequestTarget.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=673363&r1=673362&r2=673363&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 Wed Jul  
2 04:33:18 2008
@@ -1647,7 +1647,7 @@
                        // Get converter
                        final Class<?> objectClass = modelObject.getClass();
 
-                       final IConverter<Object> converter = 
(IConverter<Object>) getConverter(objectClass);
+                       final IConverter<Object> converter = 
(IConverter<Object>)getConverter(objectClass);
 
                        // Model string from property
                        final String modelString = 
converter.convertToString(modelObject, getLocale());
@@ -2139,11 +2139,20 @@
        }
 
        /**
-        * Sets the RENDERING flag on component and it's children.
+        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+        * 
+        * Sets the RENDERING flag and removes the PREPARED_FOR_RENDER flag on 
component and it's
+        * children.
+        * 
+        * @param setRenderingFlag
+        *            if this is false only the PREPARED_FOR_RENDER flag is 
removed from component, the
+        *            RENDERING flag is not set.
+        * 
+        * @see #prepareForRender(boolean)
         */
-       public final void markRendering()
+       public final void markRendering(boolean setRenderingFlag)
        {
-               internalMarkRendering();
+               internalMarkRendering(setRenderingFlag);
        }
 
        /**
@@ -2209,8 +2218,14 @@
         * 
         * Prepares the component and it's children for rendering. On whole 
page render this method must
         * be called on the page. On AJAX request, this method must be called 
on updated component.
+        * 
+        * @param setRenderingFlag
+        *            Whether to set the rendering flag. This must be true if 
the page is about to be
+        *            rendered. However, there are usecases to call this method 
without an immediate
+        *            render (e.g. on stateless listner request target to build 
the component
+        *            hierarchy), in that case setRenderingFlag should be false
         */
-       public final void prepareForRender()
+       public final void prepareForRender(boolean setRenderingFlag)
        {
                beforeRender();
                List<Component> feedbacks = 
getRequestCycle().getMetaData(FEEDBACK_LIST);
@@ -2223,7 +2238,7 @@
                        }
                }
                getRequestCycle().setMetaData(FEEDBACK_LIST, null);
-               markRendering();
+               markRendering(setRenderingFlag);
 
                // check authorization
                // first the component itself
@@ -2232,6 +2247,17 @@
        }
 
        /**
+        * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+        * 
+        * Prepares the component and it's children for rendering. On whole 
page render this method must
+        * be called on the page. On AJAX request, this method must be called 
on updated component.
+        */
+       public final void prepareForRender()
+       {
+               prepareForRender(true);
+       }
+
+       /**
         * Redirects browser to an intermediate page such as a sign-in page. 
The current request's url
         * is saved for future use by method continueToOriginalDestination(); 
Only use this method when
         * you plan to continue to the current url at some later time; 
otherwise just use
@@ -2344,7 +2370,7 @@
                        markupIndex = markupStream.getCurrentIndex();
                }
 
-               markRendering();
+               markRendering(true);
 
                setMarkupStream(markupStream);
 
@@ -2935,7 +2961,7 @@
        @SuppressWarnings("unchecked")
        public final Component setDefaultModelObject(final Object object)
        {
-               final IModel<Object> model = (IModel<Object>) getDefaultModel();
+               final IModel<Object> model = (IModel<Object>)getDefaultModel();
 
                // Check whether anything can be set at all
                if (model == null)
@@ -4103,10 +4129,14 @@
        /**
         * 
         */
-       void internalMarkRendering()
+       void internalMarkRendering(boolean setRenderingFlag)
        {
                setFlag(FLAG_PREPARED_FOR_RENDER, false);
-               setFlag(FLAG_RENDERING, true);
+
+               if (setRenderingFlag)
+               {
+                       setFlag(FLAG_RENDERING, true);
+               }
        }
 
        /**

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=673363&r1=673362&r2=673363&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 
Wed Jul  2 04:33:18 2008
@@ -1641,14 +1641,14 @@
         * @see org.apache.wicket.Component#internalMarkRendering()
         */
        @Override
-       void internalMarkRendering()
+       void internalMarkRendering(boolean setRenderingFlag)
        {
-               super.internalMarkRendering();
+               super.internalMarkRendering(setRenderingFlag);
                final int size = children_size();
                for (int i = 0; i < size; i++)
                {
                        final Component child = children_get(i);
-                       child.internalMarkRendering();
+                       child.internalMarkRendering(setRenderingFlag);
                }
        }
 

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java?rev=673363&r1=673362&r2=673363&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
 Wed Jul  2 04:33:18 2008
@@ -76,8 +76,8 @@
                PageParameters pageParameters, Component component,
                RequestListenerInterface listenerInterface)
        {
-               this(pageMapName, pageClass, pageParameters, 
component.getPath(), listenerInterface
-                       .getName(), 
component.getPage().getCurrentVersionNumber());
+               this(pageMapName, pageClass, pageParameters, 
component.getPath(),
+                       listenerInterface.getName(), 
component.getPage().getCurrentVersionNumber());
 
                int version = component.getPage().getCurrentVersionNumber();
                setPage(component.getPage());
@@ -110,6 +110,7 @@
                
pageParameters.put(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME, 
param.toString());
        }
 
+       @Override
        public void processEvents(RequestCycle requestCycle)
        {
                Page page = getPage();
@@ -134,7 +135,7 @@
                        // this is quite a hack to get components in repeater 
work.
                        // But it still can fail if the repeater is a paging 
one or on every render
                        // it will generate new index for the items...
-                       page.beforeRender();
+                       page.prepareForRender(false);
                        component = page.get(pageRelativeComponentPath);
                        if (component == null)
                        {
@@ -146,8 +147,7 @@
                                                " it could be that the 
component is inside a repeater make your component return false in 
getStatelessHint()");
                        }
                }
-               RequestListenerInterface listenerInterface = 
RequestListenerInterface
-                       .forName(interfaceName);
+               RequestListenerInterface listenerInterface = 
RequestListenerInterface.forName(interfaceName);
                if (listenerInterface == null)
                {
                        throw new WicketRuntimeException("unable to find 
listener interface " + interfaceName);
@@ -155,6 +155,7 @@
                listenerInterface.invoke(page, component);
        }
 
+       @Override
        public void respond(RequestCycle requestCycle)
        {
                Page page = getPage(requestCycle);


Reply via email to