[hornetq-commits] JBoss hornetq SVN: r9911 - in trunk: tests/jms-tests/src/org/hornetq/jms/tests and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Nov 18 05:50:40 EST 2010
Author: gaohoward
Date: 2010-11-18 05:50:39 -0500 (Thu, 18 Nov 2010)
New Revision: 9911
Added:
trunk/src/main/org/hornetq/jms/client/HornetQQueueConnection.java
trunk/src/main/org/hornetq/jms/client/HornetQTopicConnection.java
trunk/src/main/org/hornetq/jms/client/HornetQXAConnection.java
trunk/src/main/org/hornetq/jms/client/HornetQXAQueueConnection.java
trunk/src/main/org/hornetq/jms/client/HornetQXATopicConnection.java
Modified:
trunk/src/main/org/hornetq/jms/client/HornetQConnection.java
trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java
trunk/tests/jms-tests/src/org/hornetq/jms/tests/ConnectionFactoryTest.java
Log:
HORNETQ-515
Modified: trunk/src/main/org/hornetq/jms/client/HornetQConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQConnection.java 2010-11-17 16:32:48 UTC (rev 9910)
+++ trunk/src/main/org/hornetq/jms/client/HornetQConnection.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -60,8 +60,7 @@
* <p/>
* $Id$
*/
-public class HornetQConnection implements Connection, QueueConnection, TopicConnection, XAConnection,
- XAQueueConnection, XATopicConnection
+public class HornetQConnection implements Connection
{
// Constants ------------------------------------------------------------------------------------
Modified: trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java 2010-11-17 16:32:48 UTC (rev 9910)
+++ trunk/src/main/org/hornetq/jms/client/HornetQConnectionFactory.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -118,7 +118,7 @@
public QueueConnection createQueueConnection(final String username, final String password) throws JMSException
{
- return createConnectionInternal(username, password, false, HornetQConnection.TYPE_QUEUE_CONNECTION);
+ return (QueueConnection)createConnectionInternal(username, password, false, HornetQConnection.TYPE_QUEUE_CONNECTION);
}
// TopicConnectionFactory implementation --------------------------------------------------------
@@ -130,7 +130,7 @@
public TopicConnection createTopicConnection(final String username, final String password) throws JMSException
{
- return createConnectionInternal(username, password, false, HornetQConnection.TYPE_TOPIC_CONNECTION);
+ return (TopicConnection)createConnectionInternal(username, password, false, HornetQConnection.TYPE_TOPIC_CONNECTION);
}
// XAConnectionFactory implementation -----------------------------------------------------------
@@ -142,7 +142,7 @@
public XAConnection createXAConnection(final String username, final String password) throws JMSException
{
- return createConnectionInternal(username, password, true, HornetQConnection.TYPE_GENERIC_CONNECTION);
+ return (XAConnection)createConnectionInternal(username, password, true, HornetQConnection.TYPE_GENERIC_CONNECTION);
}
// XAQueueConnectionFactory implementation ------------------------------------------------------
@@ -154,7 +154,7 @@
public XAQueueConnection createXAQueueConnection(final String username, final String password) throws JMSException
{
- return createConnectionInternal(username, password, true, HornetQConnection.TYPE_QUEUE_CONNECTION);
+ return (XAQueueConnection)createConnectionInternal(username, password, true, HornetQConnection.TYPE_QUEUE_CONNECTION);
}
// XATopicConnectionFactory implementation ------------------------------------------------------
@@ -166,7 +166,7 @@
public XATopicConnection createXATopicConnection(final String username, final String password) throws JMSException
{
- return createConnectionInternal(username, password, true, HornetQConnection.TYPE_TOPIC_CONNECTION);
+ return (XATopicConnection)createConnectionInternal(username, password, true, HornetQConnection.TYPE_TOPIC_CONNECTION);
}
// Referenceable implementation -----------------------------------------------------------------
@@ -604,13 +604,74 @@
// This means there is one underlying remoting connection per jms connection (if not load balanced)
ClientSessionFactory factory = sessionFactory.copy();
- HornetQConnection connection = new HornetQConnection(username,
- password,
- type,
- clientID,
- dupsOKBatchSize,
- transactionBatchSize,
- factory);
+ HornetQConnection connection = null;
+
+ if (isXA)
+ {
+ if (type == HornetQConnection.TYPE_GENERIC_CONNECTION)
+ {
+ connection = new HornetQXAConnection(username,
+ password,
+ type,
+ clientID,
+ dupsOKBatchSize,
+ transactionBatchSize,
+ factory);
+ }
+ else if (type == HornetQConnection.TYPE_QUEUE_CONNECTION)
+ {
+ connection = new HornetQXAQueueConnection(username,
+ password,
+ type,
+ clientID,
+ dupsOKBatchSize,
+ transactionBatchSize,
+ factory);
+ }
+ else if (type == HornetQConnection.TYPE_TOPIC_CONNECTION)
+ {
+ connection = new HornetQXATopicConnection(username,
+ password,
+ type,
+ clientID,
+ dupsOKBatchSize,
+ transactionBatchSize,
+ factory);
+ }
+ }
+ else
+ {
+ if (type == HornetQConnection.TYPE_GENERIC_CONNECTION)
+ {
+ connection = new HornetQConnection(username,
+ password,
+ type,
+ clientID,
+ dupsOKBatchSize,
+ transactionBatchSize,
+ factory);
+ }
+ else if (type == HornetQConnection.TYPE_QUEUE_CONNECTION)
+ {
+ connection = new HornetQQueueConnection(username,
+ password,
+ type,
+ clientID,
+ dupsOKBatchSize,
+ transactionBatchSize,
+ factory);
+ }
+ else if (type == HornetQConnection.TYPE_TOPIC_CONNECTION)
+ {
+ connection = new HornetQTopicConnection(username,
+ password,
+ type,
+ clientID,
+ dupsOKBatchSize,
+ transactionBatchSize,
+ factory);
+ }
+ }
try
{
Added: trunk/src/main/org/hornetq/jms/client/HornetQQueueConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQQueueConnection.java (rev 0)
+++ trunk/src/main/org/hornetq/jms/client/HornetQQueueConnection.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * Red Hat licenses this file to you under the Apache License, version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.hornetq.jms.client;
+
+import javax.jms.QueueConnection;
+
+import org.hornetq.api.core.client.ClientSessionFactory;
+
+/**
+ * HornetQ implementation of a JMS QueueConnection.
+ *
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+ */
+public class HornetQQueueConnection extends HornetQConnection implements QueueConnection
+{
+ public HornetQQueueConnection(final String username,
+ final String password,
+ final int connectionType,
+ final String clientID,
+ final int dupsOKBatchSize,
+ final int transactionBatchSize,
+ final ClientSessionFactory sessionFactory)
+ {
+ super(username, password, connectionType, clientID, dupsOKBatchSize, transactionBatchSize, sessionFactory);
+ }
+
+}
Added: trunk/src/main/org/hornetq/jms/client/HornetQTopicConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQTopicConnection.java (rev 0)
+++ trunk/src/main/org/hornetq/jms/client/HornetQTopicConnection.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * Red Hat licenses this file to you under the Apache License, version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.hornetq.jms.client;
+
+import javax.jms.TopicConnection;
+
+import org.hornetq.api.core.client.ClientSessionFactory;
+
+/**
+ * HornetQ implementation of a JMS TopicConnection.
+ *
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+ */
+public class HornetQTopicConnection extends HornetQConnection implements TopicConnection
+{
+ public HornetQTopicConnection(final String username,
+ final String password,
+ final int connectionType,
+ final String clientID,
+ final int dupsOKBatchSize,
+ final int transactionBatchSize,
+ final ClientSessionFactory sessionFactory)
+ {
+ super(username, password, connectionType, clientID, dupsOKBatchSize, transactionBatchSize, sessionFactory);
+ }
+}
Added: trunk/src/main/org/hornetq/jms/client/HornetQXAConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQXAConnection.java (rev 0)
+++ trunk/src/main/org/hornetq/jms/client/HornetQXAConnection.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * Red Hat licenses this file to you under the Apache License, version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.hornetq.jms.client;
+
+import javax.jms.XAConnection;
+
+import org.hornetq.api.core.client.ClientSessionFactory;
+
+/**
+ * HornetQ implementation of a JMS XAConnection.
+ *
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+ */
+public class HornetQXAConnection extends HornetQConnection implements XAConnection
+{
+
+ public HornetQXAConnection(final String username,
+ final String password,
+ final int connectionType,
+ final String clientID,
+ final int dupsOKBatchSize,
+ final int transactionBatchSize,
+ final ClientSessionFactory sessionFactory)
+ {
+ super(username, password, connectionType, clientID, dupsOKBatchSize, transactionBatchSize, sessionFactory);
+ }
+
+}
Added: trunk/src/main/org/hornetq/jms/client/HornetQXAQueueConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQXAQueueConnection.java (rev 0)
+++ trunk/src/main/org/hornetq/jms/client/HornetQXAQueueConnection.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * Red Hat licenses this file to you under the Apache License, version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.hornetq.jms.client;
+
+import javax.jms.XAQueueConnection;
+
+import org.hornetq.api.core.client.ClientSessionFactory;
+
+/**
+ * HornetQ implementation of a JMS XAQueueConnection.
+ *
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+ */
+public class HornetQXAQueueConnection extends HornetQConnection implements XAQueueConnection
+{
+ public HornetQXAQueueConnection(final String username,
+ final String password,
+ final int connectionType,
+ final String clientID,
+ final int dupsOKBatchSize,
+ final int transactionBatchSize,
+ final ClientSessionFactory sessionFactory)
+ {
+ super(username, password, connectionType, clientID, dupsOKBatchSize, transactionBatchSize, sessionFactory);
+ }
+}
Added: trunk/src/main/org/hornetq/jms/client/HornetQXATopicConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQXATopicConnection.java (rev 0)
+++ trunk/src/main/org/hornetq/jms/client/HornetQXATopicConnection.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * Red Hat licenses this file to you under the Apache License, version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.hornetq.jms.client;
+
+import javax.jms.XATopicConnection;
+
+import org.hornetq.api.core.client.ClientSessionFactory;
+
+/**
+ * HornetQ implementation of a JMS XATopicConnection.
+ *
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+ */
+public class HornetQXATopicConnection extends HornetQConnection implements XATopicConnection
+{
+ public HornetQXATopicConnection(final String username,
+ final String password,
+ final int connectionType,
+ final String clientID,
+ final int dupsOKBatchSize,
+ final int transactionBatchSize,
+ final ClientSessionFactory sessionFactory)
+ {
+ super(username, password, connectionType, clientID, dupsOKBatchSize, transactionBatchSize, sessionFactory);
+ }
+}
Modified: trunk/tests/jms-tests/src/org/hornetq/jms/tests/ConnectionFactoryTest.java
===================================================================
--- trunk/tests/jms-tests/src/org/hornetq/jms/tests/ConnectionFactoryTest.java 2010-11-17 16:32:48 UTC (rev 9910)
+++ trunk/tests/jms-tests/src/org/hornetq/jms/tests/ConnectionFactoryTest.java 2010-11-18 10:50:39 UTC (rev 9911)
@@ -28,8 +28,11 @@
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
+import javax.jms.XAConnection;
import javax.jms.XAConnectionFactory;
+import javax.jms.XAQueueConnection;
import javax.jms.XAQueueConnectionFactory;
+import javax.jms.XATopicConnection;
import javax.jms.XATopicConnectionFactory;
import org.hornetq.jms.client.HornetQConnectionFactory;
@@ -389,7 +392,111 @@
assertTrue(factory instanceof TopicConnectionFactory);
assertEquals(2, getTypes(factory));
}
+
+ public void testConnectionTypes() throws Exception
+ {
+ Connection genericConnection = null;
+ XAConnection xaConnection = null;
+ QueueConnection queueConnection = null;
+ TopicConnection topicConnection = null;
+ XAQueueConnection xaQueueConnection = null;
+ XATopicConnection xaTopicConnection = null;
+ ConnectionFactory genericFactory = (ConnectionFactory)JMSTestCase.ic.lookup("/ConnectionFactory");
+ genericConnection = genericFactory.createConnection();
+ assertConnectionType(genericConnection, "generic");
+
+ XAConnectionFactory xaFactory = (XAConnectionFactory)JMSTestCase.ic.lookup("/CF_XA_TRUE");
+ xaConnection = xaFactory.createXAConnection();
+ assertConnectionType(xaConnection, "xa");
+
+ QueueConnectionFactory queueCF = (QueueConnectionFactory)JMSTestCase.ic.lookup("/CF_QUEUE");
+ queueConnection = queueCF.createQueueConnection();
+ assertConnectionType(queueConnection, "queue");
+
+ TopicConnectionFactory topicCF = (TopicConnectionFactory)JMSTestCase.ic.lookup("/CF_TOPIC");
+ topicConnection = topicCF.createTopicConnection();
+ assertConnectionType(topicConnection, "topic");
+
+ XAQueueConnectionFactory xaQueueCF = (XAQueueConnectionFactory)JMSTestCase.ic.lookup("/CF_QUEUE_XA_TRUE");
+ xaQueueConnection = xaQueueCF.createXAQueueConnection();
+ assertConnectionType(xaQueueConnection, "xa-queue");
+
+ XATopicConnectionFactory xaTopicCF = (XATopicConnectionFactory)JMSTestCase.ic.lookup("/CF_TOPIC_XA_TRUE");
+ xaTopicConnection = xaTopicCF.createXATopicConnection();
+ assertConnectionType(xaTopicConnection, "xa-topic");
+
+ genericConnection.close();
+ xaConnection.close();
+ queueConnection.close();
+ topicConnection.close();
+ xaQueueConnection.close();
+ xaTopicConnection.close();
+ }
+
+ private void assertConnectionType(Connection conn, String type)
+ {
+ if ("generic".equals(type))
+ {
+ //generic
+ assertTrue(conn instanceof Connection);
+ assertFalse(conn instanceof XAConnection);
+ assertFalse(conn instanceof QueueConnection);
+ assertFalse(conn instanceof XAQueueConnection);
+ assertFalse(conn instanceof TopicConnection);
+ assertFalse(conn instanceof XATopicConnection);
+ }
+ else if ("queue".equals(type))
+ {
+ assertTrue(conn instanceof Connection);
+ assertFalse(conn instanceof XAConnection);
+ assertTrue(conn instanceof QueueConnection);
+ assertFalse(conn instanceof XAQueueConnection);
+ assertFalse(conn instanceof TopicConnection);
+ assertFalse(conn instanceof XATopicConnection);
+ }
+ else if ("topic".equals(type))
+ {
+ assertTrue(conn instanceof Connection);
+ assertFalse(conn instanceof XAConnection);
+ assertFalse(conn instanceof QueueConnection);
+ assertFalse(conn instanceof XAQueueConnection);
+ assertTrue(conn instanceof TopicConnection);
+ assertFalse(conn instanceof XATopicConnection);
+ }
+ else if ("xa".equals(type))
+ {
+ assertTrue(conn instanceof Connection);
+ assertTrue(conn instanceof XAConnection);
+ assertFalse(conn instanceof QueueConnection);
+ assertFalse(conn instanceof XAQueueConnection);
+ assertFalse(conn instanceof TopicConnection);
+ assertFalse(conn instanceof XATopicConnection);
+ }
+ else if ("xa-queue".equals(type))
+ {
+ assertTrue(conn instanceof Connection);
+ assertTrue(conn instanceof XAConnection);
+ assertTrue(conn instanceof QueueConnection);
+ assertTrue(conn instanceof XAQueueConnection);
+ assertFalse(conn instanceof TopicConnection);
+ assertFalse(conn instanceof XATopicConnection);
+ }
+ else if ("xa-topic".equals(type))
+ {
+ assertTrue(conn instanceof Connection);
+ assertTrue(conn instanceof XAConnection);
+ assertFalse(conn instanceof QueueConnection);
+ assertFalse(conn instanceof XAQueueConnection);
+ assertTrue(conn instanceof TopicConnection);
+ assertTrue(conn instanceof XATopicConnection);
+ }
+ else
+ {
+ fail("Unknown connection type: " + type);
+ }
+ }
+
private int getTypes(HornetQConnectionFactory factory)
{
int num = 0;
More information about the hornetq-commits
mailing list