Alexander Falb created JOHNZON-200:
--------------------------------------

             Summary: ConstructorProperties with custom-named fields 
(JohnzonProperty)
                 Key: JOHNZON-200
                 URL: https://issues.apache.org/jira/browse/JOHNZON-200
             Project: Johnzon
          Issue Type: Bug
          Components: Mapper
    Affects Versions: 1.1.11
            Reporter: Alexander Falb


I'm not sure if this is a bug or just unexpected behaviour:

When I map a JSON field named "$version" to a Java field named "version" and 
this field is mandatory/final I have to annotate the constuctor like this:
{code:java}
public static class MyBean {
    @JohnzonProperty("$version") private final int version;

    @ConstructorProperties("$version") public MyBean(int version) {
        this.version = version;
    }
...{code}
I would expect the value of {{ConstructorProperties}} to be {{version}} 
(without the dollar $ sign), because the documentation of 
{{ConstructorProperties}} says:
{quote}An annotation on a constructor that shows how the parameters of
 that constructor correspond to the constructed object's getter
 methods. [...]
{quote}
but is actually has to be the JSON field name.

In my optinion this is quite unexpected and also from a maintainability point 
of view I think declaring the custom naming twice is bad. - I think the 
{{ConstructorProperties}} should the the Java field names and not the JSON name 
(or for backward compatability maybe both).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to