eclipse-ee4j / eclipse-ee4j/yasson
@JsonbTypeAdapter recognized but not used for record classes
- Dominant language
- Java
- Stars
- 218
- Forks
- 109
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 9
Description
**Describe the bug**
```
record MyClass(@JsonbProperty("my_set_field") @JsonbTypeAdapter(SetAdapter.class) Set entries) {};
public class SetAdapter implements JsonbAdapter> { /* ... */ }
```
Exception:
```
Caused by: jakarta.json.bind.JsonbException: Adapter of runtime type class java.lang.String does not match property type interface java.util.Set
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.AnnotationIntrospector.getAdapterBindingFromAnnotation(AnnotationIntrospector.java:247)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.AnnotationIntrospector.getAdapterBinding(AnnotationIntrospector.java:221)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.model.PropertyModel.introspectCustomization(PropertyModel.java:272)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.model.PropertyModel.(PropertyModel.java:171)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.ClassParser.lambda$parseProperties$0(ClassParser.java:70)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1787)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.ClassParser.parseProperties(ClassParser.java:71)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.MappingContext.lambda$createParseClassModelFunction$1(MappingContext.java:97)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1740)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.MappingContext.getOrCreateClassModel(MappingContext.java:81)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.Unmarshaller.deserializeItem(Unmarshaller.java:60)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.Unmarshaller.deserialize(Unmarshaller.java:51)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.JsonBinding.deserialize(JsonBinding.java:59)
at org.eclipse.yasson@2.0.4/org.eclipse.yasson.internal.JsonBinding.fromJson(JsonBinding.java:66)
```
**To Reproduce**
See classes above
**Expected behavior**
The 2nd parameter is used for comparison as it is for POJOs.
**System information:**
- OS: Mac
- Java Version: 17, 20
- Yasson Version: 2.0.4
**Additional context**
./.
Contributor guide
Assessment
This issue has not been assessed yet.