[jboss-svn-commits] JBL Code SVN: r10671 - in labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq: src/main/java/org/jboss/soa/esb/oracle/aq and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Mar 31 02:52:24 EDT 2007


Author: kurt.stam at jboss.com
Date: 2007-03-31 02:52:23 -0400 (Sat, 31 Mar 2007)
New Revision: 10671

Added:
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueXATest.java
Modified:
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/pom.xml
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQInitialContextFactory.java
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/DatasourceTest.java
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueTest.java
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/resources/oracle-aq.properties
Log:
Adding test for XA

Modified: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/pom.xml
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/pom.xml	2007-03-31 01:48:40 UTC (rev 10670)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/pom.xml	2007-03-31 06:52:23 UTC (rev 10671)
@@ -1,13 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project defaultGoal="package">
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.jboss.soa.esb</groupId>
 	<artifactId>org.jboss.soa.esb.oracle.aq</artifactId>
-	<version>4.2</version>
+	<version>4.2.MR2</version>
 	<description>
 		Plugin to add JNDI capability to Oracle AQ
 	</description>
+	<packaging>jar</packaging>
 	<build>
+		<defaultGoal>package</defaultGoal>
 		<plugins>
 			<plugin>
 				<artifactId>maven-compiler-plugin</artifactId>
@@ -25,6 +27,7 @@
 					</archive>
 				</configuration>
 			</plugin>
+			
 			<plugin>
 				<artifactId>maven-clean-plugin</artifactId>
 				<version>2.1</version>

Modified: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQInitialContextFactory.java
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQInitialContextFactory.java	2007-03-31 01:48:40 UTC (rev 10670)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQInitialContextFactory.java	2007-03-31 06:52:23 UTC (rev 10671)
@@ -38,6 +38,8 @@
 import javax.jms.TopicConnection;
 import javax.jms.TopicConnectionFactory;
 import javax.jms.XAConnectionFactory;
+import javax.jms.XAQueueConnectionFactory;
+import javax.jms.XATopicConnectionFactory;
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.naming.spi.InitialContextFactory;
@@ -53,22 +55,26 @@
 
 public class AQInitialContextFactory implements InitialContextFactory {
     /** The Oracle Queue connection factory name */
-    public static final String QUEUE_CONNECTION_FACTORY = "QueueConnectionFactory";
+    public static final String QUEUE_CONNECTION_FACTORY    = "QueueConnectionFactory";
+    /** The Oracle XA Queue connection factory name */
+    public static final String XA_QUEUE_CONNECTION_FACTORY = "XAQueueConnectionFactory";
     /** The Oracle Topic connection factory name */
-    public static final String TOPIC_CONNECTION_FACTORY = "TopicConnectionFactory";
+    public static final String TOPIC_CONNECTION_FACTORY    = "TopicConnectionFactory";
+    /** The Oracle XA Topic connection factory name */
+    public static final String XA_TOPIC_CONNECTION_FACTORY = "XATopicConnectionFactory";
     /** The Oracle Connection factory name */
-    public static final String CONNECTION_FACTORY = "ConnectionFactory";
+    public static final String CONNECTION_FACTORY          = "ConnectionFactory";
     /** The Oracle XA Connection factory name */
-    public static final String XA_CONNECTION_FACTORY = "XAConnectionFactory";
+    public static final String XA_CONNECTION_FACTORY       = "XAConnectionFactory";
     
-    public static final String DB_DATASOURCE = "db.datasource";
-    public static final String DB_USER       = "db.user";
-    public static final String DB_PASSWD     = "db.password";
-    public static final String DB_SERVER     = "db.server";
-    public static final String DB_INSTANCE   = "db.instance";
-    public static final String DB_PORT       = "db.port";
-    public static final String DB_SCHEMA     = "db.schema";
-    public static final String DB_DRIVER     = "db.driver";
+    public static final String DB_DATASOURCE = "org.jboss.soa.esb.oracle.aq.datasource";
+    public static final String DB_USER       = "org.jboss.soa.esb.oracle.aq.user";
+    public static final String DB_PASSWD     = "org.jboss.soa.esb.oracle.aq.password";
+    public static final String DB_SERVER     = "org.jboss.soa.esb.oracle.aq.server";
+    public static final String DB_INSTANCE   = "org.jboss.soa.esb.oracle.aq.instance";
+    public static final String DB_PORT       = "org.jboss.soa.esb.oracle.aq.port";
+    public static final String DB_SCHEMA     = "org.jboss.soa.esb.oracle.aq.schema";
+    public static final String DB_DRIVER     = "org.jboss.soa.esb.oracle.aq.driver";
     
     protected static Log log = LogFactory
             .getLog(AQInitialContextFactory.class);
@@ -129,6 +135,14 @@
             session = (AQjmsSession) queueConnection.createQueueSession(false,
                     Session.AUTO_ACKNOWLEDGE);
 
+            // create the queue XA connection factory
+            XAQueueConnectionFactory xaQueueConnectionFactory = AQjmsFactory.getXAQueueConnectionFactory(xaDs);
+            data.put(XA_QUEUE_CONNECTION_FACTORY, xaQueueConnectionFactory);
+            
+//          create the topic XA connection factory
+            XATopicConnectionFactory xaTopicConnectionFactory = AQjmsFactory.getXATopicConnectionFactory(xaDs);
+            data.put(XA_TOPIC_CONNECTION_FACTORY, xaTopicConnectionFactory);
+            
             // create the topic connection factory
             topicFactory = AQjmsFactory.getTopicConnectionFactory(ds);
             data.put(TOPIC_CONNECTION_FACTORY, topicFactory);

Modified: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/DatasourceTest.java
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/DatasourceTest.java	2007-03-31 01:48:40 UTC (rev 10670)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/DatasourceTest.java	2007-03-31 06:52:23 UTC (rev 10671)
@@ -24,7 +24,7 @@
  */
 public class DatasourceTest 
 {
-    private final static String Q_NAME = "q.name";
+    private final static String Q_NAME = "org.jboss.soa.esb.oracle.aq.q.name";
     private String user, password, server, instance, schema, driver, portStr, qName;
     private int port;
     /**

Modified: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueTest.java
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueTest.java	2007-03-31 01:48:40 UTC (rev 10670)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueTest.java	2007-03-31 06:52:23 UTC (rev 10671)
@@ -24,6 +24,7 @@
 import javax.jms.Session;
 import javax.jms.TextMessage;
 import javax.naming.Context;
+import javax.naming.InitialContext;
 import javax.sql.DataSource;
 
 import oracle.jms.AQjmsFactory;
@@ -207,17 +208,16 @@
         MessageProducer messageProducer = null;
         MessageConsumer messageConsumer = null;
         try {
-            Hashtable<String,String> env = new Hashtable<String, String>();
-            env.put(AQInitialContextFactory.DB_SERVER, server);
-            env.put(AQInitialContextFactory.DB_INSTANCE, instance);
-            env.put(AQInitialContextFactory.DB_PORT, portStr);
-            env.put(AQInitialContextFactory.DB_USER, user);
-            env.put(AQInitialContextFactory.DB_PASSWD, password);
-            env.put(AQInitialContextFactory.DB_SCHEMA, schema);
-            env.put(AQInitialContextFactory.DB_DRIVER, driver);
-            
-            AQInitialContextFactory factory = new AQInitialContextFactory();
-            Context context = factory.getInitialContext(env);
+            Properties properties = new Properties();
+            properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.soa.esb.oracle.aq.AQInitialContextFactory");
+            properties.put(AQInitialContextFactory.DB_SERVER, server);
+            properties.put(AQInitialContextFactory.DB_INSTANCE, instance);
+            properties.put(AQInitialContextFactory.DB_PORT, portStr);
+            properties.put(AQInitialContextFactory.DB_USER, user);
+            properties.put(AQInitialContextFactory.DB_PASSWD, password);
+            properties.put(AQInitialContextFactory.DB_SCHEMA, schema);
+            properties.put(AQInitialContextFactory.DB_DRIVER, driver);
+            Context context = new InitialContext(properties);
             QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) 
                 context.lookup(AQInitialContextFactory.QUEUE_CONNECTION_FACTORY);
             connection = queueConnectionFactory.createQueueConnection();

Added: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueXATest.java
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueXATest.java	                        (rev 0)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueXATest.java	2007-03-31 06:52:23 UTC (rev 10671)
@@ -0,0 +1,288 @@
+/**
+ * 
+ */
+package org.jboss.soa.esb.oracle.aq;
+
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.FileInputStream;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueConnectionFactory;
+import javax.jms.QueueSession;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.XAQueueConnectionFactory;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.sql.DataSource;
+
+import oracle.jms.AQjmsFactory;
+import oracle.jms.AQjmsSession;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author kstam
+ *
+ */
+public class QueueXATest 
+{
+    private final static String Q_NAME = "org.jboss.soa.esb.oracle.aq.q.name";
+    private final static String MESSAGE_CONTENT="Oracle AQ message content";
+    private String user, password, server, instance, schema, driver, portStr, qName;
+    private int port;
+    /**
+     * Tests for completeness of the properties needed ro make a db connection.
+     *
+     */
+    @Test
+    public void checkPropertiesInFile() 
+    {
+            System.out.println("user=" + user + ", password=" + password + ", server=" + server
+                    + ", port=" + portStr + ", qName=" + qName
+                    + ", instance=" + instance + " schema=" + schema + ", driver=" + driver);
+            assertNotNull(user);
+            assertNotNull(password);
+            assertNotNull(server);
+            assertNotNull(portStr);
+            assertFalse(port==0);
+            assertNotNull(instance);
+            assertNotNull(schema);
+            assertNotNull(driver);   
+            assertNotNull(qName);
+    }
+    /**
+     * Tries to make a queueConnection to Oracle using the properties in the
+     * oracle-aq.properties file.
+     *
+     */
+    @Test
+    public void createQueueConnection()
+    {
+        QueueConnection queueConnection = null;
+        Session session = null;
+        System.out.println("Building our own db connection");
+        try {
+            DataSource ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
+            QueueConnectionFactory queueFactory = AQjmsFactory.getQueueConnectionFactory(ds);
+            queueConnection = queueFactory.createQueueConnection();
+            assertNotNull(queueConnection);
+            session = (AQjmsSession) queueConnection.createQueueSession(false,
+                    Session.AUTO_ACKNOWLEDGE);
+            assertNotNull(session);
+        } catch (Throwable e) {
+            e.printStackTrace();
+            assertTrue(false);
+        } finally {
+            if (session!=null) {
+                try { session.close();
+                } catch (Exception e) {}
+            }
+            if (queueConnection!=null) {
+                try { queueConnection.close();
+                } catch (Exception e) {}
+            }
+        }
+    }
+    /**
+     * Tries to locate the specified Q in Oracle using the properties in the
+     * oracle-aq.properties file.
+     *
+     */
+    @Test
+    public void findGivenQueue()
+    {
+        boolean foundQueue=false;
+        QueueConnection queueConnection = null;
+        Session session = null;
+        System.out.println("Building our own db connection");
+        try {
+            DataSource ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
+            QueueConnectionFactory queueFactory = AQjmsFactory.getQueueConnectionFactory(ds);
+            queueConnection = queueFactory.createQueueConnection();
+            assertNotNull(queueConnection);
+            session = (AQjmsSession) queueConnection.createQueueSession(false,
+                    Session.AUTO_ACKNOWLEDGE);
+            assertNotNull(session);
+            
+            List<DestinationInfo> list = AQUtil.getDestinationInfoList(ds, schema);
+            // for each queue
+            Iterator<DestinationInfo> iter = list.iterator();
+            while (iter.hasNext()) {
+                DestinationInfo di = iter.next();
+                System.out.println("Found Destination: " + di.getQueueName());
+                // register normal queue
+                if (di.getQueueName().equalsIgnoreCase(qName)) {
+                    System.out.println("Matched up given Queue: " + qName + " with " + di.getQueueName());
+                    foundQueue=true;
+                }
+            }
+            assertTrue(foundQueue);
+            
+        } catch (Throwable e) {
+            e.printStackTrace();
+            assertTrue(false);
+        } finally {
+            if (session!=null) {
+                try { session.close();
+                } catch (Exception e) {}
+            }
+            if (queueConnection!=null) {
+                try { queueConnection.close();
+                } catch (Exception e) {}
+            }
+        }
+    }
+    /**
+     * Sends a message to the specified Q in Oracle and receives the same message.
+     */
+    public void drainQueue()
+    {
+        QueueConnection connection = null;
+        QueueSession session = null;
+        MessageConsumer messageConsumer = null;
+        try {
+            Hashtable<String,String> env = new Hashtable<String, String>();
+            env.put(AQInitialContextFactory.DB_SERVER, server);
+            env.put(AQInitialContextFactory.DB_INSTANCE, instance);
+            env.put(AQInitialContextFactory.DB_PORT, portStr);
+            env.put(AQInitialContextFactory.DB_USER, user);
+            env.put(AQInitialContextFactory.DB_PASSWD, password);
+            env.put(AQInitialContextFactory.DB_SCHEMA, schema);
+            env.put(AQInitialContextFactory.DB_DRIVER, driver);
+            
+            AQInitialContextFactory factory = new AQInitialContextFactory();
+            Context context = factory.getInitialContext(env);
+            XAQueueConnectionFactory queueConnectionFactory = (XAQueueConnectionFactory) 
+                context.lookup(AQInitialContextFactory.XA_QUEUE_CONNECTION_FACTORY);
+            connection = queueConnectionFactory.createXAQueueConnection();
+            session = connection.createQueueSession(false,
+            QueueSession.AUTO_ACKNOWLEDGE);
+            Queue queue = (Queue) context.lookup(qName);
+            messageConsumer = session.createReceiver(queue);
+            connection.start();
+            TextMessage receiveMessage = session.createTextMessage(MESSAGE_CONTENT);
+            while (receiveMessage!=null) {
+                receiveMessage = (TextMessage) messageConsumer.receive(10);
+                if (receiveMessage!=null) System.out.println("Drain:" + receiveMessage.getText());
+            }   
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        } finally {
+            if (messageConsumer!=null) {
+                try {  messageConsumer.close();
+                } catch (Exception e) {}
+            }
+            if (session!=null) {
+                try { session.close();
+                } catch (Exception e) {}
+            }
+            if (connection!=null) {
+                try { connection.close();
+                } catch (Exception e) {}
+            }
+        }
+    }
+    /**
+     * Sends a message to the specified Q in Oracle and receives the same message.
+     */
+    @Test
+    public void sendAndReceiveMessage()
+    {
+        drainQueue();
+        QueueConnection connection = null;
+        QueueSession session = null;
+        MessageProducer messageProducer = null;
+        MessageConsumer messageConsumer = null;
+        try {
+            Properties properties = new Properties();
+            properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.soa.esb.oracle.aq.AQInitialContextFactory");
+            properties.put(AQInitialContextFactory.DB_SERVER, server);
+            properties.put(AQInitialContextFactory.DB_INSTANCE, instance);
+            properties.put(AQInitialContextFactory.DB_PORT, portStr);
+            properties.put(AQInitialContextFactory.DB_USER, user);
+            properties.put(AQInitialContextFactory.DB_PASSWD, password);
+            properties.put(AQInitialContextFactory.DB_SCHEMA, schema);
+            properties.put(AQInitialContextFactory.DB_DRIVER, driver);
+            Context context = new InitialContext(properties);
+            XAQueueConnectionFactory xaQueueConnectionFactory = (XAQueueConnectionFactory) 
+                context.lookup(AQInitialContextFactory.XA_QUEUE_CONNECTION_FACTORY);
+            connection = xaQueueConnectionFactory.createXAQueueConnection();
+            session = connection.createQueueSession(false,
+            QueueSession.AUTO_ACKNOWLEDGE);
+            Queue queue = (Queue) context.lookup(qName);
+            messageProducer = session.createSender(queue);
+            messageConsumer = session.createReceiver(queue);
+            connection.start();
+            TextMessage sendMessage = session.createTextMessage(MESSAGE_CONTENT);
+            messageProducer.send(sendMessage);
+            TextMessage receiveMessage = (TextMessage) messageConsumer.receive(2000);
+            String receiveContent = receiveMessage.getText();
+            assertEquals(MESSAGE_CONTENT, receiveContent);
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        } finally {
+            if (messageProducer!=null) {
+                try {  messageProducer.close();
+                } catch (Exception e) {}
+            }
+            if (messageConsumer!=null) {
+                try {  messageConsumer.close();
+                } catch (Exception e) {}
+            }
+            if (session!=null) {
+                try { session.close();
+                } catch (Exception e) {}
+            }
+            if (connection!=null) {
+                try { connection.close();
+                } catch (Exception e) {}
+            }
+        }
+    }
+    
+    @Before
+    public void readProperyFile() {
+        try {
+            Properties properties = new Properties();
+            properties.load(new FileInputStream("src/test/resources/oracle-aq.properties"));
+            if (properties.containsKey(AQInitialContextFactory.DB_DATASOURCE)) {
+                String datasourceName = properties.getProperty(AQInitialContextFactory.DB_DATASOURCE);
+                System.out.println("Found datasource name: " + datasourceName);
+                System.err.println("We can't use a Datasource in JUnit.");
+                assertTrue(false);
+            } else {
+                user     = properties.getProperty(AQInitialContextFactory.DB_USER);
+                password = properties.getProperty(AQInitialContextFactory.DB_PASSWD);
+                server   = properties.getProperty(AQInitialContextFactory.DB_SERVER);
+                instance = properties.getProperty(AQInitialContextFactory.DB_INSTANCE);
+                schema   = properties.getProperty(AQInitialContextFactory.DB_SCHEMA);
+                driver   = properties.getProperty(AQInitialContextFactory.DB_DRIVER);
+                portStr  = properties.getProperty(AQInitialContextFactory.DB_PORT);
+                port     = Integer.valueOf(portStr);
+                qName    = properties.getProperty(Q_NAME);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        }
+    }
+    
+    
+}


Property changes on: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueXATest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/resources/oracle-aq.properties
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/resources/oracle-aq.properties	2007-03-31 01:48:40 UTC (rev 10670)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/resources/oracle-aq.properties	2007-03-31 06:52:23 UTC (rev 10671)
@@ -1,10 +1,11 @@
-#db.datasource=oracleDS
-db.user      =kurt
-db.password  =kurt
-db.server    =barentz
-db.instance  =OSC
-db.schema    =kurt
-db.port      =1521
-db.driver    =thin
+#org.jboss.soa.esb.oracle.aq.datasource=oracleDS
 
-q.name       =KURTQ
+org.jboss.soa.esb.oracle.aq.user      =kurt
+org.jboss.soa.esb.oracle.aq.password  =kurt
+org.jboss.soa.esb.oracle.aq.server    =barentz
+org.jboss.soa.esb.oracle.aq.instance  =OSC
+org.jboss.soa.esb.oracle.aq.schema    =kurt
+org.jboss.soa.esb.oracle.aq.port      =1521
+org.jboss.soa.esb.oracle.aq.driver    =thin
+
+org.jboss.soa.esb.oracle.aq.q.name    =KURTQ




More information about the jboss-svn-commits mailing list