Class Slices
- java.lang.Object
-
- com.tngtech.archunit.library.dependencies.Slices
-
- All Implemented Interfaces:
DescribedIterable<Slice>
,HasDescription
,CanOverrideDescription<Slices>
,java.lang.Iterable<Slice>
public final class Slices extends java.lang.Object implements DescribedIterable<Slice>, CanOverrideDescription<Slices>
Basic collection ofSlice
for tests of dependencies between different domain packages, e.g. to avoid cycles. Refer toSlicesRuleDefinition
for further info on how to form anArchRule
to test slices.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Slices.Transformer
-
Nested classes/interfaces inherited from interface com.tngtech.archunit.base.DescribedIterable
DescribedIterable.From
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Slices
as(java.lang.String description)
Allows to adjust the description of this object.static Slices.Transformer
assignedFrom(SliceAssignment sliceAssignment)
java.lang.String
getDescription()
java.util.Iterator<Slice>
iterator()
static Slices.Transformer
matching(java.lang.String packageIdentifier)
Supports partitioning a set ofJavaClasses
into different slices by matching the supplied package identifier.Slices
namingSlices(java.lang.String pattern)
Allows the naming of single slices, where back references to the matching pattern can be denoted by '$' followed by capturing group number.
-
-
-
Method Detail
-
iterator
public java.util.Iterator<Slice> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<Slice>
-
as
public Slices as(java.lang.String description)
Description copied from interface:CanOverrideDescription
Allows 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:
as
in interfaceCanOverrideDescription<Slices>
- Parameters:
description
- The description the result of this method will hold- Returns:
- A new equivalent object with adjusted description
-
getDescription
public java.lang.String getDescription()
- Specified by:
getDescription
in interfaceHasDescription
-
namingSlices
@PublicAPI(usage=ACCESS) public Slices namingSlices(java.lang.String pattern)
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
@PublicAPI(usage=ACCESS) public static Slices.Transformer matching(java.lang.String packageIdentifier)
Supports partitioning a set ofJavaClasses
into 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 ofJavaClasses
into differentSlices
by the suppliedSliceAssignment
. This is basically a mappingJavaClass
->SliceIdentifier
, i.e. if theSliceAssignment
returns the sameSliceIdentifier
for two classes they will end up in the same slice. AJavaClass
will be ignored within the slices, if itsSliceIdentifier
isSliceIdentifier.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 thecustomAssignment
maps
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' (containingSomeClass
andAnotherClass
) and 'elsewhere' (containingYetAnotherClass
). The classAndYetAnotherClass
will be missing from all slices.- Parameters:
sliceAssignment
- The assignment ofJavaClass
toSliceIdentifier
- Returns:
- Slices partitioned according the supplied assignment
-
-