You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2008/02/19 00:48:47 UTC
svn commit: r628924 - in
/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket:
RequestCycle.java protocol/http/MockWebApplication.java
protocol/http/WebRequestCycleProcessor.java protocol/http/WicketFilter.java
protocol/http/WicketServlet.java
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
*/