Package org.ldaptive
Class LdapEntry
- java.lang.Object
-
- org.ldaptive.AbstractMessage
-
- org.ldaptive.LdapEntry
-
public class LdapEntry extends AbstractMessage implements Freezable
LDAP search result entry defined as:SearchResultEntry ::= [APPLICATION 4] SEQUENCE { objectName LDAPDN, attributes PartialAttributeList } PartialAttributeList ::= SEQUENCE OF partialAttribute PartialAttribute PartialAttribute ::= SEQUENCE { type AttributeDescription, vals SET OF value AttributeValue }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
LdapEntry.AttributeParser
Parses a buffer containing an attribute name and its values.protected static class
LdapEntry.AttributesHandler
Parse handler implementation for the attributes.static class
LdapEntry.Builder
protected static class
LdapEntry.LdapDnHandler
Parse handler implementation for the LDAP DN.-
Nested classes/interfaces inherited from class org.ldaptive.AbstractMessage
AbstractMessage.AbstractBuilder<B,T extends AbstractMessage>, AbstractMessage.ControlParser, AbstractMessage.ControlsHandler, AbstractMessage.MessageIDHandler
-
-
Field Summary
Fields Modifier and Type Field Description private Map<String,LdapAttribute>
attributes
LDAP attributes on the entry.private static DERPath
ATTRIBUTES_PATH
DER path to attributes.private static int
HASH_CODE_SEED
hash code seed.private boolean
immutable
Whether this object has been marked immutable.private static DERPath
LDAP_DN_PATH
DER path to LDAP DN.private String
ldapDn
LDAP DN of the entry.private String
normalizedDn
Normalized LDAP DN.private Dn
parsedDn
Parsed LDAP DN.static int
PROTOCOL_OP
BER protocol number.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAttributes(Collection<LdapAttribute> attrs)
Adds attributes to the entry.void
addAttributes(LdapAttribute... attrs)
Adds attributes to the entry.void
assertMutable()
Asserts that this object is in a state to permit mutations.static LdapEntry.Builder
builder()
Creates a builder for this class.void
clear()
Removes all the attributes from this entry.static AttributeModification[]
computeModifications(LdapEntry source, LdapEntry target)
Returns the list of attribute modifications needed to change the supplied target entry into the supplied source entry.static AttributeModification[]
computeModifications(LdapEntry source, LdapEntry target, boolean useReplace)
Returns the list of attribute modifications needed to change the supplied target entry into the supplied source entry.static LdapEntry
copy(LdapEntry entry)
Creates a mutable copy of the supplied entry.boolean
equals(Object o)
void
freeze()
Freezes this object, making it immutable.LdapAttribute
getAttribute()
Returns a single attribute of this entry.LdapAttribute
getAttribute(String name)
Returns the attribute with the supplied name.byte[]
getAttributeBinaryValue(String name)
Provides a null safe invocation ofLdapAttribute.getBinaryValue()
.Collection<byte[]>
getAttributeBinaryValues(String name)
Provides a null safe invocation ofLdapAttribute.getBinaryValues()
.String[]
getAttributeNames()
Returns the attribute names in this entry.Collection<LdapAttribute>
getAttributes()
Returns the ldap attributes in this entry.String
getAttributeStringValue(String name)
Provides a null safe invocation ofLdapAttribute.getStringValue()
.Collection<String>
getAttributeStringValues(String name)
Provides a null safe invocation ofLdapAttribute.getStringValues()
.String
getDn()
Returns the ldap DN.String
getNormalizedDn()
Returns the normalized ldap DN.Dn
getParsedDn()
Returns the parsed ldap DN.boolean
hasAttribute(String name)
Returns whether this entry contains an attribute with the supplied name.boolean
hasAttributeValue(String name, byte[] value)
Provides a null safe invocation ofLdapAttribute.hasValue(byte[])
.boolean
hasAttributeValue(String name, String value)
Provides a null safe invocation ofLdapAttribute.hasValue(String)
.int
hashCode()
Returns the hash code for this object.boolean
isFrozen()
Determines whether this object is frozen, i.e. immutable.<T> T
mapAttribute(String name, Function<LdapAttribute,T> func)
Returns a mapped value from an attribute using the supplied function or null if the attribute doesn't exist.<T> T
mapAttribute(String name, Function<LdapAttribute,T> func, T defaultValue)
Returns a mapped value from an attribute using the supplied function or defaultValue if the attribute doesn't exist.void
mergeAttributes(Collection<LdapAttribute> attrs)
Merges attributes into this entry.void
mergeAttributes(LdapAttribute... attrs)
Merges attributes into this entry.boolean
processAttribute(String name, Consumer<LdapAttribute> func)
Processes an attribute using the supplied consumer.void
removeAttribute(String name)
Removes the attribute with the supplied name.void
removeAttributes(Collection<LdapAttribute> attrs)
Removes the attribute(s) from this ldap attributes.void
removeAttributes(LdapAttribute... attrs)
Removes an attribute from this ldap attributes.void
setDn(String dn)
Sets the ldap DN.int
size()
Returns the number of attributes.static LdapEntry
sort(LdapEntry le)
Returns a new entry whose attributes are sorted naturally by name without options.String
toString()
-
Methods inherited from class org.ldaptive.AbstractMessage
addControls, copyValues, equalsMessage, getControls, getMessageID, setMessageID
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.ldaptive.Message
getControl
-
-
-
-
Field Detail
-
PROTOCOL_OP
public static final int PROTOCOL_OP
BER protocol number.- See Also:
- Constant Field Values
-
HASH_CODE_SEED
private static final int HASH_CODE_SEED
hash code seed.- See Also:
- Constant Field Values
-
LDAP_DN_PATH
private static final DERPath LDAP_DN_PATH
DER path to LDAP DN.
-
ATTRIBUTES_PATH
private static final DERPath ATTRIBUTES_PATH
DER path to attributes.
-
attributes
private final Map<String,LdapAttribute> attributes
LDAP attributes on the entry.
-
ldapDn
private String ldapDn
LDAP DN of the entry.
-
parsedDn
private Dn parsedDn
Parsed LDAP DN.
-
normalizedDn
private String normalizedDn
Normalized LDAP DN.
-
immutable
private volatile boolean immutable
Whether this object has been marked immutable.
-
-
Constructor Detail
-
LdapEntry
public LdapEntry()
Default constructor.
-
LdapEntry
public LdapEntry(DERBuffer buffer)
Creates a new search result entry.- Parameters:
buffer
- to decode
-
-
Method Detail
-
freeze
public void freeze()
Description copied from interface:Freezable
Freezes this object, making it immutable.
-
isFrozen
public final boolean isFrozen()
Description copied from interface:Freezable
Determines whether this object is frozen, i.e. immutable.- Specified by:
isFrozen
in interfaceFreezable
- Returns:
- True if
Freezable.freeze()
has been invoked, false otherwise.
-
assertMutable
public final void assertMutable()
Description copied from interface:Freezable
Asserts that this object is in a state to permit mutations. Classes that implement this interface should invoke this method prior to performing any mutation of internal state as a means of implementing the "frozen" usage contract.- Specified by:
assertMutable
in interfaceFreezable
-
getDn
public final String getDn()
Returns the ldap DN.- Returns:
- ldap DN
-
getParsedDn
public final Dn getParsedDn()
Returns the parsed ldap DN. Parsing is performed usingDefaultDnParser
.- Returns:
- parsed ldap DN or null if
ldapDn
is null or could not be parsed
-
getNormalizedDn
public final String getNormalizedDn()
Returns the normalized ldap DN. Normalization is performed usingDefaultRDnNormalizer
.- Returns:
- normalized ldap DN or null if
ldapDn
is null or could not be parsed
-
setDn
public final void setDn(String dn)
Sets the ldap DN.- Parameters:
dn
- ldap DN
-
hasAttribute
public boolean hasAttribute(String name)
Returns whether this entry contains an attribute with the supplied name.- Parameters:
name
- of the attribute to match- Returns:
- whether this entry contains an attribute with the supplied name
-
hasAttributeValue
public boolean hasAttributeValue(String name, byte[] value)
Provides a null safe invocation ofLdapAttribute.hasValue(byte[])
.- Parameters:
name
- of the attribute containing a valuevalue
- to find- Returns:
- whether value exists in the attribute with the supplied name
-
hasAttributeValue
public boolean hasAttributeValue(String name, String value)
Provides a null safe invocation ofLdapAttribute.hasValue(String)
.- Parameters:
name
- of the attribute containing a valuevalue
- to find- Returns:
- whether value exists in the attribute with the supplied name
-
getAttributes
public Collection<LdapAttribute> getAttributes()
Returns the ldap attributes in this entry. Collection will be immutable ifimmutable
is true.- Returns:
- ldap attributes
-
getAttribute
public LdapAttribute getAttribute()
Returns a single attribute of this entry. If multiple attributes exist the first attribute returned by the underlying iterator is used. If no attributes exist null is returned.- Returns:
- single attribute
-
getAttribute
public LdapAttribute getAttribute(String name)
Returns the attribute with the supplied name.- Parameters:
name
- of the attribute to return- Returns:
- ldap attribute or null if the attribute does not exist
-
getAttributeBinaryValue
public byte[] getAttributeBinaryValue(String name)
Provides a null safe invocation ofLdapAttribute.getBinaryValue()
.- Parameters:
name
- of the attribute whose values should be returned- Returns:
- single byte array attribute value or null if the attribute does not exist
-
getAttributeBinaryValues
public Collection<byte[]> getAttributeBinaryValues(String name)
Provides a null safe invocation ofLdapAttribute.getBinaryValues()
.- Parameters:
name
- of the attribute whose values should be returned- Returns:
- collection of byte array attribute values or an empty collection if the attribute does not exist
-
getAttributeStringValue
public String getAttributeStringValue(String name)
Provides a null safe invocation ofLdapAttribute.getStringValue()
.- Parameters:
name
- of the attribute whose values should be returned- Returns:
- single string attribute value or null if the attribute does not exist
-
getAttributeStringValues
public Collection<String> getAttributeStringValues(String name)
Provides a null safe invocation ofLdapAttribute.getStringValues()
.- Parameters:
name
- of the attribute whose values should be returned- Returns:
- collection of string attribute values or an empty collection if the attribute does not exist
-
processAttribute
public boolean processAttribute(String name, Consumer<LdapAttribute> func)
Processes an attribute using the supplied consumer. The consumer is invoked only if the attribute exists.- Parameters:
name
- of the attributefunc
- to process the attribute if it exists- Returns:
- whether the consumer was invoked
-
mapAttribute
public <T> T mapAttribute(String name, Function<LdapAttribute,T> func)
Returns a mapped value from an attribute using the supplied function or null if the attribute doesn't exist.- Type Parameters:
T
- type of mapped value- Parameters:
name
- of the attributefunc
- to map the attribute with- Returns:
- mapped ldap attribute
-
mapAttribute
public <T> T mapAttribute(String name, Function<LdapAttribute,T> func, T defaultValue)
Returns a mapped value from an attribute using the supplied function or defaultValue if the attribute doesn't exist.- Type Parameters:
T
- type of mapped value- Parameters:
name
- of the attributefunc
- to map the attribute withdefaultValue
- to return if no attribute with name exists- Returns:
- mapped ldap attribute
-
getAttributeNames
public String[] getAttributeNames()
Returns the attribute names in this entry.- Returns:
- string array of attribute names
-
addAttributes
public void addAttributes(LdapAttribute... attrs)
Adds attributes to the entry. If an attribute with the same name already exists, it is replaced.- Parameters:
attrs
- attributes to add
-
addAttributes
public void addAttributes(Collection<LdapAttribute> attrs)
Adds attributes to the entry. If an attribute with the same name already exists, it is replaced.- Parameters:
attrs
- attributes to add
-
mergeAttributes
public void mergeAttributes(LdapAttribute... attrs)
Merges attributes into this entry. If an attribute with the same name already exists, the values of the supplied attribute are added to the existing attribute. If the supplied attribute doesn't exist, the attribute is added to this entry.- Parameters:
attrs
- attributes to merge
-
mergeAttributes
public void mergeAttributes(Collection<LdapAttribute> attrs)
Merges attributes into this entry. If an attribute with the same name already exists, the values of the supplied attribute are added to the existing attribute. If the supplied attribute doesn't exist, the attribute is added to this entry.- Parameters:
attrs
- attributes to merge
-
removeAttribute
public void removeAttribute(String name)
Removes the attribute with the supplied name.- Parameters:
name
- of attribute to remove
-
removeAttributes
public void removeAttributes(LdapAttribute... attrs)
Removes an attribute from this ldap attributes.- Parameters:
attrs
- attribute to remove
-
removeAttributes
public void removeAttributes(Collection<LdapAttribute> attrs)
Removes the attribute(s) from this ldap attributes.- Parameters:
attrs
- collection of ldap attributes to remove
-
size
public final int size()
Returns the number of attributes.- Returns:
- number of attributes
-
clear
public final void clear()
Removes all the attributes from this entry.
-
equals
public boolean equals(Object o)
- Overrides:
equals
in classAbstractMessage
-
hashCode
public int hashCode()
Description copied from class:AbstractMessage
Returns the hash code for this object.- Specified by:
hashCode
in classAbstractMessage
- Returns:
- hash code
-
toString
public String toString()
- Overrides:
toString
in classAbstractMessage
-
copy
public static LdapEntry copy(LdapEntry entry)
Creates a mutable copy of the supplied entry.- Parameters:
entry
- to copy- Returns:
- new ldap entry instance
-
sort
public static LdapEntry sort(LdapEntry le)
Returns a new entry whose attributes are sorted naturally by name without options.- Parameters:
le
- entry to sort- Returns:
- sorted entry
-
computeModifications
public static AttributeModification[] computeModifications(LdapEntry source, LdapEntry target)
Returns the list of attribute modifications needed to change the supplied target entry into the supplied source entry. SeecomputeModifications(LdapEntry, LdapEntry, boolean)
.- Parameters:
source
- ldap entry containing new datatarget
- ldap entry containing existing data- Returns:
- attribute modifications needed to change target into source or an empty array
-
computeModifications
public static AttributeModification[] computeModifications(LdapEntry source, LdapEntry target, boolean useReplace)
Returns the list of attribute modifications needed to change the supplied target entry into the supplied source entry. This implementation performs a byte comparison on the attribute values to determine changes.- Parameters:
source
- ldap entry containing new datatarget
- ldap entry containing existing datauseReplace
- whether to use a single REPLACE modification or individual ADD/DELETE for attribute values- Returns:
- attribute modifications needed to change target into source or an empty array
-
builder
public static LdapEntry.Builder builder()
Creates a builder for this class.- Returns:
- new builder
-
-