package org.argeo.api.uuid;
import java.util.UUID;
/**
* An object identified by a {@link UUID}. Typically used to fasten indexing and
* comparisons of objects or records. THe method to implement is {@link #uuid()}
* so that any record with an uuid
field can easily be enriched
* with this interface.
*/
public interface UuidIdentified {
/** The UUID identifier. */
UUID uuid();
/** The UUID identifier, for compatibility with beans accessors. */
default UUID getUuid() {
return uuid();
}
/**
* Helper to implement the equals method of an {@link UuidIdentified}.
*
*
* @Override * public boolean equals(Object o) { * return UuidIdentified.equals(this, o); * } **/ static boolean equals(UuidIdentified uuidIdentified, Object o) { assert uuidIdentified != null; if (o == null) return false; if (uuidIdentified == o) return true; if (o instanceof UuidIdentified u) return uuidIdentified.uuid().equals(u.uuid()); else return false; } /** * Helper to implement the hash code method of an {@link UuidIdentified}.
* @Override * public int hashCode() { * return UuidIdentified.hashCode(this); * } **/ static int hashCode(UuidIdentified uuidIdentified) { assert uuidIdentified != null; return uuidIdentified.getUuid().hashCode(); } }