Skip to content

Commit

Permalink
Review: Pulled the common "beStatic", ... methods up to AbstractMembe…
Browse files Browse the repository at this point in the history
…rsShouldInternal (analogously to MembersThat). Also extracted the conditions to ArchConditions to be consistent with the rest (like bePublic(), etc.)

Signed-off-by: Peter Gafert <peter.gafert@tngtech.com>
  • Loading branch information
codecholeric committed Mar 31, 2019
1 parent ca18b17 commit f145cbd
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@
import com.tngtech.archunit.core.domain.properties.HasAnnotations;
import com.tngtech.archunit.core.domain.properties.HasModifiers;
import com.tngtech.archunit.core.domain.properties.HasName;
import com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation;
import com.tngtech.archunit.core.domain.properties.HasOwner.Functions.Get;
import com.tngtech.archunit.core.domain.properties.HasOwner.Predicates.With;
import com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation;
import com.tngtech.archunit.core.domain.properties.HasThrowsClause;
import com.tngtech.archunit.lang.ArchCondition;
import com.tngtech.archunit.lang.ConditionEvents;
Expand Down Expand Up @@ -90,6 +90,7 @@
import static com.tngtech.archunit.core.domain.JavaConstructor.CONSTRUCTOR_NAME;
import static com.tngtech.archunit.core.domain.JavaMember.Predicates.declaredIn;
import static com.tngtech.archunit.core.domain.JavaModifier.FINAL;
import static com.tngtech.archunit.core.domain.JavaModifier.STATIC;
import static com.tngtech.archunit.core.domain.properties.CanBeAnnotated.Predicates.annotatedWith;
import static com.tngtech.archunit.core.domain.properties.CanBeAnnotated.Predicates.metaAnnotatedWith;
import static com.tngtech.archunit.core.domain.properties.HasModifiers.Predicates.modifier;
Expand Down Expand Up @@ -522,22 +523,22 @@ public static <HAS_NAME extends HasName & HasDescription & HasSourceCodeLocation

@PublicAPI(usage = ACCESS)
public static ArchCondition<JavaClass> resideInAPackage(final String packageIdentifier) {
return new DoesConditionByPredicate(JavaClass.Predicates.resideInAPackage(packageIdentifier));
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideInAPackage(packageIdentifier));
}

@PublicAPI(usage = ACCESS)
public static ArchCondition<JavaClass> resideInAnyPackage(String... packageIdentifiers) {
return new DoesConditionByPredicate(JavaClass.Predicates.resideInAnyPackage(packageIdentifiers));
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideInAnyPackage(packageIdentifiers));
}

@PublicAPI(usage = ACCESS)
public static ArchCondition<JavaClass> resideOutsideOfPackage(String packageIdentifier) {
return new DoesConditionByPredicate(JavaClass.Predicates.resideOutsideOfPackage(packageIdentifier));
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideOutsideOfPackage(packageIdentifier));
}

@PublicAPI(usage = ACCESS)
public static ArchCondition<JavaClass> resideOutsideOfPackages(String... packageIdentifiers) {
return new DoesConditionByPredicate(JavaClass.Predicates.resideOutsideOfPackages(packageIdentifiers));
return new DoesConditionByPredicate<>(JavaClass.Predicates.resideOutsideOfPackages(packageIdentifiers));
}

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

@PublicAPI(usage = ACCESS)
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> beStatic() {
return ArchConditions.<HAS_MODIFIERS>haveModifier(STATIC).as("be static");
}

@PublicAPI(usage = ACCESS)
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> notBeStatic() {
return not(ArchConditions.<HAS_MODIFIERS>haveModifier(STATIC).as("be static"));
}

@PublicAPI(usage = ACCESS)
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> beFinal() {
return ArchConditions.<HAS_MODIFIERS>haveModifier(FINAL).as("be final");
}

@PublicAPI(usage = ACCESS)
public static <HAS_MODIFIERS extends HasModifiers & HasDescription & HasSourceCodeLocation> ArchCondition<HAS_MODIFIERS> notBeFinal() {
return not(ArchConditions.<HAS_MODIFIERS>haveModifier(FINAL).as("be final"));
}

@PublicAPI(usage = ACCESS)
public static ArchCondition<JavaClass> haveOnlyFinalFields() {
return new HaveOnlyFinalFieldsCondition();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,26 @@ public SELF notBePrivate() {
return addCondition(ArchConditions.notBePrivate());
}

// only applicable to fields and methods; therefore not exposed via MembersShould
public SELF beStatic() {
return addCondition(ArchConditions.beStatic());
}

// only applicable to fields and methods; therefore not exposed via MembersShould
public SELF notBeStatic() {
return addCondition(ArchConditions.notBeStatic());
}

// only applicable to fields and methods; therefore not exposed via MembersShould
public SELF beFinal() {
return addCondition(ArchConditions.beFinal());
}

// only applicable to fields and methods; therefore not exposed via MembersShould
public SELF notBeFinal() {
return addCondition(ArchConditions.notBeFinal());
}

@Override
public SELF haveModifier(JavaModifier modifier) {
return addCondition(ArchConditions.haveModifier(modifier));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import com.tngtech.archunit.base.Function;
import com.tngtech.archunit.core.domain.JavaClass;
import com.tngtech.archunit.core.domain.JavaField;
import com.tngtech.archunit.core.domain.JavaModifier;
import com.tngtech.archunit.lang.ArchCondition;
import com.tngtech.archunit.lang.ClassesTransformer;
import com.tngtech.archunit.lang.Priority;
Expand Down Expand Up @@ -93,24 +92,4 @@ public FieldsShouldInternal haveRawType(DescribedPredicate<? super JavaClass> pr
public FieldsShouldInternal notHaveRawType(DescribedPredicate<? super JavaClass> predicate) {
return addCondition(not(ArchConditions.haveRawType(predicate)));
}

@Override
public FieldsShouldInternal beStatic() {
return addCondition(ArchConditions.haveModifier(JavaModifier.STATIC).as("be static"));
}

@Override
public FieldsShouldInternal notBeStatic() {
return addCondition(not(ArchConditions.haveModifier(JavaModifier.STATIC)).as("not be static"));
}

@Override
public FieldsShouldInternal beFinal() {
return addCondition(ArchConditions.haveModifier(JavaModifier.FINAL).as("be final"));
}

@Override
public FieldsShouldInternal notBeFinal() {
return addCondition(not(ArchConditions.haveModifier(JavaModifier.FINAL)).as("not be final"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,12 @@

import com.tngtech.archunit.base.Function;
import com.tngtech.archunit.core.domain.JavaMethod;
import com.tngtech.archunit.core.domain.JavaModifier;
import com.tngtech.archunit.lang.ArchCondition;
import com.tngtech.archunit.lang.ClassesTransformer;
import com.tngtech.archunit.lang.Priority;
import com.tngtech.archunit.lang.conditions.ArchConditions;
import com.tngtech.archunit.lang.syntax.elements.MethodsShould;
import com.tngtech.archunit.lang.syntax.elements.MethodsShouldConjunction;

import static com.tngtech.archunit.lang.conditions.ArchConditions.not;

class MethodsShouldInternal
extends AbstractCodeUnitsShouldInternal<JavaMethod, MethodsShouldInternal>
implements MethodsShould<MethodsShouldInternal>, MethodsShouldConjunction {
Expand Down Expand Up @@ -61,24 +57,4 @@ private MethodsShouldInternal(
MethodsShouldInternal copyWithNewCondition(ConditionAggregator<JavaMethod> newCondition) {
return new MethodsShouldInternal(classesTransformer, priority, newCondition, prepareCondition);
}

@Override
public MethodsShouldInternal beStatic() {
return addCondition(ArchConditions.haveModifier(JavaModifier.STATIC).as("be static"));
}

@Override
public MethodsShouldInternal notBeStatic() {
return addCondition(not(ArchConditions.haveModifier(JavaModifier.STATIC)).as("not be static"));
}

@Override
public MethodsShouldInternal beFinal() {
return addCondition(ArchConditions.haveModifier(JavaModifier.FINAL).as("be final"));
}

@Override
public MethodsShouldInternal notBeFinal() {
return addCondition(not(ArchConditions.haveModifier(JavaModifier.FINAL)).as("not be final"));
}
}

0 comments on commit f145cbd

Please sign in to comment.