@Extensible @SynchronizationServerExtension(appliesToLocalContent=false, appliesToSynchronizedContent=true) @ThreadSafety(level=INTERFACE_THREADSAFE) public abstract class SyncPipePlugin extends java.lang.Object implements UnboundIDExtension, Reconfigurable<SyncPipePluginConfig>, ExampleUsageProvider
postMapping
method but not
the preMapping
method. These extensions do not have access to the
Sync Source or Sync Destination.
dsconfig create-sync-pipe-plugin \ --plugin-name "{plugin-name}" \ --type third-party \ --set "extension-class:{class-name}" \ --set "extension-argument:{name=value}"where "{plugin-name}" is the name to use for the sync pipe plugin instance, "{class-name}" is the fully-qualified name of the Java class that extends
com.unboundid.directory.sdk.sync.api.SyncPipePlugin
,
and "{name=value}" represents name-value pairs for any arguments to
provide to the sync pipe plugin. If multiple arguments should be provided to
the sync pipe plugin, then the
"--set extension-argument:{name=value}
" option should be
provided multiple times.ScriptedSyncPipePlugin
Constructor and Description |
---|
SyncPipePlugin()
Creates a new instance of this sync pipe plugin.
|
Modifier and Type | Method and Description |
---|---|
ResultCode |
applyConfiguration(SyncPipePluginConfig config,
ArgumentParser parser,
java.util.List<java.lang.String> adminActionsRequired,
java.util.List<java.lang.String> messages)
Attempts to apply the configuration from the provided argument parser to
this extension.
|
void |
defineConfigArguments(ArgumentParser parser)
Updates the provided argument parser to define any configuration arguments
which may be used by this extension.
|
void |
finalizeSyncPipePlugin()
Performs any cleanup which may be necessary when this sync pipe plugin
is taken out of service.
|
java.util.Map<java.util.List<java.lang.String>,java.lang.String> |
getExamplesArgumentSets()
Retrieves a map containing examples of configurations that may be used for
this extension.
|
abstract java.lang.String[] |
getExtensionDescription()
Retrieves a human-readable description for this extension.
|
abstract java.lang.String |
getExtensionName()
Retrieves a human-readable name for this extension.
|
void |
initializeSyncPipePlugin(SyncServerContext serverContext,
SyncPipePluginConfig config,
ArgumentParser parser)
Initializes this sync pipe plugin.
|
boolean |
isConfigurationAcceptable(SyncPipePluginConfig config,
ArgumentParser parser,
java.util.List<java.lang.String> unacceptableReasons)
Indicates whether the configuration represented by the provided argument
parser is acceptable for use by this extension.
|
PostStepResult |
postMapping(Entry sourceEntry,
Entry equivalentDestinationEntry,
SyncOperation operation)
This method is called immediately after the attributes and DN in
the source entry are mapped into the equivalent destination entry.
|
PreStepResult |
preMapping(Entry sourceEntry,
Entry equivalentDestinationEntry,
SyncOperation operation)
This method is called immediately before the attributes and DN in
the source entry are mapped into the equivalent destination entry.
|
java.lang.String |
toString()
Retrieves a string representation of this sync pipe plugin.
|
abstract void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this sync pipe plugin to the provided
buffer.
|
public SyncPipePlugin()
initializeSyncPipePlugin
method.public abstract java.lang.String getExtensionName()
getExtensionName
in interface UnboundIDExtension
public abstract java.lang.String[] getExtensionDescription()
getExtensionDescription
in interface UnboundIDExtension
null
or an empty array if no description should be available.public void defineConfigArguments(ArgumentParser parser) throws ArgumentException
defineConfigArguments
in interface Configurable
parser
- The argument parser to be updated with the configuration
arguments which may be used by this extension.ArgumentException
- If a problem is encountered while updating the
provided argument parser.public void initializeSyncPipePlugin(SyncServerContext serverContext, SyncPipePluginConfig config, ArgumentParser parser) throws LDAPException
serverContext
- A handle to the server context for the
Data Sync Server in which this extension is
running. Extensions should typically store this
in a class member.config
- The general configuration for this proxy
transformation.parser
- The argument parser which has been initialized from
the configuration for this sync pipe plugin.LDAPException
- If a problem occurs while initializing this sync
pipe plugin.public boolean isConfigurationAcceptable(SyncPipePluginConfig config, ArgumentParser parser, java.util.List<java.lang.String> unacceptableReasons)
isConfigurationAcceptable
in interface Reconfigurable<SyncPipePluginConfig>
config
- The general configuration for this extension.parser
- The argument parser that has been used to
parse the proposed configuration for this
extension.unacceptableReasons
- A list to which messages may be added to
provide additional information about why the
provided configuration is not acceptable.true
if the configuration in the provided argument parser
appears to be acceptable, or false
if not.public ResultCode applyConfiguration(SyncPipePluginConfig config, ArgumentParser parser, java.util.List<java.lang.String> adminActionsRequired, java.util.List<java.lang.String> messages)
applyConfiguration
in interface Reconfigurable<SyncPipePluginConfig>
config
- The general configuration for this extension.parser
- The argument parser that has been used to
parse the new configuration for this
extension.adminActionsRequired
- A list to which messages may be added to
provide additional information about any
additional administrative actions that may
be required to apply some of the
configuration changes.messages
- A list to which messages may be added to
provide additional information about the
processing performed by this method.SUCCESS
should be
used to indicate that all processing completed successfully. Any
other result will indicate that a problem occurred during
processing.public void finalizeSyncPipePlugin()
public PreStepResult preMapping(Entry sourceEntry, Entry equivalentDestinationEntry, SyncOperation operation)
This method is typically used to either filter out certain changes
(by returning PreStepResult.ABORT_OPERATION
) or to manipulate the
source entry before it is converted into an equivalent destination entry.
Attributes that will not otherwise be affected by attribute mapping
can be set in equivalentDestinationEntry
. Although, due to the
possibility of being overwritten in the mapping phase, manipulation of
equivalentDestinationEntry
is typically reserved for the
postMapping(com.unboundid.ldap.sdk.Entry, com.unboundid.ldap.sdk.Entry, com.unboundid.directory.sdk.sync.types.SyncOperation)
method.
The set of source attributes that should be synchronized at the destination
can be manipulated by calling
SyncOperation.addModifiedSourceAttribute(java.lang.String)
and
SyncOperation.removeModifiedSourceAttribute(java.lang.String)
on
operation
.
Additional steps must be taken if this plugin adds destination attributes
in equivalentDestinationEntry
that need to be modified at the
destination. For operations with an operation type of
SyncOperationType.CREATE
,
any updates made to
equivalentDestinationEntry
will be included in the
entry created at the destination. However, for operations with an
operation type of
SyncOperationType.MODIFY
,
destination attributes
added by this plugin that need to be modified must be updated
explicitly by calling
SyncOperation.addModifiedDestinationAttribute(java.lang.String)
.
With the exception of aborting changes or skipping the mapping step
completely, most plugins will not need to override this method since
the postMapping(com.unboundid.ldap.sdk.Entry, com.unboundid.ldap.sdk.Entry, com.unboundid.directory.sdk.sync.types.SyncOperation)
method has access to the fully mapped destination
entry.
sourceEntry
- The entry that was fetched from the
source.equivalentDestinationEntry
- The destination entry that is
equivalent to the source. This entry
will be empty except for any
modifications that have been performed
by other sync pipe plugins.operation
- The operation that is being
synchronized.PreStepResult#3SKIP_CURRENT_STEP
should only be returned
if this plugin takes responsibility for fully constructing the
equivalent destination entry.public PostStepResult postMapping(Entry sourceEntry, Entry equivalentDestinationEntry, SyncOperation operation)
This method is typically used to manipulate the equivalent destination
entry before these necessary changes are calculated. It can also be used
to filter out certain changes (by returning
PostStepResult.ABORT_OPERATION
), but this is typically done in
the preMapping(com.unboundid.ldap.sdk.Entry, com.unboundid.ldap.sdk.Entry, com.unboundid.directory.sdk.sync.types.SyncOperation)
method.
The set of source attributes that should be synchronized at the destination
can be manipulated by calling
SyncOperation.addModifiedSourceAttribute(java.lang.String)
and
SyncOperation.removeModifiedSourceAttribute(java.lang.String)
on
operation
.
Additional steps must be taken if this plugin adds destination attributes
in equivalentDestinationEntry
that need to be modified at the
destination. For operations with an operation type of
SyncOperationType.CREATE
,
any updates made to
equivalentDestinationEntry
will be included in the
entry created at the destination. However, for operations with an
operation type of
SyncOperationType.MODIFY
,
destination attributes
added by this plugin that need to be modified must be updated
explicitly by calling
SyncOperation.addModifiedDestinationAttribute(java.lang.String)
.
With the exception of aborting changes or skipping the mapping step
completely, most plugins will override this method instead of
preMapping(com.unboundid.ldap.sdk.Entry, com.unboundid.ldap.sdk.Entry, com.unboundid.directory.sdk.sync.types.SyncOperation)
because this method has access to the fully mapped
destination entry.
sourceEntry
- The entry that was fetched from the
source.equivalentDestinationEntry
- The destination entry that is
equivalent to the source. This entry
will include all attributes mapped
from the source entry.operation
- The operation that is being
synchronized.public final java.lang.String toString()
toString
in class java.lang.Object
public abstract void toString(java.lang.StringBuilder buffer)
buffer
- The buffer to which the string representation should be
appended.public java.util.Map<java.util.List<java.lang.String>,java.lang.String> getExamplesArgumentSets()
getExamplesArgumentSets
in interface ExampleUsageProvider
null
or empty if there should
not be any example argument sets.