58a39a5c30e162c99ad4865f5ad0ddb1e89b4205
[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         if(msg == null) return;
14
15         Session ses = Session.findCachedSession(msg.getThread());
16
17         if(ses == null) {
18             /** inbound client request, create a new server session */
19             return;
20         }
21
22         /** parse the JSON message body, which should result in a list of OpenSRF messages */
23         List msgList; 
24
25         try {
26             msgList = new JSONReader(msg.getBody()).readArray();
27         } catch(JSONException e) {
28             /** XXX LOG error */
29             e.printStackTrace();
30             return;
31         }
32
33         Iterator itr = msgList.iterator();
34
35         OSRFObject obj = null;
36         long start = new Date().getTime();
37
38         while(itr.hasNext()) {
39
40             /** Construct a Message object from the generic OSRFObject returned from parsing */
41             obj = (OSRFObject) itr.next();
42
43             processOSRFMessage(
44                 ses, 
45                 new Message(
46                     obj.getInt("threadTrace"),
47                     obj.getString("type"),
48                     obj.get("payload")
49                 )
50             );
51         }
52
53         /** LOG the duration */
54     }
55
56     public static void processOSRFMessage(Session ses, Message msg) {
57         if( ses instanceof ClientSession ) 
58             processResponse((ClientSession) ses, msg);
59         else
60             processRequest((ServerSession) ses, msg);
61     }
62
63     public static void processResponse(ClientSession session, Message msg) {
64         if(msg.RESULT.equals(msg.getType())) {
65             session.pushResponse(msg);
66             return;
67         }
68     }
69
70     public static void processRequest(ServerSession session, Message msg) {
71     }
72 }