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.
http
– 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 Data Sync Server.
broker
– This package contains sub-packages and classes that
are primarily applicable to the Data Governance Server.
metrics
– This package contains sub-packages and classes that
are primarily applicable to the Data Metrics 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.
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 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
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 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 Data Metrics Server product. The optional
"notes" element may be used to provide additional information about using the
extension in the Data Metrics Server.
com.unboundid.directory.sdk.broker.internal.BrokerExtension
–
This annotation type indicates that the associated API may be used to create
extensions for use in the Data Governance Server product. The optional
"notes" element may be used to provide additional information about using the
extension in the Data Governance 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).
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.