You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jb...@apache.org on 2007/04/16 14:17:34 UTC

svn commit: r529218 - in /incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src: main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java test/java/org/apache/wicket/protocol/http/WebExternalResourceTest.java

Author: jbq
Date: Mon Apr 16 05:17:32 2007
New Revision: 529218

URL: http://svn.apache.org/viewvc?view=rev&rev=529218
Log:
WebExternalResourceRequestTarget now directly uses
ResourceStreamRequestTarget#ResourceStreamRequestTarget(WebExternalResourceStream)

Modified:
    incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java
    incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebExternalResourceTest.java

Modified: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java?view=diff&rev=529218&r1=529217&r2=529218
==============================================================================
--- incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java (original)
+++ incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java Mon Apr 16 05:17:32 2007
@@ -16,20 +16,11 @@
  */
 package org.apache.wicket.protocol.http.request;
 
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.wicket.IRequestTarget;
 import org.apache.wicket.RequestCycle;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.protocol.http.WebRequestCycle;
-import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.target.resource.ResourceStreamRequestTarget;
+import org.apache.wicket.util.resource.WebExternalResourceStream;
 
 
 /**
@@ -38,70 +29,32 @@
  * Wicket servlet). NOTE: this target can only be used in a servlet environment
  * with {@link org.apache.wicket.protocol.http.WebRequestCycle}s.
  * 
+ * <p>
+ * <b>NOTE:</b> this class is a wrapper around
+ * {@link ResourceStreamRequestTarget#ResourceStreamRequestTarget(WebExternalResourceStream)},
+ * and kept for compatibility purposes.
+ * </p>
+ * 
  * @author Eelco Hillenius
  */
-public class WebExternalResourceRequestTarget implements IRequestTarget
+public class WebExternalResourceRequestTarget extends ResourceStreamRequestTarget
 {
 	/** log. */
 	private static final Log log = LogFactory.getLog(WebExternalResourceRequestTarget.class);
 
 	/** the relative url of the external resource. */
-	private final String url;
+	private final String uri;
 
 	/**
 	 * Construct.
 	 * 
-	 * @param url
+	 * @param uri
 	 *            the relative url of the external resource
 	 */
-	public WebExternalResourceRequestTarget(String url)
-	{
-		if (url == null)
-		{
-			throw new IllegalArgumentException("Argument url must be not null");
-		}
-
-		this.url = url;
-	}
-
-	/**
-	 * Respond by trying to delegate getting the resource from the
-	 * {@link ServletContext} object and stream that to the client. If such a
-	 * resource is not found, a warning will be logged, and a 404 will be
-	 * issued.
-	 * 
-	 * @see org.apache.wicket.IRequestTarget#respond(org.apache.wicket.RequestCycle)
-	 */
-	public void respond(RequestCycle requestCycle)
+	public WebExternalResourceRequestTarget(String uri)
 	{
-		try
-		{
-			WebResponse webResponse = ((WebRequestCycle)requestCycle).getWebResponse();
-			final ServletContext context = ((WebApplication)requestCycle.getApplication())
-					.getServletContext();
-
-			final InputStream in = context.getResourceAsStream(url);
-			if (in != null)
-			{
-				// NOTE headers must be written before the body
-				// Set content type
-				webResponse.detectContentType(requestCycle, url);
-				// FIXME do we need to call webResponse.setContentLength()?
-				webResponse.write(in);
-			}
-			else
-			{
-				log.warn("the resource requested by request " + requestCycle.getRequest()
-						+ " was not found");
-				HttpServletResponse httpServletResponse = webResponse.getHttpServletResponse();
-				httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
-			}
-		}
-		catch (IOException e)
-		{
-			throw new WicketRuntimeException("Cannot load static content for request "
-					+ requestCycle.getRequest(), e);
-		}
+		super(new WebExternalResourceStream(uri));
+		this.uri = uri;
 	}
 
 	/**
@@ -111,7 +64,7 @@
 	 */
 	public final String getUrl()
 	{
-		return url;
+		return uri;
 	}
 
 	/**
@@ -129,7 +82,7 @@
 		if (obj instanceof WebExternalResourceRequestTarget)
 		{
 			WebExternalResourceRequestTarget that = (WebExternalResourceRequestTarget)obj;
-			return url.equals(that.url);
+			return uri.equals(that.uri);
 		}
 		return false;
 	}
@@ -140,7 +93,7 @@
 	public int hashCode()
 	{
 		int result = "WebExternalResourceRequestTarget".hashCode();
-		result += url.hashCode();
+		result += uri.hashCode();
 		return 17 * result;
 	}
 
@@ -149,6 +102,6 @@
 	 */
 	public String toString()
 	{
-		return "[WebExternalResourceRequestTarget@" + hashCode() + " " + url + "]";
+		return "[WebExternalResourceRequestTarget@" + hashCode() + " " + uri + "]";
 	}
 }

Modified: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebExternalResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebExternalResourceTest.java?view=diff&rev=529218&r1=529217&r2=529218
==============================================================================
--- incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebExternalResourceTest.java (original)
+++ incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebExternalResourceTest.java Mon Apr 16 05:17:32 2007
@@ -25,6 +25,7 @@
 import org.apache.wicket.request.target.resource.ResourceStreamRequestTarget;
 import org.apache.wicket.util.io.Streams;
 import org.apache.wicket.util.resource.WebExternalResourceStream;
+import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.tester.WicketTester;
 import org.apache.wicket.util.tester.WicketTester.DummyWebApplication;
 
@@ -46,18 +47,21 @@
 		in.close();
 		out.close();
 		tester = new WicketTester(new DummyWebApplication(), tempDir.getPath());
+		tester.setupRequestAndResponse();
+		// We fake the browser URL, otherwise Wicket doesn't know the requested URL and cannot guess the Content-Type
+		tester.getServletRequest().setPath("/index.html");
 	}
 
 	public void testWebExternalResourceRequestTarget() throws Exception
 	{
 		WebExternalResourceRequestTarget rt = new WebExternalResourceRequestTarget("/index.html");
-		tester.setupRequestAndResponse();
 		WebRequestCycle cycle = tester.createRequestCycle();
 		cycle.setRequestTarget(rt);
 		tester.processRequestCycle(cycle);
 		assertTrue(getContentType().startsWith("text/html"));
 		// WebExternalResourceRequestTarget does not set Content-Length
 		// assertEquals(23, getContentLength());
+		tester.assertResultPage(WebExternalResourceTest.class, "index.html");
 	}
 
 	// FIXME WebExternalResourceStream does not implement length()
@@ -65,14 +69,12 @@
 	{
 		WebExternalResourceStream resource = new WebExternalResourceStream("/index.html");
 		ResourceStreamRequestTarget rt = new ResourceStreamRequestTarget(resource);
-		tester.setupRequestAndResponse();
-		// We fake the browser URL, otherwise Wicket doesn't know the requested URL and cannot guess the Content-Type
-		tester.getServletRequest().setPath("/index.html");
 		WebRequestCycle cycle = tester.createRequestCycle();
 		cycle.setRequestTarget(rt);
 		tester.processRequestCycle(cycle);
 		assertTrue(getContentType().startsWith("text/html"));
 		// WebExternalResourceStream does not set Content-Length
 		// assertEquals(23, getContentLength());
+		tester.assertResultPage(WebExternalResourceTest.class, "index.html");
 	}
 }