net.shibboleth.metadata.pipeline
Class PipelineDemultiplexerStage<ItemType extends Item<?>>

java.lang.Object
  extended by net.shibboleth.metadata.pipeline.AbstractComponent
      extended by net.shibboleth.metadata.pipeline.BaseStage<ItemType>
          extended by net.shibboleth.metadata.pipeline.PipelineDemultiplexerStage<ItemType>
Type Parameters:
ItemType - type of items upon which this stage operates
All Implemented Interfaces:
Component, Stage<ItemType>

public class PipelineDemultiplexerStage<ItemType extends Item<?>>
extends BaseStage<ItemType>

A stage which, given an item collection and a list of Pipeline and ItemSelectionStrategy pairs, sends the collection of item copies selected by the selection strategy to the associated pipeline. This stage is similar to SplitMergeStage but a given item, or more precisely a copy of it, may end up going to more than one pipeline (or no pipeline).

This stage requires the following properties be set prior to initialization:

If no ExecutorService is provided, one will be created using Executors.newFixedThreadPool(int) with 6 threads. If no ItemCollectionFactory is given, then SimpleItemCollectionFactory is used.


Field Summary
private  ItemCollectionFactory<ItemType> collectionFactory
          Factory used to create the Item collection that is then given to the pipelines.
private  ExecutorService executorService
          Service used to execute the selected and/or non-selected item pipelines.
private  Logger log
          Class logger.
private  List<org.opensaml.util.Pair<Pipeline<ItemType>,ItemSelectionStrategy<ItemType>>> pipelineAndStrategies
          The pipelines through which items are sent and the selection strategy used for that pipeline.
private  boolean waitingForPipelines
          Whether this child waits for all the invoked pipelines to complete before proceeding.
 
Constructor Summary
PipelineDemultiplexerStage()
           
 
Method Summary
protected  void doExecute(Collection<ItemType> itemCollection)
          Performs the stage processing on the given Item collection.
protected  void doInitialize()
          Do the initialization of the component.
 ItemCollectionFactory getCollectionFactory()
          Gets the factory used to create the Item collection that is then given to the pipelines.
 ExecutorService getExecutorService()
          Gets the executor service used to run the selected and non-selected item pipelines.
 List<org.opensaml.util.Pair<Pipeline<ItemType>,ItemSelectionStrategy<ItemType>>> getPipelineAndSelectionStrategies()
          Gets the pipeline and item selection strategies used to demultiplex item collections within this stage.
 boolean isWaitingForPipelines()
          Gets whether this child waits for all the invoked pipelines to complete before proceeding.
 void setCollectionFactory(ItemCollectionFactory<ItemType> factory)
          Sets the factory used to create the Item collection that is then given to the pipelines.
 void setExecutorService(ExecutorService service)
          Sets the executor service used to run the selected and non-selected item pipelines.
 void setPipelineAndSelectionStrategies(List<org.opensaml.util.Pair<Pipeline<ItemType>,ItemSelectionStrategy<ItemType>>> pass)
          Sets the pipeline and item selection strategies used to demultiplex item collections within this stage.
 void setWaitingForPipelines(boolean isWaiting)
          Sets whether this child waits for all the invoked pipelines to complete before proceeding.
 
Methods inherited from class net.shibboleth.metadata.pipeline.BaseStage
execute
 
Methods inherited from class net.shibboleth.metadata.pipeline.AbstractComponent
equals, getId, getInitializationInstant, hashCode, initialize, isInitialized, setId
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.shibboleth.metadata.pipeline.Component
getId, getInitializationInstant, initialize, isInitialized
 

Field Detail

log

private final Logger log
Class logger.


executorService

private ExecutorService executorService
Service used to execute the selected and/or non-selected item pipelines.


waitingForPipelines

private boolean waitingForPipelines
Whether this child waits for all the invoked pipelines to complete before proceeding.


collectionFactory

private ItemCollectionFactory<ItemType extends Item<?>> collectionFactory
Factory used to create the Item collection that is then given to the pipelines.


pipelineAndStrategies

private List<org.opensaml.util.Pair<Pipeline<ItemType extends Item<?>>,ItemSelectionStrategy<ItemType extends Item<?>>>> pipelineAndStrategies
The pipelines through which items are sent and the selection strategy used for that pipeline.

Constructor Detail

PipelineDemultiplexerStage

public PipelineDemultiplexerStage()
Method Detail

getExecutorService

public ExecutorService getExecutorService()
Gets the executor service used to run the selected and non-selected item pipelines.

Returns:
executor service used to run the selected and non-selected item pipelines

setExecutorService

public void setExecutorService(ExecutorService service)
Sets the executor service used to run the selected and non-selected item pipelines.

Parameters:
service - executor service used to run the selected and non-selected item pipelines

isWaitingForPipelines

public boolean isWaitingForPipelines()
Gets whether this child waits for all the invoked pipelines to complete before proceeding.

Returns:
whether this child waits for all the invoked pipelines to complete before proceeding

setWaitingForPipelines

public void setWaitingForPipelines(boolean isWaiting)
Sets whether this child waits for all the invoked pipelines to complete before proceeding.

Parameters:
isWaiting - whether this child waits for all the invoked pipelines to complete before proceeding

getCollectionFactory

public ItemCollectionFactory getCollectionFactory()
Gets the factory used to create the Item collection that is then given to the pipelines.

Returns:
factory used to create the Item collection that is then given to the pipelines

setCollectionFactory

public void setCollectionFactory(ItemCollectionFactory<ItemType> factory)
Sets the factory used to create the Item collection that is then given to the pipelines.

Parameters:
factory - factory used to create the Item collection that is then given to the pipelines

getPipelineAndSelectionStrategies

public List<org.opensaml.util.Pair<Pipeline<ItemType>,ItemSelectionStrategy<ItemType>>> getPipelineAndSelectionStrategies()
Gets the pipeline and item selection strategies used to demultiplex item collections within this stage.

Returns:
pipeline and item selection strategies used to demultiplex item collections within this stage

setPipelineAndSelectionStrategies

public void setPipelineAndSelectionStrategies(List<org.opensaml.util.Pair<Pipeline<ItemType>,ItemSelectionStrategy<ItemType>>> pass)
Sets the pipeline and item selection strategies used to demultiplex item collections within this stage.

Parameters:
pass - pipeline and item selection strategies used to demultiplex item collections within this stage

doExecute

protected void doExecute(Collection<ItemType> itemCollection)
                  throws StageProcessingException
Performs the stage processing on the given Item collection.

Specified by:
doExecute in class BaseStage<ItemType extends Item<?>>
Parameters:
itemCollection - collection to be processed
Throws:
StageProcessingException - thrown if there is an unrecoverable problem when processing the stage

doInitialize

protected void doInitialize()
                     throws ComponentInitializationException
Do the initialization of the component. Default implementation of this method is a no-op. Extending classes should override this method to perform any initialization logic necessary.

Overrides:
doInitialize in class AbstractComponent
Throws:
ComponentInitializationException - throw if there is a problem initializing the component


Copyright © 2009-2011. All Rights Reserved.