8ee753d231ab9e906f4bee24d8dd9c02af689905
[OpenSRF.git] / src / java / org / opensrf / Stack.java
1 package org.opensrf;
2 import org.opensrf.net.xmpp.XMPPMessage;
3 import org.opensrf.util.*;
4 import java.util.Date;
5 import java.util.List;
6 import java.util.Iterator;
7
8
9 public class Stack {
10
11     public static void processXMPPMessage(XMPPMessage msg) {
12
13         Session ses = Session.findCachedSession(msg.getThread());
14
15         if(ses == null) {
16             /** inbound client request, create a new server session */
17             return;
18         }
19
20         /** parse the JSON message body, which should result in a list of OpenSRF messages */
21         List msgList; 
22
23         try {
24             msgList = new JSONReader(msg.getBody()).readArray();
25         } catch(JSONException e) {
26             /** XXX LOG error */
27             return;
28         }
29
30         Iterator itr = msgList.iterator();
31
32         OSRFObject obj = null;
33         long start = new Date().getTime();
34
35         while(itr.hasNext()) {
36             /** Construct a Message object from the generic OSRFObject returned from parsing */
37             obj = (OSRFObject) itr.next();
38             processOSRFMessage(ses, 
39                 new Message(
40                     ((Integer) obj.get("threadTrace")).intValue(),
41                     (Message.Type) obj.get("type"),
42                     obj.get("payload")));
43         }
44
45         /** LOG the duration */
46     }
47
48     public static void processOSRFMessage(Session ses, Message msg) {
49         if( ses instanceof ClientSession ) 
50             processServerResponse((ClientSession) ses, msg);
51         else
52             processClientRequest((ServerSession) ses, msg);
53     }
54
55     public static void processServerResponse(ClientSession session, Message msg) {
56     }
57
58     public static void processClientRequest(ServerSession session, Message msg) {
59     }
60 }