Package org.springframework.security.acls.domain

# Class ObjectIdentityImpl

java.lang.Object
org.springframework.security.acls.domain.ObjectIdentityImpl

All Implemented Interfaces:
  `Serializable`, `ObjectIdentity`

public class ObjectIdentityImpl extends Object implements ObjectIdentity
Simple implementation of `ObjectIdentity`.

Uses `String`s to store the identity of the domain object instance. Also offers a constructor that uses reflection to build the identity information.

See Also:
  - Serialized Form

## Constructor Summary

Constructors
Constructor
Description
`ObjectIdentityImpl(Class<?> javaType, Serializable identifier)`
Constructor which uses the name of the supplied class as the `type` property.
`ObjectIdentityImpl(Object object)`
Creates the `ObjectIdentityImpl` based on the passed object instance.
`ObjectIdentityImpl(String type, Serializable identifier)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(Object obj)`
Important so caching operates properly.
`Serializable`
`getIdentifier()`
Obtains the actual identifier.
`String`
`getType()`
Obtains the "type" metadata for the domain object.
`int`
`hashCode()`
Important so caching operates properly.
`String`
`toString()`

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

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

## Constructor Details

### ObjectIdentityImpl

public ObjectIdentityImpl(String type, Serializable identifier)

### ObjectIdentityImpl

public ObjectIdentityImpl(Class<?> javaType, Serializable identifier)
Constructor which uses the name of the supplied class as the `type` property.

### ObjectIdentityImpl

public ObjectIdentityImpl(Object object) throws IdentityUnavailableException
Creates the `ObjectIdentityImpl` based on the passed object instance. The passed object must provide a `getId()` method, otherwise an exception will be thrown.

The class name of the object passed will be considered the `type`, so if more control is required, a different constructor should be used.

Parameters:
  `object` - the domain object instance to create an identity for.
Throws:
  `IdentityUnavailableException` - if identity could not be extracted

## Method Details

### equals

public boolean equals(Object obj)
Important so caching operates properly.

Considers an object of the same class equal if it has the same `classname` and `id` properties.

Numeric identities (Integer and Long values) are considered equal if they are numerically equal. Other serializable types are evaluated using a simple equality.

Specified by:
  `equals` in interface `ObjectIdentity`
Overrides:
  `equals` in class `Object`
Parameters:
  `obj` - object to compare
Returns:
  `true` if the presented object matches this object
See Also:
  - `Object.equals(Object)`

### getIdentifier

public Serializable getIdentifier()
Description copied from interface: `ObjectIdentity`
Obtains the actual identifier. This identifier must not be reused to represent other domain objects with the same `javaType`.

Because ACLs are largely immutable, it is strongly recommended to use a synthetic identifier (such as a database sequence number for the primary key). Do not use an identifier with business meaning, as that business meaning may change in the future such change will cascade to the ACL subsystem data.

Specified by:
  `getIdentifier` in interface `ObjectIdentity`
Returns:
  the identifier (unique within this `type`; never `null`)

### getType

public String getType()
Description copied from interface: `ObjectIdentity`
Obtains the "type" metadata for the domain object. This will often be a Java type name (an interface or a class) – traditionally it is the name of the domain object implementation class.

Specified by:
  `getType` in interface `ObjectIdentity`
Returns:
  the "type" of the domain object (never `null`).

### hashCode

public int hashCode()
Important so caching operates properly.

Specified by:
  `hashCode` in interface `ObjectIdentity`
Overrides:
  `hashCode` in class `Object`
Returns:
  the hash
See Also:
  - `Object.hashCode()`

### toString

public String toString()

Overrides:
  `toString` in class `Object`