Author: knopp
Date: Mon Feb 18 15:48:39 2008
New Revision: 628924

URL: http://svn.apache.org/viewvc?rev=628924&view=rev
Log:
WICKET-1356
revert setMetaData change

Modified:
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=628924&r1=628923&r2=628924&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java 
(original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java 
Mon Feb 18 15:48:39 2008
@@ -1227,8 +1227,10 @@
                                        // has to result in a request target
                                        if (target == null)
                                        {
-                                               throw new 
WicketRuntimeException(
-                                                       "the processor did not 
resolve to any request target");
+                                               this.handled = false;
+                                               currentStep = DONE;
+                                               //throw new 
WicketRuntimeException(
+                                               //      "the processor did not 
resolve to any request target");
                                        }
                                        // Add (inserting at the bottom) in 
case before or during
                                        // target resolving one or more request 
targets were pushed
@@ -1288,6 +1290,18 @@
        }
 
        /**
+        * INTERNAL. This method is not part of public Wicket Api. Do not call 
it.
+        * Returns whether wicket handled this request or not (i.e. when no 
request target was found). 
+        * @return true if wicket handled this request, false otherwise
+        */
+       public boolean wasHandled()
+       {
+               return handled;
+       }
+       
+       private boolean handled = true;
+       
+       /**
         * Loop through the processing steps starting from the current one.
         */
        private final void steps()
@@ -1427,15 +1441,6 @@
         * MetaDataEntry array.
         */
        private MetaDataEntry[] metaData;
-
-       /**
-        * 
-        * @param key
-        * @param object
-        */
-       public final void setMetaData(final MetaDataKey key, final Serializable 
object) {
-               setMetaData(key, (Object)object);
-       }
        
        /**
         * Sets the metadata for this request cycle using the given key. If the 
metadata object is not
@@ -1449,7 +1454,8 @@
         * @throws IllegalArgumentException
         * @see MetaDataKey
         */
-       public final void setMetaData(final MetaDataKey key, final Object 
object)
+       // TODO: Replace the Serializable type with Object for next wicket 
version
+       public final void setMetaData(final MetaDataKey key, final Serializable 
object)
        {
                metaData = key.set(metaData, object);
        }
@@ -1462,8 +1468,8 @@
         * @return The metadata or null if no metadata was found for the given 
key
         * @see MetaDataKey
         */
-       public final Object getMetaData(final MetaDataKey key)
+       public final Serializable getMetaData(final MetaDataKey key)
        {
-               return key.get(metaData);
+               return (Serializable)key.get(metaData);
        }
 }

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java?rev=628924&r1=628923&r2=628924&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 Mon Feb 18 15:48:39 2008
@@ -17,6 +17,7 @@
 package org.apache.wicket.protocol.http;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
@@ -24,6 +25,7 @@
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
@@ -32,6 +34,7 @@
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.Session;
 import org.apache.wicket.markup.html.pages.ExceptionErrorPage;
+import org.apache.wicket.protocol.http.request.WebErrorCodeResponseTarget;
 import 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget;
 import 
org.apache.wicket.request.target.component.IBookmarkablePageRequestTarget;
 import org.apache.wicket.request.target.component.IPageRequestTarget;
@@ -382,6 +385,10 @@
                try
                {
                        cycle.request();
+                       if (cycle.wasHandled() == false) 
+                       {
+                               cycle.setRequestTarget(new 
WebErrorCodeResponseTarget(HttpServletResponse.SC_NOT_FOUND));
+                       }
                        createRequestCycle();
                }
                finally

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java?rev=628924&r1=628923&r2=628924&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java
 Mon Feb 18 15:48:39 2008
@@ -201,6 +201,9 @@
                        }
                }
 
+               // (WICKET-1356) in case no target was found, return null here. 
RequestCycle will deal with it
+               // possible letting wicket filter to pass the request down the 
filter chain             
+               /*
                if (target == null)
                {
                        // if we get here, we have no recognized Wicket target, 
and thus
@@ -208,6 +211,7 @@
                        // this server
                        return resolveExternalResource(requestCycle);
                }
+               */
 
                return target;
        }

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=628924&r1=628923&r2=628924&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 Mon Feb 18 15:48:39 2008
@@ -191,7 +191,10 @@
                                {
                                        // servlet doesn't support 
if-modified-since, no reason
                                        // to go through further expensive logic
-                                       doGet(httpServletRequest, 
httpServletResponse);
+                                       if (doGet(httpServletRequest, 
httpServletResponse) == false)
+                                       {
+                                               chain.doFilter(request, 
response);
+                                       }
                                }
                                else
                                {
@@ -239,11 +242,12 @@
         *            Servlet request object
         * @param servletResponse
         *            Servlet response object
+        * @return true if the request was handled by wicket, false otherwise
         * @throws ServletException
         *             Thrown if something goes wrong during request handling
         * @throws IOException
         */
-       public void doGet(final HttpServletRequest servletRequest,
+       public boolean doGet(final HttpServletRequest servletRequest,
                final HttpServletResponse servletResponse) throws 
ServletException, IOException
        {
                String relativePath = getRelativePath(servletRequest);
@@ -254,7 +258,7 @@
                {
                        final String redirectUrl = 
servletRequest.getRequestURI() + "/";
                        
servletResponse.sendRedirect(servletResponse.encodeRedirectURL(redirectUrl));
-                       return;
+                       return true;
                }
 
                final ClassLoader previousClassLoader = 
Thread.currentThread().getContextClassLoader();
@@ -320,7 +324,7 @@
                                                
bufferedResponse.writeTo(servletResponse);
                                                // redirect responses are 
ignored for the request
                                                // logger...
-                                               return;
+                                               return true;
                                        }
                                }
                        }
@@ -352,6 +356,8 @@
                                {
                                        // Process request
                                        cycle.request();
+                                       
+                                       return cycle.wasHandled();
                                }
                                catch (AbortException e)
                                {
@@ -383,6 +389,7 @@
                                
Thread.currentThread().setContextClassLoader(previousClassLoader);
                        }
                }
+               return true;
        }
 
        /**

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java?rev=628924&r1=628923&r2=628924&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
 Mon Feb 18 15:48:39 2008
@@ -17,6 +17,7 @@
 package org.apache.wicket.protocol.http;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Enumeration;
 
 import javax.servlet.FilterConfig;
@@ -26,6 +27,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.util.io.Streams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -118,7 +121,10 @@
        public final void doGet(final HttpServletRequest servletRequest,
                        final HttpServletResponse servletResponse) throws 
ServletException, IOException
        {
-               wicketFilter.doGet(servletRequest, servletResponse);
+               if (wicketFilter.doGet(servletRequest, servletResponse) == 
false) 
+               {
+                       fallback(servletRequest, servletResponse);
+               }
        }
 
        /**
@@ -136,9 +142,43 @@
        public final void doPost(final HttpServletRequest servletRequest,
                        final HttpServletResponse servletResponse) throws 
ServletException, IOException
        {
-               wicketFilter.doGet(servletRequest, servletResponse);
+               if (wicketFilter.doGet(servletRequest, servletResponse) == 
false) 
+               {
+                       fallback(servletRequest, servletResponse);
+               }
        }
 
+       private void fallback(HttpServletRequest request, HttpServletResponse 
response) throws IOException 
+       {
+               
+               // The ServletWebRequest is created here to avoid code 
duplication. The getURL
+               // call doesn't depend on anything wicket specific 
+               ServletWebRequest req = new ServletWebRequest(request);
+               String url = req.getURL();
+               
+               // Get the relative URL we need for loading the resource from
+               // the servlet context
+               // NOTE: we NEED to put the '/' in front as otherwise some 
versions
+               // of application servers (e.g. Jetty 5.1.x) will fail for 
requests
+               // like '/mysubdir/myfile.css'
+               
+               if ((url.length() > 0 && url.charAt(0) != '/') || url.length() 
== 0)
+               {
+                       url = '/' + url;
+               }
+               
+               InputStream stream = 
getServletContext().getResourceAsStream(url);
+                                               
+               if (stream == null) 
+               {
+                       response.sendError(HttpServletResponse.SC_NOT_FOUND);
+               } 
+               else 
+               {
+                       Streams.copy(stream, response.getOutputStream());
+               }
+       }
+       
        /**
         * Servlet initialization
         */


Reply via email to