[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