Skip to content

Commit 75c3c3f

Browse files
Fix ComponentReader to support no MetaData (only MetaData.Factory is present) (#374)
* Fix ComponentReader to support no MetaData (only MetaData.Factory is present) Handle the case when there isn't a MetaData but only MetaData.Factory * More functional hasPublicComponents() --------- Co-authored-by: robin.bygrave <[email protected]>
1 parent f004e45 commit 75c3c3f

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

jsonb-generator/src/main/java/io/avaje/jsonb/generator/ComponentReader.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,23 @@ void read() {
3838
}
3939

4040
private static boolean hasPublicComponents(TypeElement moduleType) {
41-
var firstAdapter =
42-
MetaDataPrism.getInstanceOn(moduleType).value().stream()
43-
.map(APContext::asTypeElement)
44-
.findFirst()
45-
.orElseThrow();
41+
return MetaDataPrism.getInstanceOn(moduleType).value().stream()
42+
.map(APContext::asTypeElement)
43+
.findFirst()
44+
.map(ComponentReader::hasPublicModifier)
45+
.orElse(hasPublicJsonFactory(moduleType));
46+
}
47+
48+
private static Boolean hasPublicJsonFactory(TypeElement moduleType) {
49+
return JsonFactoryPrism.getInstanceOn(moduleType).value().stream()
50+
.map(APContext::asTypeElement)
51+
.findFirst()
52+
.map(ComponentReader::hasPublicModifier)
53+
.orElse(false);
54+
}
4655

47-
return firstAdapter.getModifiers().contains(Modifier.PUBLIC);
56+
private static boolean hasPublicModifier(TypeElement a) {
57+
return a.getModifiers().contains(Modifier.PUBLIC);
4858
}
4959

5060
private static boolean isGeneratedComponent(TypeElement moduleType) {

0 commit comments

Comments
 (0)