Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Record setter not included from interface (2.15 regression) #3938

Closed
cowtowncoder opened this issue May 18, 2023 · 3 comments
Closed

Record setter not included from interface (2.15 regression) #3938

cowtowncoder opened this issue May 18, 2023 · 3 comments
Labels
Record Issue related to JDK17 java.lang.Record support
Milestone

Comments

@cowtowncoder
Copy link
Member

cowtowncoder commented May 18, 2023

A technique used to handle "unknown" properties of Records, wherein something like this is done:

interface NoOptionsCommand {
  @JsonProperty("options")
  default void setOptions(JsonNode value) {
    if (value.isNull()) {
       return;
    }
    throw new IllegalArgumentException("Non-null 'options' not allowed for "+getClass().getName());
  }
}


public record FindOneCommand(int id, String filter)
    implements NoOptionsCommand {
}

works with Jackson 2.14, but started failing with 2.15. It looks like "options" is sort of recognized as failure message lists it as known property, but setter is not used or called.

EDIT: actually, the real thing is that buffering is needed: above type is fine, but content MUST not include both id and filter properties.

@cowtowncoder cowtowncoder added Record Issue related to JDK17 java.lang.Record support 2.15 labels May 18, 2023
@cowtowncoder
Copy link
Member Author

Looks like above is not enough to reproduce: what is needed is addition of polymorphic handling AND only providing partial contents -- basically I think it is needed to force buffering of contents which somehow triggers the problem.

@cowtowncoder
Copy link
Member Author

Further: no polymorphism needed, just buffering. So need to leave out one of id or filter to force different code path.
But with that, reproducible.

@cowtowncoder
Copy link
Member Author

This is due to #3724; specific check in BeanDeserializer._deserializeUsingPropertyBased(...) to avoid buffering seems to trigger failure. Need to see how to tackle.

@cowtowncoder cowtowncoder added this to the 2.15.2 milestone May 18, 2023
JooHyukKim added a commit to JooHyukKim/jackson-databind that referenced this issue May 22, 2023
commit 63a7b1d
Merge: 559cd04 3140bb7
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 16:47:22 2023 -0700

    Merge branch '2.15' into 2.16

commit 3140bb7
Merge: 4e1c9be 9f80462
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 16:46:48 2023 -0700

    Merge branch '2.15' of github.com:FasterXML/jackson-databind into 2.15

commit 559cd04
Merge: f083348 4e1c9be
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 16:45:27 2023 -0700

    Merge branch '2.15' into 2.16

commit 9f80462
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 16:44:56 2023 -0700

    Fix FasterXML#3938: do not skip Method-based setters on Records (FasterXML#3939)

commit 4e1c9be
Merge: 3168975 c524e6b
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 15:54:01 2023 -0700

    Merge branch '2.14' into 2.15

commit c524e6b
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 15:53:45 2023 -0700

    Fix FasterXML#3938 to repro actual issue

commit 3168975
Merge: 3291911 04d7ae4
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 15:18:36 2023 -0700

    Merge branch '2.14' into 2.15

commit 04d7ae4
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 18 15:13:41 2023 -0700

    Add passing test (in 2.14) for FasterXML#3938

commit f083348
Merge: 6091c4b 3291911
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 14:53:20 2023 -0700

    Merge branch '2.15' into 2.16

commit 3291911
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 14:49:51 2023 -0700

    Back to snapshot dep

commit 05472ae
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 14:47:37 2023 -0700

    [maven-release-plugin] prepare for next development iteration

commit 6e37325
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 14:47:34 2023 -0700

    [maven-release-plugin] prepare release jackson-databind-2.15.1

commit 3d9dd34
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 14:34:13 2023 -0700

    2.15.1 release

commit 6091c4b
Merge: d2ae3a2 55d87cf
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 12:38:57 2023 -0700

    Merge branch '2.15' into 2.16

commit 55d87cf
Merge: a7e17ad c7b6c64
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 12:38:24 2023 -0700

    Merge branch '2.14' into 2.15

commit c7b6c64
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Tue May 16 12:35:44 2023 -0700

    Fix FasterXML#3882 (JsonNode.withArray() fail)

commit d2ae3a2
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Mon May 15 21:06:11 2023 -0700

    manual merge of pom.xml (test) change

commit 7ddce07
Merge: a3bb1b9 a7e17ad
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Mon May 15 21:02:46 2023 -0700

    Merge branch '2.15' into 2.16

commit a7e17ad
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Mon May 15 21:01:49 2023 -0700

    Add Junit 5 test dependency

commit a3bb1b9
Merge: a3b231c 8a8ba5a
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Mon May 15 18:13:22 2023 -0700

    Merge branch '2.15' into 2.16

commit 8a8ba5a
Author: Kim, Joo Hyuk <beanskobe@gmail.com>
Date:   Tue May 16 10:13:07 2023 +0900

    Update JavaDoc of JsonAppend. (FasterXML#3933)

commit a3b231c
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Mon May 15 15:38:40 2023 -0700

    Update release notes wrt FasterXML#3928

commit 40c9739
Author: PJ Fanning <pjfanning@users.noreply.github.com>
Date:   Mon May 15 23:32:27 2023 +0100

    Json property affects Record field serialization order (FasterXML#3929)

commit 8fcf9ef
Merge: e9db4b3 e5bdcfb
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Sun May 14 17:08:35 2023 -0700

    Merge branch '2.15' into 2.16

commit e5bdcfb
Author: Kim, Joo Hyuk <beanskobe@gmail.com>
Date:   Mon May 15 09:06:35 2023 +0900

    Remove hard-coded `StreamReadConstraints` test variables to isolate change in `jackson-core` itself (FasterXML#3930)

commit e9db4b3
Author: Piotr Findeisen <piotr.findeisen@gmail.com>
Date:   Mon May 15 02:04:42 2023 +0200

    Fix typo in USE_GETTERS_AS_SETTERS description (FasterXML#3931)

commit d8d4cb6
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Sat May 13 20:15:45 2023 -0700

    Sync tests wrt error messages

commit c1b4aad
Merge: 67103c2 6f81a4e
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Sat May 13 20:04:42 2023 -0700

    Merge branch '2.15' into 2.16

commit 6f81a4e
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Sat May 13 20:02:20 2023 -0700

    Minor change to align with higher max string value length limit

commit 67103c2
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Sat May 6 09:44:18 2023 -0700

    Clean up attic...

commit cfe8e97
Author: Muhammad Khalikov <55890311+mukham12@users.noreply.github.com>
Date:   Sat May 6 12:43:35 2023 -0400

    Fix a few typos in documentation (FasterXML#3919)

commit df541d3
Author: Kim, Joo Hyuk <beanskobe@gmail.com>
Date:   Sat May 6 12:32:13 2023 +0900

    Improve and fix JavaDocs for Jackson 2.15 (FasterXML#3917)

commit d44e014
Merge: 924152d c8c7d39
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Fri May 5 09:36:27 2023 -0700

    Merge branch '2.15' into 2.16

commit c8c7d39
Merge: a7a8a80 d47d1b6
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Fri May 5 09:36:21 2023 -0700

    Merge branch '2.14' into 2.15

commit d47d1b6
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Fri May 5 09:34:29 2023 -0700

    Back to snapshot dep

commit 6f3d20f
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Fri May 5 09:31:43 2023 -0700

    [maven-release-plugin] prepare for next development iteration

commit 8cdba21
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Fri May 5 09:31:40 2023 -0700

    [maven-release-plugin] prepare release jackson-databind-2.14.3

commit 2bd50de
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Fri May 5 09:09:17 2023 -0700

    Prepare for 2.14.3 release

commit 924152d
Merge: 774ddb8 a7a8a80
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 14:00:26 2023 -0700

    Merge branch '2.15' into 2.16

commit a7a8a80
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 14:00:13 2023 -0700

    ...

commit 774ddb8
Merge: f847745 ad308b4
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 13:57:18 2023 -0700

    Merge branch '2.15' into 2.16

commit ad308b4
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 13:55:48 2023 -0700

    Update release notes wrt FasterXML#3897

commit 1fa2d86
Author: Sim Yih Tsern <sim_yihtsern@yahoo.com>
Date:   Fri May 5 04:52:30 2023 +0800

    Record constructor with single write-only parameter should result in properties-based creator, to fix FasterXML#3897. (FasterXML#3910)

commit f847745
Merge: f3c60ed ee3b89a
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 11:13:22 2023 -0700

    Merge branch '2.16' of github.com:FasterXML/jackson-databind into 2.16

commit f3c60ed
Merge: 23603ea 7547591
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 11:13:15 2023 -0700

    Merge branch '2.15' into 2.16

commit 7547591
Author: Tatu Saloranta <tatu.saloranta@iki.fi>
Date:   Thu May 4 11:12:53 2023 -0700

    Mark FasterXML#3895 as fixed (due to another PR/issue)

commit ee3b89a
Author: ChangYong <lcy9002@naver.com>
Date:   Fri May 5 02:09:33 2023 +0900

    Fix incorrect comment (FasterXML#3916)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Record Issue related to JDK17 java.lang.Record support
Projects
None yet
Development

No branches or pull requests

1 participant