11package com .devonfw .sample .archunit ;
22import static com .tngtech .archunit .lang .syntax .ArchRuleDefinition .classes ;
33
4- import java .util .regex .Matcher ;
5- import java .util .regex .Pattern ;
6-
74import com .tngtech .archunit .core .domain .JavaClass ;
85import com .tngtech .archunit .core .importer .ImportOption ;
96import com .tngtech .archunit .junit .AnalyzeClasses ;
1916@ AnalyzeClasses (packages = "com.devonfw.sample.archunit" , importOptions = ImportOption .DoNotIncludeTests .class )
2017public class PackageRuleTest {
2118
22- /* Layer */
23- private static final String LAYER_COMMON = "common" ;
24-
25- private static final String LAYER_DATA_ACCESS = "dataaccess" ;
26-
27- private static final String LAYER_LOGIC = "logic" ;
28-
29- private static final String LAYER_SERVICE = "service" ;
30-
31- private static final String LAYER_CLIENT = "client" ;
32-
33- private static final String LAYER_BATCH = "batch" ;
34-
35- /* Pattern */
36- private static final String PATTERN_SEGMENT = "[a-z0-9_]+" ;
37-
38- private static final String PATTERN_LAYERS = LAYER_COMMON + "|" + LAYER_DATA_ACCESS + "|" + LAYER_SERVICE + "|"
39- + LAYER_LOGIC + "|" + LAYER_BATCH + "|" + LAYER_CLIENT ;
40-
41- private static final String ROOT_PACKAGE =
42- // ....1..........................2
43- "(" + PATTERN_SEGMENT + ")(\\ ." + PATTERN_SEGMENT + ")*" ;
44-
45- private static final String DEFAULT_PATTERN =
46- // ....1......................2...........................3...........................4
47- "(" + ROOT_PACKAGE + ")\\ .(" + PATTERN_SEGMENT + ")\\ .(" + PATTERN_LAYERS + ")(\\ ." + PATTERN_SEGMENT + ")*" ;
48-
49- public static final String COMMON_PATTERN =
50- // ....1......................2...........................3...........................4
51- "(" + ROOT_PACKAGE + ")\\ .(" + PATTERN_SEGMENT + ")\\ .(" + LAYER_COMMON + ")(\\ ." + PATTERN_SEGMENT + ")*" ;
52-
53- public static final String DATAACCESS_PATTERN =
54- // ....1......................2...........................3...........................4
55- "(" + ROOT_PACKAGE + ")\\ .(" + PATTERN_SEGMENT + ")\\ .(" + LAYER_DATA_ACCESS + ")(\\ ." + PATTERN_SEGMENT + ")*" ;
56-
57- private static final Pattern PATTERN = Pattern .compile (DEFAULT_PATTERN );
58-
5919 /* ArchRule and Condition */
6020 @ ArchTest
6121 public ArchRule shouldHaveValidLayers = classes ().should (containsValidPackageStructureCondition ());
@@ -66,10 +26,9 @@ private static ArchCondition<JavaClass> containsValidPackageStructureCondition()
6626 }) {
6727 @ Override
6828 public void check (JavaClass javaClass , ConditionEvents events ) {
69-
70- Matcher matcher = PATTERN .matcher (javaClass .getPackageName ());
71- String message = javaClass .getSimpleName () + " test result is " + matcher .matches ();
72- events .add (new SimpleConditionEvent (javaClass , matcher .matches (), message ));
29+ PackageStructure packageStructure = PackageStructure .of (javaClass );
30+ String message = javaClass .getSimpleName () + " test result is " + packageStructure .isValid ();
31+ events .add (new SimpleConditionEvent (javaClass , packageStructure .isValid (), message ));
7332 }
7433 };
7534 };
0 commit comments