Repository: qpid-jms
Updated Branches:
  refs/heads/master e489ebad6 -> f4bffc584


QPIDJMS-142 Remove much of the legacy generation code and use a simple
UUID plus sequence value, reduces complexity and removes some locking +
startup delay.

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/f4bffc58
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/f4bffc58
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/f4bffc58

Branch: refs/heads/master
Commit: f4bffc584529d374d2b4a8e9ef74aab1f3ae2870
Parents: e489eba
Author: Timothy Bish <[email protected]>
Authored: Wed Dec 16 11:59:07 2015 -0500
Committer: Timothy Bish <[email protected]>
Committed: Wed Dec 16 11:59:07 2015 -0500

----------------------------------------------------------------------
 .../org/apache/qpid/jms/util/IdGenerator.java   | 185 +++++--------------
 .../qpid/jms/meta/JmsConnectionIdTest.java      |   4 +-
 .../qpid/jms/meta/JmsConnectionInfoTest.java    |   4 +-
 .../apache/qpid/jms/meta/JmsConsumerIdTest.java |   8 +-
 .../qpid/jms/meta/JmsConsumerInfoTest.java      |   6 +-
 .../apache/qpid/jms/meta/JmsProducerIdTest.java |   8 +-
 .../qpid/jms/meta/JmsProducerInfoTest.java      |   6 +-
 .../apache/qpid/jms/meta/JmsSessionIdTest.java  |  12 +-
 .../qpid/jms/meta/JmsSessionInfoTest.java       |   6 +-
 .../qpid/jms/meta/JmsTransactionIdTest.java     |  12 +-
 .../qpid/jms/meta/JmsTransactionInfoTest.java   |   3 +-
 .../apache/qpid/jms/util/IdGeneratorTest.java   |  88 +++------
 12 files changed, 103 insertions(+), 239 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/IdGenerator.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/IdGenerator.java 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/IdGenerator.java
index 28beb9f..b708d82 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/IdGenerator.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/IdGenerator.java
@@ -16,29 +16,27 @@
  */
 package org.apache.qpid.jms.util;
 
-import java.io.IOException;
-import java.net.ServerSocket;
+import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Generator for Globally unique Strings.
+ * Generator for Globally unique Strings used to identify resources within a 
given Connection.
  */
 public class IdGenerator {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(IdGenerator.class);
-    private static final String UNIQUE_STUB;
-    private static int instanceCount;
+
     private static String hostName;
-    private String seed;
+
+    private final String prefix;
     private final AtomicLong sequence = new AtomicLong(1);
-    private int length;
-    public static final String PROPERTY_IDGENERATOR_PORT = 
"activemq.idgenerator.port";
+
+    public static final String PROPERTY_IDGENERATOR_HOST_PREFIX = 
"qpidjms.idgenerator.hostPrefixEnabled";
 
     static {
-        String stub = "";
         boolean canAccessSystemProps = true;
         try {
             SecurityManager sm = System.getSecurityManager();
@@ -50,92 +48,70 @@ public class IdGenerator {
         }
 
         if (canAccessSystemProps) {
-            int idGeneratorPort = 0;
-            ServerSocket ss = null;
-            try {
-                idGeneratorPort = 
Integer.parseInt(System.getProperty(PROPERTY_IDGENERATOR_PORT, "0"));
-                LOG.trace("Using port {}", idGeneratorPort);
-                hostName = InetAddressUtil.getLocalHostName();
-                ss = new ServerSocket(idGeneratorPort);
-                stub = "-" + ss.getLocalPort() + "-" + 
System.currentTimeMillis() + "-";
-                Thread.sleep(100);
-            } catch (Exception e) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("could not generate unique stub by using DNS and 
binding to local port", e);
-                } else {
-                    LOG.warn("could not generate unique stub by using DNS and 
binding to local port: {} {}", e.getClass().getCanonicalName(), e.getMessage());
-                }
+            boolean addHostPrefix = 
Boolean.getBoolean(PROPERTY_IDGENERATOR_HOST_PREFIX);
+            if (addHostPrefix) {
+                try {
+                    LOG.trace("ID Generator attemtping to lookup host name 
prefix.");
+                    hostName = InetAddressUtil.getLocalHostName();
+                } catch (Exception e) {
+                    if (LOG.isTraceEnabled()) {
+                        LOG.trace("could not generate host name prefix from 
DNS lookup.", e);
+                    } else {
+                        LOG.warn("could not generate host name prefix from DNS 
lookup: {} {}", e.getClass().getCanonicalName(), e.getMessage());
+                    }
 
-                // Restore interrupted state so higher level code can deal 
with it.
-                if (e instanceof InterruptedException) {
-                    Thread.currentThread().interrupt();
-                }
-            } finally {
-                if (ss != null) {
-                    try {
-                        ss.close();
-                    } catch (IOException ioe) {
-                        if (LOG.isTraceEnabled()) {
-                            LOG.trace("Closing the server socket failed", ioe);
-                        } else {
-                            LOG.warn("Closing the server socket failed" + " 
due " + ioe.getMessage());
-                        }
+                    // Restore interrupted state so higher level code can deal 
with it.
+                    if (e instanceof InterruptedException) {
+                        Thread.currentThread().interrupt();
                     }
                 }
-            }
-        }
 
-        if (hostName == null) {
-            hostName = "localhost";
-        }
-        hostName = sanitizeHostName(hostName);
+                if (hostName == null) {
+                    hostName = "localhost";
+                }
 
-        if (stub.length() == 0) {
-            stub = "-1-" + System.currentTimeMillis() + "-";
+                hostName = sanitizeHostName(hostName);
+            }
         }
-        UNIQUE_STUB = stub;
     }
 
     /**
-     * Construct an IdGenerator
+     * Construct an IdGenerator using the given prefix value as the initial
+     * prefix entry for all Ids generated (default is 'ID:').
      *
      * @param prefix
      *      The prefix value that is applied to all generated IDs.
      */
     public IdGenerator(String prefix) {
-        synchronized (UNIQUE_STUB) {
-            this.seed = prefix + UNIQUE_STUB + (instanceCount++) + ":";
-            this.length = this.seed.length() + ("" + Long.MAX_VALUE).length();
-        }
-    }
-
-    public IdGenerator() {
-        this("ID:" + hostName);
+        this.prefix = prefix + (hostName != null ? hostName : "") + ":";
     }
 
     /**
-     * As we have to find the host name as a side-affect of generating a 
unique stub, we allow
-     * it's easy retrieval here
-     *
-     * @return the local host name
+     * Construct an IdGenerator using the default prefix value of 'ID:'
      */
-    public static String getHostName() {
-        return hostName;
+    public IdGenerator() {
+        this("ID:");
     }
 
     /**
-     * Generate a unique id
+     * Generate a unique id using the configured characteristics.
      *
-     * @return a unique id
+     * @return a newly generated unique id value.
      */
     public synchronized String generateId() {
-        StringBuilder sb = new StringBuilder(length);
-        sb.append(seed);
+        StringBuilder sb = new StringBuilder();
+
+        sb.append(prefix);
+        sb.append(UUID.randomUUID());
+        sb.append(":");
         sb.append(sequence.getAndIncrement());
+
         return sb.toString();
     }
 
-    public static String sanitizeHostName(String hostName) {
+    //----- Internal implementation 
------------------------------------------//
+
+    protected static String sanitizeHostName(String hostName) {
         boolean changed = false;
 
         StringBuilder sb = new StringBuilder();
@@ -156,79 +132,4 @@ public class IdGenerator {
             return hostName;
         }
     }
-
-    /**
-     * Generate a unique ID - that is friendly for a URL or file system
-     *
-     * @return a unique id
-     */
-    public String generateSanitizedId() {
-        String result = generateId();
-        result = result.replace(':', '-');
-        result = result.replace('_', '-');
-        result = result.replace('.', '-');
-        return result;
-    }
-
-    /**
-     * From a generated id - return the seed (i.e. minus the count)
-     *
-     * @param id
-     *        the generated identifier
-     * @return the seed
-     */
-    public static String getSeedFromId(String id) {
-        String result = id;
-        if (id != null) {
-            int index = id.lastIndexOf(':');
-            if (index > 0 && (index + 1) < id.length()) {
-                result = id.substring(0, index);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * From a generated id - return the generator count
-     *
-     * @param id
-     *      The ID that will be parsed for a sequence number.
-     *
-     * @return the sequence value parsed from the given ID.
-     */
-    public static long getSequenceFromId(String id) {
-        long result = -1;
-        if (id != null) {
-            int index = id.lastIndexOf(':');
-
-            if (index > 0 && (index + 1) < id.length()) {
-                String numStr = id.substring(index + 1, id.length());
-                result = Long.parseLong(numStr);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Does a proper compare on the Id's
-     *
-     * @param id1 the lhs of the comparison.
-     * @param id2 the rhs of the comparison.
-     *
-     * @return 0 if equal else a positive if {@literal id1 > id2} ...
-     */
-    public static int compare(String id1, String id2) {
-        int result = -1;
-        String seed1 = IdGenerator.getSeedFromId(id1);
-        String seed2 = IdGenerator.getSeedFromId(id2);
-        if (seed1 != null && seed2 != null) {
-            result = seed1.compareTo(seed2);
-            if (result == 0) {
-                long count1 = IdGenerator.getSequenceFromId(id1);
-                long count2 = IdGenerator.getSequenceFromId(id2);
-                result = (int) (count1 - count2);
-            }
-        }
-        return result;
-    }
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionIdTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionIdTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionIdTest.java
index 1cacc33..6087f4b 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionIdTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionIdTest.java
@@ -131,9 +131,7 @@ public class JmsConnectionIdTest {
         JmsConnectionId id1 = new JmsConnectionId(firstId);
         JmsConnectionId id2 = new JmsConnectionId(secondId);
 
-        assertEquals(-1, id1.compareTo(id2));
-        assertEquals(0, id1.compareTo(id1));
-        assertEquals(1, id2.compareTo(id1));
+        assertFalse(id1.compareTo(id2) == 0);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
index 091b138..ee65bf5 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConnectionInfoTest.java
@@ -97,9 +97,7 @@ public class JmsConnectionInfoTest {
         JmsConnectionInfo first = new JmsConnectionInfo(firstId);
         JmsConnectionInfo second = new JmsConnectionInfo(secondId);
 
-        assertEquals(-1, first.compareTo(second));
-        assertEquals(0, first.compareTo(first));
-        assertEquals(1, second.compareTo(first));
+        assertFalse(first.compareTo(second) == 0);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
index e27cea7..f154f7a 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
@@ -39,8 +39,10 @@ public class JmsConsumerIdTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstId = new JmsSessionId(generator.generateId(), 1);
-        secondId = new JmsSessionId(generator.generateId(), 2);
+        String rootId = generator.generateId();
+
+        firstId = new JmsSessionId(rootId, 1);
+        secondId = new JmsSessionId(rootId, 2);
     }
 
     @Test(expected=IllegalArgumentException.class)
@@ -145,7 +147,7 @@ public class JmsConsumerIdTest {
 
         assertFalse(id3.equals(id4));
         assertTrue(id3.equals(id5));
-        assertFalse(id3.equals(id6));
+        assertTrue(id3.equals(id6));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerInfoTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerInfoTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerInfoTest.java
index ec16d5b..47d481d 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerInfoTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerInfoTest.java
@@ -44,8 +44,10 @@ public class JmsConsumerInfoTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstSessionId = new JmsSessionId(generator.generateId(), 1);
-        secondSessionId = new JmsSessionId(generator.generateId(), 2);
+        String rootId = generator.generateId();
+
+        firstSessionId = new JmsSessionId(rootId, 1);
+        secondSessionId = new JmsSessionId(rootId, 2);
 
         firstId = new JmsConsumerId(firstSessionId, 1);
         secondId = new JmsConsumerId(secondSessionId, 2);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
index 0bab725..8755aad 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
@@ -39,8 +39,10 @@ public class JmsProducerIdTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstId = new JmsSessionId(generator.generateId(), 1);
-        secondId = new JmsSessionId(generator.generateId(), 2);
+        String rootId = generator.generateId();
+
+        firstId = new JmsSessionId(rootId, 1);
+        secondId = new JmsSessionId(rootId, 2);
     }
 
     @Test(expected=IllegalArgumentException.class)
@@ -141,7 +143,7 @@ public class JmsProducerIdTest {
         JmsProducerId id3 = new JmsProducerId(firstId, 1);
         JmsProducerId id4 = new JmsProducerId(firstId, 2);
         JmsProducerId id5 = new JmsProducerId(firstId, 1);
-        JmsProducerId id6 = new JmsProducerId(secondId.getConnectionId(), 1, 
1);
+        JmsProducerId id6 = new JmsProducerId(secondId.getConnectionId(), 1, 
3);
 
         assertFalse(id3.equals(id4));
         assertTrue(id3.equals(id5));

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerInfoTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerInfoTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerInfoTest.java
index 7215318..10d9229 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerInfoTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerInfoTest.java
@@ -44,8 +44,10 @@ public class JmsProducerInfoTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstSessionId = new JmsSessionId(generator.generateId(), 1);
-        secondSessionId = new JmsSessionId(generator.generateId(), 2);
+        String rootId = generator.generateId();
+
+        firstSessionId = new JmsSessionId(rootId, 1);
+        secondSessionId = new JmsSessionId(rootId, 2);
 
         firstId = new JmsProducerId(firstSessionId, 1);
         secondId = new JmsProducerId(secondSessionId, 2);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
index fa0c0dd..9116985 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
@@ -39,8 +39,10 @@ public class JmsSessionIdTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstId = new JmsConnectionId(generator.generateId());
-        secondId = new JmsConnectionId(generator.generateId());
+        String rootId = generator.generateId();
+
+        firstId = new JmsConnectionId(rootId);
+        secondId = new JmsConnectionId(rootId);
     }
 
     @Test(expected=IllegalArgumentException.class)
@@ -122,7 +124,7 @@ public class JmsSessionIdTest {
     @Test
     public void testCompareTo() {
         JmsSessionId id1 = new JmsSessionId(firstId, 1);
-        JmsSessionId id2 = new JmsSessionId(secondId, 1);
+        JmsSessionId id2 = new JmsSessionId(secondId, 2);
 
         assertEquals(-1, id1.compareTo(id2));
         assertEquals(0, id1.compareTo(id1));
@@ -132,7 +134,7 @@ public class JmsSessionIdTest {
     @Test
     public void testEquals() {
         JmsSessionId id1 = new JmsSessionId(firstId, 1);
-        JmsSessionId id2 = new JmsSessionId(secondId, 1);
+        JmsSessionId id2 = new JmsSessionId(secondId, 2);
 
         assertTrue(id1.equals(id1));
         assertTrue(id2.equals(id2));
@@ -153,7 +155,7 @@ public class JmsSessionIdTest {
     @Test
     public void testHashCode() {
         JmsSessionId id1 = new JmsSessionId(firstId, 1);
-        JmsSessionId id2 = new JmsSessionId(secondId, 1);
+        JmsSessionId id2 = new JmsSessionId(secondId, 2);
 
         assertEquals(id1.hashCode(), id1.hashCode());
         assertEquals(id2.hashCode(), id2.hashCode());

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionInfoTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionInfoTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionInfoTest.java
index 222f101..e6deecc 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionInfoTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionInfoTest.java
@@ -44,8 +44,10 @@ public class JmsSessionInfoTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstId = new JmsSessionId(generator.generateId(), 1);
-        secondId = new JmsSessionId(generator.generateId(), 2);
+        String rootId = generator.generateId();
+
+        firstId = new JmsSessionId(rootId, 1);
+        secondId = new JmsSessionId(rootId, 2);
 
         JmsConnectionId connectionId = new 
JmsConnectionId(generator.generateId());
         connectionInfo = new JmsConnectionInfo(connectionId);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionIdTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionIdTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionIdTest.java
index cdf62b5..f279224 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionIdTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionIdTest.java
@@ -38,8 +38,10 @@ public class JmsTransactionIdTest {
     public void setUp() {
         IdGenerator generator = new IdGenerator();
 
-        firstId = new JmsConnectionId(generator.generateId());
-        secondId = new JmsConnectionId(generator.generateId());
+        String rootId = generator.generateId();
+
+        firstId = new JmsConnectionId(rootId);
+        secondId = new JmsConnectionId(rootId);
     }
 
     @Test(expected=IllegalArgumentException.class)
@@ -66,7 +68,7 @@ public class JmsTransactionIdTest {
     @Test
     public void testCompareTo() {
         JmsTransactionId id1 = new JmsTransactionId(firstId, 1);
-        JmsTransactionId id2 = new JmsTransactionId(secondId, 1);
+        JmsTransactionId id2 = new JmsTransactionId(secondId, 2);
 
         assertEquals(-1, id1.compareTo(id2));
         assertEquals(0, id1.compareTo(id1));
@@ -76,7 +78,7 @@ public class JmsTransactionIdTest {
     @Test
     public void testEquals() {
         JmsTransactionId id1 = new JmsTransactionId(firstId, 1);
-        JmsTransactionId id2 = new JmsTransactionId(secondId, 1);
+        JmsTransactionId id2 = new JmsTransactionId(secondId, 2);
 
         assertTrue(id1.equals(id1));
         assertTrue(id2.equals(id2));
@@ -97,7 +99,7 @@ public class JmsTransactionIdTest {
     @Test
     public void testHashCode() {
         JmsTransactionId id1 = new JmsTransactionId(firstId, 1);
-        JmsTransactionId id2 = new JmsTransactionId(secondId, 1);
+        JmsTransactionId id2 = new JmsTransactionId(secondId, 2);
 
         assertEquals(id1.hashCode(), id1.hashCode());
         assertEquals(id2.hashCode(), id2.hashCode());

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionInfoTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionInfoTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionInfoTest.java
index 4ac7d55..b5dc092 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionInfoTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsTransactionInfoTest.java
@@ -87,9 +87,8 @@ public class JmsTransactionInfoTest {
         JmsTransactionInfo first = new JmsTransactionInfo(firstSessionId, 
firstTxId);
         JmsTransactionInfo second = new JmsTransactionInfo(secondSessionId, 
secondTxId);
 
-        assertEquals(-1, first.compareTo(second));
         assertEquals(0, first.compareTo(first));
-        assertEquals(1, second.compareTo(first));
+        assertFalse(second.compareTo(first) == 0);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/f4bffc58/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/IdGeneratorTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/IdGeneratorTest.java 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/IdGeneratorTest.java
index 21fd110..de56d0e 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/IdGeneratorTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/IdGeneratorTest.java
@@ -17,9 +17,9 @@
 package org.apache.qpid.jms.util;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -41,74 +41,28 @@ public class IdGeneratorTest {
     }
 
     @Test
-    public void testGetHostName() {
-        assertNotNull(IdGenerator.getHostName());
-    }
-
-    @Test
-    public void testGenerateSanitizedId() {
-        IdGenerator generator = new IdGenerator("A:B.C");
-        assertNotNull(generator.generateSanitizedId());
-        String newId = generator.generateSanitizedId();
-        assertFalse(newId.contains(":"));
-        assertFalse(newId.contains("."));
-    }
+    public void testIdIndexIncrements() throws Exception {
 
-    @Test
-    public void testGetSequenceFromId() {
-        assertNotNull(IdGenerator.getSequenceFromId(generator.generateId()));
-    }
+        final int COUNT = 5;
 
-    @Test
-    public void testGetSequenceFromNullId() {
-        assertEquals(-1, IdGenerator.getSequenceFromId(null));
-    }
-
-    @Test
-    public void testGetSequenceFromNonConformingId() {
-        assertEquals(-1, IdGenerator.getSequenceFromId("SomeIdValue"));
-    }
-
-    @Test
-    public void testGetSequenceFromNonConformingId2() {
-        assertEquals(-1, IdGenerator.getSequenceFromId("SomeIdValue:"));
-    }
-
-    @Test
-    public void testGetSeedFromId() {
-        assertNotNull(IdGenerator.getSeedFromId(generator.generateId()));
-    }
-
-    @Test
-    public void testGetSeedFromNullId() {
-        assertNull(IdGenerator.getSeedFromId(null));
-    }
-
-    @Test
-    public void testGetSeedFromNonConformingId() {
-        assertEquals("SomeIdValue", IdGenerator.getSeedFromId("SomeIdValue"));
-    }
-
-    @Test
-    public void testGetSeedFromNonConformingId2() {
-        assertEquals("SomeIdValue:", 
IdGenerator.getSeedFromId("SomeIdValue:"));
-    }
-
-    @Test
-    public void testCompareIds() {
-        IdGenerator gen = new IdGenerator();
+        ArrayList<String> ids = new ArrayList<String>(COUNT);
+        ArrayList<Integer> sequences = new ArrayList<Integer>();
 
-        String id1 = generator.generateId();
-        String id2 = generator.generateId();
-        String id3 = generator.generateId();
+        for (int i = 0; i < COUNT; ++i) {
+            ids.add(generator.generateId());
+        }
 
-        assertEquals(0, IdGenerator.compare(id1, id1));
-        assertEquals(1, IdGenerator.compare(id2, id1));
-        assertEquals(-1, IdGenerator.compare(id2, id3));
-        assertEquals(-1, IdGenerator.compare(id2, null));
-        assertEquals(-1, IdGenerator.compare(null, id3));
+        for (String id : ids) {
+            String[] components = id.split(":");
+            sequences.add(Integer.parseInt(components[components.length - 1]));
+        }
 
-        String idg1 = gen.generateId();
-        assertEquals(1, IdGenerator.compare(idg1, id3));
+        Integer lastValue = null;
+        for (Integer sequence : sequences) {
+            if (lastValue != null) {
+                assertTrue(sequence > lastValue);
+            }
+            lastValue = sequence;
+        }
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to