On Wednesday 07 November 2007, Benson Margulies wrote:
> I'm not sure that the flat thing is all that hard. I'd like to know
> what the other Dan thinks.

For Arrays internal to other objects, it's not that hard.    For arrays 
that are parameters to the SEI methods it's quite a bit harder.    That 
said, I had the same problem in JAXB (when not using generated 
doc/lit/wrapped wrapper objects)  so I've battled it before.    
(although, since the entire Aegis code is in our control, it's probably 
much easier)

Basically, the reasons I went with the wrapper types as part of the fix 
for CXF-1116 was that:
1) It was consistent with the arrays internal to the other objects
2) It HAS to be implemented that way for the rpc/lit case 
and 
3) It was easy to implement for the wrapped doc/lit case since the call 
path in this case is almost exactly the same as the rpc/lit case.

FYI: arrays to SEI methods using RPC/Lit will generate ArrayOf types with 
JAXB as well.   To get JAXB to NOT do the "ArrayOf" things for 
doc/lit/wrapped took a lot of work and separate call paths for the 
doc/lit/wrapped case compared to the doc/lit/bare and rpc/lit cases.


Dan


> > -----Original Message-----
> > From: Daniel Kulp [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, November 07, 2007 1:25 PM
> > To: cxf-user@incubator.apache.org
> > Cc: Kaleb Walton
> > Subject: Re: Aegis databinding and Java 5 Generic List creating
> > extra "anyType" field
> >
> > > This is *quite* undesirable. Does anyone have any suggestions for
> > > a workaround?
> >
> > At this point, I think the only options are:
> >
> > 1) Switch to jaxb (which doesn't do this)
> >
> > 2) Start writing the code to do the "flat" stuff.      Patches are
>
> more
>
> > than welcome.   :-)
> >
> > Dan
> >
> > On Wednesday 07 November 2007, Kaleb Walton wrote:
> > > Darn! I think that's it... I'm looking at the output of all of my
> > > arrays and they fork in this extra level which is given the name
> > > of the class of the object type stored in the array.
> > >
> > > Example:
> > > Note the extra 'ServiceFieldError' level that shouldn't be there
> > > and also note the 'fieldErrors' property that should actually be
> > > of type Array.
> > >
> > >                     [fieldErrors] => stdClass Object
> > >                         (
> > >                             [ServiceFieldError] => Array
> > >                                 (
> > >                                     [0] => stdClass Object
> > >                                         (
> > >                                             [code] =>
>
> errors.required
>
> > >                                             [defaultMessage] =>
>
> Field
>
> > > is required
> > >                                             [field] => foo
> > >                                             [rejectedValue] => Foo
> > >                                         )
> > >
> > >                                     [1] => stdClass Object
> > >                                         (
> > >                                             [code] =>
>
> errors.required
>
> > >                                             [defaultMessage] =>
>
> Field
>
> > > is required
> > >                                             [field] => bar
> > >                                             [rejectedValue] => 1
> > >                                         )
> > >
> > >                                 )
> > >
> > >                         )
> > >
> > > This is *quite* undesirable. Does anyone have any suggestions for
> > > a workaround?
> > >
> > > Regards,
> > > Kaleb
> > >
> > > |------------>
> > > | From:      |
> > > |------------>
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > >   >
> > >   |"Benson Margulies" <[EMAIL PROTECTED]>
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > > |
> > > |------------>
> > > | To:        |
> > > |------------>
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > >   >
> > >   |<cxf-user@incubator.apache.org>
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > > |
> > > |------------>
> > > | Date:      |
> > > |------------>
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > >   >
> > >   |11/06/2007 11:49 AM
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > > |
> > > |------------>
> > > | Subject:   |
> > > |------------>
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > >   >
> > >   |RE: Aegis databinding and Java 5 Generic List creating extra
> > >   | "anyType" field
> >
> >-------------------------------------------------------------------
> >
> >-------------------------------------------------------------------
> >
> > >   >------------|
> > >
> > > The 'flat' feature is an attribute in the mapping schema that was
> > > intended to control some cases of either adding an extra level of
> > > type/element or not. Apparently, it isn't this one. While the code
>
> to
>
> > > parse the attribute exists, the code to actually pay attention to
> > > it does not.
> > >
> > >
> > >
> > > ________________________________
> > >
> > > From: Kaleb Walton [mailto:[EMAIL PROTECTED]
> > > Sent: Tuesday, November 06, 2007 11:27 AM
> > > To: cxf-user@incubator.apache.org
> > > Subject: RE: Aegis databinding and Java 5 Generic List creating
>
> extra
>
> > > "anyType" field
> > >
> > >
> > >
> > > Thanks for the reply. Unfortunately nillable is already set to
>
> false.
>
> > > What is the 'flat' feature? I can't imagine that I'm the only
> > > person having the problem.
> > >
> > > Do you know if there is a way to specify something in an aegis.xml
> > > config that tells the 'items' list to not add the 'anyType'
>
> property?
>
> > > Regards,
> > > Kaleb
> > >
> > > Inactive hide details for "Benson Margulies" ---11/06/2007
> > > 08:58:14 AM---If you set nillable to false it might do what you
> > > want"Benson Margulies" ---11/06/2007 08:58:14 AM---If you set
> > > nillable to false
>
> it
>
> > > might do what you want. On the other
> > >
> > >
> > > From:
> > >
> > >
> > > "Benson Margulies" <[EMAIL PROTECTED]>
> > >
> > >
> > > To:
> > >
> > >
> > > <cxf-user@incubator.apache.org>
> > >
> > >
> > > Date:
> > >
> > >
> > > 11/06/2007 08:58 AM
> > >
> > >
> > > Subject:
> > >
> > >
> > > RE: Aegis databinding and Java 5 Generic List creating extra
>
> "anyType"
>
> > > field
> > >
> > > ________________________________
> > >
> > >
> > >
> > >
> > > If you set nillable to false it might do what you want. On the
> > > other hand, it might be that this is the never-implemented 'flat'
> > > feature
>
> of
>
> > > Aegis.
> > >
> > > > -----Original Message-----
> > > > From: Kaleb Walton [mailto:[EMAIL PROTECTED]
> > > > Sent: Tuesday, November 06, 2007 8:55 AM
> > > > To: cxf-user@incubator.apache.org
> > > > Subject: Aegis databinding and Java 5 Generic List creating
> > > > extra "anyType" field
> > > >
> > > >
> > > >
> > > > Thanks to Aegis databinding I can specify the minOccurs on my
> > >
> > > primitive
> > >
> > > > fields so the WSDL contract doesn't force them to be required.
> > >
> > > However,
> > >
> > > > Aegis has introduced something else that I'm not familiar with.
> > > > It may
> > >
> > > be
> > >
> > > > "proper" but I'm not familiar with it and it seems to add one
> > > > more
> > >
> > > level
> > >
> > > > of
> > > > a property between a field name and it's value.
> > > >
> > > > I have an object defined as such:
> > > >
> > > > class ServiceListResult<T> {
> > > >     private List<T> items;
> > > >     //getters/setters
> > > > }
> > > >
> > > > T is a Java 5 generic class reference.
> > > >
> > > > When using the Simple Server default data binding my object
> > > > looked
> > >
> > > like
> > >
> > > > this when output from PHP:
> > > >
> > > > [items] => Array
> > > >     (
> > > >         [0] => stdClass Object
> > > >             (
> > > >                 ...
> > > >             )
> > > >      )
> > > >
> > > > Now it looks like this:
> > > >
> > > > [items] => sdtClass Object
> > > >     (
> > > >         [anyType] => Array
> > > >             (
> > > >                 [0] => stdClass Object
> > > >                     (
> > > >                         ...
> > > >                     )
> > > >             )
> > > >      )
> > > >
> > > >
> > > > Is there any way to make the output look like the Simple Server
>
> did
>
> > > > or
> > >
> > > is
> > >
> > > > this the "proper" output since I'm using generics?
> > > >
> > > > Regards,
> > > > Kaleb
> >
> > --
> > J. Daniel Kulp
> > Principal Engineer
> > IONA
> > P: 781-902-8727    C: 508-380-7194
> > [EMAIL PROTECTED]
> > http://www.dankulp.com/blog



-- 
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194
[EMAIL PROTECTED]
http://www.dankulp.com/blog

Reply via email to