[jboss-cvs] jboss-seam/src/main/org/jboss/seam/servlet ...
Peter Muir
peter at bleepbleep.org.uk
Sun Mar 4 16:51:51 EST 2007
User: pmuir
Date: 07/03/04 16:51:51
Modified: src/main/org/jboss/seam/servlet ResourceServlet.java
Log:
JBSEAM-985
Revision Changes Path
1.4 +56 -24 jboss-seam/src/main/org/jboss/seam/servlet/ResourceServlet.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ResourceServlet.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/ResourceServlet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ResourceServlet.java 14 Feb 2007 07:32:38 -0000 1.3
+++ ResourceServlet.java 4 Mar 2007 21:51:51 -0000 1.4
@@ -4,16 +4,24 @@
import java.util.HashMap;
import java.util.Map;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.event.PhaseId;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import org.jboss.seam.contexts.Context;
+import org.jboss.seam.contexts.ContextAdaptor;
+import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.contexts.WebApplicationContext;
import org.jboss.seam.core.Init;
+import org.jboss.seam.core.Manager;
/**
* Serves extra resources such as Javascript, CSS, Images
@@ -24,11 +32,10 @@
{
private ServletContext context;
- private Map<String,AbstractResource> providers = new HashMap<String,AbstractResource>();
+ private Map<String, AbstractResource> providers = new HashMap<String, AbstractResource>();
@Override
- public void init(ServletConfig config)
- throws ServletException
+ public void init(ServletConfig config) throws ServletException
{
super.init(config);
context = config.getServletContext();
@@ -40,7 +47,7 @@
Context tempApplicationContext = new WebApplicationContext(context);
Init init = (Init) tempApplicationContext.get(Init.class);
- for ( String name: init.getResourceProviders() )
+ for (String name : init.getResourceProviders())
{
AbstractResource provider = (AbstractResource) tempApplicationContext.get(name);
if (provider != null)
@@ -73,8 +80,33 @@
AbstractResource provider = providers.get(path);
if (provider != null)
{
+ // Set up Seam contexts for Resource Providers
+ HttpSession session = request.getSession(true);
+ Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
+ Lifecycle.setServletRequest(request);
+ Lifecycle.beginRequest(getServletContext(), session, request);
+ Manager.instance().restoreConversation(request.getParameterMap());
+ Lifecycle.resumeConversation(session);
+ Manager.instance().handleConversationPropagation(request.getParameterMap());
+ try
+ {
provider.getResource(request, response);
+ // TODO: conversation timeout
+ Manager.instance().endRequest(ContextAdaptor.getSession(session));
+ Lifecycle.endRequest(session);
+ }
+ catch (Exception e)
+ {
+ Lifecycle.endRequest();
+ throw new ServletException(e);
}
+ finally
+ {
+ Lifecycle.setServletRequest(null);
+ Lifecycle.setPhaseId(null);
+ }
+ }
+
}
}
}
More information about the jboss-cvs-commits
mailing list