Author: ivaynberg
Date: Tue Nov 14 23:13:30 2006
New Revision: 475139

URL: http://svn.apache.org/viewvc?view=rev&rev=475139
Log:
tweaks

Modified:
    
incubator/wicket/trunk/wicket/src/main/java/wicket/behavior/AbstractBehavior.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/IHeaderResponse.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/behavior/AbstractBehavior.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/behavior/AbstractBehavior.java?view=diff&rev=475139&r1=475138&r2=475139
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/behavior/AbstractBehavior.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/behavior/AbstractBehavior.java
 Tue Nov 14 23:13:30 2006
@@ -65,8 +65,14 @@
         */
        public final void rendered(final Component component)
        {
-               onRendered(component);
-               cleanup();
+               try
+               {
+                       onRendered(component);
+               }
+               finally
+               {
+                       cleanup();
+               }
        }
 
        /**
@@ -85,8 +91,14 @@
         */
        public void exception(Component component, RuntimeException exception)
        {
-               onException(component, exception);
-               cleanup();
+               try
+               {
+                       onException(component, exception);
+               }
+               finally
+               {
+                       cleanup();
+               }
        }
 
        /**

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/IHeaderResponse.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/IHeaderResponse.java?view=diff&rev=475139&r1=475138&r2=475139
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/IHeaderResponse.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/IHeaderResponse.java
 Tue Nov 14 23:13:30 2006
@@ -14,108 +14,111 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package wicket.markup.html;
-
-import java.io.Serializable;
-
-import wicket.ResourceReference;
-import wicket.Response;
-
-/**
- * Interface that is used to render header elements (usually javascript and CSS
- * references).
- * 
- * Implementation of this interface is responsible for filtering duplicate
- * contributions (so that for example the same javascript is not loaded twice)
- * during the same request.
- * 
- * @author Matej Knopp
- */
-public interface IHeaderResponse extends Serializable
-{
-       /**
-        * Writes a javascript reference, if the specified reference hasn't been
-        * rendered yet.
-        * 
-        * @param reference
-        *            resource reference pointing to the javascript resource
-        */
-       public void renderJavascriptReference(ResourceReference reference);
-
-       /**
-        * Renders javascript code to the response, if the javascript has not
-        * already been rendered.
-        * 
-        * @param javascript
-        *            javacript content to be rendered.
-        * 
-        * @param id
-        *            unique id for the javascript element. This can be null,
-        *            however in that case the ajax header contribution can't 
detect
-        *            duplicate script fragments.
-        */
-       public void renderJavascript(CharSequence javascript, String id);
-
-       /**
-        * Writes a CSS reference, if the specified reference hasn't been 
rendered
-        * yet.
-        * 
-        * @param reference
-        *            resource reference pointing to the CSS resource
-        */
-       public void renderCSSReference(ResourceReference reference);
-
-       /**
-        * Renders an arbitrary string to the header. The string is only 
rendered if
-        * the same string hasn't been rendered before.
-        * <p>
-        * Note: This method is kind of dangerous as users are able to write to 
the
-        * output whatever they like.
-        * 
-        * @param string
-        *            string to be rendered to head
-        */
-       public void renderString(CharSequence string);
-
-       /**
-        * Marks the given object as rendered. The object can be anything 
(string,
-        * resource reference, etc...). The purpose of this function is to allow
-        * user to manually keep track of rendered items. This can be useful for
-        * items that are expensive to generate (like interpolated text).
-        * 
-        * @param object
-        *            object to be marked as rendered.
-        */
-       public void markRendered(Object object);
-
-       /**
-        * Returns whether the given object has been marked as rendered.
-        * <ul>
-        * <li>Methods <code>renderJavascriptReference</code> and
-        * <code>renderCSSReference</code> mark the specified
-        * [EMAIL PROTECTED] ResourceReference} as rendered.
-        * <li>Method <code>renderJavascript</code> marks List of two elements
-        * (first is javascript body CharSequence and second is id) as rendered.
-        * <li>Method <code>renderString</code> marks the whole string as
-        * rendered.
-        * <li>Method <code>markRendered</code> can be used to mark an arbitrary
-        * object as rendered
-        * </ul>
-        * 
-        * @param object
-        *            Object that is queried to be rendered
-        * @return Whether the object has been marked as rendered during the 
request
-        */
-       public boolean wasRendered(Object object);
-
-       /**
-        * Returns the response that can be used to write arbitrary text to the 
head
-        * section.
-        * <p>
-        * Note: This method is kind of dangerous as users are able to write to 
the
-        * output whatever they like.
-        * 
-        * @return Reponse
-        */
-       public Response getResponse();
-}
+package wicket.markup.html;
+
+import java.io.Serializable;
+
+import wicket.ResourceReference;
+import wicket.Response;
+
+/**
+ * Interface that is used to render header elements (usually javascript and CSS
+ * references).
+ * 
+ * Implementation of this interface is responsible for filtering duplicate
+ * contributions (so that for example the same javascript is not loaded twice)
+ * during the same request.
+ * 
+ * @author Matej Knopp
+ */
+public interface IHeaderResponse extends Serializable
+{
+       /**
+        * Writes a javascript reference, if the specified reference hasn't been
+        * rendered yet.
+        * 
+        * @param reference
+        *            resource reference pointing to the javascript resource
+        */
+       public void renderJavascriptReference(ResourceReference reference);
+
+       /**
+        * Renders javascript code to the response, if the javascript has not
+        * already been rendered.
+        * 
+        * the necessary surrounding <code>script</code> tags will be added to 
the
+        * output.
+        * 
+        * @param javascript
+        *            javacript content to be rendered.
+        * 
+        * @param id
+        *            unique id for the javascript element. This can be null,
+        *            however in that case the ajax header contribution can't 
detect
+        *            duplicate script fragments.
+        */
+       public void renderJavascript(CharSequence javascript, String id);
+
+       /**
+        * Writes a CSS reference, if the specified reference hasn't been 
rendered
+        * yet.
+        * 
+        * @param reference
+        *            resource reference pointing to the CSS resource
+        */
+       public void renderCSSReference(ResourceReference reference);
+
+       /**
+        * Renders an arbitrary string to the header. The string is only 
rendered if
+        * the same string hasn't been rendered before.
+        * <p>
+        * Note: This method is kind of dangerous as users are able to write to 
the
+        * output whatever they like.
+        * 
+        * @param string
+        *            string to be rendered to head
+        */
+       public void renderString(CharSequence string);
+
+       /**
+        * Marks the given object as rendered. The object can be anything 
(string,
+        * resource reference, etc...). The purpose of this function is to allow
+        * user to manually keep track of rendered items. This can be useful for
+        * items that are expensive to generate (like interpolated text).
+        * 
+        * @param object
+        *            object to be marked as rendered.
+        */
+       public void markRendered(Object object);
+
+       /**
+        * Returns whether the given object has been marked as rendered.
+        * <ul>
+        * <li>Methods <code>renderJavascriptReference</code> and
+        * <code>renderCSSReference</code> mark the specified
+        * [EMAIL PROTECTED] ResourceReference} as rendered.
+        * <li>Method <code>renderJavascript</code> marks List of two elements
+        * (first is javascript body CharSequence and second is id) as rendered.
+        * <li>Method <code>renderString</code> marks the whole string as
+        * rendered.
+        * <li>Method <code>markRendered</code> can be used to mark an arbitrary
+        * object as rendered
+        * </ul>
+        * 
+        * @param object
+        *            Object that is queried to be rendered
+        * @return Whether the object has been marked as rendered during the 
request
+        */
+       public boolean wasRendered(Object object);
+
+       /**
+        * Returns the response that can be used to write arbitrary text to the 
head
+        * section.
+        * <p>
+        * Note: This method is kind of dangerous as users are able to write to 
the
+        * output whatever they like.
+        * 
+        * @return Reponse
+        */
+       public Response getResponse();
+}

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java?view=diff&rev=475139&r1=475138&r2=475139
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java 
(original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/WebPage.java 
Tue Nov 14 23:13:30 2006
@@ -25,7 +25,6 @@
 import wicket.PageMap;
 import wicket.PageParameters;
 import wicket.ResourceReference;
-import wicket.Response;
 import wicket.Session;
 import wicket.behavior.AbstractBehavior;
 import wicket.markup.MarkupFragment;
@@ -261,7 +260,7 @@
                // Create a body container, assuming that all HTML pages 
require a
                // <body> tag
                new HtmlBodyContainer(this, BodyOnLoadHandler.BODY_ID);
-               
+
                // Add this little helper to the page
                this.bodyContainer = new BodyContainer(this, 
BodyOnLoadHandler.BODY_ID);
 
@@ -347,8 +346,6 @@
                 */
                public final void renderHead(final IHeaderResponse headResponse)
                {
-                       Response response = headResponse.getResponse();
-
                        final WebRequestCycle cycle = 
(WebRequestCycle)getRequestCycle();
                        final IRequestTarget target = cycle.getRequestTarget();
 
@@ -374,18 +371,21 @@
 
                        if (firstAccess)
                        {
+                               StringBuilder javascript = new StringBuilder();
                                // this is the first access to the pagemap, set 
window.name
-                               JavascriptUtils.writeOpenTag(response);
-                               response.write("if (window.name=='') { 
window.name=\"");
-                               response.write(name);
-                               response.write("\"; }");
-                               JavascriptUtils.writeCloseTag(response);
+                               javascript.append("if (window.name=='') { 
window.name=\"");
+                               javascript.append(name);
+                               javascript.append("\"; }");
+
+                               
headResponse.renderJavascript(javascript.toString(), getClass().getName());
                        }
                        else
                        {
-                               // Here is our trickery to detect whether the 
current request was
+                               // Here is our trickery to detect whether the 
current request
+                               // was
                                // made in a new window/ tab, in which case it 
should go in a
-                               // different page map so that we don't 
intermangle the history of
+                               // different page map so that we don't 
intermangle the history
+                               // of
                                // those windows
                                CharSequence url = null;
                                if (target instanceof 
IBookmarkablePageRequestTarget)
@@ -393,18 +393,20 @@
                                        IBookmarkablePageRequestTarget current 
= (IBookmarkablePageRequestTarget)target;
                                        BookmarkablePageRequestTarget redirect 
= new BookmarkablePageRequestTarget(
                                                        
getSession().createAutoPageMapName(), current.getPageClass(), current
-                                                       .getPageParameters());
+                                                                       
.getPageParameters());
                                        url = cycle.urlFor(redirect);
                                }
                                else
                                {
                                        url = 
urlFor(INewBrowserWindowListener.INTERFACE);
                                }
-                               JavascriptUtils.writeOpenTag(response);
-                               response.write("if (window.name=='') { 
window.location=\"");
-                               response.write(url);
-                               response.write("\"; }");
-                               JavascriptUtils.writeCloseTag(response);
+
+                               StringBuilder javascript = new StringBuilder();
+                               javascript.append("if (window.name=='') { 
window.location=\"");
+                               javascript.append(url);
+                               javascript.append("\"; }");
+
+                               headResponse.renderJavascript(javascript, 
getClass().getName());
                        }
                }
        }


Reply via email to