[jboss-svn-commits] JBL Code SVN: r10122 - in labs/jbossesb/trunk/product/core: services/src/org/jboss/internal/soa/esb/persistence/format/db and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Mar 11 17:05:57 EDT 2007


Author: daniel.brum at jboss.com
Date: 2007-03-11 17:05:57 -0400 (Sun, 11 Mar 2007)
New Revision: 10122

Modified:
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java
   labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java
   labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/soa/esb/esb/persistence/tests/MessageStoreUnitTest.java
Log:
http://jira.jboss.com/jira/browse/JBESB-453

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java	2007-03-11 15:33:32 UTC (rev 10121)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java	2007-03-11 21:05:57 UTC (rev 10122)
@@ -22,6 +22,7 @@
  */
 
 import java.net.URI;
+import java.util.Map;
 
 import org.jboss.soa.esb.message.Message;
 
@@ -30,5 +31,11 @@
 	public URI addMessage (Message message) throws MessageStoreException;
 
 	public Message getMessage (URI uid) throws MessageStoreException;
+	
+	public void setUndelivered(URI uid) throws MessageStoreException;
+	
+	public void setDelivered(URI uid) throws MessageStoreException;
+	
+	public Map<URI, Message> getUndeliveredMessages() throws MessageStoreException;
 
 }

Modified: labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java	2007-03-11 15:33:32 UTC (rev 10121)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java	2007-03-11 21:05:57 UTC (rev 10122)
@@ -27,9 +27,14 @@
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.UUID;
 
+import org.apache.log4j.Logger;
 import org.jboss.internal.soa.esb.persistence.manager.ConnectionManager;
+import org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl;
 import org.jboss.internal.soa.esb.thirdparty.Base64;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.persistence.manager.ConnectionManagerException;
@@ -40,6 +45,7 @@
 
 public class DBMessageStoreImpl implements MessageStore
 {
+	private static Logger logger = Logger.getLogger(DBMessageStoreImpl.class);
 
 	protected ConnectionManager mgr = null;
 
@@ -60,6 +66,10 @@
 		
 	}
 
+	/**
+	 * add's a @Message to the database persistence store
+	 * will set the 'delivered' flag to TRUE by default - assuming that the @Message has been delivered
+	 */
 	public synchronized URI addMessage (Message message) throws MessageStoreException
 	{
 
@@ -70,22 +80,23 @@
 		{
 			conn = mgr.getConnection();
 
-			uid = new URI("urn:jboss/esb/message/UID#" + UUID.randomUUID()
-					.toString());
+			uid = new URI("urn:jboss/esb/message/UID#" + UUID.randomUUID().toString());
 
 			String messageString = Base64.encodeObject(Util.serialize(message));
 
 			// insert into the database
-			String sql = "insert into message(uuid, type, message) values(?,?,?)";
+			String sql = "insert into message(uuid, type, message, delivered) values(?,?,?, ?)";
 			ps = conn.prepareStatement(sql);
 			ps.setString(1, uid.toString());
 			ps.setString(2, message.getType().toString());
 			ps.setString(3, messageString);
+			ps.setString(4, "TRUE");
 			ps.execute();
 
 		}
 		catch (Exception e)
 		{
+			logger.error(e);
 			throw new MessageStoreException(e);
 		} 
 		finally
@@ -96,6 +107,10 @@
 		return uid;
 	}
 
+	/**
+	 * return a @Message based on the passed in key in the form of a JBoss ESB @URI
+	 * format for URI: "urn:jboss/esb/message/UID#" + UUID.randomUUID()" - see the method in this class @addMessage
+	 */
 	public synchronized Message getMessage (URI uid)
 			throws MessageStoreException
 	{
@@ -123,6 +138,7 @@
 		}
 		catch (Exception e)
 		{
+			logger.error(e);
 			throw new MessageStoreException(e);
 		} 
 		finally
@@ -133,7 +149,101 @@
 		return message;
 
 	}
+	
+	/**
+	 * 
+	 * @param uid - key for message to set undelivered flag on
+	 * @throws MessageStoreException
+	 */
+	public void setUndelivered(URI uid) throws MessageStoreException{
+		String sql = "update message set delivered = 'FALSE' where uuid=?";
+		
+		try
+		{
+			conn = mgr.getConnection();
+			
+			ps = conn.prepareStatement(sql);
+			ps.setString(1, uid.toString());
+			ps.execute();
 
+		}
+		catch (Exception e)
+		{
+			logger.error(e);
+			throw new MessageStoreException(e);
+		} 
+		finally
+		{
+			release();
+		}
+		
+	}
+	
+	public void setDelivered(URI uid) throws MessageStoreException{
+		String sql = "update message set delivered = 'TRUE' where uuid=?";
+		
+		try
+		{
+			conn = mgr.getConnection();
+			
+			ps = conn.prepareStatement(sql);
+			ps.setString(1, "FALSE");
+			ps.execute();
+
+		}
+		catch (Exception e)
+		{
+			logger.error(e);
+			throw new MessageStoreException(e);
+		} 
+		finally
+		{
+			release();
+		}
+		
+	}
+	
+	/**
+	 * This method can be used to retrieve a collection of all the undelivered (delivered=FALSE) from the message-store
+	 * You should test for 'null' on the return type to see if any messages exist in the collection
+	 * @return Map<URI, Message> - a collection of all the undelivered messages in the message-store
+	 * @throws MessageStoreException
+	 */
+	public Map<URI, Message> getUndeliveredMessages() throws MessageStoreException {
+		HashMap<URI, Message> messages = new HashMap();
+		String sql = "select uuid from message where delivered='FALSE'";
+		
+		try
+		{
+			conn = mgr.getConnection();
+			Statement stmt;
+			ResultSet rs;
+			stmt = conn.createStatement();
+			rs = stmt.executeQuery(sql);
+			
+			while (rs.next()) {
+				URI uid = new URI(rs.getString(1));
+				Message msg = getMessage(uid);
+				messages.put(uid, msg);
+			}
+			rs.close();
+			stmt.close();
+
+		}
+		catch (Exception e)
+		{
+			logger.error(e);
+			throw new MessageStoreException(e);
+		} 
+		finally
+		{
+			release();
+		}
+		logger.info("retrieved " + messages.size() + " undelivered messages");
+		return messages;
+		
+	}
+
 	private void release ()
 	{
 

Modified: labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/soa/esb/esb/persistence/tests/MessageStoreUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/soa/esb/esb/persistence/tests/MessageStoreUnitTest.java	2007-03-11 15:33:32 UTC (rev 10121)
+++ labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/soa/esb/esb/persistence/tests/MessageStoreUnitTest.java	2007-03-11 21:05:57 UTC (rev 10122)
@@ -36,6 +36,7 @@
 import java.net.URI;
 import java.sql.Connection;
 import java.sql.Statement;
+import java.util.Map;
 
 import junit.framework.JUnit4TestAdapter;
 
@@ -75,8 +76,80 @@
 		MessageStore store1 = MessageStoreFactory.getInstance().getMessageStore(MessageStoreType.DATABASE);
 		assertEquals((store1 != null), true);
 	}
+	
+	@Test
+	public void testSettingUndeliverable () throws Exception
+	{
+		//test setting one message to undelivered status
+//		 add new messages
+		Message msg = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML);
+		assertEquals((msg != null), true);
+		
+		MessageStore store = MessageStoreFactory.getInstance().getMessageStore(MessageStoreType.DATABASE);
+		assertEquals((store != null), true);
+		
+		URI uid = store.addMessage(msg);
+		store.setUndelivered(uid);
 
+	}
+	
 	@Test
+	public void testSettingDeliverable() throws Exception
+	{
+		//test setting one message to delivered status
+//		 add new messages
+		Message msg = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML);
+		assertEquals((msg != null), true);
+		
+		MessageStore store = MessageStoreFactory.getInstance().getMessageStore(MessageStoreType.DATABASE);
+		assertEquals((store != null), true);
+		
+		URI uid = store.addMessage(msg);
+		store.setDelivered(uid);
+
+	}
+	
+	@Test
+	public void testManyUndeliveredMessages() throws Exception {
+		Message msg1, msg2, msg3, msg4;
+		msg1 = MessageFactory.getInstance().getMessage(
+				MessageType.JBOSS_XML);
+		msg2 = MessageFactory.getInstance().getMessage(
+				MessageType.JAVA_SERIALIZED);
+		msg3 = MessageFactory.getInstance().getMessage(
+				MessageType.JBOSS_XML);
+		msg4 = MessageFactory.getInstance().getMessage(
+				MessageType.JAVA_SERIALIZED);
+		
+		assertEquals((msg1 != null), true);
+		assertEquals((msg2 != null), true);
+		assertEquals((msg3 != null), true);
+		assertEquals((msg4 != null), true);
+
+
+		MessageStore store = MessageStoreFactory.getInstance().getMessageStore(
+				MessageStoreType.DATABASE);
+		assertEquals((store != null), true);
+		
+		URI uid1 = store.addMessage(msg1);
+		URI uid2 = store.addMessage(msg2);
+		URI uid3 = store.addMessage(msg3);
+		URI uid4 = store.addMessage(msg4);
+		
+		store.setUndelivered(uid1);
+		store.setUndelivered(uid2);
+		store.setUndelivered(uid3);
+		store.setUndelivered(uid4);
+		
+		Map<URI, Message> messages = store.getUndeliveredMessages();
+		assertEquals((messages != null), true);
+		
+		
+
+		
+	}
+
+	@Test
 	public void testStoreAndRetrieve () throws Exception
 	{
 		// add new messages
@@ -110,12 +183,12 @@
 		// keep track of the UID to use in retrieving the Message
 		URI uid1 = null;
 		uid1 = store.addMessage(msg1);
-		System.out.println(uid1);
+//		System.out.println(uid1);
 		assertEquals((uid1 != null), true);
 
 		URI uid2 = null;
 		uid2 = store.addMessage(msg2);
-		System.out.println(uid2);
+//		System.out.println(uid2);
 		assertEquals((uid2 != null), true);
 
 		// now retrieve the messages




More information about the jboss-svn-commits mailing list