ARTEMIS-1713 - Fix NPE inside OpenWireConnection

fix NPE inside getClientId() in OpenWireConnection
This commit is contained in:
Christopher L. Shannon (cshannon) 2018-02-28 14:01:51 -05:00
parent bbf0fb495b
commit d4041b5a72
2 changed files with 20 additions and 4 deletions

View File

@ -193,7 +193,7 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
private final Set<SimpleString> knownDestinations = new ConcurrentHashSet<>(); private final Set<SimpleString> knownDestinations = new ConcurrentHashSet<>();
private AtomicBoolean disableTtl = new AtomicBoolean(false); private final AtomicBoolean disableTtl = new AtomicBoolean(false);
public OpenWireConnection(Connection connection, public OpenWireConnection(Connection connection,
ActiveMQServer server, ActiveMQServer server,
@ -1676,7 +1676,7 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
@Override @Override
public String getClientID() { public String getClientID() {
return context.getClientId(); return context != null ? context.getClientId() : null;
} }
@Override @Override

View File

@ -60,9 +60,12 @@ import javax.jms.MessageProducer;
import javax.jms.Queue; import javax.jms.Queue;
import javax.jms.Session; import javax.jms.Session;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.ActiveMQServer; import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.plugin.ActiveMQServerPlugin;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings; import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.tests.integration.openwire.BasicOpenWireTest; import org.apache.activemq.artemis.tests.integration.openwire.BasicOpenWireTest;
import org.junit.Test; import org.junit.Test;
@ -76,6 +79,19 @@ public class OpenwirePluginTest extends BasicOpenWireTest {
long maxAddressSize, Map<String, AddressSettings> settings) { long maxAddressSize, Map<String, AddressSettings> settings) {
ActiveMQServer server = super.createServer(realFiles, configuration, pageSize, maxAddressSize, settings); ActiveMQServer server = super.createServer(realFiles, configuration, pageSize, maxAddressSize, settings);
server.registerBrokerPlugin(verifier); server.registerBrokerPlugin(verifier);
server.registerBrokerPlugin(new ActiveMQServerPlugin() {
@Override
public void afterCreateConnection(RemotingConnection connection) throws ActiveMQException {
try {
//Verify that calling getClientID() before initialized doesn't cause an error
//Test for ARTEMIS-1713
connection.getClientID();
} catch (Exception e) {
throw new ActiveMQException(e.getMessage());
}
}
});
configuration.getAddressesSettings().put("autoCreated", new AddressSettings().setAutoDeleteAddresses(true) configuration.getAddressesSettings().put("autoCreated", new AddressSettings().setAutoDeleteAddresses(true)
.setAutoDeleteQueues(true).setAutoCreateQueues(true).setAutoCreateAddresses(true)); .setAutoDeleteQueues(true).setAutoCreateQueues(true).setAutoCreateAddresses(true));
@ -83,7 +99,7 @@ public class OpenwirePluginTest extends BasicOpenWireTest {
return server; return server;
} }
@Test @Test(timeout = 10000)
public void testAckedMessageAreConsumed() throws JMSException { public void testAckedMessageAreConsumed() throws JMSException {
connection.start(); connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
@ -119,7 +135,7 @@ public class OpenwirePluginTest extends BasicOpenWireTest {
} }
@Test @Test(timeout = 10000)
public void testAutoCreatedQueue() throws JMSException { public void testAutoCreatedQueue() throws JMSException {
connection.start(); connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);