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