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/