[jboss-cvs] jboss-seam/src/remoting/org/jboss/seam/remoting ...

Gavin King gavin.king at jboss.com
Wed Jun 13 17:10:14 EDT 2007


  User: gavin   
  Date: 07/06/13 17:10:14

  Modified:    src/remoting/org/jboss/seam/remoting    
                        ExecutionHandler.java InterfaceGenerator.java
                        PollHandler.java SubscriptionHandler.java
  Log:
  refactor
  
  Revision  Changes    Path
  1.5       +36 -47    jboss-seam/src/remoting/org/jboss/seam/remoting/ExecutionHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ExecutionHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/remoting/org/jboss/seam/remoting/ExecutionHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- ExecutionHandler.java	13 Jun 2007 16:43:04 -0000	1.4
  +++ ExecutionHandler.java	13 Jun 2007 21:10:14 -0000	1.5
  @@ -6,7 +6,6 @@
   import java.util.Iterator;
   import java.util.List;
   
  -import javax.faces.event.PhaseId;
   import javax.servlet.ServletContext;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  @@ -14,13 +13,12 @@
   import org.dom4j.Document;
   import org.dom4j.Element;
   import org.dom4j.io.SAXReader;
  -import org.jboss.seam.contexts.Lifecycle;
  +import org.jboss.seam.contexts.ContextualHttpServletRequest;
   import org.jboss.seam.core.ConversationPropagation;
   import org.jboss.seam.core.Manager;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
   import org.jboss.seam.remoting.wrapper.Wrapper;
  -import org.jboss.seam.servlet.ServletRequestSessionMap;
   
   /**
    * Unmarshals the calls from an HttpServletRequest, executes them in order and
  @@ -55,11 +53,9 @@
      * @param response HttpServletResponse
      * @throws Exception
      */
  -  public void handle(HttpServletRequest request, HttpServletResponse response)
  +  public void handle(HttpServletRequest request, final HttpServletResponse response)
         throws Exception
     {
  -    try
  -    {
         // We're sending an XML response, so set the response content type to text/xml
         response.setContentType("text/xml");
   
  @@ -67,20 +63,16 @@
         SAXReader xmlReader = new SAXReader();
         Document doc = xmlReader.read( request.getInputStream() );
         Element env = doc.getRootElement();
  +      final RequestContext ctx = unmarshalContext(env);
  +      final List<Call> calls = unmarshalCalls(env);
   
  -      RequestContext ctx = unmarshalContext(env);
  -
  -      // Reinstate the Seam conversation
  -      Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
  -      Lifecycle.setServletRequest(request);
  -      Lifecycle.beginRequest(servletContext, request);
  -      ConversationPropagation.instance().setConversationId( ctx.getConversationId() );
  -
  -      Manager.instance().restoreConversation();
  -      Lifecycle.resumeConversation(request);
  +      new ContextualHttpServletRequest(request, servletContext)
  +      {
   
  +         @Override
  +         public void process() throws Exception
  +         {
         // Extract the calls from the request
  -      List<Call> calls = unmarshalCalls(env);
   
         // Execute each of the calls
         for (Call call : calls) 
  @@ -93,21 +85,19 @@
   
         // Package up the response
         marshalResponse(calls, ctx, response.getOutputStream());
  -
  -      Manager.instance().endRequest( new ServletRequestSessionMap(request) );
  -      Lifecycle.endRequest();    
  -    }
  -    catch (Exception ex)
  -    {
  -      log.error("Error during remote request", ex);
  -      Lifecycle.endRequest();
       }
  -    finally
  +         
  +         @Override
  +         protected void restoreConversationId()
       {
  -      Lifecycle.setServletRequest(null);
  -      Lifecycle.setPhaseId(null);
  -      log.debug("ended request");
  +            ConversationPropagation.instance().setConversationId( ctx.getConversationId() );
       }
  +         
  +         @Override
  +         protected void handleConversationPropagation() {}
  +         
  +      }.run();
  +      
     }
   
     /**
  @@ -144,8 +134,7 @@
      * @param env Element
      * @throws Exception
      */
  -  private List<Call> unmarshalCalls(Element env)
  -      throws Exception
  +  private List<Call> unmarshalCalls(Element env) throws Exception
     {
       try 
       {
  
  
  
  1.4       +2 -2      jboss-seam/src/remoting/org/jboss/seam/remoting/InterfaceGenerator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: InterfaceGenerator.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/remoting/org/jboss/seam/remoting/InterfaceGenerator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- InterfaceGenerator.java	10 Jun 2007 19:26:00 -0000	1.3
  +++ InterfaceGenerator.java	13 Jun 2007 21:10:14 -0000	1.4
  @@ -29,6 +29,7 @@
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.WebRemote;
   import org.jboss.seam.contexts.Lifecycle;
  +import org.jboss.seam.core.ServletContexts;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
   import org.jboss.seam.util.EJB;
  @@ -73,8 +74,8 @@
       try
       {
         Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
  -      Lifecycle.setServletRequest(request);
         Lifecycle.beginRequest(servletContext, request);
  +      ServletContexts.instance().setRequest(request);
   
         String[] componentNames = request.getQueryString().split("&");
         Component[] components = new Component[componentNames.length];
  @@ -101,7 +102,6 @@
       }
       finally
       {
  -      Lifecycle.setServletRequest(null);
         Lifecycle.setPhaseId(null);
       }
     }
  
  
  
  1.4       +4 -2      jboss-seam/src/remoting/org/jboss/seam/remoting/PollHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PollHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/remoting/org/jboss/seam/remoting/PollHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- PollHandler.java	10 Jun 2007 19:26:00 -0000	1.3
  +++ PollHandler.java	13 Jun 2007 21:10:14 -0000	1.4
  @@ -18,6 +18,7 @@
   import org.dom4j.Element;
   import org.dom4j.io.SAXReader;
   import org.jboss.seam.contexts.Lifecycle;
  +import org.jboss.seam.core.ServletContexts;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
   import org.jboss.seam.remoting.messaging.PollError;
  @@ -75,11 +76,13 @@
       try
       {
         Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
  -      Lifecycle.setServletRequest(request);
         Lifecycle.beginRequest(servletContext, request);
  +      ServletContexts.instance().setRequest(request);
   
         for (PollRequest req : polls)
  +      {
           req.poll();
  +      }
         
         // Package up the response
         marshalResponse(polls, response.getOutputStream());      
  @@ -87,7 +90,6 @@
       finally
       {
         Lifecycle.endRequest();
  -      Lifecycle.setServletRequest(null);
         Lifecycle.setPhaseId(null);
       }
     }
  
  
  
  1.3       +10 -4     jboss-seam/src/remoting/org/jboss/seam/remoting/SubscriptionHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SubscriptionHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/remoting/org/jboss/seam/remoting/SubscriptionHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- SubscriptionHandler.java	10 Jun 2007 19:26:00 -0000	1.2
  +++ SubscriptionHandler.java	13 Jun 2007 21:10:14 -0000	1.3
  @@ -15,6 +15,7 @@
   import org.dom4j.io.SAXReader;
   import org.jboss.seam.contexts.Lifecycle;
   import org.jboss.seam.core.Manager;
  +import org.jboss.seam.core.ServletContexts;
   import org.jboss.seam.remoting.messaging.RemoteSubscriber;
   import org.jboss.seam.remoting.messaging.SubscriptionRegistry;
   import org.jboss.seam.remoting.messaging.SubscriptionRequest;
  @@ -66,34 +67,39 @@
       try
       {
         Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
  -      Lifecycle.setServletRequest(request);
         Lifecycle.beginRequest(servletContext, request);
  +      ServletContexts.instance().setRequest(request);
   
         Manager.instance().initializeTemporaryConversation();
         Lifecycle.resumeConversation(request);
   
         for (SubscriptionRequest req : requests)
  +      {
           req.subscribe();
  +      }
   
         // Then handle any unsubscriptions
         List<String> unsubscribeTokens = new ArrayList<String>();
   
         elements = body.elements("unsubscribe");
  -      for (Element e : elements) {
  +      for (Element e : elements) 
  +      {
           unsubscribeTokens.add(e.attributeValue("token"));
         }
   
  -      for (String token : unsubscribeTokens) {
  +      for (String token : unsubscribeTokens) 
  +      {
           RemoteSubscriber subscriber = SubscriptionRegistry.instance().
                                         getSubscription(token);
           if (subscriber != null)
  +        {
             subscriber.unsubscribe();
         }
       }
  +    }
       finally
       {
         Lifecycle.endRequest();
  -      Lifecycle.setServletRequest(null);
         Lifecycle.setPhaseId(null);
       }
   
  
  
  



More information about the jboss-cvs-commits mailing list