Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/strategy/StrategyComposite.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/strategy/StrategyComposite.java240
1 files changed, 0 insertions, 240 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/strategy/StrategyComposite.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/strategy/StrategyComposite.java
deleted file mode 100644
index c7842c038..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/strategy/StrategyComposite.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2008 Oracle Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.common.internal.strategy;
-
-import java.util.Iterator;
-
-import org.eclipse.jst.jsf.common.JSFCommonPlugin;
-
-/**
- * A composite strategy whos role is to iterate through a number of child
- * stategies until one returns a valid value for an input.
- *
- * @author cbateman
- *
- * @param <INPUT>
- * @param <OUTPUT>
- * @param <RESULTOUTPUT>
- * @param <IDTYPE>
- * @param <STRATEGYTYPE>
- */
-public abstract class StrategyComposite<INPUT, OUTPUT, RESULTOUTPUT, IDTYPE, STRATEGYTYPE extends IIdentifiableStrategy<INPUT, OUTPUT, IDTYPE>>
-implements ISimpleStrategy<INPUT, RESULTOUTPUT>
-{
- private final AbstractCompositionStrategy<INPUT, OUTPUT, RESULTOUTPUT, STRATEGYTYPE> _compositionStrategy;
-
- /**
- * @param compositionStrategy
- */
- protected StrategyComposite(
- final AbstractCompositionStrategy<INPUT, OUTPUT, RESULTOUTPUT, STRATEGYTYPE> compositionStrategy)
- {
- _compositionStrategy = compositionStrategy;
- }
-
- /**
- * Default constructor: composite returns the first value found.
- */
- protected StrategyComposite()
- {
- // by default, the composition strategy selects the first value
- this(
- new DefaultCompositionStrategy<INPUT, OUTPUT, RESULTOUTPUT, STRATEGYTYPE>());
- }
-
- public final RESULTOUTPUT perform(final INPUT input)
- {
- final Iterator<STRATEGYTYPE> sIt = getIterator();
-
- RESULTOUTPUT result = getNoResult();
- boolean finishedComposing = false;
-
- EXECUTE_LOOP: while (sIt.hasNext())
- {
- final STRATEGYTYPE strategy = sIt.next();
- try
- {
- finishedComposing = _compositionStrategy
- .compose(new CompositionArguments<INPUT, OUTPUT, STRATEGYTYPE>(
- strategy, input));
- // returns true if we are done composing
- if (finishedComposing)
- {
- result = _compositionStrategy.getComposedResult();
- break EXECUTE_LOOP;
- }
- } catch (final Exception e)
- {
- JSFCommonPlugin.log(e);
- }
- }
-
- if (finishedComposing)
- {
- return result;
- }
- return getNoResult();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jst.jsf.common.internal.strategy.ISimpleStrategy#getNoResult
- * ()
- */
- public abstract RESULTOUTPUT getNoResult();
-
- /**
- * @return an iterator that will return the next strategy to be executed
- */
- public abstract Iterator<STRATEGYTYPE> getIterator();
-
- /**
- * @author cbateman
- * @param <INPUT>
- * @param <OUTPUT>
- * @param <RESULTOUTPUT>
- * @param <STRATEGY>
- */
- public abstract static class AbstractCompositionStrategy<INPUT, OUTPUT, RESULTOUTPUT, STRATEGY extends ISimpleStrategy<INPUT, OUTPUT>>
- implements ISimpleStrategy<CompositionArguments<INPUT, OUTPUT, STRATEGY>, Boolean>
- {
- private final Boolean _noResultValue;
-
- /**
- *
- */
- protected AbstractCompositionStrategy()
- {
- _noResultValue = null;
- reset();
- }
-
- /**
- * @param input
- * @return true if composing is finished based on the input, false
- * otherwise
- * @throws Exception
- */
- public abstract boolean compose(CompositionArguments<INPUT, OUTPUT, STRATEGY> input) throws Exception;
-
- @SuppressWarnings("boxing")
- public final Boolean perform(final CompositionArguments<INPUT, OUTPUT, STRATEGY> input) throws Exception
- {
- return compose(input);
- }
-
- /**
- * @return the result of composing.
- */
- public abstract RESULTOUTPUT getComposedResult();
-
- public Boolean getNoResult()
- {
- return _noResultValue;
- }
-
- /**
- * Clear any composed result and make strategy reusable as if it were
- * newly constructed. This method is only called automatically at construction.
- *
- * Owners should call to control the contents of their result list.
- */
- public abstract void reset();
- }
-
- /**
- * The default composition strategy. This causes the first strategy that returns
- * a non-NoResult value to have it's value returned.
- *
- * @param <INPUT>
- * @param <OUTPUT>
- * @param <RESULTOUTPUT>
- * @param <STRATEGY>
- */
- public final static class DefaultCompositionStrategy<INPUT, OUTPUT, RESULTOUTPUT, STRATEGY extends ISimpleStrategy<INPUT, OUTPUT>>
- extends AbstractCompositionStrategy<INPUT, OUTPUT, RESULTOUTPUT, STRATEGY>
- {
- private RESULTOUTPUT _result;
-
- /**
- *
- */
- public DefaultCompositionStrategy()
- {
- super();
- }
-
- @Override
- public boolean compose(final CompositionArguments<INPUT, OUTPUT, STRATEGY> arg) throws Exception
- {
- final OUTPUT result = arg.getStrategy().perform(arg.getInput());
- if (result != arg.getStrategy().getNoResult())
- {
- _result = (RESULTOUTPUT)result;
- return true;
- }
- return false;
- }
-
- @Override
- public RESULTOUTPUT getComposedResult()
- {
- return _result;
- }
-
- @Override
- public void reset()
- {
- _result = null;
- }
- }
-
- /**
- * Bundle values needed by the composing strategies into a single arg object.
- *
- * @param <INPUT>
- * @param <OUTPUT>
- * @param <STRATEGY>
- */
- public final static class CompositionArguments<INPUT, OUTPUT, STRATEGY extends ISimpleStrategy<INPUT, OUTPUT>>
- {
- private final STRATEGY _strategy;
- private final INPUT _input;
-
- /**
- * @param strategy
- * @param input
- */
- public CompositionArguments(final STRATEGY strategy, final INPUT input)
- {
- _strategy = strategy;
- _input = input;
- }
-
- /**
- * @return the strategy
- */
- public STRATEGY getStrategy()
- {
- return _strategy;
- }
-
- /**
- * @return the input
- */
- public INPUT getInput()
- {
- return _input;
- }
- }
-}

Back to the top