* when it performs it's work on the enqueued {@link NetChange NetChange runnable objects}.
*
* @param change the change describing the node to be processed.
*/
protected void processChange( NetChange change ) {
final ExecutionContext context = this.getExecutionContext();
final Logger logger = context.getLogger(getClass());
assert logger != null;
try {
final String repositorySourceName = change.getRepositorySourceName();
final String repositoryWorkspaceName = change.getRepositoryWorkspaceName();
// Figure out which sequencers accept this path,
// and track which output nodes should be passed to each sequencer...
final Path nodePath = change.getPath();
final String nodePathStr = context.getValueFactories().getStringFactory().create(nodePath);
Map<SequencerCall, Set<RepositoryNodePath>> sequencerCalls = new HashMap<SequencerCall, Set<RepositoryNodePath>>();
List<Sequencer> allSequencers = this.sequencerLibrary.getInstances();
List<Sequencer> sequencers = new ArrayList<Sequencer>(allSequencers.size());
for (Sequencer sequencer : allSequencers) {
final SequencerConfig config = sequencer.getConfiguration();
for (SequencerPathExpression pathExpression : config.getPathExpressions()) {
for (Property property : change.getModifiedProperties()) {
Name propertyName = property.getName();
String propertyNameStr = context.getValueFactories().getStringFactory().create(propertyName);
String path = nodePathStr + "/@" + propertyNameStr;
SequencerPathExpression.Matcher matcher = pathExpression.matcher(path);
if (matcher.matches()) {
// String selectedPath = matcher.getSelectedPath();
RepositoryNodePath outputPath = RepositoryNodePath.parse(matcher.getOutputPath(),