@@ -82,6 +82,11 @@ final class ArchitectureRules {
8282
8383 private static final String TEST_AUTOCONFIGURATION_ANNOTATION = "org.springframework.boot.test.autoconfigure.TestAutoConfiguration" ;
8484
85+ private static final Predicate <JavaPackage > NULL_MARKED_PACKAGE_FILTER = (candidate ) -> !List
86+ .of ("org.springframework.boot.cli.json" , "org.springframework.boot.configurationmetadata.json" ,
87+ "org.springframework.boot.configurationprocessor.json" )
88+ .contains (candidate .getName ());
89+
8590 private ArchitectureRules () {
8691 }
8792
@@ -258,7 +263,9 @@ private static ArchRule conditionalOnMissingBeanShouldNotSpecifyOnlyATypeThatIsT
258263 }
259264
260265 static ArchRule packagesShouldBeAnnotatedWithNullMarked () {
261- return ArchRuleDefinition .all (packages ()).should (beAnnotatedWithNullMarked ()).allowEmptyShould (true );
266+ return ArchRuleDefinition .all (packages (NULL_MARKED_PACKAGE_FILTER ))
267+ .should (beAnnotatedWithNullMarked ())
268+ .allowEmptyShould (true );
262269 }
263270
264271 private static ArchCondition <? super JavaMethod > notSpecifyOnlyATypeThatIsTheSameAsTheMethodReturnType () {
@@ -504,11 +511,11 @@ private static String shouldUse(String string) {
504511 return string + " should be used instead" ;
505512 }
506513
507- static ClassesTransformer <JavaPackage > packages () {
514+ static ClassesTransformer <JavaPackage > packages (Predicate < JavaPackage > filter ) {
508515 return new AbstractClassesTransformer <>("packages" ) {
509516 @ Override
510517 public Iterable <JavaPackage > doTransform (JavaClasses collection ) {
511- return collection .stream ().map (JavaClass ::getPackage ).collect (Collectors .toSet ());
518+ return collection .stream ().map (JavaClass ::getPackage ).filter ( filter ). collect (Collectors .toSet ());
512519 }
513520 };
514521 }
0 commit comments