UnboundID Server SDK

UnboundID Server SDK Documentation
Getting Started with the UnboundID Server SDK

Server SDK API Structure

All of the classes that make up the UnboundID Server SDK reside within the com.unboundid.directory.sdk package hierarchy. Immediately below this package are sub-packages reflecting the products to which their subordinate classes apply. Those sub-packages are:

  • common – This package contains sub-packages and classes that are applicable to multiple types of products. Note that this does not necessarily mean that they are applicable to all types of products, but are at least equally applicable to more than one product.

  • ds – This package contains sub-packages and classes that are primarily applicable to the Identity Data Store. Note that many of these classes may also be applicable to other products in certain contexts (e.g., for the Identity Proxy when processing operations locally rather than forwarding them on to one or more backend servers).

  • proxy – This package contains sub-packages and classes that are primarily applicable to the Identity Proxy.

  • sync – This package contains sub-packages and classes that are primarily applicable to the Identity Data Sync Server.

Below each of these product-specific packages are sub-packages providing further organization to the classes pertaining to those products. Those sub-packages include:

  • api – Classes and interfaces in this package are meant to be extended or implemented in order to create server extensions.

  • config – Classes and interfaces in this package serve as data types which provide access to information about the server-side configuration for various types of extensions (e.g., the DN of an entry that was used to define an instance of an extension in the server configuration).

  • internal – Classes, interfaces, and annotation types in this package are intended only for internal use in the server SDK itself (e.g., for the purposes of documentation or server-side glue code) and are not intended to be directly accessed by third-party code.

  • operation – Classes and interfaces in this package are intended to serve as data types which provide access to information about operation requests and results. Both read-only and updatable versions of the request and response classes are available for use in different contexts. This sub-package is only included in the common product package.

  • schema – Classes and interfaces in this package are intended to serve as data types which provide access to the server schema. This sub-package is only included in the common product package.

  • scripting – Classes and interfaces in this package are meant to be extended or implemented by extensions written in a dynamic scripting language (limited to Groovy at this time).

  • types – Classes and interfaces in this package are meant to serve as various data types to use when implementing server extensions.

Annotation Types Used in the Server SDK

The server SDK defines a number of annotation types that are primarily intended for documentation purposes. They include:

  • com.unboundid.directory.sdk.ds.internal.DirectoryServerExtension – This annotation type indicates that the associated API may be used to create extensions for use in the Identity Data Store product. It may include an optional "notes" element that provides information about using the extension in the Identity Data Store.

  • com.unboundid.directory.sdk.proxy.internal.DirectoryProxyServerExtension – This annotation type indicates that the associated API may be used to create extensions for use in the Identity Proxy product, at least in some contexts. The "appliesToLocalContent" element indicates whether the extension will be invoked for operations targeting content local to the Identity Proxy itself (e.g., configuration and monitor data). The "appliesToRemoteContent" element indicates whether the extension will be invoked for operations passing through the Identity Proxy to one or more backend servers. The optional "notes" element may be used to provide additional information about using the extension in the Identity Proxy.

  • com.unboundid.directory.sdk.sync.internal.SynchronizationServerExtension – This annotation type indicates that the associated API may be used to create extensions for use in the Identity Data Sync Server product, at least in some contexts. The "appliesToLocalContent" element indicates whether the extension will be invoked for operations targeting content local to the Identity Data Sync Server (e.g., configuration and monitor data). The "appliesToSynchronizedContent" element indicates whether the extension will be invoked for operations that are used to synchronize content between source and destination repositories. The optional "notes" element may be used to provide additional information about using the extension in the Identity Data Sync Server.

  • com.unboundid.directory.sdk.metrics.internal.MetricsEngineExtension – This annotation type indicates that the associated API may be used to create extensions for use in the Metrics Engine product. The optional "notes" element may be used to provide additional information about using the extension in the Metrics Engine.

The server SDK also makes use of annotation types defined in the UnboundID LDAP SDK for Java, which are also primarily intended to help serve as documentation. These annotation types include:

  • com.unboundid.util.Extensible – This annotation type is used to indicate that the associated class or interface may be extended or implemented by third-party code.

  • com.unboundid.util.NotExtensible – This annotation type is used to indicate that the associated class or interface is not intended to be extended or implemented by third-party code. Note that the absence of this annotation type should not be considered implicit permission to extend a non-final class or implement an interface – it should only be considered permissible to do so if the class or interface is marked with the Extensible annotation type.

  • com.unboundid.util.Mutable – This annotation type is used to indicate that interacting with objects of the associated type may alter the state of those objects in some way.

  • com.unboundid.util.NotMutable – This annotation type is used to indicate that interacting with objects of the associated type will not alter the state of those objects.

  • com.unboundid.util.ThreadSafety – This annotation type is used to indicate whether objects of the associated type may be considered threadsafe (that is, whether a given object instance may be accessed concurrently by multiple threads without the need for some form of synchronization).

  • com.unboundid.util.InternalUseOnly – This annotation type is used to indicate whether the associated extension class is considered for internal use only, and therefore should not be accessed directly by the end user. For example, an Plugin extension could use its own MonitorProvider extension in the same bundle to expose monitoring data. This MonitorProvider implementation should be annotated with InternalUseOnly because it is only meant to be used by the Plugin extension and not directly by the end user. Extension classes marked this annotation will not be listed as an included extension in the bundle when using the manage-extension tool.

See the LDAP SDK documentation for additional information about the above annotation types.