Class IDSChangelogConnector

  • All Implemented Interfaces:
    ChangelogInterface, ConnectorInterface, VersionInfoInterface, java.util.EventListener, javax.naming.event.NamingListener, javax.naming.ldap.UnsolicitedNotificationListener

    public class IDSChangelogConnector
    extends ChangelogConnector
    implements ConnectorInterface, ChangelogInterface, javax.naming.ldap.UnsolicitedNotificationListener
    The IDSChangelogConnector provides a way to to detect changes in a IBM Tivoli Directory Server. The Connector connects to the underline directory through the JNDI interface and gets the changes done on a specific context. The Connector regularly saves current state into the System Store to avoid duplications when retrieving Entries.
    • Field Detail

      • PARAM_LDAP_SEARCH_BASE

        public static final java.lang.String PARAM_LDAP_SEARCH_BASE
        Parameter Name: "ldapSearchBase"
        See Also:
        Constant Field Values
      • PARAM_STORE_PARAM_NAME

        public static final java.lang.String PARAM_STORE_PARAM_NAME
        Parameter Name: "iteratorStateKey"
        See Also:
        Constant Field Values
      • PARAM_START_AT

        public static final java.lang.String PARAM_START_AT
        Parameter Name: "nsChangenumber"
        See Also:
        Constant Field Values
      • PARAM_SLEEP_INTERVAL

        public static final java.lang.String PARAM_SLEEP_INTERVAL
        Parameter Name: "nsSleepInterval"
        See Also:
        Constant Field Values
      • PARAM_TIMEOUT

        public static final java.lang.String PARAM_TIMEOUT
        Parameter Name: "nsTimeout"
        See Also:
        Constant Field Values
      • PARAM_PAGE_SIZE

        public static final java.lang.String PARAM_PAGE_SIZE
        Parameter Name: "pageSize"
        See Also:
        Constant Field Values
      • PARAM_USE_NOTIFICATIONS

        public static final java.lang.String PARAM_USE_NOTIFICATIONS
        Parameter Name: "useNotifications"
        See Also:
        Constant Field Values
      • PARAM_BATCH_RETRIEVAL

        public static final java.lang.String PARAM_BATCH_RETRIEVAL
        Parameter Name: "batchRetrieval"
        See Also:
        Constant Field Values
      • ATTRIBUTE_CPR

        public static final java.lang.String ATTRIBUTE_CPR
        Attribute name: "changeNumber"
        See Also:
        Constant Field Values
      • ATTRIBUTE_CHANGENUMBER

        public static final java.lang.String ATTRIBUTE_CHANGENUMBER
        Attribute name: "changenumber"
        See Also:
        Constant Field Values
      • PAGE_SIZE_DEFAULT_VALUE

        public static final int PAGE_SIZE_DEFAULT_VALUE
        The default value used for page size.
        See Also:
        Constant Field Values
      • EVT_REG_OID

        public static final java.lang.String EVT_REG_OID
        The id of the specific control supported by IBM TDS, used for registering to the server.
        See Also:
        Constant Field Values
      • EVT_UNREG_OID

        public static final java.lang.String EVT_UNREG_OID
        The id of the specific control supported by IBM TDS, used for unregistering from the server.
        See Also:
        Constant Field Values
      • CHANGE_ALL

        public static final int CHANGE_ALL
        The type of change that we will get notified for.
        See Also:
        Constant Field Values
    • Constructor Detail

      • IDSChangelogConnector

        public IDSChangelogConnector()
        Constructs this object and sets it supported mode.
    • Method Detail

      • initialize

        public void initialize​(java.lang.Object aObject)
                        throws java.lang.Exception
        Initializes the connector. All the configuration properties are considered and applied before a connection is made. After everything is set the connection is established and the connector is registered for receiving change notification.
        Specified by:
        initialize in interface ConnectorInterface
        Overrides:
        initialize in class ChangelogConnector
        Parameters:
        aObject - ignored.
        Throws:
        java.lang.Exception - if an error occurs.
      • selectEntries

        public void selectEntries()
                           throws java.lang.Exception
        Prepares the connector for listening to change notifications.
        Specified by:
        selectEntries in interface ConnectorInterface
        Overrides:
        selectEntries in class LDAPConnector
        Throws:
        java.lang.Exception - if an error occurs.
      • getNextEntry

        public Entry getNextEntry()
                           throws java.lang.Exception
        This method will get the next change if the number of changes is smaller than the actual changes, that were done on the TDS. If no more changes are available this method will block until notified that a change was done.
        Specified by:
        getNextEntry in interface ConnectorInterface
        Overrides:
        getNextEntry in class LDAPConnector
        Returns:
        the changes as an Entry object
        Throws:
        java.lang.Exception - if an error occurs.
        See Also:
        ConnectorInterface.selectEntries()
      • saveStateKey

        public void saveStateKey()
                          throws java.lang.Exception
        Stores the USN values for the next synchronization. This method will skip the storing of the StateKey if the StateKey save method is set to ChangelogInterface.SAVE_STATE_AFTER_READ
        Specified by:
        saveStateKey in interface ChangelogInterface
        Throws:
        java.lang.Exception - - never
      • getStateKeyObject

        public java.lang.Object getStateKeyObject()
                                           throws java.lang.Exception
        Retrieves the state key object.
        Specified by:
        getStateKeyObject in interface ChangelogInterface
        Returns:
        the change detection wrapped as a Long object.
        Throws:
        java.lang.Exception - - never
      • namingExceptionThrown

        public void namingExceptionThrown​(javax.naming.event.NamingExceptionEvent evt)
        Callback method for handling NamingEnumerations
        Specified by:
        namingExceptionThrown in interface javax.naming.event.NamingListener
        Parameters:
        evt - the naming exception event object
      • notificationReceived

        public void notificationReceived​(javax.naming.ldap.UnsolicitedNotificationEvent evt)
        Callback method called when a change is made.
        Specified by:
        notificationReceived in interface javax.naming.ldap.UnsolicitedNotificationListener
        Parameters:
        evt - the event transport object
      • parseEntry

        protected Entry parseEntry​(Entry aEntry)
                            throws java.lang.Exception
        Description copied from class: ChangelogConnector
        Method for parsing and merging Changelog Entry attributes and changed attributes from the actual Directory Entry.
        Overrides:
        parseEntry in class ChangelogConnector
        Parameters:
        aEntry - the actual Directory Entry.
        Returns:
        the result of the parsing and merging operations entry.
        Throws:
        java.lang.Exception - if an error occurs.