Remove fluent API for sigmasks
This commit is contained in:
@ -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<JavaFieldSignature> {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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<JavaOperationSignatu
|
||||
private boolean coverAbstract = false;
|
||||
|
||||
|
||||
/**
|
||||
* Creates an operation sig mask that covers any non-abstract operation.
|
||||
*/
|
||||
public JavaOperationSigMask() {
|
||||
// everything's initialized
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the mask to cover all roles.
|
||||
*/
|
||||
public JavaOperationSigMask coverAllRoles() {
|
||||
public void coverAllRoles() {
|
||||
roleMask.addAll(Arrays.asList(JavaOperationSignature.Role.values()));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@ -44,10 +34,9 @@ public final class JavaOperationSigMask extends JavaSigMask<JavaOperationSignatu
|
||||
*
|
||||
* @param roles The roles to cover
|
||||
*/
|
||||
public JavaOperationSigMask restrictRolesTo(JavaOperationSignature.Role... roles) {
|
||||
public void restrictRolesTo(JavaOperationSignature.Role... roles) {
|
||||
roleMask.clear();
|
||||
roleMask.addAll(Arrays.asList(roles));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@ -56,50 +45,28 @@ public final class JavaOperationSigMask extends JavaSigMask<JavaOperationSignatu
|
||||
*
|
||||
* @param roles The roles to forbid
|
||||
*/
|
||||
public JavaOperationSigMask forbid(JavaOperationSignature.Role... roles) {
|
||||
public void forbid(JavaOperationSignature.Role... roles) {
|
||||
roleMask.removeAll(Arrays.asList(roles));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the mask to cover abstract operations.
|
||||
*/
|
||||
public JavaOperationSigMask coverAbstract() {
|
||||
this.coverAbstract = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Forbid abstract operations.
|
||||
* Forbid all mentioned visibilities.
|
||||
*
|
||||
* @return this
|
||||
* @param coverAbstract The visibilities to forbid
|
||||
*/
|
||||
public JavaOperationSigMask forbidAbstract() {
|
||||
coverAbstract = false;
|
||||
return this;
|
||||
public void coverAbstract(boolean coverAbstract) {
|
||||
this.coverAbstract = coverAbstract;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public JavaOperationSigMask coverAllVisibilities() {
|
||||
super.coverAllVisibilities();
|
||||
return this;
|
||||
public void coverAbstract() {
|
||||
this.coverAbstract = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public JavaOperationSigMask restrictVisibilitiesTo(Visibility... visibilities) {
|
||||
super.restrictVisibilitiesTo(visibilities);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public JavaOperationSigMask forbid(Visibility... visibilities) {
|
||||
super.forbid(visibilities);
|
||||
return this;
|
||||
public void forbidAbstract() {
|
||||
this.coverAbstract = false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,19 +24,11 @@ public abstract class JavaSigMask<T extends JavaSignature<?>> implements SigMask
|
||||
private Set<JavaSignature.Visibility> visMask = EnumSet.allOf(Visibility.class);
|
||||
|
||||
|
||||
protected JavaSigMask() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the mask to cover all visibilities.
|
||||
*
|
||||
* @return this
|
||||
*/
|
||||
public JavaSigMask<T> coverAllVisibilities() {
|
||||
public void coverAllVisibilities() {
|
||||
visMask.addAll(Arrays.asList(JavaSignature.Visibility.values()));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@ -44,13 +36,10 @@ public abstract class JavaSigMask<T extends JavaSignature<?>> implements SigMask
|
||||
* Restricts the visibilities covered by the mask to the parameters.
|
||||
*
|
||||
* @param visibilities The visibilities to cover
|
||||
*
|
||||
* @return this
|
||||
*/
|
||||
public JavaSigMask<T> 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<T extends JavaSignature<?>> implements SigMask
|
||||
* Forbid all mentioned visibilities.
|
||||
*
|
||||
* @param visibilities The visibilities to forbid
|
||||
*
|
||||
* @return this
|
||||
*/
|
||||
public JavaSigMask<T> forbid(JavaSignature.Visibility... visibilities) {
|
||||
public void forbid(JavaSignature.Visibility... visibilities) {
|
||||
visMask.removeAll(Arrays.asList(visibilities));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user