com.evolveum.midpoint.provisioning.ucf.impl
Class ConnectorInstanceIcfImpl

java.lang.Object
  extended by com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl
All Implemented Interfaces:
ConnectorInstance

public class ConnectorInstanceIcfImpl
extends java.lang.Object
implements ConnectorInstance

Implementation of ConnectorInstance for ICF connectors. This class implements the ConnectorInstance interface. The methods are converting the data from the "midPoint semantics" as seen by the ConnectorInstance interface to the "ICF semantics" as seen by the ICF framework.

Author:
Radovan Semancik

Constructor Summary
ConnectorInstanceIcfImpl(org.identityconnectors.framework.api.ConnectorFacade connector, ResourceType resource)
           
 
Method Summary
 java.util.Set<ResourceObjectAttribute> addObject(ResourceObject object, java.util.Set<Operation> additionalOperations, OperationResult parentResult)
          TODO: This should return indication how the operation went, e.g.
 void deleteObject(javax.xml.namespace.QName objectClass, java.util.Set<ResourceObjectAttribute> identifiers, OperationResult parentResult)
           
 Property deserializeToken(java.lang.Object serializedToken)
          Creates a live Java object from a token previously serialized to string.
 java.util.List<Change> fetchChanges(javax.xml.namespace.QName objectClass, Property lastToken, OperationResult parentResult)
          Token may be null.
 Property fetchCurrentToken(javax.xml.namespace.QName objectClass, OperationResult parentResult)
          Returns the latest token.
 ResourceObject fetchObject(javax.xml.namespace.QName objectClass, java.util.Set<ResourceObjectAttribute> identifiers, OperationResult parentResult)
          Retrieves a specific object from the resource.
 ResourceObject fetchObject(ResourceObjectDefinition resourceObjectDefinition, java.util.Set<ResourceObjectAttribute> identifiers, OperationResult parentResult)
           
 Schema fetchResourceSchema(OperationResult parentResult)
          Retrieves schema from the resource.
 void modifyObject(javax.xml.namespace.QName objectClass, java.util.Set<ResourceObjectAttribute> identifiers, java.util.Set<Operation> changes, OperationResult parentResult)
          TODO: This should return indication how the operation went, e.g.
 void search(javax.xml.namespace.QName objectClass, ResourceObjectDefinition definition, ResultHandler handler, OperationResult parentResult)
          Execute iterative search operation.
 void test(OperationResult parentResult)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConnectorInstanceIcfImpl

public ConnectorInstanceIcfImpl(org.identityconnectors.framework.api.ConnectorFacade connector,
                                ResourceType resource)
Method Detail

fetchResourceSchema

public Schema fetchResourceSchema(OperationResult parentResult)
                           throws CommunicationException,
                                  GenericFrameworkException
Retrieves schema from the resource. Transforms native ICF schema to the midPoint representation.

Specified by:
fetchResourceSchema in interface ConnectorInstance
Returns:
midPoint resource schema.
Throws:
CommunicationException
GenericFrameworkException
See Also:
Schema

fetchObject

public ResourceObject fetchObject(ResourceObjectDefinition resourceObjectDefinition,
                                  java.util.Set<ResourceObjectAttribute> identifiers,
                                  OperationResult parentResult)
                           throws ObjectNotFoundException,
                                  CommunicationException,
                                  GenericFrameworkException
Specified by:
fetchObject in interface ConnectorInstance
Throws:
ObjectNotFoundException
CommunicationException
GenericFrameworkException

fetchObject

public ResourceObject fetchObject(javax.xml.namespace.QName objectClass,
                                  java.util.Set<ResourceObjectAttribute> identifiers,
                                  OperationResult parentResult)
                           throws ObjectNotFoundException,
                                  CommunicationException,
                                  GenericFrameworkException
Description copied from interface: ConnectorInstance
Retrieves a specific object from the resource. This method is fetching an object from the resource that is identified by its primary identifier. It is a "targeted" method in this aspect and it will fail if the object is not found. The objectClass provided as a parameter to this method must correspond to one of the object classes in the schema. The object class must match the object. If it does not, the behavior of this operation is undefined. The returned ResourceObject is "disconnected" from schema. It means that any call to the getDefinition() method of the returned object will return null. TODO: object not found error

Specified by:
fetchObject in interface ConnectorInstance
Parameters:
objectClass - objectClass of the object to fetch (QName).
identifiers - primary identifiers of the object.
Returns:
object fetched from the resource (no schema)
Throws:
CommunicationException - error in communication to the resource - nothing was fetched.
ObjectNotFoundException
GenericFrameworkException

addObject

public java.util.Set<ResourceObjectAttribute> addObject(ResourceObject object,
                                                        java.util.Set<Operation> additionalOperations,
                                                        OperationResult parentResult)
                                                 throws CommunicationException,
                                                        GenericFrameworkException,
                                                        SchemaException,
                                                        ObjectAlreadyExistsException
Description copied from interface: ConnectorInstance
TODO: This should return indication how the operation went, e.g. what changes were applied, what were not and what were not determined. The exception should be thrown only if the connector is sure that nothing was done on the resource. E.g. in case of connect timeout or connection refused. Timeout during operation should not cause the exception as something might have been done already. The connector may return some (or all) of the attributes of created object. The connector should do this only such operation is efficient, e.g. in case that the created object is normal return value from the create operation. The connector must not execute additional operation to fetch the state of created resource. In case that the new state is not such a normal result, the connector must return null. Returning empty set means that the connector supports returning of new state, but nothing was returned (e.g. due to a limiting configuration). Returning null means that connector does not support returning of new object state and the caller should explicitly invoke fetchObject() in case that the information is needed.

Specified by:
addObject in interface ConnectorInstance
Returns:
created object attributes. May be null.
Throws:
CommunicationException
SchemaException - resource schema violation
ObjectAlreadyExistsException - object already exists on the resource
GenericFrameworkException

modifyObject

public void modifyObject(javax.xml.namespace.QName objectClass,
                         java.util.Set<ResourceObjectAttribute> identifiers,
                         java.util.Set<Operation> changes,
                         OperationResult parentResult)
                  throws ObjectNotFoundException,
                         CommunicationException,
                         GenericFrameworkException,
                         SchemaException
Description copied from interface: ConnectorInstance
TODO: This should return indication how the operation went, e.g. what changes were applied, what were not and what results are we not sure about. The exception should be thrown only if the connector is sure that nothing was done on the resource. E.g. in case of connect timeout or connection refused. Timeout during operation should not cause the exception as something might have been done already.

Specified by:
modifyObject in interface ConnectorInstance
Throws:
CommunicationException
SchemaException
ObjectNotFoundException
GenericFrameworkException

deleteObject

public void deleteObject(javax.xml.namespace.QName objectClass,
                         java.util.Set<ResourceObjectAttribute> identifiers,
                         OperationResult parentResult)
                  throws ObjectNotFoundException,
                         CommunicationException,
                         GenericFrameworkException
Specified by:
deleteObject in interface ConnectorInstance
Throws:
ObjectNotFoundException
CommunicationException
GenericFrameworkException

deserializeToken

public Property deserializeToken(java.lang.Object serializedToken)
Description copied from interface: ConnectorInstance
Creates a live Java object from a token previously serialized to string. Serialized token is not portable to other connectors or other resources. However, newer versions of the connector should understand tokens generated by previous connector version.

Specified by:
deserializeToken in interface ConnectorInstance
Returns:

fetchCurrentToken

public Property fetchCurrentToken(javax.xml.namespace.QName objectClass,
                                  OperationResult parentResult)
                           throws CommunicationException,
                                  GenericFrameworkException
Description copied from interface: ConnectorInstance
Returns the latest token. In other words, returns a token that corresponds to a current state of the resource. If fetchChanges is immediately called with this token, nothing should be returned (Figuratively speaking, neglecting concurrent resource modifications).

Specified by:
fetchCurrentToken in interface ConnectorInstance
Returns:
Throws:
CommunicationException
GenericFrameworkException

fetchChanges

public java.util.List<Change> fetchChanges(javax.xml.namespace.QName objectClass,
                                           Property lastToken,
                                           OperationResult parentResult)
                                    throws CommunicationException,
                                           GenericFrameworkException,
                                           SchemaException
Description copied from interface: ConnectorInstance
Token may be null. That means "from the beginning of history".

Specified by:
fetchChanges in interface ConnectorInstance
Returns:
Throws:
CommunicationException
GenericFrameworkException
SchemaException

test

public void test(OperationResult parentResult)
Specified by:
test in interface ConnectorInstance

search

public void search(javax.xml.namespace.QName objectClass,
                   ResourceObjectDefinition definition,
                   ResultHandler handler,
                   OperationResult parentResult)
            throws CommunicationException,
                   GenericFrameworkException
Description copied from interface: ConnectorInstance
Execute iterative search operation. This method will execute search operation on the resource and will pass any objects that are found. A "handler" callback will be called for each of the objects found. The call to this method will return only after all the callbacks were called, therefore it is not asynchronous in a strict sense. TODO: filter

Specified by:
search in interface ConnectorInstance
Throws:
CommunicationException
GenericFrameworkException


Copyright © 2011 evolveum. All Rights Reserved.