This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push:
new 458292c083 ARTEMIS-5302 extra fixes for using QueueConfiguration more
458292c083 is described below
commit 458292c083ddca2afd64e33d24c51279c0ff6bbc
Author: Justin Bertram <[email protected]>
AuthorDate: Fri Feb 14 10:41:48 2025 -0600
ARTEMIS-5302 extra fixes for using QueueConfiguration more
---
.../artemis/api/core/QueueConfiguration.java | 23 ++++++++++++++--
.../activemq/artemis/utils/SimpleStringTest.java | 32 ++++++++++++++--------
.../codec/PersistentQueueBindingEncoding.java | 3 +-
.../artemis/core/server/impl/LastValueQueue.java | 17 ------------
.../artemis/core/server/impl/QueueImpl.java | 10 +++----
5 files changed, 47 insertions(+), 38 deletions(-)
diff --git
a/artemis-commons/src/main/java/org/apache/activemq/artemis/api/core/QueueConfiguration.java
b/artemis-commons/src/main/java/org/apache/activemq/artemis/api/core/QueueConfiguration.java
index 02264aa041..7f4ce79d7c 100644
---
a/artemis-commons/src/main/java/org/apache/activemq/artemis/api/core/QueueConfiguration.java
+++
b/artemis-commons/src/main/java/org/apache/activemq/artemis/api/core/QueueConfiguration.java
@@ -140,6 +140,11 @@ public class QueueConfiguration implements Serializable {
return new QueueConfiguration(queueConfiguration);
}
+ /**
+ * @deprecated
+ * Use {@link #of(String)} instead.
+ */
+ @Deprecated(forRemoval = true)
public QueueConfiguration() {
}
@@ -410,15 +415,27 @@ public class QueueConfiguration implements Serializable {
return filterString;
}
+ /**
+ * This sets the {@code SimpleString} value that will be used to create a
{@code Filter} for the {@code Queue}
+ * implementation on the broker. The filter's syntax is not validated here.
+ * @param filterString the filter to use; an empty value or a value filled
with whitespace is equivalent to passing
+ * {@code null}
+ * @return this {@code QueueConfiguration}
+ */
public QueueConfiguration setFilterString(SimpleString filterString) {
- if (filterString != null && !filterString.isEmpty() &&
!filterString.isBlank()) {
- this.filterString = filterString;
- } else if (filterString == null) {
+ if (filterString == null || filterString.isEmpty() ||
filterString.isBlank()) {
+ this.filterString = null;
+ } else {
this.filterString = filterString;
}
return this;
}
+ /**
+ * Converts the {@code String} parameter to {@code SimpleString} and invokes
+ * {@link #setFilterString(SimpleString)}
+ * @see #setFilterString(SimpleString)
+ */
public QueueConfiguration setFilterString(String filterString) {
return setFilterString(SimpleString.of(filterString));
}
diff --git
a/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/SimpleStringTest.java
b/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/SimpleStringTest.java
index ee71a8e0e8..181961179f 100644
---
a/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/SimpleStringTest.java
+++
b/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/SimpleStringTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.activemq.artemis.utils;
+import java.util.Arrays;
+import java.util.List;
+
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -43,20 +46,27 @@ public class SimpleStringTest {
@Test
public void testBlank() {
- for (int i = 0; i <= 10; i++) {
- assertTrue(SimpleString.of(" ".repeat(i)).isBlank());
- }
- for (int i = 0; i <= 10; i++) {
- assertTrue(SimpleString.of("\t".repeat(i)).isBlank());
- }
- for (int i = 0; i <= 10; i++) {
- assertTrue(SimpleString.of("\n".repeat(i)).isBlank());
- }
- for (int i = 0; i <= 10; i++) {
- assertTrue(SimpleString.of("\r".repeat(i)).isBlank());
+ List<String> whitespace = Arrays.asList(" ", "\t", "\n", "\r");
+
+ // check empty and pure whitespace
+ for (String s : whitespace) {
+ for (int i = 0; i <= 10; i++) {
+ assertTrue(SimpleString.of(s.repeat(i)).isBlank());
+ }
}
+
+ // check pure non-whitespace
for (int i = 1; i <= 10; i++) {
assertFalse(SimpleString.of("x".repeat(i)).isBlank());
}
+
+ // check a mix of both whitespace and non-whitepsace
+ for (String s : whitespace) {
+ for (int i = 1; i <= 10; i++) {
+ assertFalse(SimpleString.of(s + "x".repeat(i)).isBlank());
+ assertFalse(SimpleString.of("x".repeat(i) + s).isBlank());
+ assertFalse(SimpleString.of(s + "x".repeat(i) + s).isBlank());
+ }
+ }
}
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
index 5e44631f84..e43b7b2197 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
@@ -35,7 +35,6 @@ public class PersistentQueueBindingEncoding implements
EncodingSupport, QueueBin
private List<QueueStatusEncoding> queueStatusEncodings;
public PersistentQueueBindingEncoding() {
- config = new QueueConfiguration();
}
@Override
@@ -67,7 +66,7 @@ public class PersistentQueueBindingEncoding implements
EncodingSupport, QueueBin
@Override
public void decode(final ActiveMQBuffer buffer) {
- config.setName(buffer.readSimpleString());
+ config = QueueConfiguration.of(buffer.readSimpleString());
config.setAddress(buffer.readSimpleString());
config.setFilterString(buffer.readNullableSimpleString());
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/LastValueQueue.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/LastValueQueue.java
index dac696bad4..2373a67c8a 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/LastValueQueue.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/LastValueQueue.java
@@ -52,7 +52,6 @@ import
org.apache.activemq.artemis.utils.collections.LinkedListIterator;
public class LastValueQueue extends QueueImpl {
private final Map<SimpleString, MessageReference> map = new
ConcurrentHashMap<>();
- private final SimpleString lastValueKey;
public LastValueQueue(final QueueConfiguration queueConfiguration,
final Filter filter,
@@ -66,7 +65,6 @@ public class LastValueQueue extends QueueImpl {
final ActiveMQServer server,
final QueueFactory factory) {
super(queueConfiguration, filter, pagingStore, pageSubscription,
scheduledExecutor, postOffice, storageManager, addressSettingsRepository,
executor, server, factory);
- this.lastValueKey = queueConfiguration.getLastValueKey();
}
@Override
@@ -121,11 +119,6 @@ public class LastValueQueue extends QueueImpl {
return false;
}
- @Override
- public QueueConfiguration getQueueConfiguration() {
- return
super.getQueueConfiguration().setLastValue(true).setLastValueKey(lastValueKey);
- }
-
@Override
protected void pruneLastValues() {
// called with synchronized(this) from super.deliver()
@@ -214,16 +207,6 @@ public class LastValueQueue extends QueueImpl {
};
}
- @Override
- public boolean isLastValue() {
- return true;
- }
-
- @Override
- public SimpleString getLastValueKey() {
- return lastValueKey;
- }
-
public synchronized Set<SimpleString> getLastValueKeys() {
return Collections.unmodifiableSet(map.keySet());
}
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 0e2468bd09..064dd136b1 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
@@ -318,7 +318,7 @@ public class QueueImpl extends CriticalComponentImpl
implements Queue {
private final int initialQueueBufferSize;
- private final QueueConfiguration queueConfiguration;
+ protected final QueueConfiguration queueConfiguration;
@Override
public boolean isSwept() {
@@ -385,7 +385,7 @@ public class QueueImpl extends CriticalComponentImpl
implements Queue {
this.createdTimestamp = System.currentTimeMillis();
- this.queueConfiguration = queueConfiguration;
+ this.queueConfiguration = QueueConfiguration.of(queueConfiguration);
QueueConfigurationUtils.applyStaticDefaults(this.queueConfiguration);
this.refCountForConsumers = this.queueConfiguration.isTransient() ? new
TransientQueueManagerImpl(server, this.queueConfiguration.getName()) : new
QueueManagerImpl(server, this.queueConfiguration.getName());
@@ -537,12 +537,12 @@ public class QueueImpl extends CriticalComponentImpl
implements Queue {
@Override
public boolean isLastValue() {
- return false;
+ return queueConfiguration.isLastValue();
}
@Override
public SimpleString getLastValueKey() {
- return null;
+ return queueConfiguration.getLastValueKey();
}
@Override
@@ -4081,7 +4081,7 @@ public class QueueImpl extends CriticalComponentImpl
implements Queue {
@Override
public QueueConfiguration getQueueConfiguration() {
- return queueConfiguration;
+ return QueueConfiguration.of(queueConfiguration);
}
protected static class ConsumerHolder<T extends Consumer> implements
PriorityAware {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact