Author: djencks
Date: Mon Jan 19 18:13:31 2009
New Revision: 735914
URL: http://svn.apache.org/viewvc?rev=735914&view=rev
Log:
AMQ-2079 improve error messages in AMQConnection.createSession, and make
ManagedConnectionProxy only supply consistent parameters
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java?rev=735914&r1=735913&r2=735914&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
Mon Jan 19 18:13:31 2009
@@ -297,8 +297,13 @@
public Session createSession(boolean transacted, int acknowledgeMode)
throws JMSException {
checkClosedOrFailed();
ensureConnectionInfoSent();
- if(!transacted && acknowledgeMode==Session.SESSION_TRANSACTED) {
- throw new JMSException("acknowledgeMode SESSION_TRANSACTED cannot
be used for an non-transacted Session");
+ if(!transacted) {
+ if (acknowledgeMode==Session.SESSION_TRANSACTED) {
+ throw new JMSException("acknowledgeMode SESSION_TRANSACTED
cannot be used for an non-transacted Session");
+ } else if (acknowledgeMode < Session.SESSION_TRANSACTED ||
acknowledgeMode > ActiveMQSession.MAX_ACK_CONSTANT) {
+ throw new JMSException("invalid acknowledgeMode: " +
acknowledgeMode + ". Valid values are Session.AUTO_ACKNOWLEDGE (1), " +
+ "Session.CLIENT_ACKNOWLEDGE (2),
Session.DUPS_OK_ACKNOWLEDGE (3), ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE (4) or
for transacted sessions Session.SESSION_TRANSACTED (0)");
+ }
}
return new ActiveMQSession(this, getNextSessionId(), transacted ?
Session.SESSION_TRANSACTED : (acknowledgeMode == Session.SESSION_TRANSACTED
? Session.AUTO_ACKNOWLEDGE : acknowledgeMode), isDispatchAsync(),
isAlwaysSessionAsync());
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java?rev=735914&r1=735913&r2=735914&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
Mon Jan 19 18:13:31 2009
@@ -140,6 +140,7 @@
* is called
*/
public static final int INDIVIDUAL_ACKNOWLEDGE = 4;
+ public static final int MAX_ACK_CONSTANT = INDIVIDUAL_ACKNOWLEDGE;
public static interface DeliveryListener {
void beforeDelivery(ActiveMQSession session, Message msg);
Modified:
activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java?rev=735914&r1=735913&r2=735914&view=diff
==============================================================================
---
activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java
(original)
+++
activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java
Mon Jan 19 18:13:31 2009
@@ -84,7 +84,9 @@
}
/**
- *
+ *
+ * @return "physical" underlying activemq connection, if proxy is
associated with a managed connection
+ * @throws javax.jms.JMSException if managed connection is null
*/
private Connection getConnection() throws JMSException {
if (managedConnection == null) {
@@ -94,22 +96,26 @@
}
/**
- * @param transacted
- * @param acknowledgeMode
- * @return
- * @throws JMSException
+ * @param transacted Whether session is transacted
+ * @param acknowledgeMode session acknowledge mode
+ * @return session proxy
+ * @throws JMSException on error
*/
public Session createSession(boolean transacted, int acknowledgeMode)
throws JMSException {
return createSessionProxy(transacted, acknowledgeMode);
}
/**
- * @param acknowledgeMode
- * @param transacted
- * @return
- * @throws JMSException
+ * @param transacted Whether session is transacted
+ * @param acknowledgeMode session acknowledge mode
+ * @return session proxy
+ * @throws JMSException on error
*/
private ManagedSessionProxy createSessionProxy(boolean transacted, int
acknowledgeMode) throws JMSException {
+ if (!transacted && acknowledgeMode == Session.SESSION_TRANSACTED) {
+ acknowledgeMode = Session.AUTO_ACKNOWLEDGE;
+ }
+// ActiveMQSession session =
(ActiveMQSession)getConnection().createSession(true, acknowledgeMode);
ActiveMQSession session =
(ActiveMQSession)getConnection().createSession(transacted, acknowledgeMode);
ManagedTransactionContext txContext = new
ManagedTransactionContext(managedConnection.getTransactionContext());
session.setTransactionContext(txContext);
@@ -120,27 +126,26 @@
}
public void setUseSharedTxContext(boolean enable) throws JMSException {
- for (Iterator<ManagedSessionProxy> iter = sessions.iterator();
iter.hasNext();) {
- ManagedSessionProxy p = iter.next();
+ for (ManagedSessionProxy p : sessions) {
p.setUseSharedTxContext(enable);
}
}
/**
- * @param transacted
- * @param acknowledgeMode
- * @return
- * @throws JMSException
+ * @param transacted Whether session is transacted
+ * @param acknowledgeMode session acknowledge mode
+ * @return session proxy
+ * @throws JMSException on error
*/
public QueueSession createQueueSession(boolean transacted, int
acknowledgeMode) throws JMSException {
return new ActiveMQQueueSession(createSessionProxy(transacted,
acknowledgeMode));
}
/**
- * @param transacted
- * @param acknowledgeMode
- * @return
- * @throws JMSException
+ * @param transacted Whether session is transacted
+ * @param acknowledgeMode session acknowledge mode
+ * @return session proxy
+ * @throws JMSException on error
*/
public TopicSession createTopicSession(boolean transacted, int
acknowledgeMode) throws JMSException {
return new ActiveMQTopicSession(createSessionProxy(transacted,
acknowledgeMode));