com.ibm.itim.remoteservices.provider
Interface UnsolicitedEventProcessor

All Superinterfaces:
SchemaLookup

public interface UnsolicitedEventProcessor
extends SchemaLookup

Interface for a class to process unsolicited events, including add events, modify events, suspend, restore, and delete events. The primary purpose of this interface is to allow synchronization between external resources and TIM to be initiated from outside of TIM. In other words, data change events on managed resources can be propogated to TIM using this interface.

This class should be used when implementing a new protocol that listens for events on a managed resource. After the event occurs this class should be called to inform TIM to update the TIM data store.

Clients of this interface will typically be server implementations of protocols. However, clients listening for events within the same process as the server are also possible.

Entries are identified in the method signatures by the entryDN parameter. An example of this form for an account entity is 'eruid=jdoe'.

Other processing, before addition to the data store will be also be done. This will include checking of provisioning policies for accounts. For person entries the processing will include person placement rules, lookup of supervisor by name, and lookup of role by name.

The particular kind of processing done on the entry will be determined by the ercategory defined in the service instance. If there is no value for this attribute then internally defined defaults for Person and Account entries will be used.

Information for exceptions during processing of events will be encapsulated in the returned RequestStatus objects.

Clients should ensure data consistency when there is a possibility of concurrent events between a ServiceProvider implementation and unsolicited events.

The service attribute erCategory has special meaning to the API implementation. It is used to determine the factory for processing of data. Supported values of erCategory at present are 'Account' and 'Person'.


Method Summary
 Service findService(java.lang.String filter)
          Gets the service for this event processor matching a given filter.
 DirectoryObject lookup(Service service, java.lang.String filter)
          Lookup an object in the data store.
 RequestStatus processAddRequest(Service service, java.lang.String entryDN, java.util.Collection objectClasses, AttributeValues attributeValues)
          Process an add request sent from a remote service in a unsolicited notification event.
 RequestStatus processDeleteRequest(Service service, java.lang.String entryDN)
          Process a delete request sent from a remote service in a unsolicited notification event.
 RequestStatus processModifyRequest(Service service, java.lang.String entryDN, AttributeChanges changes)
          Process a modify request sent from a remote service in a unsolicited notification event.
 RequestStatus processRestoreRequest(Service service, java.lang.String entryDN)
          Process a restore request sent from a remote service in a unsolicited notification event.
 RequestStatus processSuspendRequest(Service service, java.lang.String entryDN)
          Process a suspend request sent from a remote service in a unsolicited notification event.
 
Methods inherited from interface com.ibm.itim.remoteservices.provider.SchemaLookup
getAttributeSchema, getClassSchema
 

Method Detail

findService

public Service findService(java.lang.String filter)
                    throws MultipleEntriesFoundException,
                           RemoteServicesException
Gets the service for this event processor matching a given filter.

Parameters:
filter - An LDAP filter that services should match
Returns:
A Service object
Throws:
MultipleEntriesFoundException - if the filter matches more than one request
RemoteServicesException - if there was an exception processing the request

lookup

public DirectoryObject lookup(Service service,
                              java.lang.String filter)
                       throws MultipleEntriesFoundException,
                              RemoteServicesException,
                              ObjectNotFoundException
Lookup an object in the data store. If the tenant is null then the default tenant will be assumed.

Parameters:
service - The service that the entry is to be added to
filter - A filter to locate the entry by
Returns:
The DirectoryObject encapsulating data about the entity sought
Throws:
MultipleEntriesFoundException - if the filter matches more than one request
RemoteServicesException - if there was an exception processing the request
ObjectNotFoundException - if the object could not be found

processAddRequest

public RequestStatus processAddRequest(Service service,
                                       java.lang.String entryDN,
                                       java.util.Collection objectClasses,
                                       AttributeValues attributeValues)
Process an add request sent from a remote service in a unsolicited notification event. The service instance will be for a specific entityCategory, which is used to find the appropriate data services factory to create the entry in the TIM data store.

Parameters:
service - The service that the entry is to be added to
entryDN - The distinguished name of the entry with respect to the managed resource
objectClasses - the object classes to use to create the new entity
attributeValues - The attribute values to be added with the entity.
Returns:
The status of the request

processDeleteRequest

public RequestStatus processDeleteRequest(Service service,
                                          java.lang.String entryDN)
Process a delete request sent from a remote service in a unsolicited notification event.

Parameters:
service - The service that the entry is to be processed for
entryDN - The distinguished name of the entry with respect to the managed resource
Returns:
The status of the request

processModifyRequest

public RequestStatus processModifyRequest(Service service,
                                          java.lang.String entryDN,
                                          AttributeChanges changes)
Process a modify request sent from a remote service in a unsolicited notification event.

Parameters:
service - The service that the entry is to be processed for
entryDN - The distinguished name of the entry with respect to the managed resource
changes - list of modifications to process
Returns:
The status of the request

processRestoreRequest

public RequestStatus processRestoreRequest(Service service,
                                           java.lang.String entryDN)
Process a restore request sent from a remote service in a unsolicited notification event. Not all kinds of entities may support this operation.

Parameters:
service - The service that the entry is to be processed for
entryDN - The distinguished name of the entry with respect to the managed resource
Returns:
The status of the request

processSuspendRequest

public RequestStatus processSuspendRequest(Service service,
                                           java.lang.String entryDN)
Process a suspend request sent from a remote service in a unsolicited notification event. Not all kinds of entities may support this operation.

Parameters:
service - The service that the entry is to be processed for
entryDN - The distinguished name of the entry with respect to the managed resource
Returns:
The status of the request


IBM Tivoli Identity Manager 4.6
© Copyright International Business Machines Corporation 2005. All rights reserved. US Government Users Restricted Rights Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.