11package io .avaje .jsonb .generator ;
22
33import static io .avaje .jsonb .generator .APContext .typeElement ;
4- import static java .util .stream .Collectors .toList ;
54
65import java .util .Map ;
76
@@ -25,34 +24,35 @@ void read() {
2524 final TypeElement moduleType = typeElement (fqn );
2625
2726 if (isGeneratedComponent (moduleType )) {
28- var adapters =
29- MetaDataPrism .getInstanceOn (moduleType ).value ().stream ()
30- .map (APContext ::asTypeElement )
31- .collect (toList ());
32-
33- if (adapters .get (0 ).getModifiers ().contains (Modifier .PUBLIC )) {
27+ if (hasPublicComponents (moduleType )) {
3428 componentMetaData .setFullName (fqn );
35- adapters .forEach (t -> readMetaData (moduleType ));
36-
29+ readMetaData (moduleType , componentMetaData );
3730 } else {
38- // non-public adapters grouped by packageName, does not support generic types (JsonFactory)
31+ // non-public adapters grouped by packageName
3932 var packageName = APContext .elements ().getPackageOf (moduleType ).getQualifiedName ().toString ();
4033 var meta = privateMetaData .computeIfAbsent (packageName , k -> new ComponentMetaData ());
41- adapters .stream ()
42- .map (TypeElement ::getQualifiedName )
43- .map (Object ::toString )
44- .forEach (meta ::add );
34+ readMetaData (moduleType , meta );
4535 }
4636 }
4737 }
4838 }
4939
40+ private static boolean hasPublicComponents (TypeElement moduleType ) {
41+ var firstAdapter =
42+ MetaDataPrism .getInstanceOn (moduleType ).value ().stream ()
43+ .map (APContext ::asTypeElement )
44+ .findFirst ()
45+ .orElseThrow ();
46+
47+ return firstAdapter .getModifiers ().contains (Modifier .PUBLIC );
48+ }
49+
5050 private static boolean isGeneratedComponent (TypeElement moduleType ) {
5151 return moduleType != null && "io.avaje.jsonb.spi.GeneratedComponent" .equals (moduleType .getSuperclass ().toString ());
5252 }
5353
5454 /** Read the existing JsonAdapters from the MetaData annotation of the generated component. */
55- private void readMetaData (TypeElement moduleType ) {
55+ private static void readMetaData (TypeElement moduleType , ComponentMetaData meta ) {
5656 for (final AnnotationMirror annotationMirror : moduleType .getAnnotationMirrors ()) {
5757
5858 final MetaDataPrism metaData = MetaDataPrism .getInstance (annotationMirror );
@@ -61,12 +61,12 @@ private void readMetaData(TypeElement moduleType) {
6161 if (metaData != null ) {
6262 metaData .value ().stream ()
6363 .map (TypeMirror ::toString )
64- .forEach (componentMetaData ::add );
64+ .forEach (meta ::add );
6565
6666 } else if (metaDataFactory != null ) {
6767 metaDataFactory .value ().stream ()
6868 .map (TypeMirror ::toString )
69- .forEach (componentMetaData ::addFactory );
69+ .forEach (meta ::addFactory );
7070 }
7171 }
7272 }
0 commit comments