org.jboss.dna.repository.sequencers
Class StreamSequencerAdapter

java.lang.Object
  extended by org.jboss.dna.repository.sequencers.StreamSequencerAdapter
All Implemented Interfaces:
Component<SequencerConfig>, Sequencer

public class StreamSequencerAdapter
extends Object
implements Sequencer

An adapter class that wraps a StreamSequencer instance to be a Sequencer.

Author:
Randall Hauch, John Verhaeg

Constructor Summary
StreamSequencerAdapter(StreamSequencer streamSequencer)
           
 
Method Summary
 void execute(javax.jcr.Node input, String sequencedPropertyName, NodeChange changes, Set<RepositoryNodePath> outputPaths, JcrExecutionContext execContext, Problems problems)
          Execute the sequencing operation on the supplied node, which has recently been created or changed.
 SequencerConfig getConfiguration()
          Return the configuration for this component, as supplied to the last Component.setConfiguration(ComponentConfig) invocation.
 void setConfiguration(SequencerConfig configuration)
          This method allows the implementation to initialize and configure itself using the supplied ComponentConfig information, and is called prior to any other class to this object.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StreamSequencerAdapter

public StreamSequencerAdapter(StreamSequencer streamSequencer)
Method Detail

getConfiguration

public SequencerConfig getConfiguration()
Return the configuration for this component, as supplied to the last Component.setConfiguration(ComponentConfig) invocation.

Specified by:
getConfiguration in interface Component<SequencerConfig>
Returns:
the configuration, or null if not yet configured

setConfiguration

public void setConfiguration(SequencerConfig configuration)
This method allows the implementation to initialize and configure itself using the supplied ComponentConfig information, and is called prior to any other class to this object. When this method is called, the implementation must maintain a reference to the supplied configuration (which should then be returned in Component.getConfiguration().

Specified by:
setConfiguration in interface Component<SequencerConfig>
Parameters:
configuration - the configuration for the component

execute

public void execute(javax.jcr.Node input,
                    String sequencedPropertyName,
                    NodeChange changes,
                    Set<RepositoryNodePath> outputPaths,
                    JcrExecutionContext execContext,
                    Problems problems)
             throws javax.jcr.RepositoryException,
                    SequencerException
Execute the sequencing operation on the supplied node, which has recently been created or changed. The implementation of this method is responsible for getting sessions, modifying the appropriate nodes, saving any changes made by this sequencer, and closing all sessions (and any other acquired resources), even in the case of exceptions.

The SequencingService determines the sequencers that should be executed by monitoring the changes to one or more workspaces (it is a NodeChangeListener registered with the ObservationService). Changes in those workspaces are aggregated for each transaction, and organized into changes for each node. The SequencingService then determines for each set of changes to a node the set of full paths to the properties that have changed and whether those paths match the sequencer's path expressions. Each path expression produces the path to the output node, and these output paths are accumulated and (with the original node that changed, the node change summary, and other information) supplied to the sequencer via this method.

It is possible that a sequencer is configured to apply to multiple properties on a node. So, in cases where multiple properties are changed on a single node (within a single repository transaction), the sequencer will only be executed once. Also, in such cases the sequencer's configuration may imply multiple output nodes, so it is left to the sequencer to define the behavior in such cases.

Specified by:
execute in interface Sequencer
Parameters:
input - the node that has recently been created or changed; never null
sequencedPropertyName - the name of the property that caused this sequencer to be executed; never null and never empty
changes - the immutable summary of changes that occurred on the input node within the transaction; never null
outputPaths - the paths to the nodes where the sequencing content should be placed; never null and never empty, but the set may contain paths for non-existant nodes or may reference the input node
execContext - the context in which this sequencer is executing; never null
problems - the interface used for recording problems; never null
Throws:
javax.jcr.RepositoryException - if there is a problem while working with the repository
SequencerException - if there is an error in this sequencer


Copyright © 2008-Present JBoss a division of Red Hat. All Rights Reserved.