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 [EMAIL PROTECTED] org.apache.wicket.protocol.http.WebRequestCycle}s. * + * <p> + * <b>NOTE:</b> this class is a wrapper around + * [EMAIL PROTECTED] 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 - * [EMAIL PROTECTED] 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"); } }