Skip to content

Commit f145cbd

Browse files
committed
Review: Pulled the common "beStatic", ... methods up to AbstractMembersShouldInternal (analogously to MembersThat). Also extracted the conditions to ArchConditions to be consistent with the rest (like bePublic(), etc.)
Signed-off-by: Peter Gafert <[email protected]>
1 parent ca18b17 commit f145cbd

File tree

4 files changed

+46
-50
lines changed

4 files changed

+46
-50
lines changed

archunit/src/main/java/com/tngtech/archunit/lang/conditions/ArchConditions.java

+26-5
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@
5252
import com.tngtech.archunit.core.domain.properties.HasAnnotations;
5353
import com.tngtech.archunit.core.domain.properties.HasModifiers;
5454
import com.tngtech.archunit.core.domain.properties.HasName;
55-
import com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation;
5655
import com.tngtech.archunit.core.domain.properties.HasOwner.Functions.Get;
5756
import com.tngtech.archunit.core.domain.properties.HasOwner.Predicates.With;
57+
import com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation;
5858
import com.tngtech.archunit.core.domain.properties.HasThrowsClause;
5959
import com.tngtech.archunit.lang.ArchCondition;
6060
import com.tngtech.archunit.lang.ConditionEvents;
@@ -90,6 +90,7 @@
9090
import static com.tngtech.archunit.core.domain.JavaConstructor.CONSTRUCTOR_NAME;
9191
import static com.tngtech.archunit.core.domain.JavaMember.Predicates.declaredIn;
9292
import static com.tngtech.archunit.core.domain.JavaModifier.FINAL;
93+
import static com.tngtech.archunit.core.domain.JavaModifier.STATIC;
9394
import static com.tngtech.archunit.core.domain.properties.CanBeAnnotated.Predicates.annotatedWith;
9495
import static com.tngtech.archunit.core.domain.properties.CanBeAnnotated.Predicates.metaAnnotatedWith;
9596
import static com.tngtech.archunit.core.domain.properties.HasModifiers.Predicates.modifier;
@@ -522,22 +523,22 @@ public static <HAS_NAME extends HasName & HasDescription & HasSourceCodeLocation
522523

523524
@PublicAPI(usage = ACCESS)
524525
public static ArchCondition<JavaClass> resideInAPackage(final String packageIdentifier) {
525-
return new DoesConditionByPredicate(JavaClass.Predicates.resideInAPackage(packageIdentifier));
526+
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideInAPackage(packageIdentifier));
526527
}
527528

528529
@PublicAPI(usage = ACCESS)
529530
public static ArchCondition<JavaClass> resideInAnyPackage(String... packageIdentifiers) {
530-
return new DoesConditionByPredicate(JavaClass.Predicates.resideInAnyPackage(packageIdentifiers));
531+
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideInAnyPackage(packageIdentifiers));
531532
}
532533

533534
@PublicAPI(usage = ACCESS)
534535
public static ArchCondition<JavaClass> resideOutsideOfPackage(String packageIdentifier) {
535-
return new DoesConditionByPredicate(JavaClass.Predicates.resideOutsideOfPackage(packageIdentifier));
536+
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideOutsideOfPackage(packageIdentifier));
536537
}
537538

538539
@PublicAPI(usage = ACCESS)
539540
public static ArchCondition<JavaClass> resideOutsideOfPackages(String... packageIdentifiers) {
540-
return new DoesConditionByPredicate(JavaClass.Predicates.resideOutsideOfPackages(packageIdentifiers));
541+
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideOutsideOfPackages(packageIdentifiers));
541542
}
542543

543544
@PublicAPI(usage = ACCESS)
@@ -595,6 +596,26 @@ public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCo
595596
return not(ArchConditions.<HAS_MODIFIERS>haveModifier(JavaModifier.PRIVATE)).as("not be private");
596597
}
597598

599+
@PublicAPI(usage = ACCESS)
600+
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> beStatic() {
601+
return ArchConditions.<HAS_MODIFIERS>haveModifier(STATIC).as("be static");
602+
}
603+
604+
@PublicAPI(usage = ACCESS)
605+
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> notBeStatic() {
606+
return not(ArchConditions.<HAS_MODIFIERS>haveModifier(STATIC).as("be static"));
607+
}
608+
609+
@PublicAPI(usage = ACCESS)
610+
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> beFinal() {
611+
return ArchConditions.<HAS_MODIFIERS>haveModifier(FINAL).as("be final");
612+
}
613+
614+
@PublicAPI(usage = ACCESS)
615+
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> notBeFinal() {
616+
return not(ArchConditions.<HAS_MODIFIERS>haveModifier(FINAL).as("be final"));
617+
}
618+
598619
@PublicAPI(usage = ACCESS)
599620
public static ArchCondition<JavaClass> haveOnlyFinalFields() {
600621
return new HaveOnlyFinalFieldsCondition();

archunit/src/main/java/com/tngtech/archunit/lang/syntax/AbstractMembersShouldInternal.java

+20
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,26 @@ public SELF notBePrivate() {
119119
return addCondition(ArchConditions.notBePrivate());
120120
}
121121

122+
// only applicable to fields and methods; therefore not exposed via MembersShould
123+
public SELF beStatic() {
124+
return addCondition(ArchConditions.beStatic());
125+
}
126+
127+
// only applicable to fields and methods; therefore not exposed via MembersShould
128+
public SELF notBeStatic() {
129+
return addCondition(ArchConditions.notBeStatic());
130+
}
131+
132+
// only applicable to fields and methods; therefore not exposed via MembersShould
133+
public SELF beFinal() {
134+
return addCondition(ArchConditions.beFinal());
135+
}
136+
137+
// only applicable to fields and methods; therefore not exposed via MembersShould
138+
public SELF notBeFinal() {
139+
return addCondition(ArchConditions.notBeFinal());
140+
}
141+
122142
@Override
123143
public SELF haveModifier(JavaModifier modifier) {
124144
return addCondition(ArchConditions.haveModifier(modifier));

archunit/src/main/java/com/tngtech/archunit/lang/syntax/FieldsShouldInternal.java

-21
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.tngtech.archunit.base.Function;
2020
import com.tngtech.archunit.core.domain.JavaClass;
2121
import com.tngtech.archunit.core.domain.JavaField;
22-
import com.tngtech.archunit.core.domain.JavaModifier;
2322
import com.tngtech.archunit.lang.ArchCondition;
2423
import com.tngtech.archunit.lang.ClassesTransformer;
2524
import com.tngtech.archunit.lang.Priority;
@@ -93,24 +92,4 @@ public FieldsShouldInternal haveRawType(DescribedPredicate<? super JavaClass> pr
9392
public FieldsShouldInternal notHaveRawType(DescribedPredicate<? super JavaClass> predicate) {
9493
return addCondition(not(ArchConditions.haveRawType(predicate)));
9594
}
96-
97-
@Override
98-
public FieldsShouldInternal beStatic() {
99-
return addCondition(ArchConditions.haveModifier(JavaModifier.STATIC).as("be static"));
100-
}
101-
102-
@Override
103-
public FieldsShouldInternal notBeStatic() {
104-
return addCondition(not(ArchConditions.haveModifier(JavaModifier.STATIC)).as("not be static"));
105-
}
106-
107-
@Override
108-
public FieldsShouldInternal beFinal() {
109-
return addCondition(ArchConditions.haveModifier(JavaModifier.FINAL).as("be final"));
110-
}
111-
112-
@Override
113-
public FieldsShouldInternal notBeFinal() {
114-
return addCondition(not(ArchConditions.haveModifier(JavaModifier.FINAL)).as("not be final"));
115-
}
11695
}

archunit/src/main/java/com/tngtech/archunit/lang/syntax/MethodsShouldInternal.java

-24
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,12 @@
1717

1818
import com.tngtech.archunit.base.Function;
1919
import com.tngtech.archunit.core.domain.JavaMethod;
20-
import com.tngtech.archunit.core.domain.JavaModifier;
2120
import com.tngtech.archunit.lang.ArchCondition;
2221
import com.tngtech.archunit.lang.ClassesTransformer;
2322
import com.tngtech.archunit.lang.Priority;
24-
import com.tngtech.archunit.lang.conditions.ArchConditions;
2523
import com.tngtech.archunit.lang.syntax.elements.MethodsShould;
2624
import com.tngtech.archunit.lang.syntax.elements.MethodsShouldConjunction;
2725

28-
import static com.tngtech.archunit.lang.conditions.ArchConditions.not;
29-
3026
class MethodsShouldInternal
3127
extends AbstractCodeUnitsShouldInternal<JavaMethod, MethodsShouldInternal>
3228
implements MethodsShould<MethodsShouldInternal>, MethodsShouldConjunction {
@@ -61,24 +57,4 @@ private MethodsShouldInternal(
6157
MethodsShouldInternal copyWithNewCondition(ConditionAggregator<JavaMethod> newCondition) {
6258
return new MethodsShouldInternal(classesTransformer, priority, newCondition, prepareCondition);
6359
}
64-
65-
@Override
66-
public MethodsShouldInternal beStatic() {
67-
return addCondition(ArchConditions.haveModifier(JavaModifier.STATIC).as("be static"));
68-
}
69-
70-
@Override
71-
public MethodsShouldInternal notBeStatic() {
72-
return addCondition(not(ArchConditions.haveModifier(JavaModifier.STATIC)).as("not be static"));
73-
}
74-
75-
@Override
76-
public MethodsShouldInternal beFinal() {
77-
return addCondition(ArchConditions.haveModifier(JavaModifier.FINAL).as("be final"));
78-
}
79-
80-
@Override
81-
public MethodsShouldInternal notBeFinal() {
82-
return addCondition(not(ArchConditions.haveModifier(JavaModifier.FINAL)).as("not be final"));
83-
}
8460
}

0 commit comments

Comments
 (0)