Thank you Sergey! We'll try to figure out why it differs here.
Best regards, eric -----Original Message----- From: Sergey Beryozkin [mailto:[email protected]] Sent: lundi 2 février 2015 15:01 To: MULLER, Anthony; FESTINGER, Eric Cc: [email protected] Subject: Re: CXF 2.3.8 + Jackson or Jettison 1.3.7 ? Actually, JSONProvider.setIgnoreEmptyArrayValues(true); will work right now, I see a test confirming it, JSONProviderTest.testManyTagsEmptyArray in the CXF source Cheers, Sergey On 02/02/15 13:48, Sergey Beryozkin wrote: > Hi Anthony, Eric, > > CC-ing to the users as it can be of interest, > > On 02/02/15 13:17, MULLER, Anthony wrote: >> Hello again, >> >> About this issue: >> >>>> 2) when there is only one element, we get reports: {report: {name = >>>> "foo"}} >>>> --> they'd like: reports: {[report: {name = "foo"}]} >> >> Eric has implemented a solution which consists in scanning our whole >> JAXB POJO folder (generated from XSD) and then fill in the >> serializedAsArray() structure. It seems to work fine, we need to check >> it more in details to be sure there is no regression. > > > If you can write a code like that then you can write a new Jettison in a > couple of days :-). Nice work Eric > >> >> About this second issue, we are a bit stuck: >> >>>> 1) when no element in an array, we get: reports: "" >>>> --> they'd like: reports : [] or reports : null >> >> So, when there is no element, we didn't know how we can configure >> Jettison to write something different than "" (empty quote). In most >> of cases, this behavior is fine (for instance <name></name> becomes >> {name : ""}). >> >> However, in some cases, basically when an element can only contain a >> list of elements (reports --> report), we're trying to produce >> something different: >> >> Currently : {reports : ""} >> Target output : {reports : null} >> >> Do you see any options we have to do that? We explored some additional >> settings introduced into Jettison but we cannot deal with this issue >> right now... >> > > So you have a 'reports' property as an array key and Jettison reports "" > when a JAXB bean 'reports' property is empty ? Looks like it is a > Jettison bug and needs to be fixed - I'll investigate for Jettison 1.3.7 > (in a few weeks realistically). > > I think the correct JSON output is actually > "{"reports":[]}" > > but if "{reports : null}" is also acceptable then > > might be worth experimenting with some of JAXB properties, I guess the > following link can help: > > http://blog.bdoughan.com/2012/12/jaxb-representing-null-and-empty.html > > You'd probably 'wrap' a given list with XMLElementWrapper and set its > nillable attribute to true, something like that... > > In meantime I'll look into making sure Jettison can produce > "{"reports":[]}" > > Thanks, Sergey > >> Thanks again for your help Sergey, >> >> Anthony >> >> >> -----Original Message----- >> From: MULLER, Anthony >> Sent: lundi 2 février 2015 11:09 >> To: 'Sergey Beryozkin'; FESTINGER, Eric >> Subject: RE: CXF 2.3.8 + Jackson or Jettison 1.3.7 ? >> >> Thanks for your feedback and various proposal Sergey! >> >> Anthony >> >> -----Original Message----- >> From: Sergey Beryozkin [mailto:[email protected]] >> Sent: lundi 2 février 2015 11:05 >> To: FESTINGER, Eric; MULLER, Anthony >> Subject: Re: CXF 2.3.8 + Jackson or Jettison 1.3.7 ? >> >> Hi Eric >> >> Indeed, providing custom XMLStreamWriter or Reader is the most flexible >> option to manage various Jettison specific issue. It is a rather complex >> approach but it can offer a way to control the process... >> Cheers, Sergey >> On 02/02/15 07:36, FESTINGER, Eric wrote: >>> hello Sergey and Anthony, >>> >>> ... and thanks for the explanation about this current patch. >>> >>> In a meanwhile, I have made some parser which reads our JAXB >>> generated classes, and populate the >>> xmlStreamWriter.serializeAsArray(...). >>> >>> Best regards, >>> >>> eric >>> >>> -----Original Message----- >>> From: Sergey Beryozkin [mailto:[email protected]] >>> Sent: dimanche 1 février 2015 22:07 >>> To: MULLER, Anthony >>> Cc: FESTINGER, Eric; [email protected] >>> Subject: Re: CXF 2.3.8 + Jackson or Jettison 1.3.7 ? >>> >>> Hi Anthony >>> >>> I'm CC-ing to the users list because it can be of interest to others. >>> >>> >>> On 30/01/15 09:35, MULLER, Anthony wrote: >>>> Hello Sergey, >>>> >>>> About this issue: >>>> http://jira.codehaus.org/browse/JETTISON-142 >>>> >>>> Do you think this will help to troubleshoot the array serialization >>>> issue with Jettison? >>> Not really. JETTISON-142 patch provides a fairly specific work-around >>> which works only in JSON->XML->JSON auto conversion cases. The challenge >>> there is to investigate if JSON-> XML or JAXB Bean -> JSON can also >>> work. Most likely it is not related to the issues you are seeing >>>> >>>> In our case, customers provide us several times the same feedback >>>> about the difficulty to handle the JSON output: >>>> >>>> 1) when no element in an array, we get: reports: "" >>>> --> they'd like: reports : [] or reports : null >>>> 2) when there is only one element, we get reports: {report: {name = >>>> "foo"}} >>>> --> they'd like: reports: {[report: {name = "foo"}]} >>>> >>>> We already know about some existing settings in Jettison >>>> (serializedAsArray flag and this other parameter to provide tag >>>> names to deal with), but it is not flexible enough for us because we >>>> have some cases when a tag is effectively in an array, and another >>>> XML document where the same tag name is not in an array... >>> Jettison 1.3.6 introduces namespace-'local' array keys. For example, >>> 'n1.a', 'n2.b', where 'n1' and 'n2' are namespace prefixes registered in >>> a separate namespace map. >>> So, if you have a single JSONProvider handling multiple documents where >>> an element with a name 'a' is a list in not all of the documents then >>> most likely you can use something like 'n1.a', etc, to uniquely identify >>> such a property. >>> >>> I hope migrating to Jettison 1.3.6 can help. Let me know please >>> Indeed, Jackson would offer a more robust alternative but you'd need to >>> annotate the given beans with Jackson annotations... >>> >>> HTH, Sergey >>> >>>> >>>> I'm looking forward to get your point of view. >>>> >>>> Best regards, >>>> Anthony >>>> >> > > -- Sergey Beryozkin Talend Community Coders http://coders.talend.com/ Blog: http://sberyozkin.blogspot.com
