Author: jbq
Date: Tue Sep  4 15:41:31 2007
New Revision: 572828

URL: http://svn.apache.org/viewvc?rev=572828&view=rev
Log:
WICKET-929 ExceptionErrorPage only works with WebResponse

Added:
    wicket/trunk/jdk-1.4/wicket/src/test/java/response/
    wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java   (with 
props)
    wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java  
 (with props)
Modified:
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/ExceptionErrorPage.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/ExceptionErrorPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/ExceptionErrorPage.java?rev=572828&r1=572827&r2=572828&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/ExceptionErrorPage.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/ExceptionErrorPage.java
 Tue Sep  4 15:41:31 2007
@@ -27,6 +27,7 @@
 import org.apache.wicket.markup.html.basic.MultiLineLabel;
 import org.apache.wicket.markup.html.debug.PageView;
 import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.protocol.http.WebResponse;
 import org.apache.wicket.util.string.Strings;
 
 
@@ -108,8 +109,12 @@
        protected void configureResponse()
        {
                super.configureResponse();
-               
getWebRequestCycle().getWebResponse().getHttpServletResponse().setStatus(
-                               HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+
+               if (getWebRequestCycle().getResponse() instanceof WebResponse)
+               {
+                       
getWebRequestCycle().getWebResponse().getHttpServletResponse().setStatus(
+                                       
HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+               }
        }
 
        /**

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java?rev=572828&r1=572827&r2=572828&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 Tue Sep  4 15:41:31 2007
@@ -395,22 +395,25 @@
        {
                previousRenderedPage = lastRenderedPage;
 
-               // handle redirects which are usually managed by the browser
-               // transparently
-               final MockHttpServletResponse httpResponse = 
(MockHttpServletResponse)cycle
-                               .getWebResponse().getHttpServletResponse();
-
-               if (httpResponse.isRedirect())
+               if (cycle.getResponse() instanceof WebResponse)
                {
-                       this.lastRenderedPage = generateLastRenderedPage(cycle);
-
-                       MockHttpServletRequest newHttpRequest = new 
MockHttpServletRequest(this.application,
-                                       servletSession, 
this.application.getServletContext());
-                       
newHttpRequest.setRequestToRedirectString(httpResponse.getRedirectLocation());
-                       wicketRequest = 
this.application.newWebRequest(newHttpRequest);
-
-                       cycle = createRequestCycle();
-                       cycle.request();
+                       // handle redirects which are usually managed by the 
browser
+                       // transparently
+                       final MockHttpServletResponse httpResponse = 
(MockHttpServletResponse)cycle
+                                       
.getWebResponse().getHttpServletResponse();
+       
+                       if (httpResponse.isRedirect())
+                       {
+                               this.lastRenderedPage = 
generateLastRenderedPage(cycle);
+       
+                               MockHttpServletRequest newHttpRequest = new 
MockHttpServletRequest(this.application,
+                                               servletSession, 
this.application.getServletContext());
+                               
newHttpRequest.setRequestToRedirectString(httpResponse.getRedirectLocation());
+                               wicketRequest = 
this.application.newWebRequest(newHttpRequest);
+       
+                               cycle = createRequestCycle();
+                               cycle.request();
+                       }
                }
                this.lastRenderedPage = generateLastRenderedPage(cycle);
 

Added: wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java?rev=572828&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java Tue Sep  
4 15:41:31 2007
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package response;
+
+import org.apache.wicket.markup.html.WebPage;
+
+public class BrokenPage extends WebPage
+{
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 1L;
+}

Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/response/BrokenPage.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java?rev=572828&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java 
(added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java 
Tue Sep  4 15:41:31 2007
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package response;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.protocol.http.MockWebApplication;
+import org.apache.wicket.protocol.http.WebRequestCycle;
+import 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget;
+import org.apache.wicket.response.StringResponse;
+import org.apache.wicket.settings.IExceptionSettings;
+
+public class StringResponseTest extends WicketTestCase
+{
+       public void testBrokenPage() {
+               tester.setupRequestAndResponse();
+               
tester.getApplication().getRequestCycleSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_EXCEPTION_PAGE);
+
+               WebRequestCycle cycle = tester.createRequestCycle();
+               cycle.setResponse(new StringResponse());
+               try
+               {
+                       cycle.request(new 
BookmarkablePageRequestTarget(BrokenPage.class));
+                       Method method = 
MockWebApplication.class.getDeclaredMethod("generateLastRenderedPage", new 
Class[]{WebRequestCycle.class});
+                       method.setAccessible(true);
+                       Page page = (Page)method.invoke(tester, new 
Object[]{cycle});
+                       WebRequestCycle cycle2 = tester.createRequestCycle();
+                       cycle2.setResponse(new StringResponse());
+                       page.render();
+               }
+               catch (IllegalArgumentException e)
+               {
+                       throw new RuntimeException(e);
+               }
+               catch (IllegalAccessException e)
+               {
+                       throw new RuntimeException(e);
+               }
+               catch (InvocationTargetException e)
+               {
+                       throw new RuntimeException(e);
+               }
+               catch (SecurityException e)
+               {
+                       throw new RuntimeException(e);
+               }
+               catch (NoSuchMethodException e)
+               {
+                       throw new RuntimeException(e);
+               }
+               finally
+               {
+                       cycle.getResponse().close();
+               }
+       }
+}

Propchange: 
wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
wicket/trunk/jdk-1.4/wicket/src/test/java/response/StringResponseTest.java
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to