net.shibboleth.metadata.pipeline
Class SplitMergeStage<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.SplitMergeStage<ItemType>
Type Parameters:
ItemType - type of items upon which this stage operates
All Implemented Interfaces:
Component, Stage<ItemType>

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

A stage which splits a given collection and passes selected items to one pipeline and non-selected items to another. The selected and non-selected item pipelines are executed via the set ExecutorService and operate on collections that contains clones of the (non-)selected items.

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. If one or the other pipeline is null then no objects will be passed to it (obviously).


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  CollectionMergeStrategy mergeStrategy
          Strategy used to merge all the joined pipeline results in to the final Item collection.
private  Pipeline<ItemType> nonselectedItemPipeline
          Pipeline that receives the non-selected items.
private  Pipeline<ItemType> selectedItemPipeline
          Pipeline that receives the selected items.
private  ItemSelectionStrategy<ItemType> selectionStrategy
          Strategy used to split the given item collection.
 
Constructor Summary
SplitMergeStage()
           
 
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.
protected  Future<Collection<? extends Item>> executePipeline(Pipeline<ItemType> pipeline, Collection<ItemType> items)
          Executes a pipeline.
 ItemCollectionFactory getCollectionFactory()
          Gets the factory used to create the Item collection that is then given to the pipelines.
 CollectionMergeStrategy getCollectionMergeStrategy()
          Gets the strategy used to merge all the joined pipeline results in to the final Item collection.
 ExecutorService getExecutorService()
          Gets the executor service used to run the selected and non-selected item pipelines.
 Pipeline<ItemType> getNonselectedItemPipeline()
          Gets the pipeline that receives the non-selected items.
 Pipeline<ItemType> getSelectedItemPipeline()
          Gets the pipeline that receives the selected items.
 ItemSelectionStrategy<ItemType> getSelectionStrategy()
          Gets the strategy used to split the given item collection.
 void setCollectionFactory(ItemCollectionFactory<ItemType> factory)
          Sets the factory used to create the Item collection that is then given to the pipelines.
 void setCollectionMergeStrategy(CollectionMergeStrategy strategy)
          Sets the strategy used to merge all the joined pipeline results in to the final Item collection.
 void setExecutorService(ExecutorService service)
          Sets the executor service used to run the selected and non-selected item pipelines.
 void setNonselectedItemPipeline(Pipeline<ItemType> pipeline)
          Sets the pipeline that receives the non-selected items.
 void setSelectedItemPipeline(Pipeline<ItemType> pipeline)
          Sets the pipeline that receives the selected items.
 void setSelectionStrategy(ItemSelectionStrategy<ItemType> strategy)
          Sets the strategy used to split the given item collection.
 
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.


collectionFactory

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


selectionStrategy

private ItemSelectionStrategy<ItemType extends Item<?>> selectionStrategy
Strategy used to split the given item collection.


selectedItemPipeline

private Pipeline<ItemType extends Item<?>> selectedItemPipeline
Pipeline that receives the selected items.


nonselectedItemPipeline

private Pipeline<ItemType extends Item<?>> nonselectedItemPipeline
Pipeline that receives the non-selected items.


mergeStrategy

private CollectionMergeStrategy mergeStrategy
Strategy used to merge all the joined pipeline results in to the final Item collection.

Constructor Detail

SplitMergeStage

public SplitMergeStage()
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

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

getSelectionStrategy

public ItemSelectionStrategy<ItemType> getSelectionStrategy()
Gets the strategy used to split the given item collection.

Returns:
strategy used to split the given item collection

setSelectionStrategy

public void setSelectionStrategy(ItemSelectionStrategy<ItemType> strategy)
Sets the strategy used to split the given item collection.

Parameters:
strategy - strategy used to split the given item collection, never null

getSelectedItemPipeline

public Pipeline<ItemType> getSelectedItemPipeline()
Gets the pipeline that receives the selected items.

Returns:
pipeline that receives the selected items

setSelectedItemPipeline

public void setSelectedItemPipeline(Pipeline<ItemType> pipeline)
Sets the pipeline that receives the selected items.

Parameters:
pipeline - pipeline that receives the selected items

getNonselectedItemPipeline

public Pipeline<ItemType> getNonselectedItemPipeline()
Gets the pipeline that receives the non-selected items.

Returns:
pipeline that receives the non-selected items

setNonselectedItemPipeline

public void setNonselectedItemPipeline(Pipeline<ItemType> pipeline)
Sets the pipeline that receives the non-selected items.

Parameters:
pipeline - pipeline that receives the non-selected items

getCollectionMergeStrategy

public CollectionMergeStrategy getCollectionMergeStrategy()
Gets the strategy used to merge all the joined pipeline results in to the final Item collection.

Returns:
strategy used to merge all the joined pipeline results in to the final Item collection, never null

setCollectionMergeStrategy

public void setCollectionMergeStrategy(CollectionMergeStrategy strategy)
Sets the strategy used to merge all the joined pipeline results in to the final Item collection.

Parameters:
strategy - strategy used to merge all the joined pipeline results in to the final Item collection, never null

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

executePipeline

protected Future<Collection<? extends Item>> executePipeline(Pipeline<ItemType> pipeline,
                                                             Collection<ItemType> items)
Executes a pipeline.

Parameters:
pipeline - the pipeline, may be null
items - the collections of items
Returns:
the token representing the background execution of the pipeline

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.