com.ibm.di.connector
Class IDSChangelogConnector

java.lang.Object
  extended by com.ibm.di.connector.Connector
      extended by com.ibm.di.connector.LDAPConnector
          extended by com.ibm.di.connector.ChangelogConnector
              extended by com.ibm.di.connector.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 Summary
static java.lang.String ATTRIBUTE_CHANGENUMBER
          Attribute name: "changenumber"
static java.lang.String ATTRIBUTE_CPR
          Attribute name: "changeNumber"
static int CHANGE_ALL
          The type of change that we will get notified for.
static java.lang.String EVT_REG_OID
          The id of the specific control supported by IBM TDS, used for registering to the server.
static java.lang.String EVT_UNREG_OID
          The id of the specific control supported by IBM TDS, used for unregistering from the server.
static int PAGE_SIZE_DEFAULT_VALUE
          The default value used for page size.
static java.lang.String PARAM_BATCH_RETRIEVAL
          Parameter Name: "batchRetrieval"
static java.lang.String PARAM_LDAP_SEARCH_BASE
          Parameter Name: "ldapSearchBase"
static java.lang.String PARAM_PAGE_SIZE
          Parameter Name: "pageSize"
static java.lang.String PARAM_SLEEP_INTERVAL
          Parameter Name: "nsSleepInterval"
static java.lang.String PARAM_START_AT
          Parameter Name: "nsChangenumber"
static java.lang.String PARAM_STORE_PARAM_NAME
          Parameter Name: "iteratorStateKey"
static java.lang.String PARAM_TIMEOUT
          Parameter Name: "nsTimeout"
static java.lang.String PARAM_USE_NOTIFICATIONS
          Parameter Name: "useNotifications"
 
Fields inherited from class com.ibm.di.connector.ChangelogConnector
bothSeparated, defaultMerge, mLdifParser, onlyChanges, PARAM_MERGE_MODE
 
Fields inherited from class com.ibm.di.connector.Connector
ALL_MODES, myLog, PROPERTY_MESSAGE, PROPERTY_READER, PROPERTY_WRITER
 
Fields inherited from interface com.ibm.di.connector.ChangelogInterface
CONN_PARAM_STATE_KEY_PERSISTENCE, PARAM_MERGE_BOTH_NOT_MERGED, PARAM_MERGE_CHANGELOG_AND_DATA, PARAM_MERGE_ONLY_CHANGED_DATA, PARAM_VAL_AFTER_READ, PARAM_VAL_END_OF_CYCLE, PARAM_VAL_MANUAL, SAVE_STATE_AFTER_READ, SAVE_STATE_END_OF_CYCLE, SAVE_STATE_MANUAL
 
Constructor Summary
IDSChangelogConnector()
          Constructs this object and sets it supported mode.
 
Method Summary
 Entry getNextEntry()
          This method will get the next change if the number of changes is smaller than the actual changes, that were done on the TDS.
 java.lang.Object getStateKeyObject()
          Retrieves the state key object.
 int getStateKeySaveMethod()
          Retrieves the method for storing StateKey.
 java.lang.String getVersion()
          Version information.
 void initialize(java.lang.Object aObject)
          Initializes the connector.
 void namingExceptionThrown(javax.naming.event.NamingExceptionEvent evt)
          Callback method for handling NamingEnumerations
 void notificationReceived(javax.naming.ldap.UnsolicitedNotificationEvent evt)
          Callback method called when a change is made.
 void reconnect(java.lang.Object o)
          Reconnect to the underlying data source
 void saveStateKey()
          Stores the USN values for the next synchronization.
 void selectEntries()
          Prepares the connector for listening to change notifications.
 void terminate()
          Close the connection to the LDAP server
 
Methods inherited from class com.ibm.di.connector.ChangelogConnector
parseEntry, querySchema
 
Methods inherited from class com.ibm.di.connector.LDAPConnector
addAttributeValue, at2entry, callErrorHookOnAttributeInUseException, compare, deleteEntry, entry2at, findEntry, flagSet, getAttributeSyntax, getCallErrorHook, getCurrentEntry, getLdapContext, getServerControls, getServerInfo, isDeltaSupported, isExceptionFatal, isServerAdminControl, mapAttributeSyntax, modEntry, modEntry, moveEntry, putEntry, queryNamingContexts, queryObjectClassAttributes, rebind, rebind, removeAllAttributeValues, removeAttributeValue, replaceAttributeValue, setADPassword, setServerAdminControl, setsubtreeDeleteSupported, showServerInfo, supportsControl, supportsExtension, supportsPagedResults, supportsPersistantSearch, supportsSorting, supportsVirtualListView
 
Methods inherited from class com.ibm.di.connector.Connector
addFindEntry, allModes, clearFindEntries, debug, debugMode, extractExceptionInformation, findEntry, getBoolean, getClassInstance, getConfiguration, getContext, getFindEntryCount, getFirstFindEntry, getLog, getMaxDuplicateEntries, getModes, getModes, getName, getNextClient, getNextFindEntry, getParam, getParser, getProperty, getPushbackEntry, getRawConnectorConfiguration, getRSInterface, getUI, hasConfigValue, hasParser, initParser, isIOException, logError, logmsg, pushback, queryOperations, queryReply, queryTables, reconnect, registerScriptBeans, replyEntry, setConfiguration, setContext, setCurrent, setDebugMode, setLog, setMaxDuplicateEntries, setModes, setModes, setName, setParam, setParser, setProperty, setRSInterface, terminateServer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.di.connector.ConnectorInterface
deleteEntry, findEntry, getConfiguration, getContext, getFindEntryCount, getFirstFindEntry, getMaxDuplicateEntries, getName, getNextClient, getNextFindEntry, getParam, getPushbackEntry, getRawConnectorConfiguration, isDeltaSupported, isExceptionFatal, isIOException, modEntry, modEntry, pushback, putEntry, queryOperations, queryReply, querySchema, registerScriptBeans, replyEntry, setConfiguration, setContext, setCurrent, setLog, setMaxDuplicateEntries, setName, setParam, setRSInterface, terminateServer
 

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()

getStateKeySaveMethod

public int getStateKeySaveMethod()
                          throws java.lang.Exception
Retrieves the method for storing StateKey.

Specified by:
getStateKeySaveMethod in interface ChangelogInterface
Returns:
the identifier of the method used for storing the StateKey in the TDI Store.
Throws:
java.lang.Exception - - never
See Also:
ChangelogInterface.SAVE_STATE_AFTER_READ, ChangelogInterface.SAVE_STATE_END_OF_CYCLE, ChangelogInterface.SAVE_STATE_MANUAL

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

terminate

public void terminate()
Close the connection to the LDAP server

Specified by:
terminate in interface ConnectorInterface
Overrides:
terminate in class LDAPConnector

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

getVersion

public java.lang.String getVersion()
Version information.

Specified by:
getVersion in interface VersionInfoInterface
Overrides:
getVersion in class ChangelogConnector
Returns:
the version information

reconnect

public void reconnect(java.lang.Object o)
               throws java.lang.Exception
Reconnect to the underlying data source

Specified by:
reconnect in interface ConnectorInterface
Overrides:
reconnect in class Connector
Parameters:
o - User provided parameter, which is sent to initialize()
Throws:
java.lang.Exception - if an error occurs.
See Also:
ConnectorInterface.initialize(Object)