File tree Expand file tree Collapse file tree 1 file changed +22
-3
lines changed
jsonb-generator/src/main/java/io/avaje/jsonb/generator Expand file tree Collapse file tree 1 file changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -79,12 +79,31 @@ private void registerCustomAdapters(Set<? extends Element> elements) {
79
79
final var type = typeElement .getQualifiedName ().toString ();
80
80
if (CustomAdapterPrism .getInstanceOn (typeElement ).isGeneric ()) {
81
81
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" ));
85
90
86
91
metaData .addFactory (type );
87
92
} 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
+
88
107
metaData .add (type );
89
108
}
90
109
}
You can’t perform that action at this time.
0 commit comments