This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new c63b459771 Bump archunit.version from 0.23.1 to 1.0.0
c63b459771 is described below
commit c63b45977176727e4c20b745b2e0c24238519576
Author: Andi Huber <[email protected]>
AuthorDate: Tue Oct 4 06:20:09 2022 +0200
Bump archunit.version from 0.23.1 to 1.0.0
- see breaking chances referred to in the release notes
https://github.com/apache/isis/pull/1127
---
bom/pom.xml | 2 +-
.../applib/classrules/ArchitectureDomainRules.java | 14 +++---
.../applib/classrules/ArchitectureJdoRules.java | 12 ++---
.../applib/classrules/ArchitectureJpaRules.java | 10 ++--
.../applib/classrules/CommonPredicates.java | 18 ++++----
.../modulerules/ArchitectureModuleRules.java | 53 +++++++++++-----------
6 files changed, 54 insertions(+), 55 deletions(-)
diff --git a/bom/pom.xml b/bom/pom.xml
index f2a2828c8b..c9e537753b 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -319,7 +319,7 @@ It is therefore a copy of org.apache:apache, with
customisations clearly identif
<delombok.output>${project.build.directory}/delombok</delombok.output>
<!-- LIBRARY DEPENDENCIES -->
- <archunit.version>0.23.1</archunit.version>
+ <archunit.version>1.0.0</archunit.version>
<asciidoctorj.version>2.5.6</asciidoctorj.version>
<asm.version>9.4</asm.version> <!-- keep in sync with
org.eclipse.persistence:org.eclipse.persistence.asm -->
<approvaltests.version>18.4.0</approvaltests.version>
diff --git
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
index 0d324d3abb..16b6cc7056 100644
---
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
+++
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
@@ -105,7 +105,7 @@ public class ArchitectureDomainRules {
.or().areAnnotatedWith(DomainService.class)
.and(new DescribedPredicate<>("have an logicalTypeName") {
@Override
- public boolean apply(final JavaClass javaClass) {
+ public boolean test(final JavaClass javaClass) {
return
_LogicalNaming.hasExplicitLogicalName(javaClass);
}
})
@@ -157,7 +157,7 @@ public class ArchitectureDomainRules {
static DescribedPredicate<JavaAnnotation<?>>
DomainXxx_logicalTypeName(final Class<? extends Annotation> annotationClass) {
return new
DescribedPredicate<>(String.format("@%s(logicalTypeName=...)",
annotationClass.getSimpleName())) {
@Override
- public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+ public boolean test(final JavaAnnotation<?> javaAnnotation) {
if
(!javaAnnotation.getRawType().isAssignableTo(annotationClass)) {
return false;
}
@@ -269,8 +269,8 @@ public class ArchitectureDomainRules {
}
val mixinMethodName = item
.tryGetAnnotationOfType(DomainObject.class)
- .transform(DomainObject::mixinMethod)
- .or(mixinMethodNameDefault);
+ .map(DomainObject::mixinMethod)
+ .orElse(mixinMethodNameDefault);
val mixinMethodIfAny = item.getAllMethods().stream()
.filter(function.apply(mixinMethodName)).findAny();
if (!mixinMethodIfAny.isPresent()) {
@@ -370,7 +370,7 @@ public class ArchitectureDomainRules {
private static DescribedPredicate<JavaClass> areJaxbViewModels() {
return new DescribedPredicate<JavaClass>("are JAXB view models") {
@Override
- public boolean apply(final JavaClass input) {
+ public boolean test(final JavaClass input) {
return input.isAnnotatedWith(XmlRootElement.class);
}
};
@@ -397,7 +397,7 @@ public class ArchitectureDomainRules {
private static DescribedPredicate<JavaClass> areSerializableViewModels() {
return new DescribedPredicate<JavaClass>("are serializable view
models") {
@Override
- public boolean apply(final JavaClass input) {
+ public boolean test(final JavaClass input) {
val domainObjectIfAny =
input.tryGetAnnotationOfType(DomainObject.class);
if(!domainObjectIfAny.isPresent()) {
return false;
@@ -438,7 +438,7 @@ public class ArchitectureDomainRules {
static DescribedPredicate<JavaClass> eitherOptionalOrCollection() {
return new DescribedPredicate<JavaClass>("either Optional or
Collection") {
@Override
- public boolean apply(final JavaClass input) {
+ public boolean test(final JavaClass input) {
return input.isAssignableTo(java.util.Optional.class)
|| input.isAssignableTo(java.util.Collection.class);
}
diff --git
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
index 16aeacecc9..525b1cd90b 100644
---
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
+++
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
@@ -57,13 +57,13 @@ public class ArchitectureJdoRules {
.that().areAnnotatedWith(DomainObject.class)
.and(new DescribedPredicate<>("have a logicalTypeName") {
@Override
- public boolean apply(final JavaClass javaClass) {
+ public boolean test(final JavaClass javaClass) {
return
_LogicalNaming.hasExplicitLogicalName(javaClass);
}
})
.and(new DescribedPredicate<>("have a @Discriminator") {
@Override
- public boolean apply(final JavaClass javaClass) {
+ public boolean test(final JavaClass javaClass) {
val discriminatorIfAny =
javaClass.tryGetAnnotationOfType(Discriminator.class);
return discriminatorIfAny.isPresent();
}
@@ -200,7 +200,7 @@ public class ArchitectureJdoRules {
static DescribedPredicate<JavaAnnotation<?>> PersistenceCapable_schema() {
return new DescribedPredicate<>("@PersistenceCapable(schema=...)") {
@Override
- public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+ public boolean test(final JavaAnnotation<?> javaAnnotation) {
if
(!javaAnnotation.getRawType().isAssignableTo(PersistenceCapable.class)) {
return false;
}
@@ -215,7 +215,7 @@ public class ArchitectureJdoRules {
static DescribedPredicate<JavaAnnotation<?>>
PersistenceCapable_with_DATASTORE_identityType() {
return new
DescribedPredicate<>("@PersistenceCapable(identityType=DATASTORE)") {
@Override
- public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+ public boolean test(final JavaAnnotation<?> javaAnnotation) {
if
(!javaAnnotation.getRawType().isAssignableTo(PersistenceCapable.class)) {
return false;
}
@@ -251,7 +251,7 @@ public class ArchitectureJdoRules {
static DescribedPredicate<JavaClass> areEntities() {
return new DescribedPredicate<>("are entities") {
@Override
- public boolean apply(final JavaClass input) {
+ public boolean test(final JavaClass input) {
return input.isAnnotatedWith(PersistenceCapable.class);
}
};
@@ -260,7 +260,7 @@ public class ArchitectureJdoRules {
static DescribedPredicate<? super JavaClass> areSubtypeEntities() {
return new DescribedPredicate<>("are subtype entities ") {
@Override
- public boolean apply(final JavaClass input) {
+ public boolean test(final JavaClass input) {
val superclassIfAny = input.getSuperclass();
if (!superclassIfAny.isPresent()) {
return false;
diff --git
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
index 3a66229a8b..9784148206 100644
---
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
+++
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
@@ -107,7 +107,7 @@ public class ArchitectureJpaRules {
static DescribedPredicate<JavaAnnotation<?>>
EntityListeners_with_IsisEntityListener() {
return new
DescribedPredicate<JavaAnnotation<?>>("@EntityListener({IsisEntityListener.class})")
{
- @Override public boolean apply(final JavaAnnotation<?>
javaAnnotation) {
+ @Override public boolean test(final JavaAnnotation<?>
javaAnnotation) {
if
(!javaAnnotation.getRawType().isAssignableTo(EntityListeners.class)) {
return false;
}
@@ -260,7 +260,7 @@ public class ArchitectureJpaRules {
static DescribedPredicate<JavaAnnotation<?>> Table_schema() {
return new DescribedPredicate<JavaAnnotation<?>>("@Table(schema=...)")
{
- @Override public boolean apply(final JavaAnnotation<?>
javaAnnotation) {
+ @Override public boolean test(final JavaAnnotation<?>
javaAnnotation) {
if (!javaAnnotation.getRawType().isAssignableTo(Table.class)) {
return false;
}
@@ -275,7 +275,7 @@ public class ArchitectureJpaRules {
static DescribedPredicate<JavaClass> areEntities() {
return new DescribedPredicate<JavaClass>("are entities") {
@Override
- public boolean apply(final JavaClass input) {
+ public boolean test(final JavaClass input) {
return input.isAnnotatedWith(Entity.class);
}
};
@@ -283,7 +283,7 @@ public class ArchitectureJpaRules {
static DescribedPredicate<JavaAnnotation<?>> Table_uniqueConstraints() {
return new
DescribedPredicate<JavaAnnotation<?>>("@Table(uniqueConstraints=...)") {
- @Override public boolean apply(final JavaAnnotation<?>
javaAnnotation) {
+ @Override public boolean test(final JavaAnnotation<?>
javaAnnotation) {
if (!javaAnnotation.getRawType().isAssignableTo(Table.class)) {
return false;
}
@@ -313,7 +313,7 @@ public class ArchitectureJpaRules {
static DescribedPredicate<? super JavaClass> areSubtypeEntities() {
return new DescribedPredicate<JavaClass>("are subtype entities ") {
- @Override public boolean apply(final JavaClass input) {
+ @Override public boolean test(final JavaClass input) {
val superclassIfAny = input.getSuperclass();
if(!superclassIfAny.isPresent()) {
return false;
diff --git
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
index dacf942a6c..7e4fabd4e7 100644
---
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
+++
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
@@ -19,11 +19,11 @@
package org.apache.isis.testing.archtestsupport.applib.classrules;
import java.util.Objects;
+import java.util.Optional;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.tngtech.archunit.base.DescribedPredicate;
-import com.tngtech.archunit.base.Optional;
import com.tngtech.archunit.core.domain.JavaAnnotation;
import com.tngtech.archunit.core.domain.JavaClass;
import com.tngtech.archunit.core.domain.JavaEnumConstant;
@@ -45,8 +45,8 @@ class CommonPredicates {
static DescribedPredicate<JavaClass> notAbstract() {
return new DescribedPredicate<>("not abstract") {
@Override
- public boolean apply(JavaClass javaClass) {
- val isAbstract =
javaClass.getModifiers().stream().anyMatch((JavaModifier x) -> x ==
JavaModifier.ABSTRACT);
+ public boolean test(final JavaClass javaClass) {
+ val isAbstract =
javaClass.getModifiers().stream().anyMatch((final JavaModifier x) -> x ==
JavaModifier.ABSTRACT);
return !isAbstract;
}
};
@@ -67,7 +67,7 @@ class CommonPredicates {
static DescribedPredicate<JavaAnnotation<?>> DomainObject_nature(final
Nature expectedNature) {
return new
DescribedPredicate<>(String.format("@DomainObject(nature=%s)",
expectedNature.name())) {
@Override
- public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+ public boolean test(final JavaAnnotation<?> javaAnnotation) {
if
(!javaAnnotation.getRawType().isAssignableTo(DomainObject.class)) {
return false;
}
@@ -81,7 +81,7 @@ class CommonPredicates {
static DescribedPredicate<JavaAnnotation<?>>
XmlJavaTypeAdapter_value_PersistentEntityAdapter() {
return new
DescribedPredicate<JavaAnnotation<?>>("@XmlJavaTypeAdapter(PersistentEntityAdapter.class)")
{
- @Override public boolean apply(final JavaAnnotation<?>
javaAnnotation) {
+ @Override public boolean test(final JavaAnnotation<?>
javaAnnotation) {
if
(!javaAnnotation.getRawType().isAssignableTo(XmlJavaTypeAdapter.class)) {
return false;
}
@@ -96,7 +96,7 @@ class CommonPredicates {
static DescribedPredicate<JavaClass> ofAnEnum() {
return new DescribedPredicate<JavaClass>("that is an enum") {
@Override
- public boolean apply(JavaClass input) {
+ public boolean test(final JavaClass input) {
return input.isEnum();
}
};
@@ -111,7 +111,7 @@ class CommonPredicates {
.format("@%s(%s = %s)", annotClass.getSimpleName(), attribute,
attributeValue);
return new DescribedPredicate<JavaAnnotation<?>>(description) {
@Override
- public boolean apply(JavaAnnotation<?> input) {
+ public boolean test(final JavaAnnotation<?> input) {
if
(!input.getRawType().getFullName().equals(annotClass.getName())) {
return false;
}
@@ -148,8 +148,8 @@ class CommonPredicates {
static DescribedPredicate<JavaClass> areNotAbstract() {
return new DescribedPredicate<JavaClass>("are not abstract") {
@Override
- public boolean apply(JavaClass javaClass) {
- val isAbstract =
javaClass.getModifiers().stream().anyMatch((JavaModifier x) -> x ==
JavaModifier.ABSTRACT);
+ public boolean test(final JavaClass javaClass) {
+ val isAbstract =
javaClass.getModifiers().stream().anyMatch((final JavaModifier x) -> x ==
JavaModifier.ABSTRACT);
return !isAbstract;
}
};
diff --git
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
index 906af9bc13..308fc0be1b 100644
---
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
+++
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
@@ -30,16 +30,15 @@ import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.springframework.lang.Nullable;
-
import com.tngtech.archunit.junit.AnalyzeClasses;
import com.tngtech.archunit.library.Architectures;
import org.springframework.context.annotation.Import;
import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.lang.Nullable;
-import lombok.experimental.UtilityClass;
import lombok.val;
+import lombok.experimental.UtilityClass;
/**
* A library of architecture tests to ensure correct layering and usage of
packages.
@@ -61,7 +60,7 @@ public class ArchitectureModuleRules {
* @see #code_dependencies_follow_module_Imports(List)
* @see
#code_dependencies_follow_module_Imports_and_subpackage_rules(List, List)
*/
- public static List<Class<?>> analyzeClasses_packagesOf(Class<?> clazz) {
+ public static List<Class<?>> analyzeClasses_packagesOf(final Class<?>
clazz) {
val analyzeClassesAnnot = AnnotationUtils.findAnnotation(clazz,
AnalyzeClasses.class);
return Arrays.stream(analyzeClassesAnnot.packagesOf())
.filter(x -> x.getSimpleName().endsWith("Module"))
@@ -75,7 +74,7 @@ public class ArchitectureModuleRules {
* @see
#code_dependencies_follow_module_Imports_and_subpackage_rules(List, List)
*/
public static Architectures.LayeredArchitecture
code_dependencies_follow_module_Imports(
- List<Class<?>> moduleClasses) {
+ final List<Class<?>> moduleClasses) {
return
code_dependencies_follow_module_Imports_and_subpackage_rules(moduleClasses,
Collections.emptyList());
}
@@ -89,8 +88,8 @@ public class ArchitectureModuleRules {
* @see #code_dependencies_follow_module_Imports(List)
*/
public static Architectures.LayeredArchitecture
code_dependencies_follow_module_Imports_and_subpackage_rules(
- List<Class<?>> moduleClasses, List<Subpackage> subpackages) {
- val layeredArchitecture = Architectures.layeredArchitecture();
+ final List<Class<?>> moduleClasses, final List<Subpackage>
subpackages) {
+ val layeredArchitecture =
Architectures.layeredArchitecture().consideringAllDependencies();
defineLayers(moduleClasses, layeredArchitecture, subpackages);
@@ -114,9 +113,9 @@ public class ArchitectureModuleRules {
}
private static void defineLayers(
- List<Class<?>> moduleClasses,
- Architectures.LayeredArchitecture layeredArchitecture,
- List<Subpackage> subpackages) {
+ final List<Class<?>> moduleClasses,
+ final Architectures.LayeredArchitecture layeredArchitecture,
+ final List<Subpackage> subpackages) {
moduleClasses.forEach(moduleClass ->
subpackages.forEach(subpackage -> {
val subpackageName = subpackage.getName();
@@ -126,9 +125,9 @@ public class ArchitectureModuleRules {
}
private static void computeDirectDependencies(
- List<Class<?>> moduleClasses,
- Map<Class<?>, Set<Class<?>>> directDependenciesByImported,
- Map<Class<?>, Set<Class<?>>> directDependenciesByImporting) {
+ final List<Class<?>> moduleClasses,
+ final Map<Class<?>, Set<Class<?>>> directDependenciesByImported,
+ final Map<Class<?>, Set<Class<?>>> directDependenciesByImporting) {
moduleClasses.forEach(
moduleClass -> {
final Import importAnnotation =
AnnotationUtils.findAnnotation(moduleClass, Import.class);
@@ -149,9 +148,9 @@ public class ArchitectureModuleRules {
}
private static void computeTransitiveDependencies(
- List<Class<?>> moduleClasses,
- Map<Class<?>, Set<Class<?>>> directDependenciesByImporting,
- Map<Class<?>, Set<Class<?>>> transitiveDependenciesByImporting) {
+ final List<Class<?>> moduleClasses,
+ final Map<Class<?>, Set<Class<?>>> directDependenciesByImporting,
+ final Map<Class<?>, Set<Class<?>>>
transitiveDependenciesByImporting) {
moduleClasses.forEach((moduleClass) -> {
val transitiveDependencies = new LinkedHashSet<Class<?>>();
accumulateTransitiveDependencies(moduleClass,
directDependenciesByImporting,
@@ -161,9 +160,9 @@ public class ArchitectureModuleRules {
}
private static void checkLayerAccess(
- Architectures.LayeredArchitecture layeredArchitecture,
- Map<Class<?>, Set<Class<?>>> transitiveDependenciesByImported,
- List<Subpackage> subpackages) {
+ final Architectures.LayeredArchitecture layeredArchitecture,
+ final Map<Class<?>, Set<Class<?>>>
transitiveDependenciesByImported,
+ final List<Subpackage> subpackages) {
transitiveDependenciesByImported.forEach((importedModule,
importingModules) -> {
subpackages.forEach(subpackage -> {
@@ -203,20 +202,20 @@ public class ArchitectureModuleRules {
}
- static String nameOf(Class<?> moduleClass, final @Nullable String
subpackageName) {
+ static String nameOf(final Class<?> moduleClass, final @Nullable String
subpackageName) {
val simpleName = moduleClass.getSimpleName();
val moduleName = simpleName.replace("Module", "");
return moduleName + (subpackageName != null ? (" " + subpackageName) :
"");
}
- static String[] namesOf(Class<?> moduleClass, String... subpackageNames) {
+ static String[] namesOf(final Class<?> moduleClass, final String...
subpackageNames) {
val names = Arrays.stream(subpackageNames)
.map(subpackageName -> nameOf(moduleClass, subpackageName))
.collect(Collectors.toList());
return names.toArray(new String[] {});
}
- static String[] namesOf(Set<Class<?>> importingClasses, String...
subpackageNames) {
+ static String[] namesOf(final Set<Class<?>> importingClasses, final
String... subpackageNames) {
val names = new ArrayList<String>();
importingClasses.forEach(importingClass -> {
Stream.of(subpackageNames).forEach(subpackageName ->
@@ -225,30 +224,30 @@ public class ArchitectureModuleRules {
return names.toArray(new String[] {});
}
- static String packageIdentifierFor(Class<?> moduleClass) {
+ static String packageIdentifierFor(final Class<?> moduleClass) {
return packageIdentifierFor(moduleClass, null);
}
- static String packageIdentifierFor(Class<?> moduleClass, @Nullable
Subpackage subpackage) {
+ static String packageIdentifierFor(final Class<?> moduleClass, @Nullable
final Subpackage subpackage) {
return moduleClass.getPackage().getName() +
(subpackage != null ? subpackage.packageIdentifier(): "..");
}
- static String[] both(String str, String[] arr) {
+ static String[] both(final String str, final String[] arr) {
val strings = new ArrayList<String>();
strings.add(str);
strings.addAll(Arrays.asList(arr));
return strings.toArray(new String[] {});
}
- static String[] both(String[] arr1, String[] arr2) {
+ static String[] both(final String[] arr1, final String[] arr2) {
val strings = new ArrayList<String>();
strings.addAll(Arrays.asList(arr1));
strings.addAll(Arrays.asList(arr2));
return strings.toArray(new String[] {});
}
- static <T> Map<T, Set<T>> invert(Map<T, Set<T>> valueSetByKey) {
+ static <T> Map<T, Set<T>> invert(final Map<T, Set<T>> valueSetByKey) {
val inverted = new LinkedHashMap<T, Set<T>>();
valueSetByKey.forEach((key, values) ->
values.forEach(value -> {