@PublicApi
public interface StructureSyncManager
StructureSyncManager
manages the whole synchronization engine.
There are several synchronizers in the system, provided by <structure-synchronizer>
modules, and each synchronizer may have several instances, represented by SyncInstance
.
Synchronizer instance is a configured synchronizer, installed onto a specific structure. Synchronizer
instances are addressed via unique ID.
This class does not check permissions of the caller.
If the calling code works on behalf of a user, it must check whether
the user has
permission level on the subject structure.
PermissionLevel.ADMIN
Modifier and Type | Method and Description |
---|---|
SyncInstance |
getInstalledSynchronizer(Long instanceId)
Retrieves an instance of installed synchronizer.
|
List<SyncInstance> |
getInstalledSynchronizersForStructure(Long structureId)
Retrieves all synchronizer instances installed for the given structure.
|
SyncInstance |
installSynchronizer(StructureSynchronizer synchronizer,
Long structureId,
Object params,
ApplicationUser user)
Installs a new synchronizer for a structure.
|
long |
installSynchronizerOffline(String moduleKey,
String parameters,
Long structureId,
String ownerKey,
boolean autosyncEnabled)
Installs synchronizer based on the serialized data.
|
boolean |
isAutosyncEnabled(Long instanceId)
Checks if incremental synchronization is enabled for the specified synchronizer
|
void |
resync(Long instanceId,
boolean andEnable,
Long processId)
Starts full synchronization in the specified direction.
|
void |
resyncOnce(StructureSynchronizer synchronizer,
Object params,
Long structureId,
ApplicationUser user,
Long processId)
Runs full resync without installing the synchronizer.
|
void |
setAutosyncEnabled(Long instanceId,
boolean enabled)
Enables or disables the incremental synchronization for the specified synchronizer.
|
void |
uninstallAllSynchronizers()
Disables and uninstalls all synchronizers for all structures.
|
void |
uninstallSynchronizer(Long instanceId)
Disables and uninstalls synchronizer with the specified ID.
|
void |
uninstallSynchronizersForStructure(Long structureId)
Convenience method that disables and uninstalls all synchronizers for the specified structure.
|
SyncInstance |
updateSynchronizer(Long instanceId,
Object params,
ApplicationUser user)
Updates the parameters and/or the owner of an installed synchronizer.
|
@Nullable SyncInstance getInstalledSynchronizer(@Nullable Long instanceId)
instanceId
- the ID of the instance@NotNull List<SyncInstance> getInstalledSynchronizersForStructure(@Nullable Long structureId)
structureId
- the ID of the structure@NotNull SyncInstance installSynchronizer(@NotNull StructureSynchronizer synchronizer, @NotNull Long structureId, @Nullable Object params, @Nullable ApplicationUser user) throws StructureSynchronizerException
setAutosyncEnabled(java.lang.Long, boolean)
or resync(java.lang.Long, boolean, java.lang.Long)
.synchronizer
- the type of the synchronizer to be installedstructureId
- the ID of the structureparams
- synchronization parameters, of the type accepted by the synchronizeruser
- the user account, under which the synchronization will run. null
(anonymous) is not allowedStructureSynchronizerException
- if the synchronizer cannot be installedlong installSynchronizerOffline(@NotNull String moduleKey, @Nullable String parameters, @NotNull Long structureId, @Nullable String ownerKey, boolean autosyncEnabled) throws StructureSynchronizerException
Installs synchronizer based on the serialized data. The effect is the same as
with installSynchronizer(com.almworks.jira.structure.api.sync.StructureSynchronizer, java.lang.Long, java.lang.Object, com.atlassian.jira.user.ApplicationUser)
, but the parameters allow to define synchronizer
without resolving data into the classes required by the installSynchronizer
method.
This method also allows installing a synchronizer that is currently not present
in the system - for example, if a plugin that provides it is disabled. The synchronizer
will be installed but SyncInstance
will not be created until the synchronizer
module is available.
moduleKey
- the full module key of the synchronizer moduleparameters
- serialized parameters (as previously returned by StructureSynchronizer.storeParameters(Object)
).
Note that empty String is treated the same way as null
.structureId
- the ID of the structureownerKey
- user key of the synchronizer ownerautosyncEnabled
- if true, the autosync should be initially enabled for this structureStructureSynchronizerException
- if the synchronizer cannot be installedvoid uninstallSynchronizer(@Nullable Long instanceId)
instanceId
- the ID of the synchronizervoid uninstallAllSynchronizers()
void uninstallSynchronizersForStructure(@Nullable Long structureId)
structureId
- the ID of the structureboolean isAutosyncEnabled(@Nullable Long instanceId)
instanceId
- the ID of the synchronizer instancevoid setAutosyncEnabled(@Nullable Long instanceId, boolean enabled) throws StructureSynchronizerException
instanceId
- the ID of the synchronizer instanceenabled
- if true, the autosync is enabledStructureSynchronizerException
- if the incremental synchronization for this synchronizer cannot be enabledvoid resync(@Nullable Long instanceId, boolean andEnable, @Nullable Long processId) throws StructureSynchronizerException
Starts full synchronization in the specified direction.
instanceId
- the ID of the installed synchronizerandEnable
- if true, incremental synchronization will be enabled right after the resync job is scheduled,
making sure that no changes will be missedprocessId
- if not null, resync progress will be reported via this IDStructureSynchronizerException
- if resync could not be startedvoid resyncOnce(@NotNull StructureSynchronizer synchronizer, @Nullable Object params, @NotNull Long structureId, @Nullable ApplicationUser user, @Nullable Long processId) throws StructureSynchronizerException
Runs full resync without installing the synchronizer. (For example, this is used by Export and Import features.)
Parameters of the appropriate type are required to run the synchronizer. Those are typically
collected from the user via synchronizer module form and created with StructureSynchronizer.buildParametersFromForm(java.util.Map<java.lang.String, ?>, com.atlassian.jira.web.action.JiraWebActionSupport)
or can be created by the custom code which is aware of the class of the synchronizer parameters.
Note that if StructureSynchronizer.storeParameters(Object)
returns an empty String for params
, then
the synchronizer will be called with null
parameters.
synchronizer
- the synchronizer to runparams
- synchronizer parametersstructureId
- the ID of the structureuser
- the user account under which the synchronization should runprocessId
- if not null, resync progress will be reported via this IDStructureSynchronizerException
- if the synchronization could not be started@NotNull SyncInstance updateSynchronizer(@Nullable Long instanceId, @Nullable Object params, @Nullable ApplicationUser user) throws StructureSynchronizerException
instanceId
- the ID of the installed synchronizerparams
- new synchronization parameters, of the type accepted by the synchronizer. If null
or if
StructureSynchronizer.storeParameters(Object)
returns null
or an empty String for the specified object,
the synchronizer will keep using its current parameters.user
- the user account under which this synchronizer will run after the update. If null
,
the synchronizer will keep running under its current accountuser
is not null
or params
are not null
,
otherwise the existing instanceStructureSynchronizerException
- if the synchronizer could not be updatedCopyright © 2024 Tempo Software. All Rights Reserved.