ARTEMIS-1207: [Core JMS Client] Align order of when setClientId can be called with AcitveMQ5 and QPID
Update ActiveMQConnection to change behaviour Add test to avoid regression.
This commit is contained in:
parent
3090a6f31f
commit
754e9db5fd
|
@ -280,8 +280,6 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
|
||||||
public ExceptionListener getExceptionListener() throws JMSException {
|
public ExceptionListener getExceptionListener() throws JMSException {
|
||||||
checkClosed();
|
checkClosed();
|
||||||
|
|
||||||
justCreated = false;
|
|
||||||
|
|
||||||
return exceptionListener;
|
return exceptionListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,7 +288,6 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
|
||||||
checkClosed();
|
checkClosed();
|
||||||
|
|
||||||
exceptionListener = listener;
|
exceptionListener = listener;
|
||||||
justCreated = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -143,4 +143,31 @@ public class ExceptionListenerTest extends ActiveMQTestBase {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The JMS Spec isn't specific about if ClientId can be set after Exception Listener or not,
|
||||||
|
* simply it states that clientId must be set before any operation (read as remote)
|
||||||
|
*
|
||||||
|
* QpidJMS and ActiveMQ5 both interpret that therefor you can set the exception lister first.
|
||||||
|
* As such we align with those, allowing the exception listener to be set prior to the clientId,
|
||||||
|
* This to avoid causing implementation nuance's, when switching code from one client to another.
|
||||||
|
*
|
||||||
|
* This test is to test this and to ensure it doesn't get accidentally regressed.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSetClientIdAfterSetExceptionListener() throws Exception {
|
||||||
|
Connection conn = cf.createConnection();
|
||||||
|
conn.setExceptionListener((e) -> { });
|
||||||
|
conn.setClientID("clientId");
|
||||||
|
conn.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetClientIdAfterGetExceptionListener() throws Exception {
|
||||||
|
Connection conn = cf.createConnection();
|
||||||
|
conn.getExceptionListener();
|
||||||
|
conn.setClientID("clientId");
|
||||||
|
conn.close();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,24 +153,6 @@ public class ConnectionTest extends JMSTestCase {
|
||||||
// {
|
// {
|
||||||
// }
|
// }
|
||||||
// connection.close();
|
// connection.close();
|
||||||
|
|
||||||
connection = createConnection();
|
|
||||||
ExceptionListener listener = connection.getExceptionListener();
|
|
||||||
try {
|
|
||||||
connection.setClientID(clientID);
|
|
||||||
ProxyAssertSupport.fail();
|
|
||||||
} catch (javax.jms.IllegalStateException e) {
|
|
||||||
}
|
|
||||||
connection.close();
|
|
||||||
|
|
||||||
connection = createConnection();
|
|
||||||
connection.setExceptionListener(listener);
|
|
||||||
try {
|
|
||||||
connection.setClientID(clientID);
|
|
||||||
ProxyAssertSupport.fail();
|
|
||||||
} catch (javax.jms.IllegalStateException e) {
|
|
||||||
}
|
|
||||||
connection.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -233,6 +215,27 @@ public class ConnectionTest extends JMSTestCase {
|
||||||
|
|
||||||
conn.close();
|
conn.close();
|
||||||
|
|
||||||
|
// Ensure setting / getting exception listener can occur before setting clientid.
|
||||||
|
final String clientID = "my-test-client-id";
|
||||||
|
|
||||||
|
Connection connection = createConnection();
|
||||||
|
ExceptionListener listener = connection.getExceptionListener();
|
||||||
|
try {
|
||||||
|
connection.setClientID(clientID);
|
||||||
|
} catch (javax.jms.IllegalStateException e) {
|
||||||
|
ProxyAssertSupport.fail();
|
||||||
|
}
|
||||||
|
connection.close();
|
||||||
|
|
||||||
|
connection = createConnection();
|
||||||
|
connection.setExceptionListener(listener);
|
||||||
|
try {
|
||||||
|
connection.setClientID(clientID);
|
||||||
|
} catch (javax.jms.IllegalStateException e) {
|
||||||
|
ProxyAssertSupport.fail();
|
||||||
|
}
|
||||||
|
connection.close();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test is to check netty issue in https://jira.jboss.org/jira/browse/JBMESSAGING-1618
|
// This test is to check netty issue in https://jira.jboss.org/jira/browse/JBMESSAGING-1618
|
||||||
|
|
Loading…
Reference in New Issue