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(); } }