diff --git a/archunit/src/main/java/com/tngtech/archunit/lang/conditions/ArchConditions.java b/archunit/src/main/java/com/tngtech/archunit/lang/conditions/ArchConditions.java index 71e4c75784..18faee495e 100644 --- a/archunit/src/main/java/com/tngtech/archunit/lang/conditions/ArchConditions.java +++ b/archunit/src/main/java/com/tngtech/archunit/lang/conditions/ArchConditions.java @@ -841,62 +841,62 @@ public static ArchCondition notBeEnums() { @PublicAPI(usage = ACCESS) public static ArchCondition beTopLevelClasses() { - return ClassKindCondition.BE_TOP_LEVEL_CLASSES; + return BE_TOP_LEVEL_CLASSES; } @PublicAPI(usage = ACCESS) public static ArchCondition notBeTopLevelClasses() { - return not(ClassKindCondition.BE_TOP_LEVEL_CLASSES); + return not(BE_TOP_LEVEL_CLASSES); } @PublicAPI(usage = ACCESS) public static ArchCondition beNestedClasses() { - return ClassKindCondition.BE_NESTED_CLASSES; + return BE_NESTED_CLASSES; } @PublicAPI(usage = ACCESS) public static ArchCondition notBeNestedClasses() { - return not(ClassKindCondition.BE_NESTED_CLASSES); + return not(BE_NESTED_CLASSES); } @PublicAPI(usage = ACCESS) public static ArchCondition beMemberClasses() { - return ClassKindCondition.BE_MEMBER_CLASSES; + return BE_MEMBER_CLASSES; } @PublicAPI(usage = ACCESS) public static ArchCondition notBeMemberClasses() { - return not(ClassKindCondition.BE_MEMBER_CLASSES); + return not(BE_MEMBER_CLASSES); } @PublicAPI(usage = ACCESS) public static ArchCondition beInnerClasses() { - return ClassKindCondition.BE_INNER_CLASSES; + return BE_INNER_CLASSES; } @PublicAPI(usage = ACCESS) public static ArchCondition notBeInnerClasses() { - return not(ClassKindCondition.BE_INNER_CLASSES); + return not(BE_INNER_CLASSES); } @PublicAPI(usage = ACCESS) public static ArchCondition beAnonymousClasses() { - return ClassKindCondition.BE_ANONYMOUS_CLASSES; + return BE_ANONYMOUS_CLASSES; } @PublicAPI(usage = ACCESS) public static ArchCondition notBeAnonymousClasses() { - return not(ClassKindCondition.BE_ANONYMOUS_CLASSES); + return not(BE_ANONYMOUS_CLASSES); } @PublicAPI(usage = ACCESS) public static ArchCondition beLocalClasses() { - return ClassKindCondition.BE_LOCAL_CLASSES; + return BE_LOCAL_CLASSES; } @PublicAPI(usage = ACCESS) public static ArchCondition notBeLocalClasses() { - return not(ClassKindCondition.BE_LOCAL_CLASSES); + return not(BE_LOCAL_CLASSES); } @PublicAPI(usage = ACCESS) @@ -997,6 +997,19 @@ private static String createM return object.getDescription() + " " + message + " in " + object.getSourceCodeLocation(); } + private static final IsConditionByPredicate BE_TOP_LEVEL_CLASSES = + new IsConditionByPredicate<>("a top level class", JavaClass.Predicates.TOP_LEVEL_CLASSES); + private static final IsConditionByPredicate BE_NESTED_CLASSES = + new IsConditionByPredicate<>("a nested class", JavaClass.Predicates.NESTED_CLASSES); + private static final IsConditionByPredicate BE_MEMBER_CLASSES = + new IsConditionByPredicate<>("a member class", JavaClass.Predicates.MEMBER_CLASSES); + private static final IsConditionByPredicate BE_INNER_CLASSES = + new IsConditionByPredicate<>("an inner class", JavaClass.Predicates.INNER_CLASSES); + private static final IsConditionByPredicate BE_ANONYMOUS_CLASSES = + new IsConditionByPredicate<>("an anonymous class", JavaClass.Predicates.ANONYMOUS_CLASSES); + private static final IsConditionByPredicate BE_LOCAL_CLASSES = + new IsConditionByPredicate<>("a local class", JavaClass.Predicates.LOCAL_CLASSES); + private static class HaveOnlyModifiersCondition extends AllAttributesMatchCondition { @@ -1080,34 +1093,6 @@ public void check(JavaClass javaClass, ConditionEvents events) { } } - private static class ClassKindCondition extends ArchCondition { - - private static final ClassKindCondition BE_TOP_LEVEL_CLASSES = - new ClassKindCondition("a top level class", JavaClass.Predicates.TOP_LEVEL_CLASSES); - private static final ClassKindCondition BE_NESTED_CLASSES = new ClassKindCondition("a nested class", JavaClass.Predicates.NESTED_CLASSES); - private static final ClassKindCondition BE_MEMBER_CLASSES = new ClassKindCondition("a member class", JavaClass.Predicates.MEMBER_CLASSES); - private static final ClassKindCondition BE_INNER_CLASSES = new ClassKindCondition("an inner class", JavaClass.Predicates.INNER_CLASSES); - private static final ClassKindCondition BE_ANONYMOUS_CLASSES = - new ClassKindCondition("an anonymous class", JavaClass.Predicates.ANONYMOUS_CLASSES); - private static final ClassKindCondition BE_LOCAL_CLASSES = new ClassKindCondition("a local class", JavaClass.Predicates.LOCAL_CLASSES); - - private final String kind; - private final DescribedPredicate predicate; - - private ClassKindCondition(String kind, DescribedPredicate predicate) { - super("be " + predicate.getDescription()); - this.kind = kind; - this.predicate = predicate; - } - - @Override - public void check(JavaClass javaClass, ConditionEvents events) { - boolean isSatisfied = predicate.apply(javaClass); - String message = createMessage(javaClass, (isSatisfied ? "is" : "is not") + " " + kind); - events.add(new SimpleConditionEvent(javaClass, isSatisfied, message)); - } - } - private static class NumberOfElementsCondition extends ArchCondition { private final DescribedPredicate predicate; private SortedSet allClassNames; @@ -1276,10 +1261,16 @@ public void check(T item, ConditionEvents events) { } private static class IsConditionByPredicate extends ArchCondition { + private final String eventDescription; private final DescribedPredicate predicate; IsConditionByPredicate(DescribedPredicate predicate) { + this(predicate.getDescription(), predicate); + } + + IsConditionByPredicate(String eventDescription, DescribedPredicate predicate) { super(ArchPredicates.be(predicate).getDescription()); + this.eventDescription = eventDescription; this.predicate = predicate.forSubType(); } @@ -1287,7 +1278,7 @@ private static class IsConditionByPredicate