You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2010/03/03 11:28:54 UTC
svn commit: r918384 - in /activemq/trunk/activemq-core/src:
main/java/org/apache/activemq/ActiveMQConnectionFactory.java
test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
Author: gtully
Date: Wed Mar 3 10:28:54 2010
New Revision: 918384
URL: http://svn.apache.org/viewvc?rev=918384&view=rev
Log:
resolve https://issues.apache.org/activemq/browse/AMQ-2635
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java?rev=918384&r1=918383&r2=918384&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java Wed Mar 3 10:28:54 2010
@@ -115,6 +115,7 @@
private int auditMaximumProducerNumber = ActiveMQMessageAudit.MAXIMUM_PRODUCER_COUNT;
private boolean useDedicatedTaskRunner;
private long consumerFailoverRedeliveryWaitPeriod = 0;
+ private ClientInternalExceptionListener clientInternalExceptionListener;
// /////////////////////////////////////////////
//
@@ -323,6 +324,9 @@
if (exceptionListener != null) {
connection.setExceptionListener(exceptionListener);
}
+ if (clientInternalExceptionListener != null) {
+ connection.setClientInternalExceptionListener(clientInternalExceptionListener);
+ }
}
// /////////////////////////////////////////////
@@ -923,4 +927,22 @@
public long getConsumerFailoverRedeliveryWaitPeriod() {
return consumerFailoverRedeliveryWaitPeriod;
}
+
+ public ClientInternalExceptionListener getClientInternalExceptionListener() {
+ return clientInternalExceptionListener;
+ }
+
+ /**
+ * Allows an {@link ClientInternalExceptionListener} to be configured on the ConnectionFactory so that when this factory
+ * is used by frameworks which don't expose the Connection such as Spring JmsTemplate, you can register
+ * an exception listener.
+ * <p> Note: access to this clientInternalExceptionListener will <b>not</b> be serialized if it is associated with more than
+ * on connection (as it will be if more than one connection is subsequently created by this connection factory)
+ * @param clientInternalExceptionListener sets the exception listener to be registered on all connections
+ * created by this factory
+ */
+ public void setClientInternalExceptionListener(
+ ClientInternalExceptionListener clientInternalExceptionListener) {
+ this.clientInternalExceptionListener = clientInternalExceptionListener;
+ }
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java?rev=918384&r1=918383&r2=918384&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java Wed Mar 3 10:28:54 2010
@@ -30,7 +30,6 @@
import org.apache.activemq.broker.BrokerRegistry;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.TransportConnector;
-import org.apache.activemq.network.DiscoveryNetworkConnector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -184,6 +183,29 @@
}
+
+ public void testSetClientInternalExceptionListener() throws Exception {
+ ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
+ connection = (ActiveMQConnection)cf.createConnection();
+ assertNull(connection.getClientInternalExceptionListener());
+
+ ClientInternalExceptionListener listener = new ClientInternalExceptionListener() {
+ public void onException(Throwable exception) {
+ }
+ };
+ connection.setClientInternalExceptionListener(listener);
+ cf.setClientInternalExceptionListener(listener);
+
+ connection = (ActiveMQConnection)cf.createConnection();
+ assertNotNull(connection.getClientInternalExceptionListener());
+ assertEquals(listener, connection.getClientInternalExceptionListener());
+
+ connection = (ActiveMQConnection)cf.createConnection();
+ assertEquals(listener, connection.getClientInternalExceptionListener());
+ assertEquals(listener, cf.getClientInternalExceptionListener());
+
+ }
+
protected void assertCreateConnection(String uri) throws Exception {
// Start up a broker with a tcp connector.
broker = new BrokerService();