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 Directory Server. Note that many of these classes may also be applicable to other products in certain contexts (e.g., for the Directory Proxy Server 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 Directory Proxy Server.

  • sync – This package contains sub-packages and classes that are primarily applicable to the Synchronization 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 Directory Server product. It may include an optional "notes" element that provides information about using the extension in the Directory Server.

  • 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 Directory Proxy Server product, at least in some contexts. The "appliesToLocalContent" element indicates whether the extension will be invoked for operations targeting content local to the Directory Proxy Server itself (e.g., configuration and monitor data). The "appliesToRemoteContent" element indicates whether the extension will be invoked for operations passing through the Directory Proxy Server to one or more backend servers. The optional "notes" element may be used to provide additional information about using the extension in the Directory Proxy Server.

  • 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 Synchronization Server product, at least in some contexts. The "appliesToLocalContent" element indicates whether the extension will be invoked for operations targeting content local to the Synchronization 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 Synchronization Server.

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).

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