You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2005/10/16 18:28:37 UTC
svn commit: r322489 -
/webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/UUIDGenerator.java
Author: chinthaka
Date: Sun Oct 16 09:28:03 2005
New Revision: 322489
URL: http://svn.apache.org/viewcvs?rev=322489&view=rev
Log:
Resolving Axis2-282. Now all the complication stuff happens only once in getting a UUID. Refer the comment in the above JIRA for more info.
Modified:
webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/UUIDGenerator.java
Modified: webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/UUIDGenerator.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/UUIDGenerator.java?rev=322489&r1=322488&r2=322489&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/UUIDGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/UUIDGenerator.java Sun Oct 16 09:28:03 2005
@@ -21,20 +21,36 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
+import java.util.Date;
public class UUIDGenerator {
/**
* This class will give UUIDs for axis2.
*/
+ private static String baseUUID = null;
+ private static long incrementingValue = 0;
+
+
private static Random myRand = null;
/**
* MD5 a random string with localhost/date etc will return 128 bits
* construct a string of 18 characters from those bits.
+ *
* @return string
*/
public static String getUUID() {
+ if (baseUUID == null) {
+ baseUUID = getInitialUUID();
+ }
+ if(++incrementingValue >= Long.MAX_VALUE){
+ incrementingValue = 0;
+ }
+ return baseUUID + incrementingValue;
+ }
+
+ protected static String getInitialUUID() {
if (myRand == null) {
myRand = new Random();
}
@@ -45,12 +61,9 @@
} catch (UnknownHostException e) {
sid = Thread.currentThread().getName();
}
- long time = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
sb.append(sid);
sb.append(":");
- sb.append(Long.toString(time));
- sb.append(":");
sb.append(Long.toString(rand));
MessageDigest md5 = null;
try {
@@ -67,8 +80,24 @@
sb2.append(Integer.toHexString(b));
}
int begin = myRand.nextInt();
- if(begin < 0) begin = begin * -1;
+ if (begin < 0) begin = begin * -1;
begin = begin % 8;
- return new String(sb2.toString().substring(begin, begin + 18)).toUpperCase();
+ return sb2.toString().substring(begin, begin + 18).toUpperCase();
+ }
+
+ public static void main(String[] args) {
+ long startTime = new Date().getTime();
+ for (int i = 0; i < 100000; i++) {
+ UUIDGenerator.getInitialUUID();
+ }
+ long endTime = new Date().getTime();
+ System.out.println("getInitialUUID Difference = " + (endTime - startTime));
+
+ startTime = new Date().getTime();
+ for (int i = 0; i < 100000; i++) {
+ UUIDGenerator.getUUID();
+ }
+ endTime = new Date().getTime();
+ System.out.println("getUUID Difference = " + (endTime - startTime));
}
}