[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