@NotThreadSafe public interface ConnectorChangeSet
Connector
.
Note that ModeShape will correctly generate events for all changes to the external system initiated by ModeShape, and therefore the connector should not record any such changes. However, if the external system undergoes changes due to non-ModeShape activities, such changes can/should be captured by the connector so that ModeShape and its clients are notified of these changes. Therefore, the recording of changes will likely be through an asynchronous activity.
When an external system undergoes some independent changes, the connector can obtain
a new change set, call methods on the change set to record events of interest in the property order, and then
publish(Map)
all of the changes that have been recorded. Only when a change set is published
will the repository be notified of the recorded changes and forward them to its appropriate listeners.
Connectors may expose a single document at multiple paths. In such cases the Connector will likely generate events for only one of those paths (i.e., the "primary" path, whatever the Connector chooses to use). However, Connectors may choose to generate mutliple events for single resources available at multiple paths.
It is safe to only call methods on a ConnectorChangeSet
instance from a single thread. If a connector uses multiple
threads to record changes, the connector should either use separate ConnectorChangeSet instances for each thread or (if the
changes from multiple threads are to be recorded as a single atomic set) ensure that it calls the methods in a synchronized
fashion.
Connector.newConnectorChangedSet()
Modifier and Type | Method and Description |
---|---|
void |
nodeCreated(String docId,
String parentDocId,
String path,
Name primaryType,
Set<Name> mixinTypes,
Map<Name,Property> properties)
Signal that a new node resource was created.
|
void |
nodeMoved(String docId,
Name primaryType,
Set<Name> mixinTypes,
String newParentDocId,
String oldParentDocId,
String newPath,
String oldPath)
Signal that a node resource (and all descendants) was moved from one parent to another.
|
void |
nodeRemoved(String docId,
String parentDocId,
String path,
Name primaryType,
Set<Name> mixinTypes,
Name parentPrimaryType,
Set<Name> parentMixinTypes)
Signal that a node resource (and all descendants) was removed.
|
void |
nodeReordered(String docId,
Name primaryType,
Set<Name> mixinTypes,
String parentDocId,
String newPath,
String oldNameSegment,
String reorderedBeforeNameSegment)
Signal that a node resource (and all descendants) was placed into a new location within the same parent.
|
void |
propertyAdded(String docId,
Name nodePrimaryType,
Set<Name> nodeMixinTypes,
String nodePath,
Property property)
Signal that a property was added to a node resource.
|
void |
propertyChanged(String docId,
Name nodePrimaryType,
Set<Name> nodeMixinTypes,
String nodePath,
Property oldProperty,
Property newProperty)
Signal that a property resource was changed on a node resource.
|
void |
propertyRemoved(String docId,
Name nodePrimaryType,
Set<Name> nodeMixinTypes,
String nodePath,
Property property)
Signal that a property was removed from a node resource.
|
void |
publish(Map<String,String> data)
Finish the construction of this change-set and make it available for publication into the repository.
|
void nodeCreated(String docId, String parentDocId, String path, Name primaryType, Set<Name> mixinTypes, Map<Name,Property> properties)
docId
- the connector's identifier for the new node; may not be nullparentDocId
- the connector's identifier for the parent of the new node; may not be nullpath
- the path to the new node; may not be nullprimaryType
- the primary type of the node; may not be nullmixinTypes
- the mixin types of the node; may not be nullproperties
- the properties in the new node, or null if there are nonevoid nodeRemoved(String docId, String parentDocId, String path, Name primaryType, Set<Name> mixinTypes, Name parentPrimaryType, Set<Name> parentMixinTypes)
docId
- the connector's identifier for the removed node; may not be nullparentDocId
- the connector's identifier for the parent of the removed node; may not be nullpath
- the path to the removed node; may not be nullprimaryType
- the primary type of the node; may not be nullmixinTypes
- the mixin types of the node; may not be nullparentPrimaryType
- the primary type of the parent node; may be null if the information is not available.parentMixinTypes
- the mixin types of the parent node; may be null if the information is not availablevoid nodeMoved(String docId, Name primaryType, Set<Name> mixinTypes, String newParentDocId, String oldParentDocId, String newPath, String oldPath)
docId
- the connector's identifier for the node; may not be nullprimaryType
- the primary type of the node; may not be nullmixinTypes
- the mixin types of the node; may not be nullnewParentDocId
- the connector's identifier for the new parent of the node; may not be nulloldParentDocId
- the connector's identifier for the old parent for the node; may not be nullnewPath
- the new path for the node after it has been moved; may not be nulloldPath
- the old path for the node before it was moved; may not be nullvoid nodeReordered(String docId, Name primaryType, Set<Name> mixinTypes, String parentDocId, String newPath, String oldNameSegment, String reorderedBeforeNameSegment)
docId
- the connector's identifier for the node; may not be nullprimaryType
- the primary type of the node; may not be nullmixinTypes
- the mixin types of the node; may not be nullparentDocId
- the connector's identifier for the parent of the node; may not be nullnewPath
- the new path for the node after it has been reordered; may not be nulloldNameSegment
- the name segment (i.e., the name and if applicable the SNS index) for the node before it was
reordered; may not be nullreorderedBeforeNameSegment
- the name segment of the node (in the same parent) before which the node was movedvoid propertyAdded(String docId, Name nodePrimaryType, Set<Name> nodeMixinTypes, String nodePath, Property property)
docId
- the connector's identifier for the node; may not be nullnodePrimaryType
- the primary type of the node; may not be nullnodeMixinTypes
- the mixin types of the node; may not be nullnodePath
- the path of the node that was changedproperty
- the new property, with name and value(s); may not be nullvoid propertyRemoved(String docId, Name nodePrimaryType, Set<Name> nodeMixinTypes, String nodePath, Property property)
docId
- the connector's identifier for the node; may not be nullnodePrimaryType
- the primary type of the node; may not be nullnodeMixinTypes
- the mixin types of the node; may not be nullnodePath
- the path of the node that was changedproperty
- the property that was removed, with name and value(s); may not be nullvoid propertyChanged(String docId, Name nodePrimaryType, Set<Name> nodeMixinTypes, String nodePath, Property oldProperty, Property newProperty)
docId
- the connector's identifier for the node; may not be nullnodePrimaryType
- the primary type of the node; may not be nullnodeMixinTypes
- the mixin types of the node; may not be nullnodePath
- the path of the node that was changedoldProperty
- the old property, with name and value(s); may be nullnewProperty
- the new property, with name and value(s); may not be nullvoid publish(Map<String,String> data)
Once a change set has been published, it may not be used again.
data
- the name-value pairs that may be associated with the set of changes; may be null or emptyCopyright © 2008–2016 JBoss, a division of Red Hat. All rights reserved.