I'll double check and add some exemples in the main branch without my
changes so it's easier to discuss on a PR and with concrete examples.

--
Jean-Louis Monteiro
http://twitter.com/jlouismonteiro
http://www.tomitribe.com

Le mer. 2 juil. 2025, 16:02, Romain Manni-Bucau <rmannibu...@gmail.com> a
écrit :

> I think it is the expectation of johnzon, the record model is to use
> getters without "get",
>
> using lombok the additional properties are actually matching this so end in
> the json
>
> what i'm no more sure is about builder one, if static we should clearly
> filter static methods out but age must be in the json IMHO otherwise you
> loose the hability to have "virtual" read only properties which is an
> important feature IMHO (similarly of what we were doing with POJO).
>
> Romain Manni-Bucau
> @rmannibucau <https://x.com/rmannibucau> | .NET Blog
> <https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/>
> | Old
> Blog <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> | LinkedIn
> <https://www.linkedin.com/in/rmannibucau> | Book
> <
> https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064
> >
>
>
> Le mer. 2 juil. 2025 à 15:58, Jean-Louis Monteiro <
> jlmonte...@tomitribe.com>
> a écrit :
>
> > I will update my version, but long story short, the following does not
> work
> >
> > @Test
> > > public void foo() {
> > >     try (Jsonb jsonb = ....) {
> > >         final Person person = new Person("John Doe", LocalDate.of(1990,
> > 1, 1));
> > >         final String json = jsonb.toJson(person);
> > >         assertEquals("{\"name\":\"John
> > Doe\",\"birthday\":\"1990-01-01\"}", json);
> > >
> > >         final Person deserializedPerson = jsonb.fromJson(json,
> > Person.class);
> > >         assertEquals("John Doe", deserializedPerson.name());
> > >         assertEquals(33, deserializedPerson.age());
> > >     } catch (Exception e) {
> > >         throw new RuntimeException(e);
> > >     }
> > > }
> > >
> > > @Builder(builderClassName = "Builder")
> > > public record Person (String name, LocalDate birthday) {
> > >     public int age() {
> > >         return LocalDate.now().getYear() - birthday.getYear();
> > >     }
> > > }
> > >
> > >
> > >
> > The JSON would contain 2 additional nodes
> >
> > "builder":{},
> >
> >
> >
> > > "age": 33
> >
> >
> > I've updated the MethodAccessMode to filter out methods which are not
> > fields
> >
> > if (isRecord(clazz) || Meta.getAnnotation(clazz, JohnzonRecord.class) !=
> > null) {
> >     readers.putAll(Stream.of(clazz.getMethods())
> >         .filter(it -> it.getDeclaringClass() != Object.class &&
> > it.getParameterCount() == 0)
> >         .filter(it -> clazz.getRecordComponents() == null
> >                 ||
> > java.util.Arrays.stream(it.getDeclaringClass().getRecordComponents())
> >                       .anyMatch(rc -> rc.getName().equals(it.getName())
> >                                       &&
> > rc.getType().equals(it.getReturnType())))
> >         .filter(it -> !"toString".equals(it.getName()) &&
> > !"hashCode".equals(it.getName()))
> >         .filter(it -> !isIgnored(it.getName()) &&
> > Meta.getAnnotation(it, JohnzonAny.class) == null)
> >         .collect(toMap(m -> extractKey(m.getName(), m, null), it ->
> > new MethodReader(it, it.getGenericReturnType()))));
> > } else {
> >
> >
> >
> > But again, it might be something with my project if you think it's all
> ok.
> >
> > --
> > Jean-Louis Monteiro
> > http://twitter.com/jlouismonteiro
> > http://www.tomitribe.com
> >
> >
> > On Wed, Jul 2, 2025 at 2:14 PM Romain Manni-Bucau <rmannibu...@gmail.com
> >
> > wrote:
> >
> > > Hi JL,
> > >
> > > No strong opinion but records are supported since day 1 by johnzon so
> not
> > > sure I get right the last part of your mail.
> > >
> > > Romain Manni-Bucau
> > > @rmannibucau <https://x.com/rmannibucau> | .NET Blog
> > > <https://dotnetbirdie.github.io/> | Blog <
> https://rmannibucau.github.io/
> > >
> > > | Old
> > > Blog <http://rmannibucau.wordpress.com> | Github
> > > <https://github.com/rmannibucau> | LinkedIn
> > > <https://www.linkedin.com/in/rmannibucau> | Book
> > > <
> > >
> >
> https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064
> > > >
> > >
> > >
> > > Le mer. 2 juil. 2025 à 12:51, Jean-Louis Monteiro <
> > > jlmonte...@tomitribe.com>
> > > a écrit :
> > >
> > > > Hi all,
> > > >
> > > > Anyone against bumping the java version for the main branch from 11
> to
> > 14
> > > > (or even 17)?
> > > > Currently, Java Record aren't really well managed and I don't think
> > using
> > > > Java Reflection to workaround the Java version is the best design.
> > > >
> > > >
> > > > --
> > > > Jean-Louis Monteiro
> > > > http://twitter.com/jlouismonteiro
> > > > http://www.tomitribe.com
> > > >
> > >
> >
>

Reply via email to