You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2020/06/23 08:37:21 UTC

[activemq-artemis] branch master updated: ARTEMIS-2815: Fix null pointer exception on attempt to update queue without filter

This is an automated email from the ASF dual-hosted git repository.

michaelpearce pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 3e394b4  ARTEMIS-2815: Fix null pointer exception on attempt to update queue without filter
     new 18acd5f  This closes #3195
3e394b4 is described below

commit 3e394b45e92a012b2d060ffae37918a840ce0dd2
Author: Havret <h4...@gmail.com>
AuthorDate: Sun Jun 21 00:17:26 2020 +0200

    ARTEMIS-2815: Fix null pointer exception on attempt to update queue without filter
---
 .../activemq/artemis/core/server/impl/QueueImpl.java  |  4 ++--
 .../management/ActiveMQServerControlTest.java         | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
index 3a7a224..d2e7d88 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
@@ -3954,7 +3954,7 @@ public class QueueImpl extends CriticalComponentImpl implements Queue {
          .setAddress(address)
          .setId(id)
          .setRoutingType(routingType)
-         .setFilterString(filter.getFilterString())
+         .setFilterString(filter == null ? null : filter.getFilterString())
          .setDurable(isDurable())
          .setUser(user)
          .setMaxConsumers(maxConsumers)
@@ -3963,7 +3963,7 @@ public class QueueImpl extends CriticalComponentImpl implements Queue {
          .setGroupBuckets(groupBuckets)
          .setGroupFirstKey(groupFirstKey)
          .setLastValue(false)
-         .setLastValue(null)
+         .setLastValueKey((String) null)
          .setNonDestructive(nonDestructive)
          .setPurgeOnNoConsumers(purgeOnNoConsumers)
          .setConsumersBeforeDispatch(consumersBeforeDispatch)
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 53cd3c5..a0656f3 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -568,6 +568,25 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
    }
 
    @Test
+   public void testCreateAndUpdateQueueWithoutFilter() throws Exception {
+      SimpleString address = RandomUtil.randomSimpleString();
+      SimpleString name = RandomUtil.randomSimpleString();
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      serverControl.createQueue(new QueueConfiguration(name).setAddress(address).setRoutingType(RoutingType.ANYCAST).setAutoCreateAddress(true).setFilterString((String) null).toJSON());
+      serverControl.updateQueue(new QueueConfiguration(name).setAddress(address).setRoutingType(RoutingType.ANYCAST).setMaxConsumers(1).toJSON());
+
+      QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer);
+      Assert.assertEquals(address.toString(), queueControl.getAddress());
+      Assert.assertEquals(name.toString(), queueControl.getName());
+      Assert.assertNull(queueControl.getFilter());
+      Assert.assertEquals(1, queueControl.getMaxConsumers());
+
+      serverControl.destroyQueue(name.toString());
+   }
+
+   @Test
    public void testGetQueueNames() throws Exception {
       SimpleString address = RandomUtil.randomSimpleString();
       SimpleString name = RandomUtil.randomSimpleString();