Package org.eclipse.ecf.core.identity

# Class GUID

java.lang.Object
org.eclipse.ecf.core.identity.BaseID
org.eclipse.ecf.core.identity.StringID
org.eclipse.ecf.core.identity.GUID

All Implemented Interfaces:
  `Serializable`, `Comparable`, `Principal`, `org.eclipse.core.runtime.IAdaptable`, `ID`

public class GUID extends StringID
Globally unique ID implementation class. Uses `SecureRandom` to create a unique number of given byte length. Default byte length for secure number is 20 bytes. Default algorithm used for creating a SecureRandom instance is SHA1PRNG.

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`GUID.GUIDNamespace`

## Nested classes/interfaces inherited from class org.eclipse.ecf.core.identity.StringID

`StringID.StringIDNamespace`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DEFAULT_BYTE_LENGTH`
`protected static SecureRandom`
`random`
`static final String`
`SR_DEFAULT_ALGO`
`static final String`
`SR_DEFAULT_PROVIDER`

### Fields inherited from class org.eclipse.ecf.core.identity.StringID

`value`

### Fields inherited from class org.eclipse.ecf.core.identity.BaseID

`namespace`

## Constructor Summary

Constructors
Modifier
Constructor
Description
``
`GUID()`
`protected`
`GUID(Namespace n)`
`protected`
`GUID(Namespace n, int byteLength)`
`protected`
`GUID(Namespace n, String value)`
`protected`
`GUID(Namespace n, String algo, String provider, int byteLength)`
Protected constructor for factory-based construction

## Method Summary

Modifier and Type
Method
Description
`protected static SecureRandom`
`getRandom(String algo, String provider)`
Get SecureRandom instance for creation of random number.
`protected static void`
`initializeRandom(String algo, String provider)`
`String`
`toString()`

### Methods inherited from class org.eclipse.ecf.core.identity.StringID

`compareTo, equals, getName, getNamespace, hashCode, namespaceCompareTo, namespaceEquals, namespaceGetName, namespaceHashCode, setEmptyNamespace, toExternalForm`

### Methods inherited from class org.eclipse.ecf.core.identity.BaseID

`getAdapter, namespaceToExternalForm`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.security.Principal

`implies`

## Field Details

### SR_DEFAULT_ALGO

public static final String SR_DEFAULT_ALGO

### SR_DEFAULT_PROVIDER

public static final String SR_DEFAULT_PROVIDER

### DEFAULT_BYTE_LENGTH

public static final int DEFAULT_BYTE_LENGTH

See Also:
  - Constant Field Values

### random

protected static transient SecureRandom random

## Constructor Details

### GUID

public GUID()

Since:
  3.9

### GUID

protected GUID(Namespace n, String algo, String provider, int byteLength) throws IDCreateException
Protected constructor for factory-based construction

Parameters:
  `n` - the Namespace this identity will belong to
  `provider` - the name of the algorithm to use. See `SecureRandom`
  `byteLength` - the length of the target number (in bytes)
Throws:
  `IDCreateException`

### GUID

protected GUID(Namespace n, String value)

### GUID

protected GUID(Namespace n, int byteLength) throws IDCreateException

Throws:
  `IDCreateException`

### GUID

protected GUID(Namespace n) throws IDCreateException

Throws:
  `IDCreateException`

## Method Details

### getRandom

protected static SecureRandom getRandom(String algo, String provider) throws Exception
Get SecureRandom instance for creation of random number.

Parameters:
  `algo` - the String algorithm specification (e.g. "SHA1PRNG") for creation of the SecureRandom instance
  `provider` - the provider of the implementation of the given algorighm (e.g. "SUN")
Returns:
  SecureRandom
Throws:
  `Exception` - thrown if SecureRandom instance cannot be created/accessed

### initializeRandom

protected static void initializeRandom(String algo, String provider) throws Exception

Throws:
  `Exception`

### toString

public String toString()

Specified by:
  `toString` in interface `Principal`
Overrides:
  `toString` in class `StringID`