mirror of https://github.com/apache/activemq.git
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1000651 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0ff144f7f4
commit
54bce47a81
|
@ -18,6 +18,7 @@ package org.apache.activemq.util;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
@ -33,7 +34,8 @@ public class IdGenerator {
|
||||||
private static int instanceCount;
|
private static int instanceCount;
|
||||||
private static String hostName;
|
private static String hostName;
|
||||||
private String seed;
|
private String seed;
|
||||||
private long sequence;
|
private AtomicLong sequence = new AtomicLong(1);
|
||||||
|
private int length;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
String stub = "";
|
String stub = "";
|
||||||
|
@ -70,6 +72,7 @@ public class IdGenerator {
|
||||||
public IdGenerator(String prefix) {
|
public IdGenerator(String prefix) {
|
||||||
synchronized (UNIQUE_STUB) {
|
synchronized (UNIQUE_STUB) {
|
||||||
this.seed = prefix + UNIQUE_STUB + (instanceCount++) + ":";
|
this.seed = prefix + UNIQUE_STUB + (instanceCount++) + ":";
|
||||||
|
this.length = this.seed.length() + ("" + Long.MAX_VALUE).length();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +83,7 @@ public class IdGenerator {
|
||||||
/**
|
/**
|
||||||
* As we have to find the hostname as a side-affect of generating a unique
|
* As we have to find the hostname as a side-affect of generating a unique
|
||||||
* stub, we allow it's easy retrevial here
|
* stub, we allow it's easy retrevial here
|
||||||
*
|
*
|
||||||
* @return the local host name
|
* @return the local host name
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -91,17 +94,20 @@ public class IdGenerator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a unqiue id
|
* Generate a unqiue id
|
||||||
*
|
*
|
||||||
* @return a unique id
|
* @return a unique id
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public synchronized String generateId() {
|
public synchronized String generateId() {
|
||||||
return this.seed + (this.sequence++);
|
StringBuilder sb = new StringBuilder(length);
|
||||||
|
sb.append(seed);
|
||||||
|
sb.append(sequence.getAndIncrement());
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a unique ID - that is friendly for a URL or file system
|
* Generate a unique ID - that is friendly for a URL or file system
|
||||||
*
|
*
|
||||||
* @return a unique id
|
* @return a unique id
|
||||||
*/
|
*/
|
||||||
public String generateSanitizedId() {
|
public String generateSanitizedId() {
|
||||||
|
@ -114,7 +120,7 @@ public class IdGenerator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* From a generated id - return the seed (i.e. minus the count)
|
* From a generated id - return the seed (i.e. minus the count)
|
||||||
*
|
*
|
||||||
* @param id the generated identifer
|
* @param id the generated identifer
|
||||||
* @return the seed
|
* @return the seed
|
||||||
*/
|
*/
|
||||||
|
@ -131,7 +137,7 @@ public class IdGenerator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* From a generated id - return the generator count
|
* From a generated id - return the generator count
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id
|
||||||
* @return the count
|
* @return the count
|
||||||
*/
|
*/
|
||||||
|
@ -150,7 +156,7 @@ public class IdGenerator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does a proper compare on the ids
|
* Does a proper compare on the ids
|
||||||
*
|
*
|
||||||
* @param id1
|
* @param id1
|
||||||
* @param id2
|
* @param id2
|
||||||
* @return 0 if equal else a positive if id1 is > id2 ...
|
* @return 0 if equal else a positive if id1 is > id2 ...
|
||||||
|
|
Loading…
Reference in New Issue