17
17
18
18
import static com .tngtech .archunit .lang .syntax .ArchRuleDefinition .classes ;
19
19
import static com .tngtech .archunit .lang .syntax .ArchRuleDefinition .methods ;
20
- import static com .tngtech .archunit .lang .syntax .ArchRuleDefinition .noClasses ;
21
20
import static com .tngtech .archunit .lang .syntax .ArchRuleDefinition .noFields ;
22
21
import static com .tngtech .archunit .lang .syntax .ArchRuleDefinition .noMethods ;
23
22
import static com .tngtech .archunit .library .freeze .FreezingArchRule .freeze ;
37
36
import java .util .HashSet ;
38
37
import java .util .Optional ;
39
38
import java .util .Set ;
40
- import java .util .concurrent .Future ;
41
39
import java .util .regex .Pattern ;
42
40
import org .junit .jupiter .api .Test ;
43
41
import software .amazon .awssdk .annotations .SdkPublicApi ;
@@ -78,59 +76,51 @@ void publicApisShouldBeFinal() {
78
76
.should ().haveModifier (JavaModifier .FINAL ))
79
77
.because ("public APIs SHOULD be final" )
80
78
.check (classes );
79
+ System .out .println ("publicApisShouldBeFinal finished" );
81
80
}
82
81
83
- @ Test
84
- void shouldNotUseFuture () {
85
- System .out .println ("shouldNotUseFuture" );
86
- JavaClasses classes = new ClassFileImporter ()
87
- .withImportOptions (Arrays .asList (new ImportOption .Predefined .DoNotIncludeTests ()))
88
- .importPackages ("software.amazon.awssdk" );
89
- freeze (noClasses ().should ().dependOnClassesThat ().areAssignableFrom (Future .class )
90
- .as ("use java.util.concurrent.Future" )
91
- .because ("Future SHOULD NOT be used, use CompletableFuture instead" ))
92
- .check (classes );
93
- }
94
-
95
- @ Test
96
- void shouldNotUseOptionalForFields () {
97
- System .out .println ("shouldNotUseOptionalForFields" );
98
- JavaClasses classes = new ClassFileImporter ()
99
- .withImportOptions (Arrays .asList (new ImportOption .Predefined .DoNotIncludeTests ()))
100
- .importPackages ("software.amazon.awssdk" );
101
- freeze (noFields ().should ().haveRawType (Optional .class )
102
- .as ("use Optional for fields" )
103
- .because ("Optional SHOULD NOT be used for method parameters. See "
104
- + "https://github.com/aws/aws-sdk-java-v2/blob/master/docs"
105
- + "/design/UseOfOptional.md" ))
106
- .check (classes );
107
- }
108
-
109
- @ Test
110
- void mustNotUseOptionalForMethodParam () {
111
- System .out .println ("mustNotUseOptionalForMethodParam" );
112
- JavaClasses classes = new ClassFileImporter ()
113
- .withImportOptions (Arrays .asList (new ImportOption .Predefined .DoNotIncludeTests ()))
114
- .importPackages ("software.amazon.awssdk" );
115
- freeze (noMethods ().should ().haveRawParameterTypes (Optional .class )
116
- .as ("use Optional for method parameters" )
117
- .because ("Optional MUST NOT be used for method parameters. See "
118
- + "https://github.com/aws/aws-sdk-java-v2/blob/master/docs/design/UseOfOptional.md" ))
119
- .check (classes );
120
- }
82
+ // @Test
83
+ // void shouldNotUseOptionalForFields() {
84
+ // System.out.println("shouldNotUseOptionalForFields");
85
+ // JavaClasses classes = new ClassFileImporter()
86
+ // .withImportOptions(Arrays.asList(new ImportOption.Predefined.DoNotIncludeTests()))
87
+ // .importPackages("software.amazon.awssdk");
88
+ // freeze(noFields().should().haveRawType(Optional.class)
89
+ // .as("use Optional for fields")
90
+ // .because("Optional SHOULD NOT be used for method parameters. See "
91
+ // + "https://github.com/aws/aws-sdk-java-v2/blob/master/docs"
92
+ // + "/design/UseOfOptional.md"))
93
+ // .check(classes);
94
+ // System.out.println("shouldNotUseOptionalForFields finished");
95
+ // }
96
+
97
+ // @Test
98
+ // void mustNotUseOptionalForMethodParam() {
99
+ // System.out.println("mustNotUseOptionalForMethodParam");
100
+ // JavaClasses classes = new ClassFileImporter()
101
+ // .withImportOptions(Arrays.asList(new ImportOption.Predefined.DoNotIncludeTests()))
102
+ // .importPackages("software.amazon.awssdk");
103
+ // freeze(noMethods().should().haveRawParameterTypes(Optional.class)
104
+ // .as("use Optional for method parameters")
105
+ // .because("Optional MUST NOT be used for method parameters. See "
106
+ // + "https://github.com/aws/aws-sdk-java-v2/blob/master/docs/design/UseOfOptional.md"))
107
+ // .check(classes);
108
+ // System.out.println("mustNotUseOptionalForMethodParam finished");
109
+ // }
121
110
122
111
@ Test
123
112
void publicApisMustNotDeclareThrowableOfCheckedException () {
124
113
System .out .println ("publicApisMustNotDeclareThrowableOfCheckedException" );
125
114
JavaClasses classes = new ClassFileImporter ()
126
115
.withImportOptions (Arrays .asList (new ImportOption .Predefined .DoNotIncludeTests ()))
127
116
.importPackages ("software.amazon.awssdk" );
128
- freeze (noMethods ().that ()
117
+ freeze (noMethods ().that (). arePublic (). and ()
129
118
.areDeclaredInClassesThat ().areAnnotatedWith (SdkPublicApi .class )
130
119
.should ()
131
120
.declareThrowableOfType (Exception .class ).orShould ().declareThrowableOfType (IOException .class )
132
121
.because ("public APIs MUST NOT throw checked exception" ))
133
122
.check (classes );
123
+ System .out .println ("publicApisMustNotDeclareThrowableOfCheckedException finished" );
134
124
}
135
125
136
126
@ Test
@@ -140,7 +130,7 @@ void shouldNotAbuseWarnLog() {
140
130
.withImportOptions (Arrays .asList (
141
131
location -> ALLOWED_WARN_LOG_SUPPRESSION .stream ().noneMatch (location ::matches ),
142
132
new ImportOption .Predefined .DoNotIncludeTests ()))
143
- .importPackages ("software.amazon.awssdk.. " );
133
+ .importPackages ("software.amazon.awssdk" );
144
134
145
135
ArchRule rule =
146
136
freeze (methods ().that ().areDeclaredIn (Logger .class ).and ()
@@ -150,6 +140,7 @@ void shouldNotAbuseWarnLog() {
150
140
+ " to ALLOWED_WARN_LOG_SUPPRESSION allowlist" );
151
141
152
142
rule .check (classes );
143
+ System .out .println ("shouldNotAbuseWarnLog finished" );
153
144
}
154
145
155
146
@ Test
@@ -159,7 +150,7 @@ void shouldNotAbuseErrorLog() {
159
150
.withImportOptions (Arrays .asList (
160
151
location -> ALLOWED_ERROR_LOG_SUPPRESSION .stream ().noneMatch (location ::matches ),
161
152
new ImportOption .Predefined .DoNotIncludeTests ()))
162
- .importPackages ("software.amazon.awssdk.. " );
153
+ .importPackages ("software.amazon.awssdk" );
163
154
164
155
ArchRule rule =
165
156
freeze (methods ().that ().areDeclaredIn (Logger .class ).and ()
@@ -168,6 +159,7 @@ void shouldNotAbuseErrorLog() {
168
159
+ "ALLOWED_ERROR_LOG_SUPPRESSION allowlist" );
169
160
170
161
rule .check (classes );
162
+ System .out .println ("shouldNotAbuseErrorLog finished" );
171
163
}
172
164
173
165
private static final class MethodBeingUsedByOthers extends ArchCondition <JavaMethod > {
0 commit comments