1 21 22 package com.rift.coad.daemon.messageservice; 24 25 import java.rmi.Remote ; 27 import java.rmi.RemoteException ; 28 import java.util.ArrayList ; 29 import java.util.HashSet ; 30 import java.util.Iterator ; 31 import java.util.List ; 32 import java.util.Date ; 33 import java.util.Set ; 34 import javax.naming.Context ; 35 import javax.naming.InitialContext ; 36 import javax.transaction.UserTransaction ; 37 import javax.transaction.Status ; 38 39 import org.apache.log4j.Logger; 41 42 import com.rift.coad.lib.common.RandomGuid; 44 import com.rift.coad.lib.security.SessionManager; 45 import com.rift.coad.lib.security.ThreadPermissionSession; 46 import com.rift.coad.daemon.messageservice.message.MessageImpl; 47 import com.rift.coad.daemon.messageservice.message.RPCMessageImpl; 48 import com.rift.coad.daemon.messageservice.message.TextMessageImpl; 49 import com.rift.coad.daemon.messageservice.message.MessageManagerFactory; 50 import com.rift.coad.daemon.messageservice.message.MessageManagerImpl; 51 52 58 public class ProducerImpl implements Producer { 59 60 protected static Logger log = 62 Logger.getLogger(ProducerImpl.class.getName()); 63 64 65 66 private Context context = null; 68 private String from = null; 69 private UserTransaction ut = null; 70 71 77 public ProducerImpl(String from) throws MessageServiceException { 78 try { 79 this.from = from; 80 context = new InitialContext (); 81 ut = (UserTransaction )context.lookup("java:comp/UserTransaction"); 82 } catch (Exception ex) { 83 log.error("Failed to instanciate the producer : " + ex.getMessage(), 84 ex); 85 throw new MessageServiceException( 86 "Failed to instanciate the producer : " + ex.getMessage(), 87 ex); 88 } 89 } 90 91 92 101 public TextMessage createTextMessage(int type) throws RemoteException , 102 MessageServiceException { 103 try { 104 ThreadPermissionSession session = SessionManager.getInstance(). 105 getSession(); 106 Set principals = new HashSet (); 107 for (Iterator iter = session.getPrincipals().iterator(); 108 iter.hasNext();) { 109 principals.add(iter.next()); 110 } 111 112 TextMessageImpl textMessage = new TextMessageImpl( 113 RandomGuid.getInstance().getGuid(),new Date (), 114 0,new Date (),session.getUser().getName(), 115 session.getUser().getSessionId(), 116 new ArrayList (principals),from,type, 117 Message.UNDELIVERED); 118 textMessage.setNextProcessDate(new Date ()); 119 return textMessage; 120 } catch (Exception ex) { 121 log.error("Failed to create the text message : " + ex.getMessage(), 122 ex); 123 throw new MessageServiceException( 124 "Failed to create the text message : " + ex.getMessage(), 125 ex); 126 } 127 } 128 129 130 139 public RPCMessage createRPCMessage(int type) throws RemoteException , 140 MessageServiceException { 141 try { 142 ThreadPermissionSession session = SessionManager.getInstance(). 143 getSession(); 144 Set principals = new HashSet (); 145 for (Iterator iter = session.getPrincipals().iterator(); 146 iter.hasNext();) { 147 principals.add(iter.next()); 148 } 149 RPCMessageImpl rpcMessage = new RPCMessageImpl( 150 RandomGuid.getInstance().getGuid(),new Date (), 151 0,new Date (),session.getUser().getName(), 152 session.getUser().getSessionId(), 153 new ArrayList (principals),from,type, 154 Message.UNDELIVERED); 155 rpcMessage.setNextProcessDate(new Date ()); 156 return rpcMessage; 157 } catch (Exception ex) { 158 log.error("Failed to create the rpc message : " + ex.getMessage(), 159 ex); 160 throw new MessageServiceException( 161 "Failed to create the rpc message : " + ex.getMessage(), 162 ex); 163 } 164 } 165 166 167 175 public void submit(Message newMessage) throws RemoteException , 176 MessageServiceException { 177 if ((newMessage instanceof RPCMessage) && 178 (((RPCMessage)newMessage).getMethodBodyXML() == null)) { 179 throw new MessageServiceException("The xml body is not set"); 180 } else if ((newMessage instanceof TextMessage) && 181 (((TextMessage)newMessage).getTextBody() == null)) { 182 throw new MessageServiceException("The text body is not set"); 183 } 184 try { 185 ((MessageImpl)newMessage).setNextProcessDate(new Date ()); 186 MessageManager messageManager = MessageManagerFactory.getInstance(). 187 getMessageManager(newMessage); 188 MessageQueue messageQueue = MessageQueueManager.getInstance(). 189 getQueue(MessageQueueManager.UNSORTED); 190 ((MessageManagerImpl)messageManager).assignToQueue( 191 MessageQueueManager.UNSORTED); 192 messageQueue.addMessage(messageManager); 193 } catch (Exception ex) { 194 log.error("Failed to add the message : " + 195 ex.getMessage(),ex); 196 throw new MessageServiceException("Failed to add the message : " + 197 ex.getMessage(),ex); 198 } 199 } 200 201 } 202 | Popular Tags |