[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