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

Vincent Meunier updated CXF-9133:
---------------------------------
    Description: 
Hello

We are using cxf maven plugin to generate our services and DTOs from WSDL and 
XSD.

It generates JAXB jakarta annotations as expected since the version 4.x. 

We use an ObjectMapper (jackson) to serialize and deserialize those DTO, and we 
try as much as we can to avoid the use of the Reflection API in Java.

But at the moment, the DTO generated via CXF annotates every class with 
*@XmlAccessorType(XmlAccessType.FIELD)* 
 
This forces the libraries that read it, to use the fields directly (which are 
protected), and we have to use some JVM options --add-opens and so on, in order 
to make it work. If we wanted to use the get/set, the correct annotation would 
be *@XmlAccessorType(XmlAccessType.PROPERTY)* - or maybe even better, 
*@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER).* 
If i'm not mistaken, it appears we are stuck at the moment, since there is no 
way to customize the plugin in a way to make it change this specific annotation.
 
In my opinion, we should offer the possibility to users to be able to annotate 
how they want if the default value does not fit their needs.
 
 
Exemple of a class generated : 
 
 
{code:java}
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "someClass", propOrder = {
"oneString",
"twoString"
})
public class SomeClass {     
  @XmlElement(required = true)
  @NotNull
  @Valid
  protected String oneString;
  
  @XmlElement(required = true)
  @NotNull
  @Valid
  protected String twoString; 
  
  // get/set

}{code}
 
 
 

  was:
Hello

We are using cxf maven plugin to generate our services and DTOs from WSDL and 
XSD.

It generates JAXB jakarta annotations as expected since the version 4.x. 

We use an ObjectMapper (jackson) to serialize and deserialize those DTO, and we 
try as much as we can to avoid the use of the Reflection API in Java.

But at the moment, the DTO generated via CXF annotates every class with 
*@XmlAccessorType(XmlAccessType.FIELD)* 
 
This forces the libraries that read it, to use the fields directly (which are 
protected), and we have to use some JVM options --add-opens and so on, in order 
to make it work. If we wanted to use the get/set, the correct annotation would 
be *@XmlAccessorType(XmlAccessType.PROPERTY)* - or maybe even better, 
*@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER).* 
If i'm not mistaken, it appears we are stuck at the moment, since there is no 
way to customize the plugin in a way to make it change this specific annotation.
 
In my opinion, we should offer the possibility to users to be able to annotate 
how they want if the default value does not fit their needs.
 
 
Exemple of a class generated : 
 
 
{code:java}
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "messageDeposerDemande", propOrder = {
"oneString",
"twoString"
})
public class SomeClass {     
  @XmlElement(required = true)
  @NotNull
  @Valid
  protected String oneString;
  
  @XmlElement(required = true)
  @NotNull
  @Valid
  protected String twoString; 
  
  // get/set

}{code}
 
 
 


> WSDL2Java with JAXB
> -------------------
>
>                 Key: CXF-9133
>                 URL: https://issues.apache.org/jira/browse/CXF-9133
>             Project: CXF
>          Issue Type: Improvement
>    Affects Versions: 4.1.1
>            Reporter: Vincent Meunier
>            Priority: Major
>
> Hello
> We are using cxf maven plugin to generate our services and DTOs from WSDL and 
> XSD.
> It generates JAXB jakarta annotations as expected since the version 4.x. 
> We use an ObjectMapper (jackson) to serialize and deserialize those DTO, and 
> we try as much as we can to avoid the use of the Reflection API in Java.
> But at the moment, the DTO generated via CXF annotates every class with 
> *@XmlAccessorType(XmlAccessType.FIELD)* 
>  
> This forces the libraries that read it, to use the fields directly (which are 
> protected), and we have to use some JVM options --add-opens and so on, in 
> order to make it work. If we wanted to use the get/set, the correct 
> annotation would be *@XmlAccessorType(XmlAccessType.PROPERTY)* - or maybe 
> even better, 
> *@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER).* 
> If i'm not mistaken, it appears we are stuck at the moment, since there is no 
> way to customize the plugin in a way to make it change this specific 
> annotation.
>  
> In my opinion, we should offer the possibility to users to be able to 
> annotate how they want if the default value does not fit their needs.
>  
>  
> Exemple of a class generated : 
>  
>  
> {code:java}
> @XmlAccessorType(XmlAccessType.PROPERTY)
> @XmlType(name = "someClass", propOrder = {
> "oneString",
> "twoString"
> })
> public class SomeClass {     
>   @XmlElement(required = true)
>   @NotNull
>   @Valid
>   protected String oneString;
>   
>   @XmlElement(required = true)
>   @NotNull
>   @Valid
>   protected String twoString; 
>   
>   // get/set
> }{code}
>  
>  
>  



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

Reply via email to