Author: jdonnerstag
Date: Sat May 12 07:10:17 2007
New Revision: 537428

URL: http://svn.apache.org/viewvc?view=rev&rev=537428
Log:
wicket-293: PackageRequestTargetUrlCodingStrategy should sends a 404 when a 
page/class cannot be found.

fixed

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/PackageRequestTargetUrlCodingStrategy.java
    
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/request/target/coding/UrlMountingTest.java

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java?view=diff&rev=537428&r1=537427&r2=537428
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
 Sat May 12 07:10:17 2007
@@ -24,6 +24,8 @@
 import java.util.TreeSet;
 import java.util.Map.Entry;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.IPageMap;
@@ -361,7 +363,27 @@
        {
                IRequestTargetUrlCodingStrategy encoder = 
urlCodingStrategyForPath(requestParameters
                                .getPath());
-               return (encoder != null) ? encoder.decode(requestParameters) : 
null;
+               if (encoder == null)
+               {
+                       return null;
+               }
+               try
+               {
+                       return encoder.decode(requestParameters);
+               }
+               catch (WicketRuntimeException ex)
+               {
+                       if (log.isDebugEnabled())
+                       {
+                               log.debug(ex.toString());
+                               
+                               return new 
WebErrorCodeResponseTarget(HttpServletResponse.SC_NOT_FOUND,
+                               "Unable to load Page: " + ex.toString());
+                       }
+                       
+                       return new 
WebErrorCodeResponseTarget(HttpServletResponse.SC_NOT_FOUND,
+                               "Unable to load Page");
+               }
        }
 
        /**

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/PackageRequestTargetUrlCodingStrategy.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/PackageRequestTargetUrlCodingStrategy.java?view=diff&rev=537428&r1=537427&r2=537428
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/PackageRequestTargetUrlCodingStrategy.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/PackageRequestTargetUrlCodingStrategy.java
 Sat May 12 07:10:17 2007
@@ -38,7 +38,9 @@
  */
 public class PackageRequestTargetUrlCodingStrategy extends 
AbstractRequestTargetUrlCodingStrategy
 {
-       private static final Logger log = 
LoggerFactory.getLogger(PackageRequestTargetUrlCodingStrategy.class);
+       private static final Logger log = LoggerFactory
+                       .getLogger(PackageRequestTargetUrlCodingStrategy.class);
+
        /** package for this mount. */
        private final PackageName packageName;
 
@@ -61,9 +63,9 @@
         */
        public IRequestTarget decode(RequestParameters requestParameters)
        {
-               log.debug("path="+requestParameters.getPath());
+               log.debug("path=" + requestParameters.getPath());
                String remainder = 
requestParameters.getPath().substring(getMountPath().length());
-               log.debug("remainder="+remainder);
+               log.debug("remainder=" + remainder);
                final String parametersFragment;
                int ix = remainder.indexOf('/', 1);
                if (ix == -1)
@@ -87,8 +89,8 @@
                        return null;
                }
 
-               log.debug("remainder="+remainder);
-               log.debug("parametersFragment="+parametersFragment);
+               log.debug("remainder=" + remainder);
+               log.debug("parametersFragment=" + parametersFragment);
                final String bookmarkablePageClassName = packageName + "." + 
remainder.substring(0, ix);
                Class bookmarkablePageClass = 
Session.get().getClassResolver().resolveClass(
                                bookmarkablePageClassName);
@@ -110,8 +112,8 @@
        {
                if (!(requestTarget instanceof IBookmarkablePageRequestTarget))
                {
-                       throw new IllegalArgumentException("this encoder can 
only be used with instances of "
-                                       + 
IBookmarkablePageRequestTarget.class.getName());
+                       throw new IllegalArgumentException("this encoder can 
only be used with instances of " +
+                                       
IBookmarkablePageRequestTarget.class.getName());
                }
                AppendingStringBuffer url = new AppendingStringBuffer(40);
                url.append(getMountPath());

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/request/target/coding/UrlMountingTest.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/request/target/coding/UrlMountingTest.java?view=diff&rev=537428&r1=537427&r2=537428
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/request/target/coding/UrlMountingTest.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/request/target/coding/UrlMountingTest.java
 Sat May 12 07:10:17 2007
@@ -39,6 +39,24 @@
        private WicketTester tester;
 
        /**
+        * @see junit.framework.TestCase#setUp()
+        */
+       protected void setUp() throws Exception
+       {
+               tester = new WicketTester();
+               tester.getApplication().mount("/mount/point", 
PackageName.forClass(TestPage.class));
+               tester.setupRequestAndResponse();
+       }
+
+       /**
+        * @see junit.framework.TestCase#tearDown()
+        */
+       protected void tearDown() throws Exception
+       {
+               tester.destroy();
+       }
+
+       /**
         * Tests mounting.
         */
        public void testBadRequest1()
@@ -88,9 +106,11 @@
        public void testDirectAccessToMountedPageAllowed()
        {
                tester.setupRequestAndResponse();
-               tester.getServletRequest().setURL(
-                               
"/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication?wicket:bookmarkablePage=:"
-                                               + TestPage.class.getName() + 
"");
+               tester
+                               .getServletRequest()
+                               .setURL(
+                                               
"/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication?wicket:bookmarkablePage=:"
 +
+                                                               
TestPage.class.getName() + "");
                tester.processRequestCycle();
                tester.assertRenderedPage(TestPage.class);
        }
@@ -136,8 +156,8 @@
                tester
                                .getServletRequest()
                                .setURL(
-                                               
"/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication/foo/bar/?wicket:bookmarkablePage=:"
-                                                               + 
TestPage.class.getName() + "");
+                                               
"/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication/foo/bar/?wicket:bookmarkablePage=:"
 +
+                                                               
TestPage.class.getName() + "");
                tester.processRequestCycle();
                tester.assertRenderedPage(TestPage.class);
        }
@@ -193,23 +213,5 @@
                                tester.getServletRequest());
                return 
tester.getApplication().getRequestCycleProcessor().getRequestCodingStrategy()
                                .urlCodingStrategyForPath(relativePath);
-       }
-
-       /**
-        * @see junit.framework.TestCase#setUp()
-        */
-       protected void setUp() throws Exception
-       {
-               tester = new WicketTester();
-               tester.getApplication().mount("/mount/point", 
PackageName.forClass(TestPage.class));
-               tester.setupRequestAndResponse();
-       }
-
-       /**
-        * @see junit.framework.TestCase#tearDown()
-        */
-       protected void tearDown() throws Exception
-       {
-               tester.destroy();
        }
 }


Reply via email to