Author: mgrigorov
Date: Wed Aug 11 18:49:58 2010
New Revision: 984528

URL: http://svn.apache.org/viewvc?rev=984528&view=rev
Log:
WICKET-2944 Application addRenderHeadListener causing error

Do not throw exception for HeaderResponse listeners during Ajax request 
processing.
Log a debug message and ignore the call.

Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=984528&r1=984527&r2=984528&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 Wed Aug 11 18:49:58 2010
@@ -36,7 +36,6 @@ import org.apache.wicket.Page;
 import org.apache.wicket.RequestCycle;
 import org.apache.wicket.ResourceReference;
 import org.apache.wicket.Response;
-import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxRequestTarget.IListener;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.markup.html.IHeaderResponse;
@@ -891,83 +890,104 @@ public class AjaxRequestTarget implement
 
                private static final long serialVersionUID = 1L;
 
-               private void checkHeaderRendering()
+               private boolean checkHeaderRendering()
                {
                        if (headerRendering == false)
                        {
-                               throw new WicketRuntimeException(
-                                       "Only methods that can be called on 
IHeaderResponse outside renderHead() are renderOnLoadJavascript and 
renderOnDomReadyJavascript");
+                               LOG.debug("Only methods that can be called on 
IHeaderResponse outside renderHead() are renderOnLoadJavascript and 
renderOnDomReadyJavascript");
                        }
+
+                       return headerRendering;
                }
 
                @Override
                public void renderCSSReference(ResourceReference reference, 
String media)
                {
-                       checkHeaderRendering();
-                       super.renderCSSReference(reference, media);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderCSSReference(reference, media);
+                       }
                }
 
                @Override
                public void renderCSSReference(String url)
                {
-                       checkHeaderRendering();
-                       super.renderCSSReference(url);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderCSSReference(url);
+                       }
                }
 
                @Override
                public void renderCSSReference(String url, String media)
                {
-                       checkHeaderRendering();
-                       super.renderCSSReference(url, media);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderCSSReference(url, media);
+                       }
                }
 
                @Override
                public void renderJavascript(CharSequence javascript, String id)
                {
-                       checkHeaderRendering();
-                       super.renderJavascript(javascript, id);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderJavascript(javascript, id);
+                       }
                }
 
                @Override
                public void renderCSSReference(ResourceReference reference)
                {
-                       checkHeaderRendering();
-                       super.renderCSSReference(reference);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderCSSReference(reference);
+                       }
                }
 
                @Override
                public void renderJavascriptReference(ResourceReference 
reference)
                {
-                       checkHeaderRendering();
-                       super.renderJavascriptReference(reference);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderJavascriptReference(reference);
+                       }
                }
 
                @Override
                public void renderJavascriptReference(ResourceReference 
reference, String id)
                {
-                       checkHeaderRendering();
-                       super.renderJavascriptReference(reference, id);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderJavascriptReference(reference, id);
+                       }
                }
 
                @Override
                public void renderJavascriptReference(String url)
                {
-                       checkHeaderRendering();
-                       super.renderJavascriptReference(url);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderJavascriptReference(url);
+                       }
                }
 
                @Override
                public void renderJavascriptReference(String url, String id)
                {
-                       checkHeaderRendering();
-                       super.renderJavascriptReference(url, id);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderJavascriptReference(url, id);
+                       }
                }
 
                @Override
                public void renderString(CharSequence string)
                {
-                       checkHeaderRendering();
-                       super.renderString(string);
+                       if (checkHeaderRendering())
+                       {
+                               super.renderString(string);
+                       }
                }
 
                /**


Reply via email to