Skip to content

@JsonbTypeDeserializer is not recognized for record parameters #606

@bmarwell

Description

@bmarwell

Describe the bug

I have a malformed UUID, which I re-map like so:

record MyClass(@JsonbProperty("sys_id") @JsonbTypeDeserializer(SysIdDeserializer.class) UUID sysId) {}

It will just be ignored:

Caused by: java.lang.IllegalArgumentException: Invalid UUID string: 2b8f1a676f04c7c027e0cc60cb1f4ec3
        at java.base/java.util.UUID.fromString1(UUID.java:280)
        at java.base/java.util.UUID.fromString(UUID.java:258)
        at [email protected]/org.eclipse.yasson.internal.serializer.UUIDTypeDeserializer.deserialize(UUIDTypeDeserializer.java:37)
        at [email protected]/org.eclipse.yasson.internal.serializer.UUIDTypeDeserializer.deserialize(UUIDTypeDeserializer.java:24)
        at [email protected]/org.eclipse.yasson.internal.serializer.AbstractValueTypeDeserializer.deserialize(AbstractValueTypeDeserializer.java:64)
        at [email protected]/org.eclipse.yasson.internal.serializer.ObjectDeserializer.deserializeNext(ObjectDeserializer.java:167)
        at [email protected]/org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserializeInternal(AbstractContainerDeserializer.java:94)
        at [email protected]/org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserialize(AbstractContainerDeserializer.java:64)
        at [email protected]/org.eclipse.yasson.internal.Unmarshaller.deserializeItem(Unmarshaller.java:62)
        ... 86 more

To Reproduce

record MyClass(@JsonbProperty("sys_id") @JsonbTypeDeserializer(SysIdDeserializer.class) UUID sysId) {}

Expected behavior

Should work.

System information:

  • OS: Mac (latest)
  • Java Version: 17 (tem and sem)
  • Yasson Version: 2.0.4

Additional context

Workaround: add the converter globally. But then it will be used even for json fields which already have valid fields.

@JsonbTypeAdapter() seems to check wrong types, will create a separate issue.

Yes, this is a 2.0.4 bug. I cannot upgrade to 3.x.x just now, because I am stuck with Jakarta 8 for now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working right

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions