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


Reply via email to