Author: jcompagner
Date: Tue Mar 17 11:49:54 2009
New Revision: 755204

URL: http://svn.apache.org/viewvc?rev=755204&view=rev
Log:
fix for shared resources and url encrypting strategy. RequestCycle is needed 
for this

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java?rev=755204&r1=755203&r2=755204&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
 Tue Mar 17 11:49:54 2009
@@ -290,4 +290,10 @@
                        return super.isRedirect();
                }
        }
+
+       void unset()
+       {
+               set(null);
+       }
+
 }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=755204&r1=755203&r2=755204&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 Tue Mar 17 11:49:54 2009
@@ -49,6 +49,7 @@
 import org.apache.wicket.protocol.http.portlet.PortletServletResponseWrapper;
 import org.apache.wicket.protocol.http.portlet.WicketFilterPortletContext;
 import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
+import org.apache.wicket.request.RequestParameters;
 import org.apache.wicket.session.ISessionStore;
 import org.apache.wicket.settings.IRequestCycleSettings;
 import org.apache.wicket.util.resource.IResourceStream;
@@ -1110,6 +1111,7 @@
                        final String resourceReferenceKey = 
pathInfo.substring(WebRequestCodingStrategy.RESOURCES_PATH_PREFIX.length());
 
                        Resource resource = null;
+                       WebRequestCycle requestCycle = null;
 
                        boolean externalCall = !Application.exists();
                        try
@@ -1131,12 +1133,25 @@
                                        checkCharacterEncoding(servletRequest);
 
                                        final WebRequest request = 
webApplication.newWebRequest(servletRequest);
+                                       WebResponse response = new 
WebResponse();
+                                       // create a request cycle if not 
already there.
+                                       if (RequestCycle.get() == null)
+                                       {
+                                               requestCycle = 
(WebRequestCycle)webApplication.newRequestCycle(request,
+                                                       response);
+                                       }
                                        // make the session available.
-                                       Session.findOrCreate(request, new 
WebResponse());
+                                       Session.findOrCreate(request, response);
 
 
+                                       // decode the parameters so that shared 
resource params are also decoded
+                                       // a request cycle is then needed. (see 
above)
+                                       RequestParameters rp = 
RequestCycle.get()
+                                               .getProcessor()
+                                               .getRequestCodingStrategy()
+                                               .decode(request);
                                        // Set parameters from servlet request
-                                       
resource.setParameters(request.getParameterMap());
+                                       
resource.setParameters(rp.getParameters());
 
                                        // Get resource stream
                                        IResourceStream stream = 
resource.getResourceStream();
@@ -1177,6 +1192,14 @@
                                {
                                        Session.unset();
                                }
+
+                               if (requestCycle != null)
+                               {
+                                       // TODO should this really be called... 
only unset it for now. detach does a lot
+                                       // external things (for example session)
+                                       // requestCycle.detach();
+                                       requestCycle.unset();
+                               }
                        }
                }
                return -1;


Reply via email to