You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2019/06/17 20:17:15 UTC

[qpid-jms] branch QPIDJMS-461 created (now b2300cb)

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

tabish pushed a change to branch QPIDJMS-461
in repository https://gitbox.apache.org/repos/asf/qpid-jms.git.


      at b2300cb  QPIDJMS-461 Optimize the default message ID builder

This branch includes the following new commits:

     new b2300cb  QPIDJMS-461 Optimize the default message ID builder

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-jms] 01/01: QPIDJMS-461 Optimize the default message ID builder

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tabish pushed a commit to branch QPIDJMS-461
in repository https://gitbox.apache.org/repos/asf/qpid-jms.git

commit b2300cbfbcd00eb990c82e5be1735df9f6ba89c5
Author: Timothy Bish <ta...@gmail.com>
AuthorDate: Mon Jun 17 16:15:22 2019 -0400

    QPIDJMS-461 Optimize the default message ID builder
    
    Change the builtin Message ID builder to create a builder
    per producer and optimize the string handling used to create
    the Message ID from the producer id and sequence number.
---
 .../qpid/jms/message/JmsMessageIDBuilder.java      | 26 ++++++++++++++++++----
 .../qpid/jms/policy/JmsDefaultMessageIDPolicy.java | 16 ++++++++-----
 2 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java
index 319506b..f8a32cb 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java
@@ -30,15 +30,19 @@ public interface JmsMessageIDBuilder {
         DEFAULT {
             @Override
             public JmsMessageIDBuilder createBuilder() {
+
                 return new JmsMessageIDBuilder() {
 
+                    private final StringBuilder builder = new StringBuilder();
+
                     @Override
                     public Object createMessageID(String producerId, long messageSequence) {
-                        String messageId = producerId + "-" + messageSequence;
-                        if (!AmqpMessageIdHelper.hasMessageIdPrefix(messageId)) {
-                            messageId = AmqpMessageIdHelper.JMS_ID_PREFIX + messageId;
+                        builder.setLength(0);
+                        if (!AmqpMessageIdHelper.hasMessageIdPrefix(producerId)) {
+                            builder.append(AmqpMessageIdHelper.JMS_ID_PREFIX);
                         }
-                        return messageId;
+                        builder.append(producerId).append("-").append(messageSequence);
+                        return builder.toString();
                     }
 
                     @Override
@@ -115,6 +119,20 @@ public interface JmsMessageIDBuilder {
         public static JmsMessageIDBuilder create(String value) {
             return valueOf(value.toUpperCase(Locale.ENGLISH)).createBuilder();
         }
+
+        /**
+         * Validates the value given maps to the built in message ID builders and
+         * return the builder enumeration that it maps to which can later be used
+         * to create builders of that type.
+         *
+         * @param value
+         * 		The name of one of the built in message ID builders.
+         *
+         * @return the enumeration value that maps to the built in builder.
+         */
+        public static BUILTIN validate(String value) {
+            return valueOf(value.toUpperCase(Locale.ENGLISH));
+        }
     }
 
     /**
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java
index 2051561..870de3d 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java
@@ -26,7 +26,8 @@ import org.apache.qpid.jms.message.JmsMessageIDBuilder;
  */
 public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
 
-    private JmsMessageIDBuilder messageIDBuilder = JmsMessageIDBuilder.BUILTIN.DEFAULT.createBuilder();
+    private JmsMessageIDBuilder messageIDBuilder = null;
+    private JmsMessageIDBuilder.BUILTIN messageIDBuilderType = JmsMessageIDBuilder.BUILTIN.DEFAULT;
 
     /**
      * Initialize default Message ID builder policy
@@ -42,6 +43,7 @@ public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
      */
     public JmsDefaultMessageIDPolicy(JmsDefaultMessageIDPolicy source) {
         this.messageIDBuilder = source.messageIDBuilder;
+        this.messageIDBuilderType = source.messageIDBuilderType;
     }
 
     @Override
@@ -51,7 +53,7 @@ public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
 
     @Override
     public JmsMessageIDBuilder getMessageIDBuilder(JmsSession session, JmsDestination destination) {
-        return messageIDBuilder;
+        return getMessageIDBuilder();
     }
 
     /**
@@ -61,18 +63,22 @@ public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
      *      The name of the Message type to use when sending a message.
      */
     public void setMessageIDType(String type) {
-        this.messageIDBuilder = JmsMessageIDBuilder.BUILTIN.create(type);
+        this.messageIDBuilderType = JmsMessageIDBuilder.BUILTIN.validate(type);
     }
 
     /**
      * @return the type name of the configured JmsMessageIDBuilder.
      */
     public String getMessageIDType() {
-        return this.messageIDBuilder.toString();
+        return getMessageIDBuilder().toString();
     }
 
     public JmsMessageIDBuilder getMessageIDBuilder() {
-        return messageIDBuilder;
+        JmsMessageIDBuilder builder = this.messageIDBuilder;
+        if (builder == null) {
+            builder = messageIDBuilderType.createBuilder();
+        }
+        return builder;
     }
 
     public void setMessageIDBuilder(JmsMessageIDBuilder messageIDBuilder) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org