/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2009-2010 Sun Microsystems, Inc. */ package org.opends.sdk; import java.util.Collection; /** * An entry, comprising of a distinguished name and zero or more attributes. *
* Some methods require a schema in order to decode their parameters (e.g. * {@link #addAttribute(String, Object...)} and {@link #setName(String)}). In * these cases the default schema is used unless an alternative schema is * specified in the {@code Entry} constructor. The default schema is not used * for any other purpose. In particular, an {@code Entry} will permit attributes * to be added which have been decoded using multiple schemas. *
* Full LDAP modify semantics are provided via the {@link #addAttribute}, * {@link #removeAttribute}, and {@link #replaceAttribute} methods. *
* Implementations should specify any constraints or special behavior. * Specifically: *
* NOTE: When {@code attribute} is non-empty, this method implements * LDAP Modify add semantics. * * @param attribute * The attribute values to be added to this entry, merging with any * existing attribute values. * @return {@code true} if this entry changed as a result of this call. * @throws UnsupportedOperationException * If this entry does not permit attributes or their values to be * added. * @throws NullPointerException * If {@code attribute} was {@code null}. */ boolean addAttribute(Attribute attribute) throws UnsupportedOperationException, NullPointerException; /** * Ensures that this entry contains the provided attribute and values * (optional operation). This method has the following semantics: *
* NOTE: When {@code attribute} is non-empty, this method implements
* LDAP Modify add semantics.
*
* @param attribute
* The attribute values to be added to this entry, merging with any
* existing attribute values.
* @param duplicateValues
* A collection into which duplicate values will be added, or {@code
* null} if duplicate values should not be saved.
* @return {@code true} if this entry changed as a result of this call.
* @throws UnsupportedOperationException
* If this entry does not permit attributes or their values to be
* added.
* @throws NullPointerException
* If {@code attribute} was {@code null}.
*/
boolean addAttribute(Attribute attribute,
Collection
* The attribute description will be decoded using the schema associated with
* this entry (usually the default schema).
*
* Any attribute values which are not instances of {@code ByteString} will be
* converted using the {@link ByteString#valueOf(Object)} method.
*
* NOTE: When {@code attribute} is non-empty, this method implements
* LDAP Modify add semantics.
*
* @param attributeDescription
* The name of the attribute whose values are to be added.
* @param values
* The attribute values to be added to this entry, merging any
* existing attribute values.
* @return This entry.
* @throws LocalizedIllegalArgumentException
* If {@code attributeDescription} could not be decoded using the
* schema associated with this entry.
* @throws UnsupportedOperationException
* If this entry does not permit attributes or their values to be
* added.
* @throws NullPointerException
* If {@code attributeDescription} was {@code null}.
*/
Entry addAttribute(String attributeDescription, Object... values)
throws LocalizedIllegalArgumentException, UnsupportedOperationException,
NullPointerException;
/**
* Removes all the attributes from this entry (optional operation).
*
* @return This entry.
* @throws UnsupportedOperationException
* If this entry does not permit attributes to be removed.
*/
Entry clearAttributes() throws UnsupportedOperationException;
/**
* Returns {@code true} if this entry contains all of the attribute values
* contained in {@code attribute}. If {@code attribute} is empty then this
* method will return {@code true} if the attribute is present in this entry,
* regardless of how many values it contains.
*
* @param attribute
* The attribute values whose presence in this entry is to be tested.
* @param missingValues
* A collection into which missing values will be added, or {@code
* null} if missing values should not be saved.
* @return {@code true} if this entry contains all of the attribute values
* contained in {@code attribute}.
* @throws NullPointerException
* If {@code attribute} was {@code null}.
*/
boolean containsAttribute(Attribute attribute,
Collection
* The attribute description will be decoded using the schema associated with
* this entry (usually the default schema).
*
* Any attribute values which are not instances of {@code ByteString} will be
* converted using the {@link ByteString#valueOf(Object)} method.
*
* @param attributeDescription
* The name of the attribute whose presence in this entry is to be
* tested.
* @param values
* The attribute values whose presence in this entry is to be tested,
* which may be {@code null}.
* @return {@code true} if this entry contains all of the attribute values
* contained in {@code values}.
* @throws LocalizedIllegalArgumentException
* If {@code attributeDescription} could not be decoded using the
* schema associated with this entry.
* @throws NullPointerException
* If {@code attributeDescription} was {@code null}.
*/
boolean containsAttribute(String attributeDescription, Object... values)
throws LocalizedIllegalArgumentException, NullPointerException;
/**
* Returns {@code true} if {@code object} is an entry which is equal to this
* entry. Two entries are considered equal if their distinguished names are
* equal, they both have the same number of attributes, and every attribute
* contained in the first entry is also contained in the second entry.
*
* @param object
* The object to be tested for equality with this entry.
* @return {@code true} if {@code object} is an entry which is equal to this
* entry, or {@code false} if not.
*/
boolean equals(Object object);
/**
* Returns an {@code Iterable} containing all of the attributes in this entry.
* The returned {@code Iterable} may be used to remove attributes if permitted
* by this entry.
*
* @return An {@code Iterable} containing all of the attributes.
*/
Iterable
* The attribute description will be decoded using the schema associated with
* this entry (usually the default schema).
*
* @param attributeDescription
* The name of the attributes to be returned.
* @return An {@code Iterable} containing the matching attributes.
* @throws LocalizedIllegalArgumentException
* If {@code attributeDescription} could not be decoded using the
* schema associated with this entry.
* @throws NullPointerException
* If {@code attributeDescription} was {@code null}.
*/
Iterable
* The attribute description will be decoded using the schema associated with
* this entry (usually the default schema).
*
* @param attributeDescription
* The name of the attribute to be returned.
* @return The named attribute, or {@code null} if it is not included with
* this entry.
* @throws LocalizedIllegalArgumentException
* If {@code attributeDescription} could not be decoded using the
* schema associated with this entry.
* @throws NullPointerException
* If {@code attributeDescription} was {@code null}.
*/
Attribute getAttribute(String attributeDescription)
throws LocalizedIllegalArgumentException, NullPointerException;
/**
* Returns the number of attributes in this entry.
*
* @return The number of attributes.
*/
int getAttributeCount();
/**
* Returns the string representation of the distinguished name of this entry.
*
* @return The string representation of the distinguished name.
*/
DN getName();
/**
* Returns the hash code for this entry. It will be calculated as the sum of
* the hash codes of the distinguished name and all of the attributes.
*
* @return The hash code for this entry.
*/
int hashCode();
/**
* Removes all of the attribute values contained in {@code attribute} from
* this entry if it is present (optional operation). If {@code attribute} is
* empty then the entire attribute will be removed if it is present.
*
* NOTE: This method implements LDAP Modify delete semantics.
*
* @param attribute
* The attribute values to be removed from this entry, which may be
* empty if the entire attribute is to be removed.
* @param missingValues
* A collection into which missing values will be added, or {@code
* null} if missing values should not be saved.
* @return {@code true} if this entry changed as a result of this call.
* @throws UnsupportedOperationException
* If this entry does not permit attributes or their values to be
* removed.
* @throws NullPointerException
* If {@code attribute} was {@code null}.
*/
boolean removeAttribute(Attribute attribute,
Collection
* The attribute description will be decoded using the schema associated with
* this entry (usually the default schema).
*
* Any attribute values which are not instances of {@code ByteString} will be
* converted using the {@link ByteString#valueOf(Object)} method.
*
* NOTE: This method implements LDAP Modify delete semantics.
*
* @param attributeDescription
* The name of the attribute whose values are to be removed.
* @param values
* The attribute values to be removed from this entry, which may be
* {@code null} or empty if the entire attribute is to be removed.
* @return This entry.
* @throws LocalizedIllegalArgumentException
* If {@code attributeDescription} could not be decoded using the
* schema associated with this entry.
* @throws UnsupportedOperationException
* If this entry does not permit attributes or their values to be
* removed.
* @throws NullPointerException
* If {@code attributeDescription} was {@code null}.
*/
Entry removeAttribute(String attributeDescription, Object... values)
throws LocalizedIllegalArgumentException, UnsupportedOperationException,
NullPointerException;
/**
* Adds all of the attribute values contained in {@code attribute} to this
* entry, replacing any existing attribute values (optional operation). If
* {@code attribute} is empty then the entire attribute will be removed if it
* is present.
*
* NOTE: This method implements LDAP Modify replace semantics.
*
* @param attribute
* The attribute values to be added to this entry, replacing any
* existing attribute values, and which may be empty if the entire
* attribute is to be removed.
* @return {@code true} if this entry changed as a result of this call.
* @throws UnsupportedOperationException
* If this entry does not permit attributes or their values to be
* replaced.
* @throws NullPointerException
* If {@code attribute} was {@code null}.
*/
boolean replaceAttribute(Attribute attribute)
throws UnsupportedOperationException, NullPointerException;
/**
* Adds all of the attribute values contained in {@code values} to this entry,
* replacing any existing attribute values (optional operation). If {@code
* values} is {@code null} or empty then the entire attribute will be removed
* if it is present.
*
* The attribute description will be decoded using the schema associated with
* this entry (usually the default schema).
*
* Any attribute values which are not instances of {@code ByteString} will be
* converted using the {@link ByteString#valueOf(Object)} method.
*
* NOTE: This method implements LDAP Modify replace semantics.
*
* @param attributeDescription
* The name of the attribute whose values are to be replaced.
* @param values
* The attribute values to be added to this entry, replacing any
* existing attribute values, and which may be {@code null} or empty
* if the entire attribute is to be removed.
* @return This entry.
* @throws LocalizedIllegalArgumentException
* If {@code attributeDescription} could not be decoded using the
* schema associated with this entry.
* @throws UnsupportedOperationException
* If this entry does not permit attributes or their values to be
* replaced.
* @throws NullPointerException
* If {@code attribute} was {@code null}.
*/
Entry replaceAttribute(String attributeDescription, Object... values)
throws LocalizedIllegalArgumentException, UnsupportedOperationException,
NullPointerException;
/**
* Sets the distinguished name of this entry (optional operation).
*
* @param dn
* The distinguished name.
* @return This entry.
* @throws UnsupportedOperationException
* If this entry does not permit the distinguished name to be set.
* @throws NullPointerException
* If {@code dn} was {@code null}.
*/
Entry setName(DN dn) throws UnsupportedOperationException,
NullPointerException;
/**
* Sets the distinguished name of this entry (optional operation).
*
* The distinguished name will be decoded using the schema associated with
* this entry (usually the default schema).
*
* @param dn
* The string representation of the distinguished name.
* @return This entry.
* @throws LocalizedIllegalArgumentException
* If {@code dn} could not be decoded using the schema associated
* with this entry.
* @throws UnsupportedOperationException
* If this entry does not permit the distinguished name to be set.
* @throws NullPointerException
* If {@code dn} was {@code null}.
*/
Entry setName(String dn) throws LocalizedIllegalArgumentException,
UnsupportedOperationException, NullPointerException;
/**
* Returns a string representation of this entry.
*
* @return The string representation of this entry.
*/
String toString();
}
*
*