diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaFieldSigMask.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaFieldSigMask.java index fa4323fd6b..74b1bbc062 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaFieldSigMask.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaFieldSigMask.java @@ -4,8 +4,6 @@ package net.sourceforge.pmd.lang.java.multifile.signature; -import net.sourceforge.pmd.lang.java.multifile.signature.JavaSignature.Visibility; - /** * Signature mask for a field. Newly created masks cover any field. * @@ -17,76 +15,40 @@ public final class JavaFieldSigMask extends JavaSigMask { private boolean coverStatic = true; - /** - * Creates a field mask covering any field. - */ public JavaFieldSigMask() { - // everything's initialized + super(); } - /** - * Sets the mask to cover final fields. - * - * @return this - */ - public JavaFieldSigMask coverFinal() { + /** Include final fields?. */ + public void coverFinal(boolean coverFinal) { + this.coverFinal = coverFinal; + } + + + public void coverFinal() { this.coverFinal = true; - return this; } - /** - * Forbid final fields. - * - * @return this - */ - public JavaFieldSigMask forbidFinal() { - coverFinal = false; - return this; + public void forbidFinal() { + this.coverFinal = false; } - /** - * Sets the mask to cover static fields. - * - * @return this - */ - public JavaFieldSigMask coverStatic() { + /** Include static fields?. */ + public void coverStatic(boolean coverStatic) { + this.coverStatic = coverStatic; + } + + + public void coverStatic() { this.coverStatic = true; - return this; } - /** - * Forbid abstract operations. - * - * @return this - */ - public JavaFieldSigMask forbidStatic() { - coverStatic = false; - return this; - } - - - @Override - public JavaFieldSigMask coverAllVisibilities() { - super.coverAllVisibilities(); - return this; - } - - - @Override - public JavaFieldSigMask restrictVisibilitiesTo(Visibility... visibilities) { - super.restrictVisibilitiesTo(visibilities); - return this; - } - - - @Override - public JavaFieldSigMask forbid(Visibility... visibilities) { - super.forbid(visibilities); - return this; + public void forbidStatic() { + this.coverStatic = false; } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaOperationSigMask.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaOperationSigMask.java index 8c19af404b..ecd9bb79ae 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaOperationSigMask.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/multifile/signature/JavaOperationSigMask.java @@ -9,7 +9,6 @@ import java.util.EnumSet; import java.util.Set; import net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSignature.Role; -import net.sourceforge.pmd.lang.java.multifile.signature.JavaSignature.Visibility; /** * Signature mask for an operation. Newly created masks cover any operation that is not abstract. @@ -22,20 +21,11 @@ public final class JavaOperationSigMask extends JavaSigMask> implements SigMask private Set visMask = EnumSet.allOf(Visibility.class); - protected JavaSigMask() { - - } - - /** * Sets the mask to cover all visibilities. - * - * @return this */ - public JavaSigMask coverAllVisibilities() { + public void coverAllVisibilities() { visMask.addAll(Arrays.asList(JavaSignature.Visibility.values())); - return this; } @@ -44,13 +36,10 @@ public abstract class JavaSigMask> implements SigMask * Restricts the visibilities covered by the mask to the parameters. * * @param visibilities The visibilities to cover - * - * @return this */ - public JavaSigMask restrictVisibilitiesTo(JavaSignature.Visibility... visibilities) { + public void restrictVisibilitiesTo(JavaSignature.Visibility... visibilities) { visMask.clear(); visMask.addAll(Arrays.asList(visibilities)); - return this; } @@ -58,12 +47,9 @@ public abstract class JavaSigMask> implements SigMask * Forbid all mentioned visibilities. * * @param visibilities The visibilities to forbid - * - * @return this */ - public JavaSigMask forbid(JavaSignature.Visibility... visibilities) { + public void forbid(JavaSignature.Visibility... visibilities) { visMask.removeAll(Arrays.asList(visibilities)); - return this; } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/multifile/ClassStatsTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/multifile/ClassStatsTest.java index a6c3658c0d..9827e9cd04 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/multifile/ClassStatsTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/multifile/ClassStatsTest.java @@ -37,16 +37,18 @@ public class ClassStatsTest { final ClassMirror classMirror = toplevel.getClassMirror(JavaQualifiedName.ofClass(SignatureCountTestData.class)); - final JavaOperationSigMask opSigMask = new JavaOperationSigMask().coverAbstract(); + final FluentOperationSigMask opSigMask = new FluentOperationSigMask(); + + opSigMask.mask.coverAbstract(); opSigMask.restrictRolesTo(Role.STATIC); - assertEquals(4, classMirror.countMatchingOpSigs(opSigMask)); + assertEquals(4, classMirror.countMatchingOpSigs(opSigMask.mask)); assertEquals(2, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PRIVATE))); assertEquals(2, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PUBLIC))); opSigMask.restrictRolesTo(Role.METHOD).coverAllVisibilities(); - assertEquals(6, classMirror.countMatchingOpSigs(opSigMask)); + assertEquals(6, classMirror.countMatchingOpSigs(opSigMask.mask)); assertEquals(1, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PUBLIC))); assertEquals(1, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PRIVATE))); assertEquals(4, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PROTECTED))); @@ -54,26 +56,64 @@ public class ClassStatsTest { opSigMask.restrictRolesTo(Role.GETTER_OR_SETTER).coverAllVisibilities(); - assertEquals(8, classMirror.countMatchingOpSigs(opSigMask)); + assertEquals(8, classMirror.countMatchingOpSigs(opSigMask.mask)); assertEquals(4, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PACKAGE))); assertEquals(4, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PUBLIC))); opSigMask.restrictRolesTo(Role.CONSTRUCTOR).coverAllVisibilities(); - assertEquals(3, classMirror.countMatchingOpSigs(opSigMask)); + assertEquals(3, classMirror.countMatchingOpSigs(opSigMask.mask)); assertEquals(3, classMirror.countMatchingOpSigs(opSigMask.restrictVisibilitiesTo(Visibility.PUBLIC))); - JavaFieldSigMask fieldSigMask = new JavaFieldSigMask(); + FluentFieldSigMask fieldSigMask = new FluentFieldSigMask(); - assertEquals(6, classMirror.countMatchingFieldSigs(fieldSigMask)); + assertEquals(6, classMirror.countMatchingFieldSigs(fieldSigMask.mask)); assertEquals(3, classMirror.countMatchingFieldSigs(fieldSigMask.restrictVisibilitiesTo(Visibility.PUBLIC))); assertEquals(1, classMirror.countMatchingFieldSigs(fieldSigMask.restrictVisibilitiesTo(Visibility.PROTECTED))); assertEquals(2, classMirror.countMatchingFieldSigs(fieldSigMask.restrictVisibilitiesTo(Visibility.PRIVATE))); - assertEquals(0, classMirror.countMatchingFieldSigs(fieldSigMask.restrictVisibilitiesTo(Visibility.PRIVATE).forbidFinal())); + + fieldSigMask.mask.forbidFinal(); + + assertEquals(0, classMirror.countMatchingFieldSigs(fieldSigMask.restrictVisibilitiesTo(Visibility.PRIVATE))); } + // Containers to clear up tests + private class FluentOperationSigMask { + + JavaOperationSigMask mask = new JavaOperationSigMask(); + + + JavaOperationSigMask forbidAbstract() { + mask.coverAbstract(false); + return mask; + } + + + JavaOperationSigMask restrictVisibilitiesTo(Visibility... visibilities) { + mask.restrictVisibilitiesTo(visibilities); + return mask; + } + + + JavaOperationSigMask restrictRolesTo(Role... roles) { + mask.restrictRolesTo(roles); + return mask; + } + } + + private class FluentFieldSigMask { + + JavaFieldSigMask mask = new JavaFieldSigMask(); + + + JavaFieldSigMask restrictVisibilitiesTo(Visibility... visibilities) { + mask.restrictVisibilitiesTo(visibilities); + return mask; + } + } + }