|
1 | 1 | package com.devonfw.sample.archunit; |
2 | 2 | import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; |
3 | 3 |
|
| 4 | +import java.util.regex.Matcher; |
| 5 | +import java.util.regex.Pattern; |
| 6 | + |
4 | 7 | import com.tngtech.archunit.core.domain.JavaClass; |
5 | 8 | import com.tngtech.archunit.core.importer.ImportOption; |
6 | 9 | import com.tngtech.archunit.junit.AnalyzeClasses; |
|
10 | 13 | import com.tngtech.archunit.lang.ConditionEvents; |
11 | 14 | import com.tngtech.archunit.lang.SimpleConditionEvent; |
12 | 15 |
|
13 | | -import java.util.regex.Matcher; |
14 | | -import java.util.regex.Pattern; |
15 | | - |
16 | 16 | /** |
17 | 17 | * JUnit test that validates the Packages of this application. |
18 | 18 | */ |
19 | 19 | @AnalyzeClasses(packages = "com.devonfw.sample.archunit", importOptions = ImportOption.DoNotIncludeTests.class) |
20 | 20 | public class PackageRuleTest { |
21 | 21 |
|
22 | | -/*Layer */ |
23 | | -private static final String LAYER_COMMON = "common"; |
| 22 | + /* Layer */ |
| 23 | + private static final String LAYER_COMMON = "common"; |
24 | 24 |
|
25 | | -private static final String LAYER_DATA_ACCESS = "dataaccess"; |
| 25 | + private static final String LAYER_DATA_ACCESS = "dataaccess"; |
26 | 26 |
|
27 | | -private static final String LAYER_LOGIC = "logic"; |
| 27 | + private static final String LAYER_LOGIC = "logic"; |
28 | 28 |
|
29 | | -private static final String LAYER_SERVICE = "service"; |
| 29 | + private static final String LAYER_SERVICE = "service"; |
30 | 30 |
|
31 | | -private static final String LAYER_CLIENT = "client"; |
| 31 | + private static final String LAYER_CLIENT = "client"; |
32 | 32 |
|
33 | | -private static final String LAYER_BATCH = "batch"; |
| 33 | + private static final String LAYER_BATCH = "batch"; |
34 | 34 |
|
35 | | -/* Pattern */ |
36 | | -private static final String PATTERN_SEGMENT = "[a-z0-9_]+"; |
| 35 | + /* Pattern */ |
| 36 | + private static final String PATTERN_SEGMENT = "[a-z0-9_]+"; |
37 | 37 |
|
38 | | -private static final String PATTERN_LAYERS = LAYER_COMMON + "|" |
39 | | - + LAYER_DATA_ACCESS + "|" + LAYER_SERVICE + "|" + LAYER_LOGIC + "|" + LAYER_BATCH + "|" |
40 | | - + LAYER_CLIENT; |
41 | | - |
42 | | -private static final String ROOT_PACKAGE = |
43 | | - // ....1..........................2 |
44 | | - "(" + PATTERN_SEGMENT +")(\\." + PATTERN_SEGMENT +")*"; |
| 38 | + private static final String PATTERN_LAYERS = LAYER_COMMON + "|" + LAYER_DATA_ACCESS + "|" + LAYER_SERVICE + "|" |
| 39 | + + LAYER_LOGIC + "|" + LAYER_BATCH + "|" + LAYER_CLIENT; |
45 | 40 |
|
46 | | -private static final String DEFAULT_PATTERN = |
47 | | - // ....1......................2...........................3...........................4 |
48 | | - "(" + ROOT_PACKAGE + ")\\.(" + PATTERN_SEGMENT + ")\\.(" + PATTERN_LAYERS + ")(\\." + PATTERN_SEGMENT + ")*"; |
| 41 | + private static final String ROOT_PACKAGE = |
| 42 | + // ....1..........................2 |
| 43 | + "(" + PATTERN_SEGMENT + ")(\\." + PATTERN_SEGMENT + ")*"; |
49 | 44 |
|
50 | | -private static final Pattern PATTERN = Pattern.compile(DEFAULT_PATTERN); |
| 45 | + private static final String DEFAULT_PATTERN = |
| 46 | + // ....1......................2...........................3...........................4 |
| 47 | + "(" + ROOT_PACKAGE + ")\\.(" + PATTERN_SEGMENT + ")\\.(" + PATTERN_LAYERS + ")(\\." + PATTERN_SEGMENT + ")*"; |
51 | 48 |
|
52 | | -/* ArchRule and Condition */ |
| 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 | + |
| 59 | + /* ArchRule and Condition */ |
53 | 60 | @ArchTest |
54 | 61 | public ArchRule shouldHaveValidLayers = classes().should(containsValidPackageStructureCondition()); |
55 | | - |
56 | | - |
| 62 | + |
57 | 63 | private static ArchCondition<JavaClass> containsValidPackageStructureCondition() { |
58 | | - return new ArchCondition<JavaClass>("check for the package structure to be valid", new Object(){}) { |
| 64 | + |
| 65 | + return new ArchCondition<JavaClass>("check for the package structure to be valid", new Object() { |
| 66 | + }) { |
59 | 67 | @Override |
60 | 68 | public void check(JavaClass javaClass, ConditionEvents events) { |
61 | | - Matcher matcher = PATTERN.matcher(javaClass.getPackageName()); |
62 | | - String message = javaClass.getSimpleName() + " test result is " + matcher.matches(); |
63 | | - events.add(new SimpleConditionEvent(javaClass, |
64 | | - matcher.matches(), message)); |
| 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)); |
65 | 73 | } |
66 | 74 | }; |
67 | 75 | }; |
|
0 commit comments