Hi
On Sat, Apr 2, 2011 at 9:20 AM, [email protected] <[email protected]>wrote:
> This change is causing a MappedXMLStreamReaderTest.testMultipleArrays test
>> failure, can you check it please ?
>>
>
> I have checked it, and my question now is, is it really required by some
> specification, that something like this:
>
> { "root": [ A ] }
>
> ..is treated like this:
>
> { "root": A }
>
> So 1-sized arrays seem to form a special case.
> However to detect this special case, a parser has to read the characters
> following A since e.g. a B can follow:
>
> { "root": [ A , B ] }
>
> So a "SAX-style" JSON parser will never be possible, and the size of
> transmitted JSON is limited to about 100MB for all times (I say a number
> here which I experienced in a SAX-versus-DOM experiment years ago).
>
> So for sake of this limit, and for sake to work with JSONProvider, can this
> behavior be reconsidered (and testMultipleArrays be adjusted accordingly)?
>
>
I can probably agree that the above convention does not need to be
supported. That said the testMultipleArrays failure is caused by the new
code which results in additional START/END element events around every array
element. I was actually confused about it first but then realized that
exactly that was needed for JAXB to deserialize such a collection. I agree
that the current Jettison code assuming that the top level array will have a
single element only (as assumed by testMultipleArrays) is not correct - so
leaving your original proposed change intact and updating
testMultipleArrays to expect an additional START/END element event makes
sense.
--
Sergey Beryozkin
Application Integration Division of Talend <http://www.talend.com>
http://sberyozkin.blogspot.com