[jboss-svn-commits] JBL Code SVN: r10662 - in labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src: test/java/org/jboss/soa/esb/oracle/aq and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 30 18:15:13 EDT 2007


Author: kurt.stam at jboss.com
Date: 2007-03-30 18:15:13 -0400 (Fri, 30 Mar 2007)
New Revision: 10662

Modified:
   labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQContext.java
   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
Log:
Work in progress.

Modified: labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQContext.java
===================================================================
--- labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQContext.java	2007-03-30 20:59:08 UTC (rev 10661)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQContext.java	2007-03-30 22:15:13 UTC (rev 10662)
@@ -103,7 +103,7 @@
         } else {
             this.environment = (Hashtable<String,Object>)environment;
         }
-        this.bindings = new HashMap<String,Object>();
+        this.bindings = bindings;
         this.treeBindings = new HashMap<String,Object>();
         frozen = true;
     }

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-30 20:59:08 UTC (rev 10661)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/main/java/org/jboss/soa/esb/oracle/aq/AQInitialContextFactory.java	2007-03-30 22:15:13 UTC (rev 10662)
@@ -185,15 +185,15 @@
         }
     }
 
-    public void init() {
+    public void init(Hashtable<?, ?> env) {
 
-        dbuser = "kurt";
-        dbpass = "kurt";
-        aqServerName = "barentz";
-        aqServerDBInst = "OSC";
-        aqServerPort = "1521";
-        aqDBDriver = "thin";
-        aqSchemaName = "kurt";
+        dbuser = (String) env.get(AQInitialContextFactory.DB_USER);
+        dbpass = (String) env.get(AQInitialContextFactory.DB_PASSWD);
+        aqServerName = (String) env.get(AQInitialContextFactory.DB_SERVER);
+        aqServerDBInst = (String) env.get(AQInitialContextFactory.DB_INSTANCE);
+        aqServerPort = (String) env.get(AQInitialContextFactory.DB_PORT);
+        aqDBDriver = (String) env.get(AQInitialContextFactory.DB_DRIVER);
+        aqSchemaName = (String) env.get(AQInitialContextFactory.DB_SCHEMA);
         try {
             aqServerPortNumber = Integer.parseInt(aqServerPort);
         } catch (Exception e) {
@@ -204,10 +204,7 @@
     @SuppressWarnings("unused")
     public Context getInitialContext(Hashtable<?,?> environment) throws NamingException {
             Map<String, Object> data = new ConcurrentHashMap<String, Object>();
-            if (environment!=null) {
-                //TODO read the properties
-            }
-            init();
+            init(environment);
             createDestinationContext(data);
             return new AQContext(environment, data);
     }

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-30 20:59:08 UTC (rev 10661)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/DatasourceTest.java	2007-03-30 22:15:13 UTC (rev 10662)
@@ -4,26 +4,17 @@
 package org.jboss.soa.esb.oracle.aq;
 
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.FileInputStream;
 import java.sql.CallableStatement;
 import java.sql.Connection;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Properties;
 
-import javax.jms.QueueConnection;
-import javax.jms.QueueConnectionFactory;
-import javax.jms.Session;
 import javax.sql.DataSource;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertFalse;
-
-
-import oracle.jms.AQjmsFactory;
-import oracle.jms.AQjmsSession;
-
 import org.junit.Before;
 import org.junit.Test;
 
@@ -66,15 +57,20 @@
     {
         DataSource ds = null;
         System.out.println("Building our db connection");
+        Connection connection=null;
         try {
             ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
-            Connection connection = ds.getConnection();
+            connection = ds.getConnection();
             CallableStatement statement = connection.prepareCall("Select * from DUAL");
             statement.execute();
-            connection.close();
         } catch (Throwable e) {
             e.printStackTrace();
             assertTrue(false);
+        } finally {
+            if (connection!=null) {
+                try { connection.close();
+                } catch (Exception e) {}
+            }
         }
     }
     

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-30 20:59:08 UTC (rev 10661)
+++ labs/jbossesb/trunk/plugins/org.jboss.soa.esb.oracle.aq/src/test/java/org/jboss/soa/esb/oracle/aq/QueueTest.java	2007-03-30 22:15:13 UTC (rev 10662)
@@ -4,23 +4,28 @@
 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.sql.CallableStatement;
-import java.sql.Connection;
+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.naming.Context;
 import javax.sql.DataSource;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertFalse;
-
-
 import oracle.jms.AQjmsFactory;
 import oracle.jms.AQjmsSession;
 
@@ -34,6 +39,7 @@
 public class QueueTest 
 {
     private final static String Q_NAME = "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;
     /**
@@ -56,7 +62,6 @@
             assertNotNull(driver);   
             assertNotNull(qName);
     }
-    
     /**
      * Tries to make a queueConnection to Oracle using the properties in the
      * oracle-aq.properties file.
@@ -65,25 +70,31 @@
     @Test
     public void createQueueConnection()
     {
-        DataSource ds = null;
+        QueueConnection queueConnection = null;
+        Session session = null;
         System.out.println("Building our own db connection");
         try {
-            ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
+            DataSource ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
             QueueConnectionFactory queueFactory = AQjmsFactory.getQueueConnectionFactory(ds);
-            QueueConnection queueConnection = queueFactory.createQueueConnection();
+            queueConnection = queueFactory.createQueueConnection();
             assertNotNull(queueConnection);
-            Session session = (AQjmsSession) queueConnection.createQueueSession(false,
+            session = (AQjmsSession) queueConnection.createQueueSession(false,
                     Session.AUTO_ACKNOWLEDGE);
             assertNotNull(session);
-            session.close();
-            queueConnection.close();
-            
         } 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.
@@ -93,14 +104,15 @@
     public void findGivenQueue()
     {
         boolean foundQueue=false;
-        DataSource ds = null;
+        QueueConnection queueConnection = null;
+        Session session = null;
         System.out.println("Building our own db connection");
         try {
-            ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
+            DataSource ds = AQUtil.getSQLDataSource(server, instance, port, driver, user, password);
             QueueConnectionFactory queueFactory = AQjmsFactory.getQueueConnectionFactory(ds);
-            QueueConnection queueConnection = queueFactory.createQueueConnection();
+            queueConnection = queueFactory.createQueueConnection();
             assertNotNull(queueConnection);
-            Session session = (AQjmsSession) queueConnection.createQueueSession(false,
+            session = (AQjmsSession) queueConnection.createQueueSession(false,
                     Session.AUTO_ACKNOWLEDGE);
             assertNotNull(session);
             
@@ -112,20 +124,139 @@
                 System.out.println("Found Destination: " + di.getQueueName());
                 // register normal queue
                 if (di.getQueueName().equalsIgnoreCase(qName)) {
-                    System.out.println("Matched up Queue: " + di.getQueueName() + " with " + qName);
+                    System.out.println("Matched up given Queue: " + qName + " with " + di.getQueueName());
                     foundQueue=true;
                 }
             }
-            
-            session.close();
-            queueConnection.close();
             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);
+            QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) 
+                context.lookup(AQInitialContextFactory.QUEUE_CONNECTION_FACTORY);
+            connection = queueConnectionFactory.createQueueConnection();
+            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 {
+            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);
+            QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) 
+                context.lookup(AQInitialContextFactory.QUEUE_CONNECTION_FACTORY);
+            connection = queueConnectionFactory.createQueueConnection();
+            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() {




More information about the jboss-svn-commits mailing list