dentityconnectors.framework.0.2.source-code.overview.html Maven / Gradle / Ivy
The Sun Connector Toolkit 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:
- Declared exceptions tend to bloat code (and changes in declared exceptions tend to ripple).
RuntimeException
is ubiquitous; any piece of code can throw them (even without intending to do so).
- 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.
The design for Connectors derives from requirements of the Sun Identity Manager product.
Sun Identity Manager currently supports remote management of target resources through its Resource Adapter technology.
Sun Identity Manager and its deployers have developed more than seventy Resource Adapters for enterprise customers
who needed provisioning solutions for their heterogeneous environments.
Connectors represent the next generation of this technology.
Connectors are designed to minimize coupling, to maximize re-use, and to harness the power of open-source development
to achieve best-of-breed solutions.