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.
-
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 Data Store. Note that many of
these classes may also be applicable to other products in certain contexts (e.g.,
for the 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 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 Broker.
-
metrics – This package contains sub-packages and classes that
are primarily applicable to the Metrics Engine.
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 Data Store product. It may include
an optional "notes" element that provides information about using the extension
in the 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 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
Proxy Server itself (e.g., configuration and monitor data). The
"appliesToRemoteContent" element indicates whether the extension will be invoked
for operations passing through the 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 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 Metrics Engine product. The optional
"notes" element may be used to provide additional information about using the
extension in the Metrics Engine.
-
com.unboundid.directory.sdk.broker.internal.IdentityBrokerExtension –
This annotation type indicates that the associated API may be used to create
extensions for use in the Data Broker product. The optional
"notes" element may be used to provide additional information about using the
extension in the Data Broker.
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.
|