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/finder/VisitorMatcher.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/finder/VisitorMatcher.java117
1 files changed, 0 insertions, 117 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/finder/VisitorMatcher.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/finder/VisitorMatcher.java
deleted file mode 100644
index 9182e7ee8..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/finder/VisitorMatcher.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.eclipse.jst.jsf.common.internal.finder;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * A matcher finder that uses a visitor to traverse its INPUT and match values
- * using its matchers. An optional value resolver can be used to get the
- * matching value used.
- *
- * INPUT need not implement it's own visitation interface. Rather, an instance
- * of MatchingVisitor must be provided to handle this.
- *
- * @author cbateman
- * @param <INPUT>
- * @param <VISITTYPE>
- * @param <IDTYPE>
- *
- */
-public class VisitorMatcher<INPUT, VISITTYPE, IDTYPE> extends
- AbstractMatcher<INPUT, Collection<? extends VISITTYPE>, IDTYPE>
-{
- private final MatchingAcceptor _acceptor;
-
- /**
- * @param id
- * @param displayName
- * @param acceptor
- * @param matchers
- */
- public VisitorMatcher(IDTYPE id, String displayName,
- final MatchingAcceptor<INPUT, VISITTYPE> acceptor,
- final List<? extends IMatcher> matchers)
- {
- super(id, displayName, Collections.EMPTY_LIST, matchers);
- _acceptor = acceptor;
- }
-
- @Override
- public Collection<? extends VISITTYPE> perform(final INPUT input) throws Exception
- {
- MatchingVisitor visitor = new MatchingVisitor(getMatchers());
- _acceptor.accept(input, visitor);
- return visitor.getFoundMatches();
- }
-
- /**
- * Call visit on each VISITTYPE. Sub-classes must provide implementations of
- * getInputChildren and getVisitableChildren to control what gets visited
- * from the INPUT root.
- *
- * @param <INPUT>
- * @param <VISITTYPE>
- */
- public abstract static class MatchingAcceptor<INPUT, VISITTYPE>
- {
- private void accept(final INPUT input,
- final MatchingVisitor<VISITTYPE> visitor)
- {
- final Collection<? extends VISITTYPE> inputChildren = getInputChildren(input);
- accept(visitor, inputChildren);
- }
-
- private void accept(final MatchingVisitor<VISITTYPE> visitor,
- final Collection<? extends VISITTYPE> inputChildren)
- {
- for (final VISITTYPE visitable : inputChildren)
- {
- visitor.visit(visitable);
- accept(visitor, getVisitableChildren(visitable));
- }
- }
-
- /**
- * @param inputType
- * @return the first level children of INPUT to be visited.
- */
- protected abstract Collection<? extends VISITTYPE> getInputChildren(
- INPUT inputType);
-
- /**
- * @param visitType
- * @return the visitable children of visitType.
- */
- protected abstract Collection<? extends VISITTYPE> getVisitableChildren(
- VISITTYPE visitType);
- }
-
- private static final class MatchingVisitor<VISITTYPE>
- {
- private final List<IMatcher> _matchers;
- private final List<VISITTYPE> _foundMatches = new ArrayList<VISITTYPE>();
- public MatchingVisitor(final List<IMatcher> matcher)
- {
- _matchers = matcher;
- }
-
- public void visit(final VISITTYPE visitable)
- {
- MATCH_LOOP: for (final IMatcher matcher : _matchers)
- {
- if (matcher.matches(visitable))
- {
- _foundMatches.add(visitable);
- break MATCH_LOOP;
- }
- }
- }
-
- protected final List<VISITTYPE> getFoundMatches()
- {
- return _foundMatches;
- }
- }
-}

Back to the top