| package org.eclipse.jst.jsf.common.internal.strategy; |
| |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.Iterator; |
| |
| /** |
| * A simple concrete implementation that uses a constructor provided values |
| * to implement abstract methods. |
| * |
| * @author cbateman |
| * |
| * @param <INPUT> |
| * @param <OUTPUT> |
| * @param <RESULTTYPE> |
| * @param <IDTYPE> |
| * @param <STRATEGYTYPE> |
| */ |
| public class SimpleStrategyComposite<INPUT, OUTPUT, RESULTTYPE, IDTYPE, STRATEGYTYPE extends IIdentifiableStrategy<INPUT,OUTPUT,IDTYPE>> extends |
| StrategyComposite<INPUT, OUTPUT, RESULTTYPE, IDTYPE, STRATEGYTYPE> |
| { |
| |
| private final RESULTTYPE _noResultValue; |
| private final Collection<STRATEGYTYPE> _strategies; |
| |
| /** |
| * Use the list of strategies and null as the no result value. |
| * @param strategies |
| */ |
| public SimpleStrategyComposite(final Collection<STRATEGYTYPE> strategies) |
| { |
| this(strategies, (RESULTTYPE) null); |
| } |
| /** |
| * Use the list of strategies and the provided no result value. |
| * @param strategies |
| * @param noResultValue |
| */ |
| public SimpleStrategyComposite(final Collection<STRATEGYTYPE> strategies, final RESULTTYPE noResultValue) |
| { |
| super(); |
| _strategies = strategies; |
| _noResultValue = noResultValue; |
| } |
| |
| /** |
| * Use the provided strategies, composition strategy and null for the no result value |
| * @param strategies |
| * @param compositionStrategy |
| */ |
| public SimpleStrategyComposite(final Collection<STRATEGYTYPE> strategies, |
| final AbstractCompositionStrategy<INPUT, OUTPUT, RESULTTYPE, STRATEGYTYPE> compositionStrategy) |
| { |
| this(strategies, null, compositionStrategy); |
| } |
| |
| /** |
| * Use the provided strategies, composition strategy and null for the no result value |
| * @param strategies |
| * @param noResultValue |
| * @param compositionStrategy |
| */ |
| public SimpleStrategyComposite(final Collection<STRATEGYTYPE> strategies, final RESULTTYPE noResultValue, |
| final AbstractCompositionStrategy<INPUT, OUTPUT, RESULTTYPE, STRATEGYTYPE> compositionStrategy) |
| { |
| super(compositionStrategy); |
| _strategies = strategies; |
| _noResultValue = noResultValue; |
| } |
| |
| @Override |
| public RESULTTYPE getNoResult() |
| { |
| return _noResultValue; |
| } |
| |
| @Override |
| public Iterator<STRATEGYTYPE> getIterator() |
| { |
| return Collections.unmodifiableCollection(_strategies).iterator(); |
| } |
| |
| } |