Class AdNotificationRequestControl

  • All Implemented Interfaces:
    Control

    public final class AdNotificationRequestControl
    extends Object
    implements Control
    The persistent search request control for Active Directory as defined by Microsoft. This control allows a client to receive notification of changes that occur in an Active Directory server.
     
     Connection connection = ...;
    
     SearchRequest request =
             Requests.newSearchRequest("dc=example,dc=com",
                     SearchScope.WHOLE_SUBTREE, "(objectclass=*)", "cn",
                     "isDeleted", "whenChanged", "whenCreated").addControl(
                     ADNotificationRequestControl.newControl(true));
    
     ConnectionEntryReader reader = connection.search(request);
    
     while (reader.hasNext()) {
         if (!reader.isReference()) {
             SearchResultEntry entry = reader.readEntry(); // Entry that changed
    
             Boolean isDeleted = entry.parseAttribute("isDeleted").asBoolean();
             if (isDeleted != null && isDeleted) {
                 // Handle entry deletion
             }
             String whenCreated = entry.parseAttribute("whenCreated").asString();
             String whenChanged = entry.parseAttribute("whenChanged").asString();
             if (whenCreated != null && whenChanged != null) {
                 if (whenCreated.equals(whenChanged)) {
                     //Handle entry addition
                 } else {
                     //Handle entry modification
                 }
             }
         } else {
             reader.readReference(); //read and ignore reference
         }
     }
     
     
    See Also:
    Change Notifications in Active Directory Domain Services
    • Field Detail

      • OID

        public static final String OID
        The OID for the Microsoft Active Directory persistent search request control. The control itself is empty and the changes are returned as attributes, such as "isDeleted", "whenChanged", "whenCreated".
        See Also:
        Constant Field Values
      • IS_DELETED_ATTR

        public static final String IS_DELETED_ATTR
        The name of the isDeleted attribute as defined in the Active Directory schema. If the value of the attribute is TRUE, the object has been marked for deletion.
        See Also:
        Constant Field Values
      • WHEN_CREATED_ATTR

        public static final String WHEN_CREATED_ATTR
        The name of the whenCreated attribute as defined in the Active Directory schema. Holds the date of the creation of the object in GeneralizedTime format.
        See Also:
        Constant Field Values
      • WHEN_CHANGED_ATTR

        public static final String WHEN_CHANGED_ATTR
        The name of the whenChanged attribute as defined in the Active Directory schema. Holds the date of the last modification of the object in GeneralizedTime format.
        See Also:
        Constant Field Values
      • OBJECT_GUID_ATTR

        public static final String OBJECT_GUID_ATTR
        The name of the objectGUID attribute as defined in the Active Directory schema. This is the unique identifier of an object stored in binary format.
        See Also:
        Constant Field Values
      • USN_CHANGED_ATTR

        public static final String USN_CHANGED_ATTR
        The name of the uSNChanged attribute as defined in the Active Directory schema. This attribute can be used to determine whether the current state of the object on the server reflects the latest changes that the client has received.
        See Also:
        Constant Field Values
    • Method Detail

      • newControl

        public static AdNotificationRequestControl newControl​(boolean isCritical)
        Creates a new Active Directory change notification request control.
        Parameters:
        isCritical - true if it is unacceptable to perform the operation without applying the semantics of this control, or false if it can be ignored
        Returns:
        The new control.
      • getOid

        public String getOid()
        Description copied from interface: Control
        Returns the numeric OID associated with this control.
        Specified by:
        getOid in interface Control
        Returns:
        The numeric OID associated with this control.
      • getValue

        public ByteString getValue()
        Description copied from interface: Control
        Returns the value, if any, associated with this control. Its format is defined by the specification of this control.
        Specified by:
        getValue in interface Control
        Returns:
        The value associated with this control, or null if there is no value.
      • hasValue

        public boolean hasValue()
        Description copied from interface: Control
        Returns true if this control has a value. In some circumstances it may be useful to determine if a control has a value, without actually calculating the value and incurring any performance costs.
        Specified by:
        hasValue in interface Control
        Returns:
        true if this control has a value, or false if there is no value.
      • isCritical

        public boolean isCritical()
        Description copied from interface: Control
        Returns true if it is unacceptable to perform the operation without applying the semantics of this control.

        The criticality field only has meaning in controls attached to request messages (except UnbindRequest). For controls attached to response messages and the UnbindRequest, the criticality field SHOULD be false, and MUST be ignored by the receiving protocol peer. A value of true indicates that it is unacceptable to perform the operation without applying the semantics of the control.

        Specified by:
        isCritical in interface Control
        Returns:
        true if this control must be processed by the Directory Server, or false if it can be ignored.