Class Slices
- All Implemented Interfaces:
DescribedIterable<Slice>,HasDescription,CanOverrideDescription<Slices>,Iterable<Slice>
Slice for tests of dependencies between different domain packages, e.g. to avoid cycles.
Refer to SlicesRuleDefinition for further info on how to form an ArchRule to test slices.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classNested classes/interfaces inherited from interface com.tngtech.archunit.base.DescribedIterable
DescribedIterable.From -
Method Summary
Modifier and TypeMethodDescriptionAllows to adjust the description of this object.static Slices.TransformerassignedFrom(SliceAssignment sliceAssignment) iterator()static Slices.TransformerSupports partitioning a set ofJavaClassesinto different slices by matching the supplied package identifier.namingSlices(String pattern) Allows the naming of single slices, where back references to the matching pattern can be denoted by '$' followed by capturing group number.stream()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Method Details
-
iterator
-
stream
-
as
Description copied from interface:CanOverrideDescriptionAllows to adjust the description of this object. Note that this method will not modify the current object, but instead return a new object with adjusted description.- Specified by:
asin interfaceCanOverrideDescription<Slices>- Parameters:
description- The description the result of this method will hold- Returns:
- A new equivalent object with adjusted description
-
getDescription
- Specified by:
getDescriptionin interfaceHasDescription
-
namingSlices
Allows the naming of single slices, where back references to the matching pattern can be denoted by '$' followed by capturing group number.
E.g.namingSlices("Slice $1")would name a slice matching'*..service.(*)..*'against'com.some.company.service.hello.something'as 'Slice hello'.
Likewise, if the slices were created by aSliceAssignment(compareassignedFrom(SliceAssignment)), then the back reference refers to the n-th element of the identifier.- Parameters:
pattern- The naming pattern, e.g. 'Slice $1'- Returns:
- New (equivalent) slices with adjusted description for each single slice
-
matching
Supports partitioning a set ofJavaClassesinto different slices by matching the supplied package identifier. For identifier syntax, seePackageMatcher.
The slicing is done according to capturing groups (thus if none are contained in the identifier, no more than a single slice will be the result). For exampleSuppose there are three classes:
com.example.slice.one.SomeClass
com.example.slice.one.AnotherClass
com.example.slice.two.YetAnotherClass
If slices are created by specifying
Slices.of(classes).byMatching("..slice.(*)..")
then the result will be two slices, the slice where the capturing group is 'one' and the slice where the capturing group is 'two'.- Parameters:
packageIdentifier- The identifier to match against- Returns:
- Slices partitioned according the supplied package identifier
-
assignedFrom
@PublicAPI(usage=ACCESS) public static Slices.Transformer assignedFrom(SliceAssignment sliceAssignment) Supports partitioning a set ofJavaClassesinto differentSlicesby the suppliedSliceAssignment. This is basically a mappingJavaClass->SliceIdentifier, i.e. if theSliceAssignmentreturns the sameSliceIdentifierfor two classes they will end up in the same slice. AJavaClasswill be ignored within the slices, if itsSliceIdentifierisSliceIdentifier.ignore(). For exampleSuppose there are four classes:
com.somewhere.SomeClass
com.somewhere.AnotherClass
com.other.elsewhere.YetAnotherClass
com.randomly.anywhere.AndYetAnotherClass
If slices are created by specifying
Slices.of(classes).assignedFrom(customAssignment)
and thecustomAssignmentmaps
com.somewhere -> SliceIdentifier.of("somewhere")
com.other.elsewhere -> SliceIdentifier.of("elsewhere")
com.randomly -> SliceIdentifier.ignore()
then the result will be two slices, identified by the single strings 'somewhere' (containingSomeClassandAnotherClass) and 'elsewhere' (containingYetAnotherClass). The classAndYetAnotherClasswill be missing from all slices.- Parameters:
sliceAssignment- The assignment ofJavaClasstoSliceIdentifier- Returns:
- Slices partitioned according the supplied assignment
-