[hornetq-commits] JBoss hornetq SVN: r7992 - in trunk: src/main/org/hornetq/jms/client and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Sep 24 19:06:30 EDT 2009


Author: plugtree
Date: 2009-09-24 19:06:29 -0400 (Thu, 24 Sep 2009)
New Revision: 7992

Modified:
   trunk/src/main/org/hornetq/jms/HornetQDestination.java
   trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java
   trunk/src/main/org/hornetq/jms/referenceable/ConnectionFactoryObjectFactory.java
   trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactory.java
   trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactoryImpl.java
   trunk/src/main/org/hornetq/ra/HornetQResourceAdapter.java
   trunk/tests/jms-tests/src/org/hornetq/jms/tests/ReferenceableTest.java
Log:
https://jira.jboss.org/jira/browse/HORNETQ-24 Added Referenceable support for Destinations and ConnectionFactories.

Modified: trunk/src/main/org/hornetq/jms/HornetQDestination.java
===================================================================
--- trunk/src/main/org/hornetq/jms/HornetQDestination.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/src/main/org/hornetq/jms/HornetQDestination.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -19,6 +19,7 @@
 import javax.jms.Destination;
 import javax.naming.NamingException;
 import javax.naming.Reference;
+import javax.naming.Referenceable;
 
 import org.hornetq.jms.referenceable.DestinationObjectFactory;
 import org.hornetq.jms.referenceable.SerializableObjectRefAddr;
@@ -32,7 +33,7 @@
  *
  * $Id$
  */
-public abstract class HornetQDestination implements Destination, Serializable/*, Referenceable http://jira.jboss.org/jira/browse/JBMESSAGING-395*/
+public abstract class HornetQDestination implements Destination, Serializable, Referenceable
 {
    // Constants -----------------------------------------------------
 

Modified: trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -32,6 +32,7 @@
 import javax.jms.XATopicConnectionFactory;
 import javax.naming.NamingException;
 import javax.naming.Reference;
+import javax.naming.Referenceable;
 
 import org.hornetq.core.client.ClientSessionFactory;
 import org.hornetq.core.client.impl.ClientSessionFactoryImpl;
@@ -47,10 +48,7 @@
  * @version <tt>$Revision$</tt> $Id$
  */
 public class HornetQConnectionFactory implements ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory,
-         XAConnectionFactory, XAQueueConnectionFactory, XATopicConnectionFactory, Serializable/*
-   * , Referenceable
-   * http://jira.jboss.org/jira/browse/JBMESSAGING-395
-   */
+         XAConnectionFactory, XAQueueConnectionFactory, XATopicConnectionFactory, Serializable, Referenceable 
 {
    // Constants ------------------------------------------------------------------------------------
 

Modified: trunk/src/main/org/hornetq/jms/referenceable/ConnectionFactoryObjectFactory.java
===================================================================
--- trunk/src/main/org/hornetq/jms/referenceable/ConnectionFactoryObjectFactory.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/src/main/org/hornetq/jms/referenceable/ConnectionFactoryObjectFactory.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -15,13 +15,12 @@
 
 import java.util.Hashtable;
 
+import javax.jms.ConnectionFactory;
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.Reference;
 import javax.naming.spi.ObjectFactory;
 
-import org.hornetq.jms.client.HornetQConnectionFactory;
-
 /**
  * 
  * A ConnectionFactoryObjectFactory.
@@ -43,7 +42,7 @@
       byte[] bytes = (byte[])r.get("HornetQ-CF").getContent();
       
       // Deserialize
-      return (HornetQConnectionFactory)SerializableObjectRefAddr.deserialize(bytes);
+      return (ConnectionFactory)SerializableObjectRefAddr.deserialize(bytes);
    }
 }
 

Modified: trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactory.java
===================================================================
--- trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactory.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactory.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -21,6 +21,7 @@
 import javax.jms.XAConnectionFactory;
 import javax.jms.XAQueueConnectionFactory;
 import javax.jms.XATopicConnectionFactory;
+import javax.naming.Referenceable;
 
 /**
  * An aggregate interface for the JMS connection factories
@@ -30,7 +31,7 @@
  * @version $Revision: $
  */
 public interface HornetQRAConnectionFactory extends ConnectionFactory, TopicConnectionFactory, QueueConnectionFactory,
-         XAConnectionFactory, XAQueueConnectionFactory, XATopicConnectionFactory, Serializable
+         XAConnectionFactory, XAQueueConnectionFactory, XATopicConnectionFactory, Serializable, Referenceable
 {
    /** Connection factory capable of handling connections */
    public static final int CONNECTION = 0;

Modified: trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactoryImpl.java
===================================================================
--- trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactoryImpl.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/src/main/org/hornetq/ra/HornetQRAConnectionFactoryImpl.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -20,11 +20,13 @@
 import javax.jms.XAConnection;
 import javax.jms.XAQueueConnection;
 import javax.jms.XATopicConnection;
+import javax.naming.NamingException;
 import javax.naming.Reference;
-import javax.resource.Referenceable;
 import javax.resource.spi.ConnectionManager;
 
 import org.hornetq.core.logging.Logger;
+import org.hornetq.jms.referenceable.ConnectionFactoryObjectFactory;
+import org.hornetq.jms.referenceable.SerializableObjectRefAddr;
 
 /**
  * The connection factory
@@ -33,7 +35,7 @@
  * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
  * @version $Revision:  $
  */
-public class HornetQRAConnectionFactoryImpl implements HornetQRAConnectionFactory, Referenceable
+public class HornetQRAConnectionFactoryImpl implements HornetQRAConnectionFactory
 {
    /** Serial version UID */
    static final long serialVersionUID = 7981708919479859360L;
@@ -111,8 +113,24 @@
       {
          log.trace("getReference()");
       }
-
-      return reference;
+      if(reference == null)
+      {
+         try
+         {
+            reference = new Reference(this.getClass().getCanonicalName(),
+                                 new SerializableObjectRefAddr("HornetQ-CF", this),
+                                 ConnectionFactoryObjectFactory.class.getCanonicalName(),
+                                 null);
+         }
+         catch (NamingException e)
+         {
+            log.error("Error while giving object Reference.", e);
+         }     
+      }
+      
+        return reference; 
+      
+      
    }
 
    /**

Modified: trunk/src/main/org/hornetq/ra/HornetQResourceAdapter.java
===================================================================
--- trunk/src/main/org/hornetq/ra/HornetQResourceAdapter.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/src/main/org/hornetq/ra/HornetQResourceAdapter.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -12,6 +12,7 @@
  */
 package org.hornetq.ra;
 
+import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -43,7 +44,7 @@
  * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
  * @version $Revision: $
  */
-public class HornetQResourceAdapter implements ResourceAdapter
+public class HornetQResourceAdapter implements ResourceAdapter, Serializable
 {
    /**
     * The logger

Modified: trunk/tests/jms-tests/src/org/hornetq/jms/tests/ReferenceableTest.java
===================================================================
--- trunk/tests/jms-tests/src/org/hornetq/jms/tests/ReferenceableTest.java	2009-09-24 22:02:11 UTC (rev 7991)
+++ trunk/tests/jms-tests/src/org/hornetq/jms/tests/ReferenceableTest.java	2009-09-24 23:06:29 UTC (rev 7992)
@@ -22,7 +22,18 @@
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
+import javax.naming.Reference;
+import javax.naming.Referenceable;
 
+import org.hornetq.jms.HornetQQueue;
+import org.hornetq.jms.HornetQTopic;
+import org.hornetq.jms.client.HornetQConnectionFactory;
+import org.hornetq.jms.referenceable.ConnectionFactoryObjectFactory;
+import org.hornetq.jms.referenceable.DestinationObjectFactory;
+import org.hornetq.ra.HornetQRAConnectionFactory;
+import org.hornetq.ra.HornetQRAManagedConnectionFactory;
+import org.hornetq.ra.HornetQResourceAdapter;
+
 /**
  * 
  * A ReferenceableTest.
@@ -55,15 +66,14 @@
       assertTrue(topic1 instanceof Serializable);            
    }
 
-   /* http://jira.jboss.org/jira/browse/JBMESSAGING-395
 
    public void testReferenceable() throws Exception
    {
       assertTrue(cf instanceof Referenceable);
       
-      assertTrue(queue instanceof Referenceable);
+      assertTrue(queue1 instanceof Referenceable);
       
-      assertTrue(topic instanceof Referenceable);
+      assertTrue(topic1 instanceof Referenceable);
    }
    
    public void testReferenceCF() throws Exception
@@ -78,16 +88,16 @@
       
       Object instance = factory.getObjectInstance(cfRef, null, null, null);
       
-      assertTrue(instance instanceof HornetQRAConnectionFactory);
+      assertTrue(instance instanceof HornetQConnectionFactory);
       
-      HornetQRAConnectionFactory cf2 = (HornetQRAConnectionFactory)instance;
+      HornetQConnectionFactory cf2 = (HornetQConnectionFactory)instance;
       
-      simpleSendReceive(cf2, queue);
+      simpleSendReceive(cf2, queue1);
    }
    
    public void testReferenceQueue() throws Exception
    {
-      Reference queueRef = ((Referenceable)queue).getReference();
+      Reference queueRef = ((Referenceable)queue1).getReference();
       
       String factoryName = queueRef.getFactoryClassName();
       
@@ -101,7 +111,7 @@
       
       HornetQQueue queue2 = (HornetQQueue)instance;
       
-      assertEquals(queue.getQueueName(), queue2.getQueueName());
+      assertEquals(queue1.getQueueName(), queue2.getQueueName());
       
       simpleSendReceive(cf, queue2);
       
@@ -109,7 +119,7 @@
    
    public void testReferenceTopic() throws Exception
    {
-      Reference topicRef = ((Referenceable)topic).getReference();
+      Reference topicRef = ((Referenceable)topic1).getReference();
       
       String factoryName = topicRef.getFactoryClassName();
       
@@ -123,14 +133,40 @@
       
       HornetQTopic topic2 = (HornetQTopic)instance;
       
-      assertEquals(topic.getTopicName(), topic2.getTopicName());
+      assertEquals(topic1.getTopicName(), topic2.getTopicName());
       
       simpleSendReceive(cf, topic2);
    }
 
-   */
    
+   public void testReferenceRAManagedCF() throws Exception
+   {
+      HornetQResourceAdapter ra = new HornetQResourceAdapter();
+      
+      HornetQRAManagedConnectionFactory mcf = new HornetQRAManagedConnectionFactory();
+      
+      mcf.setResourceAdapter(ra);
+      
+      ConnectionFactory racf = (ConnectionFactory)mcf.createConnectionFactory();
+      
+      Reference cfRef = ((Referenceable)racf).getReference();
+      
+      String factoryName = cfRef.getFactoryClassName();
+      
+      Class factoryClass = Class.forName(factoryName);
+      
+      ConnectionFactoryObjectFactory factory = (ConnectionFactoryObjectFactory)factoryClass.newInstance();
+      
+      Object instance = factory.getObjectInstance(cfRef, null, null, null);
+      
+      assertTrue(instance instanceof HornetQRAConnectionFactory);
+      
+      HornetQRAConnectionFactory racf2 = (HornetQRAConnectionFactory)instance;
+      
+      //TODO implement simpleSendReceive with test inside the container or wait until https://jira.jboss.org/jira/browse/HORNETQ-140 is done.
+   }
    
+   
    protected void simpleSendReceive(ConnectionFactory cf, Destination dest) throws Exception
    {
       Connection conn = null;



More information about the hornetq-commits mailing list