org.acegisecurity.acl.basic.AclObjectIdentity Maven / Gradle / Ivy
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.acegisecurity.acl.basic;
import java.io.Serializable;
/**
* Interface representing the identity of an individual domain object instance.
*
*
* It should be noted that AclObjectIdentity
instances are created
* in various locations throughout the package. As
* AclObjectIdentity
s are used as the key for caching, it is
* essential that implementations provide methods so that object-equality
* rather than reference-equality can be relied upon by caches. In other
* words, a cache can consider two AclObjectIdentity
s equal if
* identity1.equals(identity2)
, rather than reference-equality of
* identity1==identity2
.
*
*
*
* In practical terms this means you must implement the standard
* java.lang.Object
methods shown below. Depending on your
* cache's internal structure, you may also need to implement special
* interfaces such as java.util.Comparator
or
* java.lang.Comparable
.
*
*
* @author Ben Alex
* @version $Id: AclObjectIdentity.java 1496 2006-05-23 13:38:33Z benalex $
*/
public interface AclObjectIdentity extends Serializable {
//~ Methods ========================================================================================================
/**
* Refer to the java.lang.Object
documentation for the interface contract.
*
* @param obj to be compared
*
* @return true
if the objects are equal, false
otherwise
*/
public boolean equals(Object obj);
/**
* Refer to the java.lang.Object
documentation for the interface contract.
*
* @return a hash code representation of this object
*/
public int hashCode();
}