You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2007/05/12 16:10:18 UTC
svn commit: r537428 - in /incubator/wicket/trunk/jdk-1.4/wicket/src:
main/java/org/apache/wicket/protocol/http/request/
main/java/org/apache/wicket/request/target/coding/
test/java/org/apache/wicket/request/target/coding/
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();
}
}
WICKET-293: sending a 404 (Was: svn commit: r537428 - in /incubator/wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/protocol/http/request/ main/java/org/apache/wicket/request/target/coding/ test/java/org/apache/wicket/request/target/coding/)
Posted by Jean-Baptiste Quenot <jb...@apache.org>.
* jdonnerstag@apache.org:
> 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");
> + }
Hello Juergen,
Thanks for taking care of this. However don't you think that we
could create a custom Exception like PageNotFoundException to
avoid catching any exception? Otherwise some legitimate
exceptions might be swallowed.
Cheers,
--
Jean-Baptiste Quenot
aka John Banana Qwerty
http://caraldi.com/jbq/