FileDocCategorySizeDatePackage
UniqueValue.javaAPI DocJavaMail 1.4.34459Tue Nov 17 10:38:12 GMT 2009javax.mail.internet

UniqueValue

public class UniqueValue extends Object
This is a utility class that generates unique values. The generated String contains only US-ASCII characters and hence is safe for use in RFC822 headers.

This is a package private class.

author
John Mani
author
Max Spivak
author
Bill Shannon

Fields Summary
private static int
id
A global unique number, to ensure uniqueness of generated strings.
Constructors Summary
Methods Summary
public static java.lang.StringgetUniqueBoundaryValue()
Get a unique value for use in a multipart boundary string. This implementation generates it by concatenating a global part number, a newly created object's hashCode(), and the current time (in milliseconds).


                                         
        
	StringBuffer s = new StringBuffer();

	// Unique string is ----=_Part_<part>_<hashcode>.<currentTime>
	s.append("----=_Part_").append(getUniqueId()).append("_").
	  append(s.hashCode()).append('.").
	  append(System.currentTimeMillis());
	return s.toString();
    
private static synchronized intgetUniqueId()
Ensure ID is unique by synchronizing access. XXX - Could use AtomicInteger.getAndIncrement() in J2SE 5.0.

	return id++;
    
public static java.lang.StringgetUniqueMessageIDValue(javax.mail.Session ssn)
Get a unique value for use in a Message-ID. This implementation generates it by concatenating a newly created object's hashCode(), a global ID (incremented on every use), the current time (in milliseconds), the string "JavaMail", and this user's local address generated by InternetAddress.getLocalAddress(). (The address defaults to "javamailuser@localhost" if getLocalAddress() returns null.)

param
ssn Session object used to get the local address
see
javax.mail.internet.InternetAddress

	String suffix = null;

	InternetAddress addr = InternetAddress.getLocalAddress(ssn);
	if (addr != null)
	    suffix = addr.getAddress();
	else {
	    suffix = "javamailuser@localhost"; // worst-case default
	}

	StringBuffer s = new StringBuffer();

	// Unique string is <hashcode>.<id>.<currentTime>.JavaMail.<suffix>
	s.append(s.hashCode()).append('.").append(getUniqueId()).append('.").
	  append(System.currentTimeMillis()).append('.").
	  append("JavaMail.").
	  append(suffix);
	return s.toString();