@Extensible @SynchronizationServerExtension(appliesToLocalContent=false, appliesToSynchronizedContent=true) @ThreadSafety(level=INTERFACE_THREADSAFE) public abstract class ScriptedSyncPipePlugin extends java.lang.Object implements Reconfigurable<SyncPipePluginConfig>
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 groovy-scripted \ --set "script-class:{class-name}" \ --set "script-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 Groovy class written using this API, 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 script-argument:{name=value}
" option should be
provided multiple times.SyncPipePlugin
Constructor and Description |
---|
ScriptedSyncPipePlugin()
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 to be taken out of service.
|
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.
|
public ScriptedSyncPipePlugin()
initializeSyncPipePlugin
method.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 server in
which this extension is running.config
- The general configuration for this sync pipe plugin
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 void finalizeSyncPipePlugin()
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 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#SKIP_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 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.