From: Santi B. <san...@us...> - 2007-12-09 23:22:32
|
Update of /cvsroot/babeldoc/modules/jabber/src/com/babeldoc/jabber/pipeline/stage In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv12797/src/com/babeldoc/jabber/pipeline/stage Modified Files: XmppWriterPipelineStage.java MessageDeliveryStatus.java PipelineMessageEventNotificationListener.java Log Message: Changed the metod to controls the singleton of MesageDeliveryStatus. Don't raise exception, set an error condition. Index: XmppWriterPipelineStage.java =================================================================== RCS file: /cvsroot/babeldoc/modules/jabber/src/com/babeldoc/jabber/pipeline/stage/XmppWriterPipelineStage.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** XmppWriterPipelineStage.java 9 Dec 2007 01:01:43 -0000 1.4 --- XmppWriterPipelineStage.java 9 Dec 2007 23:22:34 -0000 1.5 *************** *** 243,246 **** --- 243,253 ---- Thread.sleep(15); } + if(deliveryStatus.getDeliveryStatus(message.getPacketID()) == MessageDeliveryStatus.ERROR || + deliveryStatus.getDeliveryStatus(message.getPacketID()) == MessageDeliveryStatus.NOT_INITIATED){ + throw new PipelineException("Can't determine de delivery status."); + } + if(deliveryStatus.getDeliveryStatus(message.getPacketID()) == MessageDeliveryStatus.OFFLINE) + throw new PipelineException("Can't send the message, the user is offline."); + } catch (InterruptedException e) { throw new PipelineException( *************** *** 253,258 **** throw new PipelineException("Error sending message", xme); // xme.printStackTrace(); - } catch (MessageStatusException e) { - throw new PipelineException("Can't read message status."); } --- 260,263 ---- Index: PipelineMessageEventNotificationListener.java =================================================================== RCS file: /cvsroot/babeldoc/modules/jabber/src/com/babeldoc/jabber/pipeline/stage/PipelineMessageEventNotificationListener.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PipelineMessageEventNotificationListener.java 9 Dec 2007 01:01:43 -0000 1.1 --- PipelineMessageEventNotificationListener.java 9 Dec 2007 23:22:34 -0000 1.2 *************** *** 21,30 **** // Message was delivered, wait until displayed deliveredStatus = MessageDeliveryStatus.getMessageDeliveryStatus(); ! try { ! deliveredStatus.setDeliveryStatus(arg0, arg1); ! } catch (MessageStatusException e) { ! //TODO some sort of pipeline exception ! System.out.println("Singleton error: " + e.getMessage()); ! } } --- 21,25 ---- // Message was delivered, wait until displayed deliveredStatus = MessageDeliveryStatus.getMessageDeliveryStatus(); ! deliveredStatus.setDeliveryStatus(arg0, arg1); } *************** *** 33,42 **** // Message was displayed, piepline success deliveredStatus = MessageDeliveryStatus.getMessageDeliveryStatus(); ! try { ! deliveredStatus.setDeliveryStatus(arg0, arg1); ! } catch (MessageStatusException e) { ! //TODO some sort of pipeline exception ! System.out.println("Singleton error: " + e.getMessage()); ! } } --- 28,32 ---- // Message was displayed, piepline success deliveredStatus = MessageDeliveryStatus.getMessageDeliveryStatus(); ! deliveredStatus.setDeliveryStatus(arg0, arg1); } *************** *** 44,53 **** // The user is offline, pipeline fails deliveredStatus = MessageDeliveryStatus.getMessageDeliveryStatus(); ! try { ! deliveredStatus.setDeliveryStatus(arg0, arg1); ! } catch (MessageStatusException e) { ! //TODO some sort of pipeline exception ! System.out.println("Singleton error: " + e.getMessage()); ! } } --- 34,38 ---- // The user is offline, pipeline fails deliveredStatus = MessageDeliveryStatus.getMessageDeliveryStatus(); ! deliveredStatus.setDeliveryStatus(arg0, arg1); } Index: MessageDeliveryStatus.java =================================================================== RCS file: /cvsroot/babeldoc/modules/jabber/src/com/babeldoc/jabber/pipeline/stage/MessageDeliveryStatus.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MessageDeliveryStatus.java 9 Dec 2007 01:01:43 -0000 1.1 --- MessageDeliveryStatus.java 9 Dec 2007 23:22:34 -0000 1.2 *************** *** 13,16 **** --- 13,18 ---- public static final String DISPLAYED = MessageEvent.DISPLAYED; public static final String SENDING = "SENDING"; + public static final String ERROR = "ERROR"; + public static final String NOT_INITIATED = "NOT INITIATED"; private HashMap map; *************** *** 36,64 **** return messageStatus; } ! public String getDeliveryStatus (String packetID) throws MessageStatusException { ! if(messageStatus == null){ ! throw new MessageStatusException("Message Status not init."); ! } ! else if (!map.containsKey(packetID)){ ! throw new MessageStatusException("This message is not init."); ! } ! else ! return map.get(packetID).toString(); } ! public synchronized void setDeliveryStatus(String packetID, String status) throws MessageStatusException { if(messageStatus == null) ! throw new MessageStatusException("Message not registered."); ! if(map.containsKey(packetID)){ ! // They are the same ! if(map.get(packetID) == status) ! throw new MessageStatusException("Can't put the same state twice"); ! ! } ! else { map.put(packetID, status); ! } } - } --- 38,90 ---- return messageStatus; } ! // public String getDeliveryStatus (String packetID) throws MessageStatusException { ! // if(messageStatus == null){ ! // throw new MessageStatusException("Message Status not init."); ! // } ! // else if (!map.containsKey(packetID)){ ! // throw new MessageStatusException("This message is not init."); ! // } ! // else ! // return map.get(packetID).toString(); ! // } ! /** ! * This metod was modified to don't raise a exception. ! * We can assume that if the singleton is not init we can do safely ! */ ! public String getDeliveryStatus (String packetID){ ! if(messageStatus == null) ! messageStatus = new MessageDeliveryStatus(); ! if(!map.containsKey(packetID)) ! setDeliveryStatus(packetID, MessageDeliveryStatus.NOT_INITIATED); ! return map.get(packetID).toString(); } ! // public synchronized void setDeliveryStatus(String packetID, String status) throws MessageStatusException { ! // ! // if(messageStatus == null) ! // throw new MessageStatusException("Message not registered."); ! // if(map.containsKey(packetID)){ ! // // They are the same ! // if(map.get(packetID) == status) ! // throw new MessageStatusException("Can't put the same state twice"); ! // ! // } ! // else { ! // map.put(packetID, status); ! // } ! // } + /** + * The same as for the getDeliveryStatus. + */ + public synchronized void setDeliveryStatus(String packetID, String status){ if(messageStatus == null) ! messageStatus = new MessageDeliveryStatus(); ! if(map.containsKey(packetID) && map.get(packetID)==status){ ! setDeliveryStatus(packetID, MessageDeliveryStatus.ERROR); ! } else map.put(packetID, status); ! ! } } |