The Identity Connector Framework is intended to help developers write Connectors and to help applications use Connectors. The Connector framework provides a consistent, generic layer between calling applications and the Connector bundles that access target resources. Each target resource may be a system or application in its own right, but a Connector bundle enables any calling application to manage objects that exist on the target resource.

Calling applications use the Connector API; Connector bundles implement the Connector SPI. The Connector API (org.identityconnectors.framework.api) is generic (in that it can be used to manipulate any type of object, not merely accounts), but the Connector API is optimized to support provisioning operations and password management. Every supported operation is synchronous to the caller.

This Toolkit is designed to support development with minimal dependencies of Connector bundles that implement the SPI. The Toolkit allows a developer to implement a Connector bundle and to test the bundle within the Connector framework so there is no need to implement it or test it within the context of each calling application.

The developer of a Connector bundle is expected to implement the operations (Java interfaces within the org.identityconnectors.framework.spi.operations package) that make the most sense for the target resource the developer intends to support. The developer is expected to be appropriately flexible in tolerating inputs, to be as reasonably robust in handling errors, and to throw errors whenever it is prudent to do so. Applications that use Connectors should expect java.lang.IllegalArgumentException, java.lang.UnsupportedOperationException, java.lang.IllegalStateException and other subclasses of java.lang.RuntimeException.

NOTE: The developers of this framework made a conscious decision to throw RuntimeException (and subclasses of RuntimeException) rather than using declared exceptions. The reasoning, briefly, is as follows:

  1. Declared exceptions tend to bloat code (and changes in declared exceptions tend to ripple).
  2. RuntimeException is ubiquitous; any piece of code can throw them (even without intending to do so).
  3. Java defines subclasses of RuntimeException that cover most common situations.

One of the main functions of this framework is to prevent coupling between a Connector and any application that uses it. A calling application will be coupled only to this framework and not to any specific Connector.

  • Each Connector implementation must be easy to replace and should not depend on a specific version of the framework.
  • Because an application may use multiple Connectors, the framework must provide classpath isolation (and may provide JVM isolation at some point in the future).
  • Classpath isolation ensures that there is no issue with conflicting third-party libraries.
Packages 
Package Description
org.identityconnectors.common
Common utilities for all Connectors.
org.identityconnectors.common.event
Classes and interfaces for asynchronous event based monitoring of the connectors.
org.identityconnectors.common.l10n  
org.identityconnectors.common.logging
This package is responsible for providing logging to the Framework and the Connectors.
org.identityconnectors.common.pooling  
org.identityconnectors.common.script  
org.identityconnectors.common.security  
org.identityconnectors.framework
Connectors framework is designed to be simple, extensible, flexible, and comprehensive.
org.identityconnectors.framework.api
The Connector API presents a consistent view of any Connector, regardless of which operations the connector actually implements.
org.identityconnectors.framework.api.operations  
org.identityconnectors.framework.api.operations.batch  
org.identityconnectors.framework.common  
org.identityconnectors.framework.common.exceptions  
org.identityconnectors.framework.common.objects  
org.identityconnectors.framework.common.objects.filter  
org.identityconnectors.framework.common.serializer  
org.identityconnectors.framework.spi
This is the "Service Provider Interface" package.
org.identityconnectors.framework.spi.operations