Author: clebert.suconic(a)jboss.com
Date: 2010-12-27 16:27:30 -0500 (Mon, 27 Dec 2010)
New Revision: 10076
Added:
trunk/src/main/org/hornetq/jms/client/HornetQXASession.java
Modified:
trunk/src/main/org/hornetq/jms/client/HornetQConnection.java
trunk/src/main/org/hornetq/jms/client/HornetQSession.java
trunk/tests/src/org/hornetq/tests/integration/jms/client/ConnectionTest.java
trunk/tests/src/org/hornetq/tests/util/JMSTestBase.java
Log:
HORNETQ-515 - tweak on createSession
Modified: trunk/src/main/org/hornetq/jms/client/HornetQConnection.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQConnection.java 2010-12-27 21:03:03 UTC
(rev 10075)
+++ trunk/src/main/org/hornetq/jms/client/HornetQConnection.java 2010-12-27 21:27:30 UTC
(rev 10076)
@@ -154,7 +154,7 @@
{
checkClosed();
- return createSessionInternal(transacted, acknowledgeMode, false,
HornetQConnection.TYPE_GENERIC_CONNECTION);
+ return (Session)createSessionInternal(transacted, acknowledgeMode, false,
HornetQConnection.TYPE_GENERIC_CONNECTION);
}
public String getClientID() throws JMSException
@@ -350,7 +350,7 @@
public QueueSession createQueueSession(final boolean transacted, final int
acknowledgeMode) throws JMSException
{
checkClosed();
- return createSessionInternal(transacted, acknowledgeMode, false,
HornetQSession.TYPE_QUEUE_SESSION);
+ return (QueueSession)createSessionInternal(transacted, acknowledgeMode, false,
HornetQSession.TYPE_QUEUE_SESSION);
}
public ConnectionConsumer createConnectionConsumer(final Queue queue,
@@ -368,7 +368,7 @@
public TopicSession createTopicSession(final boolean transacted, final int
acknowledgeMode) throws JMSException
{
checkClosed();
- return createSessionInternal(transacted, acknowledgeMode, false,
HornetQSession.TYPE_TOPIC_SESSION);
+ return (TopicSession)createSessionInternal(transacted, acknowledgeMode, false,
HornetQSession.TYPE_TOPIC_SESSION);
}
public ConnectionConsumer createConnectionConsumer(final Topic topic,
@@ -386,7 +386,7 @@
public XASession createXASession() throws JMSException
{
checkClosed();
- return createSessionInternal(true, Session.SESSION_TRANSACTED, true,
HornetQSession.TYPE_GENERIC_SESSION);
+ return (XASession)createSessionInternal(true, Session.SESSION_TRANSACTED, true,
HornetQSession.TYPE_GENERIC_SESSION);
}
// XAQueueConnection implementation
-------------------------------------------------------------
@@ -394,7 +394,7 @@
public XAQueueSession createXAQueueSession() throws JMSException
{
checkClosed();
- return createSessionInternal(true, Session.SESSION_TRANSACTED, true,
HornetQSession.TYPE_QUEUE_SESSION);
+ return (XAQueueSession)createSessionInternal(true, Session.SESSION_TRANSACTED,
true, HornetQSession.TYPE_QUEUE_SESSION);
}
@@ -403,7 +403,7 @@
public XATopicSession createXATopicSession() throws JMSException
{
checkClosed();
- return createSessionInternal(true, Session.SESSION_TRANSACTED, true,
HornetQSession.TYPE_TOPIC_SESSION);
+ return (XATopicSession)createSessionInternal(true, Session.SESSION_TRANSACTED,
true, HornetQSession.TYPE_TOPIC_SESSION);
}
@@ -468,7 +468,7 @@
}
}
- protected HornetQSession createSessionInternal(final boolean transacted,
+ private Object createSessionInternal(final boolean transacted,
int acknowledgeMode,
final boolean isXA,
final int type) throws JMSException
@@ -536,8 +536,20 @@
// Setting multiple times on different sessions doesn't matter since
RemotingConnection maintains
// a set (no duplicates)
session.addFailureListener(listener);
+
+
+
- HornetQSession jbs = new HornetQSession(this, transacted, isXA, acknowledgeMode,
session, type);
+ HornetQSession jbs;
+
+ if (isXA)
+ {
+ jbs = new HornetQXASession(this, transacted, isXA, acknowledgeMode, session,
type);
+ }
+ else
+ {
+ jbs = new HornetQSession(this, transacted, isXA, acknowledgeMode, session,
type);
+ }
sessions.add(jbs);
Modified: trunk/src/main/org/hornetq/jms/client/HornetQSession.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQSession.java 2010-12-27 21:03:03 UTC (rev
10075)
+++ trunk/src/main/org/hornetq/jms/client/HornetQSession.java 2010-12-27 21:27:30 UTC (rev
10076)
@@ -74,7 +74,7 @@
*
* $Id$
*/
-public class HornetQSession implements Session, XASession, QueueSession, XAQueueSession,
TopicSession, XATopicSession
+public class HornetQSession implements Session, QueueSession, TopicSession
{
// Constants -----------------------------------------------------
Added: trunk/src/main/org/hornetq/jms/client/HornetQXASession.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQXASession.java
(rev 0)
+++ trunk/src/main/org/hornetq/jms/client/HornetQXASession.java 2010-12-27 21:27:30 UTC
(rev 10076)
@@ -0,0 +1,68 @@
+/*
+ * 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.XAQueueSession;
+import javax.jms.XASession;
+import javax.jms.XATopicSession;
+
+import org.hornetq.api.core.client.ClientSession;
+
+/**
+ * A HornetQXASession
+ *
+ * @author clebertsuconic
+ *
+ *
+ */
+public class HornetQXASession extends HornetQSession implements XAQueueSession,
XATopicSession, XASession
+{
+
+ /**
+ * @param connection
+ * @param transacted
+ * @param xa
+ * @param ackMode
+ * @param session
+ * @param sessionType
+ */
+ protected HornetQXASession(HornetQConnection connection,
+ boolean transacted,
+ boolean xa,
+ int ackMode,
+ ClientSession session,
+ int sessionType)
+ {
+ super(connection, transacted, xa, ackMode, session, sessionType);
+ }
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+
+}
Modified: trunk/tests/src/org/hornetq/tests/integration/jms/client/ConnectionTest.java
===================================================================
---
trunk/tests/src/org/hornetq/tests/integration/jms/client/ConnectionTest.java 2010-12-27
21:03:03 UTC (rev 10075)
+++
trunk/tests/src/org/hornetq/tests/integration/jms/client/ConnectionTest.java 2010-12-27
21:27:30 UTC (rev 10076)
@@ -14,6 +14,9 @@
package org.hornetq.tests.integration.jms.client;
import javax.jms.Connection;
+import javax.jms.Session;
+import javax.jms.XAConnection;
+import javax.jms.XASession;
import org.hornetq.tests.util.JMSTestBase;
@@ -48,6 +51,18 @@
conn.close();
}
+
+ public void testXAInstanceof() throws Exception
+ {
+ Connection conn = cf.createConnection();
+
+ assertFalse(conn instanceof XAConnection);
+ Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ assertFalse(sess instanceof XASession);
+
+ conn.close();
+ }
// Package protected ---------------------------------------------
Modified: trunk/tests/src/org/hornetq/tests/util/JMSTestBase.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/util/JMSTestBase.java 2010-12-27 21:03:03 UTC (rev
10075)
+++ trunk/tests/src/org/hornetq/tests/util/JMSTestBase.java 2010-12-27 21:27:30 UTC (rev
10076)
@@ -21,7 +21,6 @@
import javax.jms.Topic;
import javax.naming.NamingException;
-import org.hornetq.api.core.Pair;
import org.hornetq.api.core.TransportConfiguration;
import org.hornetq.api.core.client.HornetQClient;
import org.hornetq.api.jms.JMSFactoryType;