Skip to content

Commit 0ce7b77

Browse files
committed
Update Processor.java
1 parent 011d81f commit 0ce7b77

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,31 @@ private void registerCustomAdapters(Set<? extends Element> elements) {
7979
final var type = typeElement.getQualifiedName().toString();
8080
if (CustomAdapterPrism.getInstanceOn(typeElement).isGeneric()) {
8181
ElementFilter.fieldsIn(typeElement.getEnclosedElements()).stream()
82-
.filter(isStaticFactory())
83-
.findFirst()
84-
.orElseThrow(() -> new IllegalStateException("Generic Adapters require a public static JsonAdapter.Factory FACTORY field"));
82+
.filter(isStaticFactory())
83+
.findFirst()
84+
.ifPresentOrElse(
85+
x -> {},
86+
() ->
87+
logError(
88+
typeElement,
89+
"Generic adapters require a public static JsonAdapter.Factory FACTORY field"));
8590

8691
metaData.addFactory(type);
8792
} else {
93+
ElementFilter.constructorsIn(typeElement.getEnclosedElements()).stream()
94+
.filter(m -> m.getModifiers().contains(Modifier.PUBLIC))
95+
.filter(m -> m.getParameters().size() == 1)
96+
.map(m -> m.getParameters().get(0).asType().toString())
97+
.map(Util::trimAnnotations)
98+
.filter("io.avaje.jsonb.Jsonb"::equals)
99+
.findAny()
100+
.ifPresentOrElse(
101+
x -> {},
102+
() ->
103+
logError(
104+
typeElement,
105+
"Non-Generic adapters must have a public contrustor with a single Jsonb parameter"));
106+
88107
metaData.add(type);
89108
}
90109
}

0 commit comments

Comments
 (0)