From b950929b7cd224c32eef1b2d3afc32d4c6b53ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Mart=C3=ADn=20Sotuyo=20Dodero?= Date: Mon, 12 Dec 2016 16:32:26 -0300 Subject: [PATCH] Improve symboltable codebase - Move shared code to pmd-core - Allow search methods to stop searching when they want to - If we are looking for a variable declaration, just search among those and not all name declarations - This is roughtly another 10% improvement on symbol table performance --- .../pmd/lang/symboltable/Applier.java | 22 +++++++ .../symboltable/ImageFinderFunction.java | 13 ++-- .../sourceforge/pmd/util/SearchFunction.java | 14 +++++ .../sourceforge/pmd/util/UnaryFunction.java | 8 --- .../pmd/lang/symboltable/ApplierTest.java | 62 +++++++++++++++++++ .../java/ast/ASTVariableDeclaratorId.java | 2 +- .../pmd/lang/java/symboltable/Applier.java | 21 ------- .../pmd/lang/java/symboltable/ClassScope.java | 2 + .../DeclarationFinderFunction.java | 9 ++- .../java/symboltable/ImageFinderFunction.java | 35 ----------- .../pmd/lang/java/symboltable/LocalScope.java | 6 +- .../lang/java/symboltable/MethodScope.java | 2 + .../java/symboltable/SourceFileScope.java | 2 + .../VariableUsageFinderFunction.java | 31 ---------- .../lang/java/symboltable/ApplierTest.java | 41 ------------ .../symboltable/ImageFinderFunctionTest.java | 3 +- .../VariableUsageFinderFunctionTest.java | 45 -------------- .../pmd/lang/plsql/symboltable/Applier.java | 21 ------- .../lang/plsql/symboltable/ClassScope.java | 2 + .../lang/plsql/symboltable/LocalScope.java | 2 + .../lang/plsql/symboltable/MethodScope.java | 2 + .../plsql/symboltable/SourceFileScope.java | 2 + 22 files changed, 132 insertions(+), 215 deletions(-) create mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/Applier.java rename {pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql => pmd-core/src/main/java/net/sourceforge/pmd/lang}/symboltable/ImageFinderFunction.java (67%) create mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/util/SearchFunction.java delete mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/util/UnaryFunction.java create mode 100644 pmd-core/src/test/java/net/sourceforge/pmd/lang/symboltable/ApplierTest.java delete mode 100644 pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/Applier.java delete mode 100644 pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunction.java delete mode 100644 pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunction.java delete mode 100644 pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ApplierTest.java delete mode 100644 pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunctionTest.java delete mode 100644 pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/Applier.java diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/Applier.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/Applier.java new file mode 100644 index 0000000000..e8c93403db --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/Applier.java @@ -0,0 +1,22 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.symboltable; + +import java.util.Iterator; + +import net.sourceforge.pmd.util.SearchFunction; + +public final class Applier { + + private Applier() { + // utility class + } + + public static void apply(SearchFunction f, Iterator i) { + while (i.hasNext() && f.applyTo(i.next())) { + // Nothing to do + } + } +} diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ImageFinderFunction.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/ImageFinderFunction.java similarity index 67% rename from pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ImageFinderFunction.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/ImageFinderFunction.java index ce3a8615db..c681980f17 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ImageFinderFunction.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/ImageFinderFunction.java @@ -1,16 +1,16 @@ /** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd.lang.plsql.symboltable; + +package net.sourceforge.pmd.lang.symboltable; import java.util.HashSet; import java.util.List; import java.util.Set; -import net.sourceforge.pmd.lang.symboltable.NameDeclaration; -import net.sourceforge.pmd.util.UnaryFunction; +import net.sourceforge.pmd.util.SearchFunction; -public class ImageFinderFunction implements UnaryFunction { +public class ImageFinderFunction implements SearchFunction { private Set images = new HashSet<>(); private NameDeclaration decl; @@ -23,10 +23,13 @@ public class ImageFinderFunction implements UnaryFunction { images.addAll(imageList); } - public void applyTo(NameDeclaration nameDeclaration) { + @Override + public boolean applyTo(NameDeclaration nameDeclaration) { if (images.contains(nameDeclaration.getImage())) { decl = nameDeclaration; + return false; } + return true; } public NameDeclaration getDecl() { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/SearchFunction.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/SearchFunction.java new file mode 100644 index 0000000000..3f6cc15de1 --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/SearchFunction.java @@ -0,0 +1,14 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.util; + +public interface SearchFunction { + /** + * Applies the search function over a single element. + * @param o The element to analyze. + * @return True if the search should continue, false otherwhise. + */ + boolean applyTo(E o); +} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/UnaryFunction.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/UnaryFunction.java deleted file mode 100644 index 772d51567e..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/UnaryFunction.java +++ /dev/null @@ -1,8 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ -package net.sourceforge.pmd.util; - -public interface UnaryFunction { - void applyTo(E o); -} diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/symboltable/ApplierTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/symboltable/ApplierTest.java new file mode 100644 index 0000000000..e3dc8558ad --- /dev/null +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/symboltable/ApplierTest.java @@ -0,0 +1,62 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.symboltable; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import net.sourceforge.pmd.util.SearchFunction; + +public class ApplierTest { + + private static class MyFunction implements SearchFunction { + private int numCallbacks = 0; + private final int maxCallbacks; + + MyFunction(int maxCallbacks) { + this.maxCallbacks = maxCallbacks; + } + + @Override + public boolean applyTo(Object o) { + this.numCallbacks++; + return numCallbacks < maxCallbacks; + } + + public int getNumCallbacks() { + return this.numCallbacks; + } + } + + @Test + public void testSimple() { + MyFunction f = new MyFunction(Integer.MAX_VALUE); + List l = new ArrayList<>(); + l.add(new Object()); + l.add(new Object()); + l.add(new Object()); + Applier.apply(f, l.iterator()); + assertEquals(l.size(), f.getNumCallbacks()); + } + + @Test + public void testLimit() { + MyFunction f = new MyFunction(2); + List l = new ArrayList<>(); + l.add(new Object()); + l.add(new Object()); + l.add(new Object()); + Applier.apply(f, l.iterator()); + assertEquals(2, f.getNumCallbacks()); + } + + public static junit.framework.Test suite() { + return new junit.framework.JUnit4TestAdapter(ApplierTest.class); + } +} diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorId.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorId.java index f115438e23..40e37fdc7f 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorId.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorId.java @@ -42,7 +42,7 @@ public class ASTVariableDeclaratorId extends AbstractJavaTypeNode { } public List getUsages() { - return getScope().getDeclarations().get(nameDeclaration); + return getScope().getDeclarations(VariableNameDeclaration.class).get(nameDeclaration); } public void bumpArrayDepth() { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/Applier.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/Applier.java deleted file mode 100644 index ed27ad0c9f..0000000000 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/Applier.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ -package net.sourceforge.pmd.lang.java.symboltable; - -import java.util.Iterator; - -import net.sourceforge.pmd.util.UnaryFunction; - -public final class Applier { - - private Applier() { - // utility class - } - - public static void apply(UnaryFunction f, Iterator i) { - while (i.hasNext()) { - f.applyTo(i.next()); - } - } -} diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java index 114ec2adda..56575adebf 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java @@ -36,6 +36,8 @@ import net.sourceforge.pmd.lang.java.ast.ASTTypeParameter; import net.sourceforge.pmd.lang.java.ast.ASTTypeParameters; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.java.ast.JavaParserTreeConstants; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; import net.sourceforge.pmd.lang.symboltable.Scope; diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/DeclarationFinderFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/DeclarationFinderFunction.java index 247b910e66..63b171b3da 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/DeclarationFinderFunction.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/DeclarationFinderFunction.java @@ -5,9 +5,9 @@ package net.sourceforge.pmd.lang.java.symboltable; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; -import net.sourceforge.pmd.util.UnaryFunction; +import net.sourceforge.pmd.util.SearchFunction; -public class DeclarationFinderFunction implements UnaryFunction { +public class DeclarationFinderFunction implements SearchFunction { private NameOccurrence occurrence; private NameDeclaration decl; @@ -16,10 +16,13 @@ public class DeclarationFinderFunction implements UnaryFunction this.occurrence = occurrence; } - public void applyTo(NameDeclaration nameDeclaration) { + @Override + public boolean applyTo(NameDeclaration nameDeclaration) { if (isDeclaredBefore(nameDeclaration) && isSameName(nameDeclaration)) { decl = nameDeclaration; + return false; } + return true; } private boolean isDeclaredBefore(NameDeclaration nameDeclaration) { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunction.java deleted file mode 100644 index 263d503922..0000000000 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunction.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ -package net.sourceforge.pmd.lang.java.symboltable; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import net.sourceforge.pmd.lang.symboltable.NameDeclaration; -import net.sourceforge.pmd.util.UnaryFunction; - -public class ImageFinderFunction implements UnaryFunction { - - private Set images = new HashSet<>(); - private NameDeclaration decl; - - public ImageFinderFunction(String img) { - images.add(img); - } - - public ImageFinderFunction(List imageList) { - images.addAll(imageList); - } - - public void applyTo(NameDeclaration nameDeclaration) { - if (images.contains(nameDeclaration.getImage())) { - decl = nameDeclaration; - } - } - - public NameDeclaration getDecl() { - return this.decl; - } -} diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/LocalScope.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/LocalScope.java index d6f8d5da64..364a6bfd6b 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/LocalScope.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/LocalScope.java @@ -3,6 +3,7 @@ */ package net.sourceforge.pmd.lang.java.symboltable; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -10,6 +11,7 @@ import java.util.Set; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTName; +import net.sourceforge.pmd.lang.symboltable.Applier; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; @@ -48,10 +50,10 @@ public class LocalScope extends AbstractJavaScope { } public Set findVariableHere(JavaNameOccurrence occurrence) { - Set result = new HashSet<>(); if (occurrence.isThisOrSuper() || occurrence.isMethodOrConstructorInvocation()) { - return result; + return Collections.emptySet(); } + Set result = new HashSet<>(); DeclarationFinderFunction finder = new DeclarationFinderFunction(occurrence); Applier.apply(finder, getVariableDeclarations().keySet().iterator()); if (finder.getDecl() != null) { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/MethodScope.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/MethodScope.java index 91535ab957..c519c4d0f3 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/MethodScope.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/MethodScope.java @@ -11,6 +11,8 @@ import java.util.Set; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTName; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScope.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScope.java index d389369fc0..f84ceaebc9 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScope.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScope.java @@ -13,6 +13,8 @@ import java.util.Set; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTImportDeclaration; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; import net.sourceforge.pmd.lang.symboltable.Scope; diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunction.java deleted file mode 100644 index 7d46e82441..0000000000 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunction.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ -package net.sourceforge.pmd.lang.java.symboltable; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.sourceforge.pmd.lang.symboltable.NameDeclaration; -import net.sourceforge.pmd.lang.symboltable.NameOccurrence; -import net.sourceforge.pmd.util.UnaryFunction; - -public class VariableUsageFinderFunction implements UnaryFunction { - - private Map> results = new HashMap<>(); - - private Map> decls; - - public VariableUsageFinderFunction(Map> decls) { - this.decls = decls; - } - - public void applyTo(NameDeclaration o) { - results.put(o, decls.get(o)); - } - - public Map> getUsed() { - return results; - } -} diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ApplierTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ApplierTest.java deleted file mode 100644 index 1d86485108..0000000000 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ApplierTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ -package net.sourceforge.pmd.lang.java.symboltable; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.List; - -import net.sourceforge.pmd.lang.java.symboltable.Applier; -import net.sourceforge.pmd.util.UnaryFunction; - -import org.junit.Test; - -public class ApplierTest { - - private static class MyFunction implements UnaryFunction { - private boolean gotCallback; - - public void applyTo(Object o) { - this.gotCallback = true; - } - - public boolean gotCallback() { - return this.gotCallback; - } - } - - @Test - public void testSimple() { - MyFunction f = new MyFunction(); - List l = new ArrayList<>(); - l.add(new Object()); - Applier.apply(f, l.iterator()); - assertTrue(f.gotCallback()); - } - - public static junit.framework.Test suite() { - return new junit.framework.JUnit4TestAdapter(ApplierTest.class); - } -} diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunctionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunctionTest.java index 7775f50e71..2992e2fdf6 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunctionTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ImageFinderFunctionTest.java @@ -9,8 +9,7 @@ import java.util.ArrayList; import java.util.List; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; -import net.sourceforge.pmd.lang.java.symboltable.ImageFinderFunction; -import net.sourceforge.pmd.lang.java.symboltable.VariableNameDeclaration; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import org.junit.Test; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunctionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunctionTest.java deleted file mode 100644 index f900329118..0000000000 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableUsageFinderFunctionTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.sourceforge.pmd.lang.java.symboltable; - -import static org.junit.Assert.assertEquals; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; -import net.sourceforge.pmd.lang.java.ast.DummyJavaNode; -import net.sourceforge.pmd.lang.java.symboltable.Applier; -import net.sourceforge.pmd.lang.java.symboltable.JavaNameOccurrence; -import net.sourceforge.pmd.lang.java.symboltable.VariableNameDeclaration; -import net.sourceforge.pmd.lang.java.symboltable.VariableUsageFinderFunction; -import net.sourceforge.pmd.lang.symboltable.NameDeclaration; -import net.sourceforge.pmd.lang.symboltable.NameOccurrence; - -import org.junit.Test; -public class VariableUsageFinderFunctionTest { - - @Test - public void testLookingForUsed() { - ASTVariableDeclaratorId variableDeclarationIdNode = new ASTVariableDeclaratorId(1); - variableDeclarationIdNode.setImage("x"); - VariableNameDeclaration nameDeclaration = new VariableNameDeclaration(variableDeclarationIdNode); - List nameOccurrences = new ArrayList<>(); - nameOccurrences.add(new JavaNameOccurrence(new DummyJavaNode(2), "x")); - - Map> declarations = new HashMap<>(); - declarations.put(nameDeclaration, nameOccurrences); - - List vars = new ArrayList<>(); - vars.add(nameDeclaration); - - VariableUsageFinderFunction f = new VariableUsageFinderFunction(declarations); - Applier.apply(f, vars.iterator()); - Map> p = f.getUsed(); - assertEquals(1, p.size()); - } - - public static junit.framework.Test suite() { - return new junit.framework.JUnit4TestAdapter(VariableUsageFinderFunctionTest.class); - } -} diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/Applier.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/Applier.java deleted file mode 100644 index e593d901f5..0000000000 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/Applier.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ -package net.sourceforge.pmd.lang.plsql.symboltable; - -import java.util.Iterator; - -import net.sourceforge.pmd.util.UnaryFunction; - -public final class Applier { - - private Applier() { - // utility class - } - - public static void apply(UnaryFunction f, Iterator i) { - while (i.hasNext()) { - f.applyTo(i.next()); - } - } -} diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ClassScope.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ClassScope.java index b85183a578..668a99c254 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ClassScope.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/ClassScope.java @@ -15,6 +15,8 @@ import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.plsql.ast.ASTName; import net.sourceforge.pmd.lang.plsql.ast.AbstractPLSQLNode; import net.sourceforge.pmd.lang.symboltable.AbstractScope; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/LocalScope.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/LocalScope.java index 85bd59f80b..a5354305f7 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/LocalScope.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/LocalScope.java @@ -11,6 +11,8 @@ import java.util.Set; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.plsql.ast.ASTName; import net.sourceforge.pmd.lang.symboltable.AbstractScope; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/MethodScope.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/MethodScope.java index 17f7dc3337..63f20026c1 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/MethodScope.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/MethodScope.java @@ -12,6 +12,8 @@ import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.plsql.ast.ASTName; import net.sourceforge.pmd.lang.plsql.ast.AbstractPLSQLNode; import net.sourceforge.pmd.lang.symboltable.AbstractScope; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SourceFileScope.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SourceFileScope.java index de6d4e5ca9..75612fc777 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SourceFileScope.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SourceFileScope.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.lang.plsql.symboltable; import net.sourceforge.pmd.lang.symboltable.AbstractScope; +import net.sourceforge.pmd.lang.symboltable.Applier; +import net.sourceforge.pmd.lang.symboltable.ImageFinderFunction; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence;