in src/org/apache/kandula/utility/EndpointReferenceFactory.java [118:153]
public static String getRandomStringOf18Characters() {
Random myRand = new Random();
long rand = myRand.nextLong();
String sid;
try {
sid = InetAddress.getLocalHost().toString();
} 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 {
md5 = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
// System.out.println("Error: " + e);
// todo heve to be properly handle
}
md5.update(sb.toString().getBytes());
byte[] array = md5.digest();
StringBuffer sb2 = new StringBuffer();
for (int j = 0; j < array.length; ++j) {
int b = array[j] & 0xFF;
sb2.append(Integer.toHexString(b));
}
int begin = myRand.nextInt();
if (begin < 0)
begin = begin * -1;
begin = begin % 8;
return new String(sb2.toString().substring(begin, begin + 18)).toUpperCase();
}