Class EntryHistoricalAttribute

  • All Implemented Interfaces:
    Iterable<ByteString>, Collection<ByteString>, Attribute

    public final class EntryHistoricalAttribute
    extends Object
    implements Attribute
    A specialized Attribute implementations that performs lazy conversion of EntryHistorical (ds-sync-hist) meta-data to its LDAP attribute representation as well as from its compact org.opends.server.backends.pluggable.ID2Entry representation.

    This class optimizes for all conversions except for conversions to and from LDAP Attributes since these are rarely needed in practice - it is rare for a client application to read the ds-sync-hist attribute or modify it directly.

    • Constructor Detail

      • EntryHistoricalAttribute

        public EntryHistoricalAttribute​(Supplier<EntryHistorical> delayedEntryHistorical)
        Creates a new ds-sync-hist attribute whose content will be lazily computed using the provided supplier.
        Parameters:
        delayedEntryHistorical - The supplier to be invoked in order to compute the attribute's content.
      • EntryHistoricalAttribute

        public EntryHistoricalAttribute​(EntryHistorical entryHistorical)
        Creates a new ds-sync-hist attribute whose content is based on the provided historical information.
        Parameters:
        entryHistorical - The historical information from which the attribute values will be computed.
    • Method Detail

      • getEntryHistoricalForRead

        public EntryHistorical getEntryHistoricalForRead​(Dn dn)
        Returns the historical information associated with this attribute, computing it if needed. This method should only be used when the caller does not intend to update the returned historical information.
        Parameters:
        dn - The name of the entry containing this attribute.
        Returns:
        The historical information associated with this attribute, computing it if needed.
      • getEntryHistoricalForUpdate

        public EntryHistorical getEntryHistoricalForUpdate​(Dn dn)
        Returns the historical information associated with this attribute, computing it if needed. This method should be used when the caller intends to update the returned historical information.
        Parameters:
        dn - The name of the entry containing this attribute.
        Returns:
        The historical information associated with this attribute, computing it if needed.
      • getAttributeDescription

        public AttributeDescription getAttributeDescription()
        Description copied from interface: Attribute
        Returns the attribute description of this attribute, which includes its attribute type and any options.
        Specified by:
        getAttributeDescription in interface Attribute
        Returns:
        The attribute description.
      • isVirtual

        public boolean isVirtual()
        Description copied from interface: Attribute
        Indicates whether this is a virtual attribute (dynamically computed) rather than a real attribute (persisted).
        Specified by:
        isVirtual in interface Attribute
        Returns:
        true if this is a virtual attribute.
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: Attribute
        Returns true if this attribute contains no attribute values.
        Specified by:
        isEmpty in interface Attribute
        Specified by:
        isEmpty in interface Collection<ByteString>
        Returns:
        true if this attribute contains no attribute values.
      • add

        public boolean add​(ByteString value)
        Description copied from interface: Attribute
        Adds value to this attribute if it is not already present (optional operation). If this attribute already contains value, the call leaves the attribute unchanged and returns false.
        Specified by:
        add in interface Attribute
        Specified by:
        add in interface Collection<ByteString>
        Parameters:
        value - The attribute value to be added to this attribute.
        Returns:
        true if this attribute changed as a result of this call.
      • add

        public boolean add​(Object... values)
        Description copied from interface: Attribute
        Adds all of the provided attribute values to this attribute if they are not already present (optional operation).

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        add in interface Attribute
        Parameters:
        values - The attribute values to be added to this attribute.
        Returns:
        true if this attribute changed as a result of this call.
      • addAll

        public boolean addAll​(Collection<? extends ByteString> values)
        Description copied from interface: Attribute
        Adds all of the attribute values contained in values to this attribute if they are not already present (optional operation).

        An invocation of this method is equivalent to:

         attribute.addAll(values, null);
         
        Specified by:
        addAll in interface Attribute
        Specified by:
        addAll in interface Collection<ByteString>
        Parameters:
        values - The attribute values to be added to this attribute.
        Returns:
        true if this attribute changed as a result of this call.
      • addAll

        public <T> boolean addAll​(Collection<T> values,
                                  Collection<? super T> duplicateValues)
        Description copied from interface: Attribute
        Adds all of the attribute values contained in values to this attribute if they are not already present (optional operation). Any attribute values which are already present will be added to duplicateValues if specified.

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        addAll in interface Attribute
        Type Parameters:
        T - The type of the attribute value objects being added.
        Parameters:
        values - The attribute values to be added to this attribute.
        duplicateValues - A collection into which duplicate values will be added, or null if duplicate values should not be saved.
        Returns:
        true if this attribute changed as a result of this call.
      • clear

        public void clear()
        Description copied from interface: Attribute
        Removes all of the attribute values from this attribute (optional operation). This attribute will be empty after this call returns.
        Specified by:
        clear in interface Attribute
        Specified by:
        clear in interface Collection<ByteString>
      • contains

        public boolean contains​(Object value)
        Description copied from interface: Attribute
        Returns true if this attribute contains value.

        If value is not an instance of ByteString then it will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        contains in interface Attribute
        Specified by:
        contains in interface Collection<ByteString>
        Parameters:
        value - The attribute value whose presence in this attribute is to be tested.
        Returns:
        true if this attribute contains value, or false if not.
      • containsAll

        public boolean containsAll​(Collection<?> values)
        Description copied from interface: Attribute
        Returns true if this attribute contains all of the attribute values contained in values.

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        containsAll in interface Attribute
        Specified by:
        containsAll in interface Collection<ByteString>
        Parameters:
        values - The attribute values whose presence in this attribute is to be tested.
        Returns:
        true if this attribute contains all of the attribute values contained in values, or false if not.
      • equals

        public boolean equals​(Object object)
        Description copied from interface: Attribute
        Returns true if object is an attribute which is equal to this attribute. Two attributes are considered equal if their attribute descriptions are equal, they both have the same number of attribute values, and every attribute value contained in the first attribute is also contained in the second attribute.
        Specified by:
        equals in interface Attribute
        Specified by:
        equals in interface Collection<ByteString>
        Overrides:
        equals in class Object
        Parameters:
        object - The object to be tested for equality with this attribute.
        Returns:
        true if object is an attribute which is equal to this attribute, or false if not.
      • firstValue

        public ByteString firstValue()
        Description copied from interface: Attribute
        Returns the first attribute value in this attribute.
        Specified by:
        firstValue in interface Attribute
        Returns:
        The first attribute value in this attribute.
      • forEachNormalizedValue

        public void forEachNormalizedValue​(BiConsumer<? super ByteString,​? super ByteString> action)
        Description copied from interface: Attribute
        Performs the provided action for each value and its associated normalized value in this attribute.
        Specified by:
        forEachNormalizedValue in interface Attribute
        Parameters:
        action - The action to perform which will be passed the normalized value as the first parameter and the user provided value as the second parameter.
      • hashCode

        public int hashCode()
        Description copied from interface: Attribute
        Returns the hash code for this attribute. It will be calculated as the sum of the hash codes of the attribute description and all of the attribute values.
        Specified by:
        hashCode in interface Attribute
        Specified by:
        hashCode in interface Collection<ByteString>
        Overrides:
        hashCode in class Object
        Returns:
        The hash code for this attribute.
      • iterator

        public Iterator<ByteString> iterator()
        Description copied from interface: Attribute
        Returns an iterator over the attribute values in this attribute. The attribute values are returned in no particular order, unless the implementation of this attribute provides such a guarantee.
        Specified by:
        iterator in interface Attribute
        Specified by:
        iterator in interface Collection<ByteString>
        Specified by:
        iterator in interface Iterable<ByteString>
        Returns:
        An iterator over the attribute values in this attribute.
      • matchesApproximateAssertion

        public ConditionResult matchesApproximateAssertion​(Assertion assertion,
                                                           ByteSequence rawAssertion)
        Description copied from interface: Attribute
        Indicates whether this attribute matches the specified assertion using the attribute's default approximate matching rule.
        Specified by:
        matchesApproximateAssertion in interface Attribute
        Parameters:
        assertion - The attribute value assertion compiled using the attribute's default approximate matching rule.
        rawAssertion - The raw assertion value whose syntax is compatible with the attribute's default approximate matching rule.
        Returns:
        ConditionResult.FALSE if the assertion does not match any values in this attribute, ConditionResult.TRUE if the assertion matches at least one value in this attribute, or ConditionResult.UNDEFINED if the assertion does not match any values in this attribute, but one or more values could not be compared because they are incompatible with the matching rule.
      • matchesEqualityAssertion

        public ConditionResult matchesEqualityAssertion​(Assertion assertion,
                                                        ByteSequence rawAssertion)
        Description copied from interface: Attribute
        Indicates whether this attribute matches the specified assertion using the attribute's default equality matching rule.
        Specified by:
        matchesEqualityAssertion in interface Attribute
        Parameters:
        assertion - The attribute value assertion compiled using the attribute's default equality matching rule.
        rawAssertion - The raw assertion value whose syntax is compatible with the attribute's default equality matching rule.
        Returns:
        ConditionResult.FALSE if the assertion does not match any values in this attribute, ConditionResult.TRUE if the assertion matches at least one value in this attribute, or ConditionResult.UNDEFINED if the assertion does not match any values in this attribute, but one or more values could not be compared because they are incompatible with the matching rule.
      • matchesGreaterOrEqualAssertion

        public ConditionResult matchesGreaterOrEqualAssertion​(Assertion assertion,
                                                              ByteSequence rawAssertion)
        Description copied from interface: Attribute
        Indicates whether this attribute matches the specified assertion using the attribute's default ordering matching rule.
        Specified by:
        matchesGreaterOrEqualAssertion in interface Attribute
        Parameters:
        assertion - The attribute value assertion compiled using the attribute's default ordering matching rule.
        rawAssertion - The raw assertion value whose syntax is compatible with the attribute's default ordering matching rule.
        Returns:
        ConditionResult.FALSE if the assertion does not match any values in this attribute, ConditionResult.TRUE if the assertion matches at least one value in this attribute, or ConditionResult.UNDEFINED if the assertion does not match any values in this attribute, but one or more values could not be compared because they are incompatible with the matching rule.
      • matchesLessOrEqualAssertion

        public ConditionResult matchesLessOrEqualAssertion​(Assertion assertion,
                                                           ByteSequence rawAssertion)
        Description copied from interface: Attribute
        Indicates whether this attribute matches the specified assertion using the attribute's default ordering matching rule.
        Specified by:
        matchesLessOrEqualAssertion in interface Attribute
        Parameters:
        assertion - The attribute value assertion compiled using the attribute's default ordering matching rule.
        rawAssertion - The raw assertion value whose syntax is compatible with the attribute's default ordering matching rule.
        Returns:
        ConditionResult.FALSE if the assertion does not match any values in this attribute, ConditionResult.TRUE if the assertion matches at least one value in this attribute, or ConditionResult.UNDEFINED if the assertion does not match any values in this attribute, but one or more values could not be compared because they are incompatible with the matching rule.
      • matchesSubstringAssertion

        public ConditionResult matchesSubstringAssertion​(Assertion assertion,
                                                         ByteSequence rawInitialSubstring,
                                                         List<? extends ByteSequence> rawAnySubstrings,
                                                         ByteSequence rawFinalSubstring)
        Description copied from interface: Attribute
        Indicates whether this attribute matches the specified assertion using the attribute's default ordering matching rule.
        Specified by:
        matchesSubstringAssertion in interface Attribute
        Parameters:
        assertion - The attribute value assertion compiled using the attribute's default ordering matching rule.
        rawInitialSubstring - The assertion's initial sub-string, may be null if either rawFinalSubstring or rawAnySubstrings are specified.
        rawAnySubstrings - The assertion's intermediate sub-strings, may be empty if either rawFinalSubstring or rawAnySubstrings are specified.
        rawFinalSubstring - The final sub-string, may be null if either rawInitialSubstring or rawAnySubstrings are specified.
        Returns:
        ConditionResult.FALSE if the assertion does not match any values in this attribute, ConditionResult.TRUE if the assertion matches at least one value in this attribute, or ConditionResult.UNDEFINED if the assertion does not match any values in this attribute, but one or more values could not be compared because they are incompatible with the matching rule.
      • parse

        public AttributeParser parse()
        Description copied from interface: Attribute
        Returns a parser for this attribute which can be used for decoding values as different types of object.
        Specified by:
        parse in interface Attribute
        Returns:
        A parser for this attribute.
      • remove

        public boolean remove​(Object value)
        Description copied from interface: Attribute
        Removes value from this attribute if it is present (optional operation). If this attribute does not contain value, the call leaves the attribute unchanged and returns false.

        If value is not an instance of ByteString then it will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        remove in interface Attribute
        Specified by:
        remove in interface Collection<ByteString>
        Parameters:
        value - The attribute value to be removed from this attribute.
        Returns:
        true if this attribute changed as a result of this call.
      • removeAll

        public boolean removeAll​(Collection<?> values)
        Description copied from interface: Attribute
        Removes all of the attribute values contained in values from this attribute if they are present (optional operation).

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        An invocation of this method is equivalent to:

         attribute.removeAll(values, null);
         
        Specified by:
        removeAll in interface Attribute
        Specified by:
        removeAll in interface Collection<ByteString>
        Parameters:
        values - The attribute values to be removed from this attribute.
        Returns:
        true if this attribute changed as a result of this call.
      • removeAll

        public <T> boolean removeAll​(Collection<T> values,
                                     Collection<? super T> missingValues)
        Description copied from interface: Attribute
        Removes all of the attribute values contained in values from this attribute if they are present (optional operation). Any attribute values which are not already present will be added to missingValues if specified.

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        removeAll in interface Attribute
        Type Parameters:
        T - The type of the attribute value objects being removed.
        Parameters:
        values - The attribute values to be removed from this attribute.
        missingValues - A collection into which missing values will be added, or null if missing values should not be saved.
        Returns:
        true if this attribute changed as a result of this call.
      • retainAll

        public boolean retainAll​(Collection<?> values)
        Description copied from interface: Attribute
        Retains only the attribute values in this attribute which are contained in values (optional operation).

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        An invocation of this method is equivalent to:

         attribute.retainAll(values, null);
         
        Specified by:
        retainAll in interface Attribute
        Specified by:
        retainAll in interface Collection<ByteString>
        Parameters:
        values - The attribute values to be retained in this attribute.
        Returns:
        true if this attribute changed as a result of this call.
      • retainAll

        public <T> boolean retainAll​(Collection<T> values,
                                     Collection<? super T> missingValues)
        Description copied from interface: Attribute
        Retains only the attribute values in this attribute which are contained in values (optional operation). Any attribute values which are not already present will be added to missingValues if specified.

        Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

        Specified by:
        retainAll in interface Attribute
        Type Parameters:
        T - The type of the attribute value objects being retained.
        Parameters:
        values - The attribute values to be retained in this attribute.
        missingValues - A collection into which missing values will be added, or null if missing values should not be saved.
        Returns:
        true if this attribute changed as a result of this call.
      • size

        public int size()
        Description copied from interface: Attribute
        Returns the number of attribute values in this attribute.
        Specified by:
        size in interface Attribute
        Specified by:
        size in interface Collection<ByteString>
        Returns:
        The number of attribute values in this attribute.
      • toArray

        public ByteString[] toArray()
        Description copied from interface: Attribute
        Returns an array containing all of the attribute values contained in this attribute.

        If this attribute makes any guarantees as to what order its attribute values are returned by its iterator, this method must return the attribute values in the same order.

        The returned array will be "safe" in that no references to it are maintained by this attribute. The caller is thus free to modify the returned array.

        Specified by:
        toArray in interface Attribute
        Specified by:
        toArray in interface Collection<ByteString>
        Returns:
        An array containing all of the attribute values contained in this attribute.
      • toArray

        public <T> T[] toArray​(T[] array)
        Description copied from interface: Attribute
        Returns an array containing all of the attribute values in this attribute; the runtime type of the returned array is that of the specified array.

        If the set fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this attribute. If this attribute fits in the specified array with room to spare (i.e., the array has more elements than this attribute), the elements in the array immediately following the end of the set is set to null.

        If this attribute makes any guarantees as to what order its attribute values are returned by its iterator, this method must return the attribute values in the same order.

        Specified by:
        toArray in interface Attribute
        Specified by:
        toArray in interface Collection<ByteString>
        Type Parameters:
        T - The type of elements contained in array.
        Parameters:
        array - An array into which the elements of this attribute should be put.
        Returns:
        An array containing all of the attribute values contained in this attribute.
      • toString

        public String toString()
        Description copied from interface: Attribute
        Returns a string representation of this attribute.
        Specified by:
        toString in interface Attribute
        Overrides:
        toString in class Object
        Returns:
        The string representation of this attribute.