diff --git a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/ipa/slicer/AstJavaSlicer.java b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/ipa/slicer/AstJavaSlicer.java index 3ecf60e1c..e83244ed0 100644 --- a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/ipa/slicer/AstJavaSlicer.java +++ b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/ipa/slicer/AstJavaSlicer.java @@ -35,7 +35,7 @@ import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.SSAMonitorInstruction; import com.ibm.wala.ssa.SSAPutInstruction; import com.ibm.wala.util.CancelException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.Pair; import com.ibm.wala.util.graph.traverse.DFS; @@ -58,7 +58,7 @@ public class AstJavaSlicer extends Slicer { return new AstJavaSlicer().slice(sdg, ss, backward); } - public static Set gatherStatements(CallGraph CG, Collection partialRoots, Filter filter) { + public static Set gatherStatements(CallGraph CG, Collection partialRoots, Predicate filter) { Set result = new HashSet(); for (Iterator ns = DFS.getReachableNodes(CG, partialRoots).iterator(); ns.hasNext();) { CGNode n = ns.next(); @@ -66,7 +66,7 @@ public class AstJavaSlicer extends Slicer { if (nir != null) { SSAInstruction insts[] = nir.getInstructions(); for (int i = 0; i < insts.length; i++) { - if (filter.accepts(insts[i])) { + if (filter.test(insts[i])) { result.add(new NormalStatement(n, i)); } } @@ -77,36 +77,32 @@ public class AstJavaSlicer extends Slicer { } public static Set gatherAssertions(CallGraph CG, Collection partialRoots) { - return gatherStatements(CG, partialRoots, new Filter() { - @Override - public boolean accepts(SSAInstruction o) { + return gatherStatements(CG, partialRoots, new Predicate() { + @Override public boolean test(SSAInstruction o) { return o instanceof AstAssertInstruction; } }); } public static Set gatherMonitors(CallGraph CG, Collection partialRoots) { - return gatherStatements(CG, partialRoots, new Filter() { - @Override - public boolean accepts(SSAInstruction o) { + return gatherStatements(CG, partialRoots, new Predicate() { + @Override public boolean test(SSAInstruction o) { return o instanceof SSAMonitorInstruction; } }); } public static Set gatherWrites(CallGraph CG, Collection partialRoots) { - return gatherStatements(CG, partialRoots, new Filter() { - @Override - public boolean accepts(SSAInstruction o) { + return gatherStatements(CG, partialRoots, new Predicate() { + @Override public boolean test(SSAInstruction o) { return (o instanceof SSAPutInstruction) || (o instanceof SSAArrayStoreInstruction); } }); } public static Set gatherReads(CallGraph CG, Collection partialRoots) { - return gatherStatements(CG, partialRoots, new Filter() { - @Override - public boolean accepts(SSAInstruction o) { + return gatherStatements(CG, partialRoots, new Predicate() { + @Override public boolean test(SSAInstruction o) { return (o instanceof SSAGetInstruction) || (o instanceof SSAArrayLoadInstruction); } }); diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java index 0c83e81ff..6d133989d 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java @@ -126,9 +126,8 @@ public class FlowGraph implements Iterable { GraphReachability optimistic_closure = new GraphReachability( new InvertedGraph(pruned_flowgraph), - new Filter() { - @Override - public boolean accepts(Vertex o) { + new Predicate() { + @Override public boolean test(Vertex o) { return type.isInstance(o); } } @@ -515,9 +514,8 @@ public class FlowGraph implements Iterable { @Override public Collection getReachableInstances(Set roots) { - return DFS.getReachableNodes(this, roots, new Filter() { - @Override - public boolean accepts(Object o) { + return DFS.getReachableNodes(this, roots, new Predicate() { + @Override public boolean test(Object o) { return o instanceof ObjectVertex; } }); diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/ScopeMappingInstanceKeys.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/ScopeMappingInstanceKeys.java index 146beee77..d612a830e 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/ScopeMappingInstanceKeys.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/ScopeMappingInstanceKeys.java @@ -25,7 +25,7 @@ import com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder; import com.ibm.wala.types.TypeReference; import com.ibm.wala.util.collections.CompoundIterator; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.NonNullSingletonIterator; import com.ibm.wala.util.collections.Pair; @@ -140,9 +140,8 @@ abstract public class ScopeMappingInstanceKeys implements InstanceKeyFactory { public Iterator> getCreationSites(CallGraph CG) { return new FilterIterator>( base.getCreationSites(CG), - new Filter>() { - @Override - public boolean accepts(Pair o) { + new Predicate>() { + @Override public boolean test(Pair o) { return o.fst.equals(creator); } }); diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/CAstAbstractLoader.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/CAstAbstractLoader.java index 184ee3933..6babc2375 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/CAstAbstractLoader.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/CAstAbstractLoader.java @@ -27,7 +27,7 @@ import com.ibm.wala.classLoader.IMethod; import com.ibm.wala.classLoader.ModuleEntry; import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.types.TypeName; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.HashSetFactory; @@ -82,9 +82,8 @@ public abstract class CAstAbstractLoader implements IClassLoader { } private Iterator getMessages(final byte severity) { - return new MapIterator>, ModuleEntry>(new FilterIterator>>(errors.entrySet().iterator(), new Filter>>() { - @Override - public boolean accepts(Entry> o) { + return new MapIterator>, ModuleEntry>(new FilterIterator>>(errors.entrySet().iterator(), new Predicate>>() { + @Override public boolean test(Entry> o) { for(Warning w : o.getValue()) { if (w.getLevel() == severity) { return true; diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstFunctions.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstFunctions.java index 9263fc11a..e0e04fa55 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstFunctions.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstFunctions.java @@ -14,15 +14,15 @@ import java.util.Iterator; import java.util.Map; import com.ibm.wala.cast.tree.CAstNode; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.graph.traverse.DFSDiscoverTimeIterator; public class CAstFunctions { - public static CAstNode findIf(CAstNode tree, Filter f) { - if (f.accepts(tree)) { + public static CAstNode findIf(CAstNode tree, Predicate f) { + if (f.test(tree)) { return tree; } else { for (int i = 0; i < tree.getChildCount(); i++) { @@ -79,7 +79,7 @@ public class CAstFunctions { }; } - public static Iterator findAll(CAstNode tree, Filter f) { + public static Iterator findAll(CAstNode tree, Predicate f) { return new FilterIterator(iterateNodes(tree), f); } diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/basic/PathFinderTest.java b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/basic/PathFinderTest.java index da36b9085..244a78948 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/basic/PathFinderTest.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/basic/PathFinderTest.java @@ -16,7 +16,7 @@ import junit.framework.Assert; import org.junit.Test; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.impl.SlowSparseNumberedGraph; import com.ibm.wala.util.graph.traverse.DFSAllPathsFinder; @@ -42,9 +42,8 @@ public class PathFinderTest { } private static DFSAllPathsFinder makeFinder(Graph g, String start, final String end) { - return new DFSAllPathsFinder(g, start, new Filter() { - @Override - public boolean accepts(String o) { + return new DFSAllPathsFinder(g, start, new Predicate() { + @Override public boolean test(String o) { return end.equals(o); } }); diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFCallGraph.java b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFCallGraph.java index 05f6fef93..3c8a8b5dd 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFCallGraph.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFCallGraph.java @@ -32,7 +32,7 @@ import com.ibm.wala.properties.WalaProperties; import com.ibm.wala.types.ClassLoaderReference; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.WalaException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.config.AnalysisScopeReader; import com.ibm.wala.util.debug.Assertions; @@ -194,16 +194,15 @@ public class PDFCallGraph { *
  • {@link LocalPointerKey} * */ - private static class ApplicationLoaderFilter implements Filter { + private static class ApplicationLoaderFilter extends Predicate { - @Override - public boolean accepts(CGNode o) { + @Override public boolean test(CGNode o) { if (o instanceof CGNode) { CGNode n = (CGNode) o; return n.getMethod().getDeclaringClass().getClassLoader().getReference().equals(ClassLoaderReference.Application); } else if (o instanceof LocalPointerKey) { LocalPointerKey l = (LocalPointerKey) o; - return accepts(l.getNode()); + return test(l.getNode()); } else { return false; } diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSDG.java b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSDG.java index 247618582..f8e87415b 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSDG.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSDG.java @@ -34,7 +34,7 @@ import com.ibm.wala.ipa.slicer.Statement; import com.ibm.wala.properties.WalaProperties; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.WalaException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.config.AnalysisScopeReader; import com.ibm.wala.util.debug.Assertions; import com.ibm.wala.util.graph.Graph; @@ -161,9 +161,8 @@ public class PDFSDG { } private static Graph pruneSDG(final SDG sdg) { - Filter f = new Filter() { - @Override - public boolean accepts(Statement s) { + Predicate f = new Predicate() { + @Override public boolean test(Statement s) { if (s.getNode().equals(sdg.getCallGraph().getFakeRootNode())) { return false; } else if (s instanceof MethodExitStatement || s instanceof MethodEntryStatement) { diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSlice.java b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSlice.java index dc5ce877a..4b0a6902a 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSlice.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFSlice.java @@ -45,7 +45,7 @@ import com.ibm.wala.ssa.SSAInvokeInstruction; import com.ibm.wala.types.TypeReference; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.WalaException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.config.AnalysisScopeReader; import com.ibm.wala.util.debug.Assertions; import com.ibm.wala.util.graph.Graph; @@ -244,9 +244,8 @@ public class PDFSlice { * return a view of the sdg restricted to the statements in the slice */ public static Graph pruneSDG(SDG sdg, final Collection slice) { - Filter f = new Filter() { - @Override - public boolean accepts(Statement o) { + Predicate f = new Predicate() { + @Override public boolean test(Statement o) { return slice.contains(o); } }; diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFTypeHierarchy.java b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFTypeHierarchy.java index 681042bd1..9e0aa6f67 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFTypeHierarchy.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/PDFTypeHierarchy.java @@ -25,7 +25,7 @@ import com.ibm.wala.properties.WalaProperties; import com.ibm.wala.types.ClassLoaderReference; import com.ibm.wala.util.WalaException; import com.ibm.wala.util.collections.CollectionFilter; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.config.AnalysisScopeReader; import com.ibm.wala.util.debug.Assertions; import com.ibm.wala.util.graph.Graph; @@ -93,7 +93,7 @@ public class PDFTypeHierarchy { } } - public static Graph pruneGraph(Graph g, Filter f) throws WalaException { + public static Graph pruneGraph(Graph g, Predicate f) throws WalaException { Collection slice = GraphSlicer.slice(g, f); return GraphSlicer.prune(g, new CollectionFilter(slice)); } @@ -102,9 +102,8 @@ public class PDFTypeHierarchy { * Restrict g to nodes from the Application loader */ public static Graph pruneForAppLoader(Graph g) throws WalaException { - Filter f = new Filter() { - @Override - public boolean accepts(IClass c) { + Predicate f = new Predicate() { + @Override public boolean test(IClass c) { return (c.getClassLoader().getReference().equals(ClassLoaderReference.Application)); } }; diff --git a/com.ibm.wala.core/src/com/ibm/wala/analysis/pointers/HeapGraphImpl.java b/com.ibm.wala.core/src/com/ibm/wala/analysis/pointers/HeapGraphImpl.java index cbc3df854..99de4e7d3 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/analysis/pointers/HeapGraphImpl.java +++ b/com.ibm.wala.core/src/com/ibm/wala/analysis/pointers/HeapGraphImpl.java @@ -18,7 +18,7 @@ import com.ibm.wala.ipa.callgraph.propagation.HeapModel; import com.ibm.wala.ipa.callgraph.propagation.InstanceKey; import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis; import com.ibm.wala.ipa.callgraph.propagation.PointerKey; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.NumberedGraph; import com.ibm.wala.util.graph.impl.NumberedNodeIterator; @@ -52,9 +52,8 @@ public abstract class HeapGraphImpl implements HeapGraph< } public Collection getReachableInstances(Set roots) { - Filter f = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate f = new Predicate() { + @Override public boolean test(Object o) { return (o instanceof InstanceKey); } }; diff --git a/com.ibm.wala.core/src/com/ibm/wala/analysis/reflection/java7/MethodHandles.java b/com.ibm.wala.core/src/com/ibm/wala/analysis/reflection/java7/MethodHandles.java index 803970e4e..e4139f823 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/analysis/reflection/java7/MethodHandles.java +++ b/com.ibm.wala.core/src/com/ibm/wala/analysis/reflection/java7/MethodHandles.java @@ -43,7 +43,7 @@ import com.ibm.wala.ssa.SSAPutInstruction; import com.ibm.wala.types.FieldReference; import com.ibm.wala.types.MethodReference; import com.ibm.wala.types.TypeReference; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.MapIterator; @@ -208,7 +208,7 @@ public class MethodHandles { return getIR(node).iterateNewSites(); } - public Iterator iterateFields(CGNode node, Filter filter) { + public Iterator iterateFields(CGNode node, Predicate filter) { return new MapIterator( new FilterIterator(getIR(node).iterateNormalInstructions(), filter), @@ -222,9 +222,8 @@ public class MethodHandles { @Override public Iterator iterateFieldsRead(CGNode node) { - return iterateFields(node, new Filter() { - @Override - public boolean accepts(SSAInstruction o) { + return iterateFields(node, new Predicate() { + @Override public boolean test(SSAInstruction o) { return o instanceof SSAGetInstruction; } }); @@ -232,9 +231,8 @@ public class MethodHandles { @Override public Iterator iterateFieldsWritten(CGNode node) { - return iterateFields(node, new Filter() { - @Override - public boolean accepts(SSAInstruction o) { + return iterateFields(node, new Predicate() { + @Override public boolean test(SSAInstruction o) { return o instanceof SSAPutInstruction; } }); diff --git a/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java b/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java index 231e06271..c8b2bcf51 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java @@ -12,7 +12,7 @@ package com.ibm.wala.dataflow.IFDS; import java.util.Iterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.Iterator2Collection; import com.ibm.wala.util.debug.Assertions; @@ -76,13 +76,13 @@ public class BackwardsSupergraph implements ISupergraph { /** * a filter that accepts only exit nodes from the original graph. */ - private class ExitFilter implements Filter { + private class ExitFilter extends Predicate { /* * @see com.ibm.wala.util.Filter#accepts(java.lang.Object) */ @Override @SuppressWarnings("unchecked") - public boolean accepts(Object o) { + public boolean test(Object o) { return delegate.isExit((T) o); } } @@ -110,17 +110,15 @@ public class BackwardsSupergraph implements ISupergraph { @Override public Iterator getNormalSuccessors(final T ret) { Iterator allPreds = delegate.getPredNodes(ret); - Filter sameProc = new Filter() { - @Override - public boolean accepts(T o) { + Predicate sameProc = new Predicate() { + @Override public boolean test(T o) { // throw out the exit node, which can be a predecessor due to tail recursion. return getProcOf(ret).equals(getProcOf(o)) && !delegate.isExit(o); } }; Iterator sameProcPreds = new FilterIterator(allPreds, sameProc); - Filter notCall = new Filter() { - @Override - public boolean accepts(T o) { + Predicate notCall = new Predicate() { + @Override public boolean test(T o) { return !delegate.isCall(o); } }; diff --git a/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java b/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java index ef9e7cbb9..dae170b2c 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java @@ -38,7 +38,7 @@ import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.analysis.IExplodedBasicBlock; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.debug.Assertions; import com.ibm.wala.util.graph.Graph; @@ -117,9 +117,8 @@ public class ICFGSupergraph implements ISupergraph> getCalledNodes(BasicBlockInContext call) { - final Filter> isEntryFilter = new Filter>() { - @Override - public boolean accepts(BasicBlockInContext o) { + final Predicate> isEntryFilter = new Predicate>() { + @Override public boolean test(BasicBlockInContext o) { return o.isEntryBlock(); } }; diff --git a/com.ibm.wala.core/src/com/ibm/wala/escape/LocalLiveRangeAnalysis.java b/com.ibm.wala.core/src/com/ibm/wala/escape/LocalLiveRangeAnalysis.java index 528da2427..1311f820c 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/escape/LocalLiveRangeAnalysis.java +++ b/com.ibm.wala.core/src/com/ibm/wala/escape/LocalLiveRangeAnalysis.java @@ -21,7 +21,7 @@ import com.ibm.wala.ssa.SSACFG; import com.ibm.wala.ssa.SSACFG.BasicBlock; import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.SSAReturnInstruction; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.collections.Iterator2Collection; import com.ibm.wala.util.debug.Assertions; @@ -57,9 +57,8 @@ public class LocalLiveRangeAnalysis { final Collection uses = findBlocks(ir, du.getUses(v)); // a filter which accepts everything but the block which defs v - Filter notDef = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate notDef = new Predicate() { + @Override public boolean test(Object o) { return (defBlock == null || !defBlock.equals(o)); } }; diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/cha/CHACallGraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/cha/CHACallGraph.java index 5fe066d76..7cd857cde 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/cha/CHACallGraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/cha/CHACallGraph.java @@ -34,7 +34,7 @@ import com.ibm.wala.ssa.IR; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.collections.ComposedIterator; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.HashSetFactory; @@ -144,9 +144,8 @@ public class CHACallGraph extends BasicCallGraph { new MapIterator( new FilterIterator( getPossibleTargets(site), - new Filter() { - @Override - public boolean accepts(IMethod o) { + new Predicate() { + @Override public boolean test(IMethod o) { return !o.isAbstract(); } } @@ -173,9 +172,8 @@ public class CHACallGraph extends BasicCallGraph { public Iterator getPossibleSites(final CGNode src, final CGNode target) { return new FilterIterator(getInterpreter(src).iterateCallSites(src), - new Filter() { - @Override - public boolean accepts(CallSiteReference o) { + new Predicate() { + @Override public boolean test(CallSiteReference o) { return getPossibleTargets(src, o).contains(target); } }); @@ -296,10 +294,9 @@ public class CHACallGraph extends BasicCallGraph { return getPossibleTargets(n, outer).iterator(); } }, - new Filter() { + new Predicate() { private final MutableIntSet nodes = IntSetUtil.make(); - @Override - public boolean accepts(CGNode o) { + @Override public boolean test(CGNode o) { if (nodes.contains(o.getGraphNodeId())) { return false; } else { diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/ExplicitCallGraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/ExplicitCallGraph.java index 14e67d45a..fd574c35e 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/ExplicitCallGraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/ExplicitCallGraph.java @@ -33,7 +33,7 @@ import com.ibm.wala.ssa.ISSABasicBlock; import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.collections.IntMapIterator; @@ -187,9 +187,8 @@ public class ExplicitCallGraph extends BasicCallGraph imp */ protected Iterator getPossibleSites(final CGNode to) { final int n = getCallGraph().getNumber(to); - return new FilterIterator(iterateCallSites(), new Filter() { - @Override - public boolean accepts(Object o) { + return new FilterIterator(iterateCallSites(), new Predicate() { + @Override public boolean test(Object o) { IntSet s = getPossibleTargetNumbers((CallSiteReference) o); return s == null ? false : s.contains(n); } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/PartialCallGraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/PartialCallGraph.java index 8a5dac1d4..2f08b45a0 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/PartialCallGraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/PartialCallGraph.java @@ -21,7 +21,7 @@ import com.ibm.wala.ipa.callgraph.CallGraph; import com.ibm.wala.ipa.callgraph.Context; import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.types.MethodReference; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.graph.Graph; @@ -53,9 +53,8 @@ public class PartialCallGraph extends DelegatingGraph implements CallGra * @param nodes set of nodes that will be included in the new, partial call graph */ public static PartialCallGraph make(final CallGraph cg, final Collection partialRoots, final Collection nodes) { - Graph partialGraph = GraphSlicer.prune(cg, new Filter() { - @Override - public boolean accepts(CGNode o) { + Graph partialGraph = GraphSlicer.prune(cg, new Predicate() { + @Override public boolean test(CGNode o) { return nodes.contains(o); } }); @@ -70,9 +69,8 @@ public class PartialCallGraph extends DelegatingGraph implements CallGra */ public static PartialCallGraph make(CallGraph cg, Collection partialRoots) { final Set nodes = DFS.getReachableNodes(cg, partialRoots); - Graph partialGraph = GraphSlicer.prune(cg, new Filter() { - @Override - public boolean accepts(CGNode o) { + Graph partialGraph = GraphSlicer.prune(cg, new Predicate() { + @Override public boolean test(CGNode o) { return nodes.contains(o); } }); @@ -119,9 +117,8 @@ public class PartialCallGraph extends DelegatingGraph implements CallGra @Override public Iterator iterateNodes(IntSet nodes) { - return new FilterIterator(cg.iterateNodes(nodes), new Filter() { - @Override - public boolean accepts(Object o) { + return new FilterIterator(cg.iterateNodes(nodes), new Predicate() { + @Override public boolean test(Object o) { return containsNode((CGNode) o); } }); diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/AllocationSite.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/AllocationSite.java index 9cfdc5e51..68b92010b 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/AllocationSite.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/AllocationSite.java @@ -18,7 +18,7 @@ import com.ibm.wala.classLoader.NewSiteReference; import com.ibm.wala.ipa.callgraph.CGNode; import com.ibm.wala.ipa.callgraph.CallGraph; import com.ibm.wala.ipa.callgraph.Context; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.MapIterator; import com.ibm.wala.util.collections.Pair; @@ -96,9 +96,8 @@ public class AllocationSite implements InstanceKey { return new MapIterator>( new FilterIterator( CG.getNodes(method.getReference()).iterator(), - new Filter() { - @Override - public boolean accepts(CGNode o) { + new Predicate() { + @Override public boolean test(CGNode o) { return o.getMethod().equals(method); } } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/ConcreteTypeKey.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/ConcreteTypeKey.java index c0c2bd1de..77767916d 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/ConcreteTypeKey.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/ConcreteTypeKey.java @@ -22,7 +22,7 @@ import com.ibm.wala.ssa.IR; import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.types.TypeReference; import com.ibm.wala.util.collections.ComposedIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.MapIterator; import com.ibm.wala.util.collections.Pair; @@ -111,9 +111,8 @@ public final class ConcreteTypeKey implements InstanceKey { return new MapIterator>( new FilterIterator( outer.iterateNewSites(), - new Filter() { - @Override - public boolean accepts(NewSiteReference o) { + new Predicate() { + @Override public boolean test(NewSiteReference o) { return o.getDeclaredType().equals(type.getReference()); } } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PointsToMap.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PointsToMap.java index 7ae2de21c..43dacb586 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PointsToMap.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PointsToMap.java @@ -12,7 +12,7 @@ package com.ibm.wala.ipa.callgraph.propagation; import java.util.Iterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.IVector; import com.ibm.wala.util.collections.SimpleVector; @@ -201,9 +201,8 @@ public class PointsToMap { * @return Iterator */ public Iterator getTransitiveRoots() { - return new FilterIterator(iterateKeys(), new Filter() { - @Override - public boolean accepts(Object o) { + return new FilterIterator(iterateKeys(), new Predicate() { + @Override public boolean test(Object o) { return isTransitiveRoot((PointerKey) o); } }); diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java index c0b9bf5d9..ef549b44d 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java @@ -27,7 +27,7 @@ import com.ibm.wala.fixpoint.UnaryOperator; import com.ibm.wala.fixpoint.UnaryStatement; import com.ibm.wala.util.collections.CompoundIterator; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.collections.SmallMap; @@ -276,9 +276,8 @@ public class PropagationGraph implements IFixedPointSystem @Override @SuppressWarnings("unchecked") public Iterator getStatements() { - Iterator it = new FilterIterator(delegateGraph.iterator(), new Filter() { - @Override - public boolean accepts(Object x) { + Iterator it = new FilterIterator(delegateGraph.iterator(), new Predicate() { + @Override public boolean test(Object x) { return x instanceof AbstractStatement; } }); @@ -769,9 +768,8 @@ public class PropagationGraph implements IFixedPointSystem @Override @SuppressWarnings("unchecked") public Iterator getVariables() { - Iterator it = new FilterIterator(delegateGraph.iterator(), new Filter() { - @Override - public boolean accepts(Object x) { + Iterator it = new FilterIterator(delegateGraph.iterator(), new Predicate() { + @Override public boolean test(Object x) { return x instanceof IVariable; } }); diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/SmushedAllocationSiteInNode.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/SmushedAllocationSiteInNode.java index f8bca489b..ee2611cd0 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/SmushedAllocationSiteInNode.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/SmushedAllocationSiteInNode.java @@ -16,7 +16,7 @@ import com.ibm.wala.classLoader.IClass; import com.ibm.wala.classLoader.NewSiteReference; import com.ibm.wala.ipa.callgraph.CGNode; import com.ibm.wala.ipa.callgraph.CallGraph; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.MapIterator; import com.ibm.wala.util.collections.Pair; @@ -59,9 +59,8 @@ public class SmushedAllocationSiteInNode extends AbstractTypeInNode { return new MapIterator>( new FilterIterator( getNode().iterateNewSites(), - new Filter() { - @Override - public boolean accepts(NewSiteReference o) { + new Predicate() { + @Override public boolean test(NewSiteReference o) { return o.getDeclaredType().equals(getConcreteType().getReference()); } }), diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java index b647a5019..d5972d356 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java @@ -21,7 +21,7 @@ import com.ibm.wala.ipa.callgraph.CallGraph; import com.ibm.wala.ssa.ISSABasicBlock; import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; import com.ibm.wala.ssa.SSAInstruction; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.IndiscriminateFilter; import com.ibm.wala.util.collections.MapIterator; @@ -65,7 +65,7 @@ public abstract class AbstractInterproceduralCFG imple /** * Filter that determines relevant call graph nodes */ - private final Filter relevant; + private final Predicate relevant; /** * a cache: for each node (Basic Block), does that block end in a call? @@ -133,7 +133,7 @@ public abstract class AbstractInterproceduralCFG imple * @param CG the call graph * @param relevant a filter which accepts those call graph nodes which should be included in the I-CFG. Other nodes are ignored. */ - public AbstractInterproceduralCFG(CallGraph CG, Filter relevant) { + public AbstractInterproceduralCFG(CallGraph CG, Predicate relevant) { this.cg = CG; this.relevant = relevant; @@ -146,7 +146,7 @@ public abstract class AbstractInterproceduralCFG imple * @param n */ private void addIntraproceduralNodesAndEdgesForCGNodeIfNeeded(CGNode n) { - if (!cgNodesVisited.contains(cg.getNumber(n)) && relevant.accepts(n)) { + if (!cgNodesVisited.contains(cg.getNumber(n)) && relevant.test(n)) { if (DEBUG_LEVEL > 0) { System.err.println("Adding nodes and edges for cg node: " + n); } @@ -290,7 +290,7 @@ public abstract class AbstractInterproceduralCFG imple if (DEBUG_LEVEL > 1) { System.err.println("got caller " + caller); } - if (relevant.accepts(caller)) { + if (relevant.test(caller)) { addEntryAndExitEdgesToCaller(n, entryBlock, exitBlock, caller); } } @@ -493,7 +493,7 @@ public abstract class AbstractInterproceduralCFG imple boolean irrelevantTargets = false; for (Iterator ts = cg.getPossibleTargets(n, site).iterator(); ts.hasNext();) { CGNode tn = (CGNode) ts.next(); - if (!relevant.accepts(tn)) { + if (!relevant.test(tn)) { if (DEBUG_LEVEL > 1) { System.err.println("Irrelevant target: " + tn); } @@ -834,9 +834,8 @@ public abstract class AbstractInterproceduralCFG imple // a successor node is a return site if it is in the same // procedure, and is not the entry() node. - Filter isReturn = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate isReturn = new Predicate() { + @Override public boolean test(Object o) { BasicBlockInContext other = (BasicBlockInContext) o; return !other.isEntryBlock() && node.equals(other.getNode()); } @@ -856,9 +855,8 @@ public abstract class AbstractInterproceduralCFG imple Iterator it = cfg.getPredNodes(returnBlock.getDelegate()); final CGNode node = returnBlock.getNode(); - Filter dispatchFilter = new Filter() { - @Override - public boolean accepts(T callBlock) { + Predicate dispatchFilter = new Predicate() { + @Override public boolean test(T callBlock) { BasicBlockInContext bb = new BasicBlockInContext(node, callBlock); if (!hasCall(bb, cfg)) { return false; @@ -883,9 +881,8 @@ public abstract class AbstractInterproceduralCFG imple return new FilterIterator>(m, isCall); } - private final Filter> isCall = new Filter>() { - @Override - public boolean accepts(BasicBlockInContext o) { + private final Predicate> isCall = new Predicate>() { + @Override public boolean test(BasicBlockInContext o) { return hasCall(o); } }; diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/ExplodedInterproceduralCFG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/ExplodedInterproceduralCFG.java index 6cff48066..d721e00f2 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/ExplodedInterproceduralCFG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/ExplodedInterproceduralCFG.java @@ -19,7 +19,7 @@ import com.ibm.wala.ssa.IR; import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.analysis.ExplodedControlFlowGraph; import com.ibm.wala.ssa.analysis.IExplodedBasicBlock; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.HashMapFactory; /** @@ -40,7 +40,7 @@ public class ExplodedInterproceduralCFG extends AbstractInterproceduralCFG filter) { + public ExplodedInterproceduralCFG(CallGraph cg, Predicate filter) { super(cg, filter); } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/PrunedCFG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/PrunedCFG.java index 756a39a4f..ef25b2124 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/PrunedCFG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/PrunedCFG.java @@ -21,7 +21,7 @@ import java.util.Set; import com.ibm.wala.cfg.ControlFlowGraph; import com.ibm.wala.cfg.IBasicBlock; import com.ibm.wala.classLoader.IMethod; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.Iterator2Collection; import com.ibm.wala.util.graph.AbstractNumberedGraph; @@ -69,36 +69,32 @@ public class PrunedCFG> extends AbstractNumberedGrap } public Iterator getExceptionalSuccessors(final T N) { - return new FilterIterator(cfg.getExceptionalSuccessors(N).iterator(), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(cfg.getExceptionalSuccessors(N).iterator(), new Predicate() { + @Override public boolean test(T o) { return currentCFGNodes.containsNode(o) && filter.hasExceptionalEdge(N, o); } }); } public Iterator getNormalSuccessors(final T N) { - return new FilterIterator(cfg.getNormalSuccessors(N).iterator(), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(cfg.getNormalSuccessors(N).iterator(), new Predicate() { + @Override public boolean test(T o) { return currentCFGNodes.containsNode(o) && filter.hasNormalEdge(N, o); } }); } public Iterator getExceptionalPredecessors(final T N) { - return new FilterIterator(cfg.getExceptionalPredecessors(N).iterator(), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(cfg.getExceptionalPredecessors(N).iterator(), new Predicate() { + @Override public boolean test(T o) { return currentCFGNodes.containsNode(o) && filter.hasExceptionalEdge(o, N); } }); } public Iterator getNormalPredecessors(final T N) { - return new FilterIterator(cfg.getNormalPredecessors(N).iterator(), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(cfg.getNormalPredecessors(N).iterator(), new Predicate() { + @Override public boolean test(T o) { return currentCFGNodes.containsNode(o) && filter.hasNormalEdge(o, N); } }); @@ -106,9 +102,8 @@ public class PrunedCFG> extends AbstractNumberedGrap @Override public Iterator getSuccNodes(final T N) { - return new FilterIterator(cfg.getSuccNodes(N), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(cfg.getSuccNodes(N), new Predicate() { + @Override public boolean test(T o) { return currentCFGNodes.containsNode(o) && (filter.hasNormalEdge(N, o) || filter.hasExceptionalEdge(N, o)); } }); @@ -131,9 +126,8 @@ public class PrunedCFG> extends AbstractNumberedGrap @Override public Iterator getPredNodes(final T N) { - return new FilterIterator(cfg.getPredNodes(N), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(cfg.getPredNodes(N), new Predicate() { + @Override public boolean test(T o) { return currentCFGNodes.containsNode(o) && (filter.hasNormalEdge(o, N) || filter.hasExceptionalEdge(o, N)); } }); @@ -232,9 +226,8 @@ public class PrunedCFG> extends AbstractNumberedGrap } private Iterator filterNodes(Iterator nodeIterator) { - return new FilterIterator(nodeIterator, new Filter() { - @Override - public boolean accepts(Object o) { + return new FilterIterator(nodeIterator, new Predicate() { + @Override public boolean test(Object o) { return subset.contains(o); } }); diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapReachingDefs.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapReachingDefs.java index fdaaaecb8..1a2ddbc99 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapReachingDefs.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapReachingDefs.java @@ -45,7 +45,7 @@ import com.ibm.wala.ssa.analysis.ExplodedControlFlowGraph; import com.ibm.wala.ssa.analysis.IExplodedBasicBlock; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.CancelRuntimeException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.Iterator2Collection; @@ -645,9 +645,8 @@ public class HeapReachingDefs { return null; } else { // only static fields are actually killed - Filter staticFilter = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate staticFilter = new Predicate() { + @Override public boolean test(Object o) { return o instanceof StaticFieldKey; } }; @@ -656,10 +655,9 @@ public class HeapReachingDefs { if (kill.isEmpty()) { return null; } else { - Filter f = new Filter() { + Predicate f = new Predicate() { // accept any statement which writes a killed location. - @Override - public boolean accepts(Object o) { + @Override public boolean test(Object o) { Statement s = (Statement) o; Collection m = getMod(s, node, heapModel, pa, exclusions); for (PointerKey k : kill) { diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java index f8b817d42..4eec8fa53 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java @@ -52,7 +52,7 @@ import com.ibm.wala.ssa.SSAPhiInstruction; import com.ibm.wala.ssa.SSAPiInstruction; import com.ibm.wala.ssa.SSAReturnInstruction; import com.ibm.wala.types.TypeReference; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.HashSetFactory; @@ -674,9 +674,8 @@ public class PDG implements NumberedGraph { // in reaching defs calculation, exclude heap statements that are // irrelevant. - Filter f = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate f = new Predicate() { + @Override public boolean test(Object o) { if (o instanceof HeapStatement) { HeapStatement h = (HeapStatement) o; return h.getLocation().equals(pk); @@ -767,9 +766,8 @@ public class PDG implements NumberedGraph { * @return Statements representing each return instruction in the ir */ private Collection computeReturnStatements(final IR ir) { - Filter filter = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate filter = new Predicate() { + @Override public boolean test(Object o) { if (o instanceof NormalStatement) { NormalStatement s = (NormalStatement) o; SSAInstruction st = ir.getInstructions()[s.getInstructionIndex()]; diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java index b4a94f77f..663b0a052 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java @@ -17,7 +17,7 @@ import com.ibm.wala.ipa.callgraph.CGNode; import com.ibm.wala.ipa.slicer.Slicer.ControlDependenceOptions; import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.debug.Assertions; import com.ibm.wala.util.graph.Graph; @@ -97,9 +97,8 @@ class SDGSupergraph implements ISupergraph { public Iterator getCalledNodes(Statement call) { switch (call.getKind()) { case NORMAL: - Filter f = new Filter() { - @Override - public boolean accepts(Object o) { + Predicate f = new Predicate() { + @Override public boolean test(Object o) { Statement s = (Statement) o; return isEntry(s); } diff --git a/com.ibm.wala.ide.tests/src/com/ibm/wala/examples/drivers/SWTTypeHierarchy.java b/com.ibm.wala.ide.tests/src/com/ibm/wala/examples/drivers/SWTTypeHierarchy.java index 78edbb101..b5dfc8441 100644 --- a/com.ibm.wala.ide.tests/src/com/ibm/wala/examples/drivers/SWTTypeHierarchy.java +++ b/com.ibm.wala.ide.tests/src/com/ibm/wala/examples/drivers/SWTTypeHierarchy.java @@ -24,7 +24,7 @@ import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.types.ClassLoaderReference; import com.ibm.wala.util.WalaException; import com.ibm.wala.util.collections.CollectionFilter; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.config.AnalysisScopeReader; import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.GraphSlicer; @@ -106,9 +106,8 @@ public class SWTTypeHierarchy { * Restrict g to nodes from the Application loader */ static Graph pruneForAppLoader(Graph g) throws WalaException { - Filter f = new Filter() { - @Override - public boolean accepts(IClass c) { + Predicate f = new Predicate() { + @Override public boolean test(IClass c) { return (c.getClassLoader().getReference().equals(ClassLoaderReference.Application)); } }; @@ -116,9 +115,9 @@ public class SWTTypeHierarchy { } /** - * Remove from a graph g any nodes that are not accepted by a {@link Filter} + * Remove from a graph g any nodes that are not accepted by a {@link Predicate} */ - public static Graph pruneGraph(Graph g, Filter f) throws WalaException { + public static Graph pruneGraph(Graph g, Predicate f) throws WalaException { Collection slice = GraphSlicer.slice(g, f); return GraphSlicer.prune(g, new CollectionFilter(slice)); } diff --git a/com.ibm.wala.ide/src/com/ibm/wala/ide/ui/ViewIFDSLocalAction.java b/com.ibm.wala.ide/src/com/ibm/wala/ide/ui/ViewIFDSLocalAction.java index 3d3d1eae4..f7a2ef04d 100644 --- a/com.ibm.wala.ide/src/com/ibm/wala/ide/ui/ViewIFDSLocalAction.java +++ b/com.ibm.wala.ide/src/com/ibm/wala/ide/ui/ViewIFDSLocalAction.java @@ -24,7 +24,7 @@ import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.SSAPhiInstruction; import com.ibm.wala.ssa.analysis.IExplodedBasicBlock; import com.ibm.wala.util.WalaException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.debug.Assertions; import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.GraphSlicer; @@ -176,9 +176,8 @@ public class ViewIFDSLocalAction extends Action { try { final P proc = getProcedureForSelection(); - Filter filter = new Filter() { - @Override - public boolean accepts(T o) { + Predicate filter = new Predicate() { + @Override public boolean test(T o) { return supergraph.getProcOf(o).equals(proc); } }; diff --git a/com.ibm.wala.util/src/com/ibm/wala/fixedpoint/impl/DefaultFixedPointSystem.java b/com.ibm.wala.util/src/com/ibm/wala/fixedpoint/impl/DefaultFixedPointSystem.java index 338319251..abd03024a 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/fixedpoint/impl/DefaultFixedPointSystem.java +++ b/com.ibm.wala.util/src/com/ibm/wala/fixedpoint/impl/DefaultFixedPointSystem.java @@ -19,7 +19,7 @@ import com.ibm.wala.fixpoint.IFixedPointSystem; import com.ibm.wala.fixpoint.IVariable; import com.ibm.wala.fixpoint.UnaryStatement; import com.ibm.wala.util.collections.EmptyIterator; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.debug.Assertions; @@ -95,9 +95,8 @@ public class DefaultFixedPointSystem> implements IFixedPo @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Iterator getStatements() { - return new FilterIterator(graph.iterator(), new Filter() { - @Override - public boolean accepts(Object x) { + return new FilterIterator(graph.iterator(), new Predicate() { + @Override public boolean test(Object x) { return x instanceof AbstractStatement; } }); @@ -258,9 +257,8 @@ public class DefaultFixedPointSystem> implements IFixedPo @Override public Iterator getVariables() { - return new FilterIterator(graph.iterator(), new Filter() { - @Override - public boolean accepts(T x) { + return new FilterIterator(graph.iterator(), new Predicate() { + @Override public boolean test(T x) { return x instanceof IVariable; } }); diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/CollectionFilter.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/CollectionFilter.java index feb63ebff..218a81697 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/CollectionFilter.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/CollectionFilter.java @@ -12,12 +12,12 @@ package com.ibm.wala.util.collections; import java.util.Collection; - +import com.ibm.wala.util.Predicate; /** * A filter defined by set membership */ -public class CollectionFilter implements Filter { +public class CollectionFilter extends Predicate { private final Collection S; @@ -31,8 +31,7 @@ public class CollectionFilter implements Filter { /* * @see com.ibm.wala.util.Filter#accepts(java.lang.Object) */ - @Override - public boolean accepts(T o) { + @Override public boolean test(T o) { return S.contains(o); } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filter.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filter.java deleted file mode 100644 index d93326b88..000000000 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filter.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 - 2006 IBM Corporation. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package com.ibm.wala.util.collections; - -/** - * Simple interface for an intensional set definition. - */ -@Deprecated -public interface Filter { - /** - * @return true iff o is in the set defined by this filter - */ - public boolean accepts(T o); -} diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterIterator.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterIterator.java index d96095532..026fb2ee6 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterIterator.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterIterator.java @@ -13,6 +13,8 @@ package com.ibm.wala.util.collections; import java.util.Iterator; import java.util.NoSuchElementException; +import com.ibm.wala.util.Predicate; + /** * A FilterIterator filters an Iterator to generate a new one. */ @@ -20,7 +22,7 @@ public class FilterIterator implements java.util.Iterator { final Iterator i; @SuppressWarnings("rawtypes") - final Filter f; + final Predicate f; private T next = null; @@ -31,7 +33,7 @@ public class FilterIterator implements java.util.Iterator { * @param f a filter which defines which elements belong to the generated iterator */ @SuppressWarnings("rawtypes") - public FilterIterator(Iterator i, Filter f) { + public FilterIterator(Iterator i, Predicate f) { if (i == null) { throw new IllegalArgumentException("null i"); } @@ -50,7 +52,7 @@ public class FilterIterator implements java.util.Iterator { private void advance() { while (i.hasNext()) { Object o = i.next(); - if (f.accepts(o)) { + if (f.test(o)) { next = (T) o; return; } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterPredicate.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterPredicate.java index 14a3c2bf7..0f7f9ff28 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterPredicate.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/FilterPredicate.java @@ -18,19 +18,19 @@ import com.ibm.wala.util.Predicate; @Deprecated public class FilterPredicate extends Predicate { - public static FilterPredicate toPredicate(Filter f) { + public static FilterPredicate toPredicate(Predicate f) { return new FilterPredicate(f); } - private final Filter f; + private final Predicate f; - private FilterPredicate(Filter f) { + private FilterPredicate(Predicate f) { this.f = f; } @Override public boolean test(T t) { - return f.accepts(t); + return f.test(t); } } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filtersection.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filtersection.java index 5bac2669c..239d5415a 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filtersection.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/Filtersection.java @@ -10,16 +10,17 @@ *******************************************************************************/ package com.ibm.wala.util.collections; +import com.ibm.wala.util.Predicate; /** * intersection of two filters */ -public class Filtersection implements Filter { - - final private Filter a; - final private Filter b; - - public Filtersection(Filter a, Filter b) { +public class Filtersection extends Predicate { + + final private Predicate a; + final private Predicate b; + + public Filtersection(Predicate a, Predicate b) { this.a = a; this.b = b; if (a == null) { @@ -31,8 +32,8 @@ public class Filtersection implements Filter { } @Override - public boolean accepts(T o) { - return a.accepts(o) && b.accepts(o); + public boolean test(T o) { + return a.test(o) && b.test(o); } } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/IndiscriminateFilter.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/IndiscriminateFilter.java index 7963e8320..7ee95a9bf 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/IndiscriminateFilter.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/IndiscriminateFilter.java @@ -10,12 +10,12 @@ *******************************************************************************/ package com.ibm.wala.util.collections; - +import com.ibm.wala.util.Predicate; /** * A filter that accepts everything. */ -public class IndiscriminateFilter implements Filter { +public class IndiscriminateFilter extends Predicate { public static IndiscriminateFilter singleton() { return new IndiscriminateFilter(); @@ -24,8 +24,7 @@ public class IndiscriminateFilter implements Filter { /* * @see com.ibm.wala.util.Filter#accepts(java.lang.Object) */ - @Override - public boolean accepts(Object o) { + @Override public boolean test(Object o) { return true; } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/IteratorUtil.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/IteratorUtil.java index f9a930d8c..3a9e91876 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/IteratorUtil.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/IteratorUtil.java @@ -13,7 +13,7 @@ package com.ibm.wala.util.collections; import java.util.Iterator; import com.ibm.wala.util.functions.Function; - +import com.ibm.wala.util.Predicate; /** * utilities dealing with Iterators */ @@ -49,9 +49,8 @@ public class IteratorUtil { @SuppressWarnings("deprecation") public static Iterator filter(Iterator iterator, final Class cls) { return new MapIterator( - new FilterIterator(iterator, new Filter() { - @Override - public boolean accepts(T o) { + new FilterIterator(iterator, new Predicate() { + @Override public boolean test(T o) { return cls.isInstance(o); } }), diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/OrFilter.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/OrFilter.java index 963231bde..6eb9eb62c 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/OrFilter.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/OrFilter.java @@ -10,29 +10,30 @@ *******************************************************************************/ package com.ibm.wala.util.collections; +import com.ibm.wala.util.Predicate; + /** * A filter "A or B" */ -public class OrFilter implements Filter { +public class OrFilter extends Predicate { - public static OrFilter createOrFilter(Filter a, Filter b) { + public static OrFilter createOrFilter(Predicate a, Predicate b) { if (a == null || b == null) { throw new IllegalArgumentException("cannot compose null filter"); } return new OrFilter(a, b); } - private final Filter a; - private final Filter b; + private final Predicate a; + private final Predicate b; - private OrFilter(Filter a, Filter b) { + private OrFilter(Predicate a, Predicate b) { this.a = a; this.b = b; } - @Override - public boolean accepts(T o) { - return a.accepts(o) || b.accepts(o); + @Override public boolean test(T o) { + return a.test(o) || b.test(o); } } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphReachability.java b/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphReachability.java index d1a75285e..e6a9e3720 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphReachability.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphReachability.java @@ -24,7 +24,7 @@ import com.ibm.wala.fixpoint.BitVectorVariable; import com.ibm.wala.fixpoint.UnaryOperator; import com.ibm.wala.util.CancelException; import com.ibm.wala.util.MonitorUtil.IProgressMonitor; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.Iterator2Collection; import com.ibm.wala.util.debug.Assertions; @@ -58,7 +58,7 @@ public class GraphReachability { * @param filter "interesting" node definition * @throws IllegalArgumentException if g is null */ - public GraphReachability(Graph g, Filter filter) { + public GraphReachability(Graph g, Predicate filter) { if (g == null) { throw new IllegalArgumentException("g is null"); } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphSlicer.java b/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphSlicer.java index 0028ff087..cccc0d31b 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphSlicer.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/graph/GraphSlicer.java @@ -20,7 +20,7 @@ import java.util.Set; import com.ibm.wala.util.Predicate; import com.ibm.wala.util.WalaException; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.FilterPredicate; import com.ibm.wala.util.collections.HashSetFactory; @@ -61,16 +61,6 @@ public class GraphSlicer { return result; } - - @Deprecated - public static Set slice(Graph g, Filter f){ - return slice(g, FilterPredicate.toPredicate(f)); - } - - @Deprecated - public static Graph prune(final Graph g, final Filter f) { - return prune(g, FilterPredicate.toPredicate(f)); - } /** * Prune a graph to only the nodes accepted by the {@link Predicate} p @@ -181,7 +171,7 @@ public class GraphSlicer { return output; } - public static AbstractGraph project(final Graph G, final Filter fmember) { + public static AbstractGraph project(final Graph G, final Predicate fmember) { final NodeManager nodeManager = new NodeManager() { private int count = -1; @@ -192,7 +182,7 @@ public class GraphSlicer { @Override public boolean containsNode(E N) { - return G.containsNode(N) && fmember.accepts(N); + return G.containsNode(N) && fmember.test(N); } @Override diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/BFSPathFinder.java b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/BFSPathFinder.java index 7ecb4c2b9..ae06d49cb 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/BFSPathFinder.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/BFSPathFinder.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.collections.NonNullSingletonIterator; @@ -44,7 +44,7 @@ public class BFSPathFinder { /** * The Filter which defines the target set of nodes to find */ - final private Filter filter; + final private Predicate filter; /** * an enumeration of all nodes to search from @@ -56,7 +56,7 @@ public class BFSPathFinder { * * @param G the graph whose nodes to enumerate */ - public BFSPathFinder(Graph G, T N, Filter f) { + public BFSPathFinder(Graph G, T N, Predicate f) { if (G == null) { throw new IllegalArgumentException("G is null"); } @@ -83,9 +83,8 @@ public class BFSPathFinder { if (!G.containsNode(src)) { throw new IllegalArgumentException("src is not in graph " + src); } - this.filter = new Filter() { - @Override - public boolean accepts(T o) { + this.filter = new Predicate() { + @Override public boolean test(T o) { return target.equals(o); } }; @@ -108,9 +107,8 @@ public class BFSPathFinder { this.G = G; this.roots = new NonNullSingletonIterator(src); - this.filter = new Filter() { - @Override - public boolean accepts(T o) { + this.filter = new Predicate() { + @Override public boolean test(T o) { return ts.contains(o); } }; @@ -130,9 +128,8 @@ public class BFSPathFinder { } this.G = G; this.roots = sources; - this.filter = new Filter() { - @Override - public boolean accepts(T o) { + this.filter = new Predicate() { + @Override public boolean test(T o) { return target.equals(o); } }; @@ -144,7 +141,7 @@ public class BFSPathFinder { * * @param nodes the set of nodes from which to start searching */ - public BFSPathFinder(Graph G, Iterator nodes, Filter f) { + public BFSPathFinder(Graph G, Iterator nodes, Predicate f) { this.G = G; this.roots = nodes; this.filter = f; @@ -174,7 +171,7 @@ public class BFSPathFinder { if (DEBUG) { System.err.println(("visit " + N)); } - if (filter.accepts(N)) { + if (filter.test(N)) { return makePath(N, history); } Iterator children = getConnected(N); diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFS.java b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFS.java index 2869b5a9e..c2a18fba5 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFS.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFS.java @@ -19,7 +19,7 @@ import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.HashSetFactory; @@ -41,7 +41,7 @@ public class DFS { * @throws IllegalArgumentException if C is null */ @SuppressWarnings("serial") - public static Collection getReachableNodes(final Graph G, Collection C, @SuppressWarnings("rawtypes") final Filter filter) { + public static Collection getReachableNodes(final Graph G, Collection C, @SuppressWarnings("rawtypes") final Predicate filter) { if (C == null) { throw new IllegalArgumentException("C is null"); } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSAllPathsFinder.java b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSAllPathsFinder.java index f7a4514df..3924802e4 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSAllPathsFinder.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSAllPathsFinder.java @@ -13,14 +13,14 @@ package com.ibm.wala.util.graph.traverse; import java.util.Iterator; import java.util.List; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.Pair; import com.ibm.wala.util.graph.Graph; /** * Extends {@link DFSPathFinder} to discover all paths from a set of root nodes - * to nodes passing some {@link Filter}. + * to nodes passing some {@link Predicate}. * * Note that this code performs work that is potentially exponential in the size * of the underlying graph, using exponential space. It most likely won't work @@ -28,20 +28,19 @@ import com.ibm.wala.util.graph.Graph; */ public class DFSAllPathsFinder extends DFSPathFinder { - public DFSAllPathsFinder(Graph G, Iterator nodes, Filter f) { + public DFSAllPathsFinder(Graph G, Iterator nodes, Predicate f) { super(G, nodes, f); } - public DFSAllPathsFinder(Graph G, T N, Filter f) throws IllegalArgumentException { + public DFSAllPathsFinder(Graph G, T N, Predicate f) throws IllegalArgumentException { super(G, N, f); } @Override protected Iterator getConnected(T n) { final List cp = currentPath(); - return new FilterIterator(G.getSuccNodes(n), new Filter() { - @Override - public boolean accepts(T o) { + return new FilterIterator(G.getSuccNodes(n), new Predicate() { + @Override public boolean test(T o) { return ! cp.contains(o); } }); diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSPathFinder.java b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSPathFinder.java index 4a29f071f..a29c9b6b4 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSPathFinder.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/graph/traverse/DFSPathFinder.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Map; import java.util.Stack; -import com.ibm.wala.util.collections.Filter; +import com.ibm.wala.util.Predicate; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.NonNullSingletonIterator; import com.ibm.wala.util.graph.Graph; @@ -39,7 +39,7 @@ public class DFSPathFinder extends Stack { /** * The Filter which defines the target set of nodes to find */ - final private Filter filter; + final private Predicate filter; /** * an enumeration of all nodes to search from @@ -62,7 +62,7 @@ public class DFSPathFinder extends Stack { * @param G the graph whose nodes to enumerate * @throws IllegalArgumentException if G is null */ - public DFSPathFinder(Graph G, T N, Filter f) throws IllegalArgumentException { + public DFSPathFinder(Graph G, T N, Predicate f) throws IllegalArgumentException { if (G == null) { throw new IllegalArgumentException("G is null"); } @@ -80,7 +80,7 @@ public class DFSPathFinder extends Stack { * * @param nodes the set of nodes from which to start searching */ - public DFSPathFinder(Graph G, Iterator nodes, Filter f) { + public DFSPathFinder(Graph G, Iterator nodes, Predicate f) { this.G = G; this.roots = nodes; this.filter = f; @@ -114,7 +114,7 @@ public class DFSPathFinder extends Stack { } while (hasNext()) { T n = peek(); - if (filter.accepts(n)) { + if (filter.test(n)) { List path = currentPath(); advance(); return path;