[ 
https://issues.apache.org/jira/browse/JOHNZON-415?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Blevins updated JOHNZON-415:
----------------------------------
    Description: 
Attempting deserialize class Email as follows
 
{code:java}
final String json = "[\"test\",\"domain.com\"]";
final Email email = jsonb.fromJson(json, Email.class);{code}
fails if the adapter is declared on the Email class
{code:java}
@JsonbTypeAdapter(Adapter.EmailClass.class)
public static class Email {
final String user;
final String domain; 
//... {code}
and adapter code
{code:java}
public static class EmailClass implements JsonbAdapter<Email, String[]> {

    @Override
    public String[] adaptToJson(final Email obj) {
        return new String[]{obj.user, obj.domain};
    }

    @Override
    public Email adaptFromJson(final String[] parts) {
        return new Email(parts[0], parts[1]);
    }
{code}
This will work on a write operation.  This will work on a read and write in any 
order if Email is a field inside another class.

  was:
Attempting deserialize class Email as follows
 
{code:java}
final String json = "[\"test\",\"domain.com\"]";
final Email email = jsonb.fromJson(json, Email.class);{code}
fails if the adapter is declared on the Email class
{code:java}
@JsonbTypeAdapter(Adapter.EmailClass.class)
public static class Email {
final String user;
final String domain;

{code}
{color:#910091}//...{color}

and adapter code
{code:java}
public static class EmailClass implements JsonbAdapter<Email, String[]> {

    @Override
    public String[] adaptToJson(final Email obj) {
        return new String[]{obj.user, obj.domain};
    }

    @Override
    public Email adaptFromJson(final String[] parts) {
        return new Email(parts[0], parts[1]);
    }
{code}
This will work on a write operation.  This will work on a read and write in any 
order if Email is a field inside another class.


> Reads fail with Array JsonbTypeAdapter on deserialized class
> ------------------------------------------------------------
>
>                 Key: JOHNZON-415
>                 URL: https://issues.apache.org/jira/browse/JOHNZON-415
>             Project: Johnzon
>          Issue Type: Bug
>          Components: JSON-B
>    Affects Versions: 2.0.1
>            Reporter: David Blevins
>            Priority: Major
>
> Attempting deserialize class Email as follows
>  
> {code:java}
> final String json = "[\"test\",\"domain.com\"]";
> final Email email = jsonb.fromJson(json, Email.class);{code}
> fails if the adapter is declared on the Email class
> {code:java}
> @JsonbTypeAdapter(Adapter.EmailClass.class)
> public static class Email {
> final String user;
> final String domain; 
> //... {code}
> and adapter code
> {code:java}
> public static class EmailClass implements JsonbAdapter<Email, String[]> {
>     @Override
>     public String[] adaptToJson(final Email obj) {
>         return new String[]{obj.user, obj.domain};
>     }
>     @Override
>     public Email adaptFromJson(final String[] parts) {
>         return new Email(parts[0], parts[1]);
>     }
> {code}
> This will work on a write operation.  This will work on a read and write in 
> any order if Email is a field inside another class.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to