On 12/07/12 18:37, S K wrote:
I appreciate your help. Thanks again!

No problems, I should've clarified it will be released before 2.6.2 is out, which is indeed due in few weeks time

Cheers, Sergey


On Thu, Jul 12, 2012 at 10:15 AM, Sergey Beryozkin <[email protected]
<mailto:[email protected]>> wrote:

    On 12/07/12 17:54, S K wrote:

        Thanks Sergey. Just to confirm... the fix is available in
        Jettison 1.3.2
        right? That is still an option?

        The part about extending the JSONProvider (workaround) is not an
        option.
        Correct?

        I think we can wait. Although I will consider the Jackson
        approach as well.

        If this issue is resolved in Jettison 1.3.2, can you tell me
        when that
        Jettison release will be available and is it compatible with CXF
        2.6.1?


    Jettison 1.3.2 is not released yet, 1.3.2-SNAPSHOT is the current
    trunk. Will be released in the next few weeks.

    Cheers, Sergey


        Thanks,
        Steve

        On Thu, Jul 12, 2012 at 8:26 AM, Sergey Beryozkin
        <[email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>> wrote:

             On 12/07/12 15:22, Sergey Beryozkin wrote:

                 Hi
                 On 11/07/12 06:48, S K wrote:

                     Hello,
                     I have a REST service which supports JSON requests.
        When an
                     element of
                     the
                     JSON object contains more than one of the same elements
                     (e.g. "a") and
                     the
                     element is not defined as a collection, the last
        element
                     found in the
                     request is set to the instance of the annotated
        bean for
                     that element and
                     the first one is ignored/overwritten. The schema
        validation
                     does not
                     catch
                     this is it would for an equivalent XML request. For
        example,
                     below "a" is
                     an element which is defined once in the annotated
        class but
                     when it
                     appears
                     more than once in the request, "a" will be set to 2. Is
                     there a way I can
                     have my service recognize this JSON request
        contains more
                     than one "a"
                     element, which is not allowed before allowing the
        request to
                     continue?
                     The
                     requests are being validated by an XSD. I'm using
        CXF 2.6.1.

                     {
        "SomeRequest": {
        "a":1,
        "a":2,
        "b":2
                     }}


                     this is how the field is defined in the request class
                     SomeRequest
                     @XmlElement(name = "a" , required=true)
                     private Long a;



                     Schema element defined as:
        <xs:element name="a" type="xs:long"/>


                 The problem was in Jettison which I've just fixed.
        Jettison can not
                 stream at the moment so the values having identical
        keys were simply
                 overwritten. So the good news is that Jettison 1.3.2
        will have this
                 issue fixed.

                 The possible workaround is to extend JSONProvider and
        wrap the
                 reader it
                 creates with the custom reader which will do its own
        enforcement,
                 example, it will block the payloads which will have
        more than
                 one 'a'
                 element...

             Sorry, this is not an option given that Jettison has
        already lost
             the first 'a' by the time readers are asked for the data.
             I'm afraid the only option then is to attempt to control
        the way the
             client produces the payloads. Or do some kind of input stream
             filtering which is messy...
             Consider trying Jackson - that may help, though I'm not
        sure if the
             schema validation can be plugged in there

             Cheers, Sergey

                 thanks, Sergey


                     Thanks!
                     Steve




             --
             Sergey Beryozkin

             Talend Community Coders
        http://coders.talend.com/

             Blog: http://sberyozkin.blogspot.com




    --
    Sergey Beryozkin

    Talend Community Coders
    http://coders.talend.com/

    Blog: http://sberyozkin.blogspot.com




--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to