Sergey, If you want to me to tackle PADB for Aegis, you have a writing assignment. Please write up a comprehensive explanation in the javadoc. Just calling it an 'alternative' does not give an implementor much to go with.
I think the top-level issue with namespaces is going to boil down to the existence, or nonexistence, of 'parts', but I'll report back presently. --benson On Mon, Aug 24, 2009 at 8:58 AM, Sergey Beryozkin<sergey.beryoz...@iona.com> wrote: > > Hi Benson > > Thanks for spending your time on these tests, and fixing CXF 2401. I was > also able to add few more tests, including the one which writes/reads a > complex Map to/from JSON. > > AegisJSONProvider tries its best for users to avoid setting up a namespace > map manually, but in cases when it does not guess properly the users would > be able to overwrite namespaces and their prefixes as needed. This isssue > would likely arise on the read side only, when CXF reads it. JSON is > namespace-unaware so when reading, one needs to setup a namespace map for > Jettison to report values like @ns1.bar to the JAXB reader... (but only if > AegisJSONProvider has not guessed how to map prefixes to namespaces) > > There's a couple of issues I'd like to discuss. First one is that > AegisJsonProviderTest.testReadWriteComplexMap does have to setup a namespace > for a map root element, but it does not have to do it for > testWrite/ReadCollection tests. I'm wondering, can it be avoided in cases > when Maps are being written/read ? That is, can we modify > createReader/Writer methods such that QNames for containers like > Map/Collections and its member types are available ? > > Another one is that DataBindingJSONProvider test (aegis tests) still can not > handle collections. I think the problem there is that when > DataBindingProvider (the one DataBindingJSONProvider extends) is being > initialized, it uses a workaround which we discussed in the other thread. > Namely, it attempts to convert a JAXRS model info into WSDL-like one and set > calls DataBinding.initialize(Service). It's quite limiting for a number of > reasons, and one of them is that the generic types are not visible to data > bindings.... > So we introduced PropertiesAwareDataBinding interface and I've just updated > the JAXRS code to call it like this : > > Map<Class<?>, Type> allClasses = getAllJAXRSResponseInputTypes(); > Map<String, Object> props = new HashMap<String, Object>(); > props.put(PropertiesAwareDataBinding.TYPES_PROPERTY, allClasses); > ((PropertiesAwareDataBinding)db).initialize(props); > > At the moment no CXF DataBindings implement this newly introduced interface. > I think the only way for DataBindingJSONProvider aegis tests which handle > collections to start passing is for Aegis DataBinding to implement > PropertiesAwareDataBinding and initialize itself using the provided > Map<Class<?>, Type>, as opposed to Service. Would you be open to updating > the Aegis databinding ? > > thanks, Sergey > > > > > > > > > > > > bimargulies wrote: >> >> I have a rather clear memory of working on these, there wasn't enough >> passing of Generic classes around. I'll go have a look. >> >> >> On Fri, Aug 21, 2009 at 6:38 AM, Sergey >> Beryozkin<sergey.beryoz...@iona.com> wrote: >>> >>> Hi Benson >>> >>> if you could look at any of these tests or at least point me in the right >>> direction then it would be great. >>> I know you're busy - so just look at it whenever you get a chance, not >>> urgent... >>> >>> cheers, Sergey >>> >>> >>> Sergey Beryozkin-2 wrote: >>>> >>>> >>>> >>>> Hi Benson >>>> >>>> I can't make the Aegis tests writing/reading collections working in CXF >>>> JAX-RS. >>>> I've found that AegisProviderTest#testReadWriteComplexMap is still >>>> @Ignored, it might've passed for you because it was @Ignored :-) >>>> >>>> I've also added testWriteCollections() (which writes >>>> List<AegisTestBean>) >>>> to AegisJSONProviderTest. I also updated DataBindingJSONProviderTest, >>>> one >>>> of its internal classes to return List<Book>. AegisJSONProvider extends >>>> AegisElementProvider, DataBindingJSONProvider extends >>>> DataBindingProvider >>>> which actually (in this case) delegates to Aegis DataBinding. >>>> >>>> AegisJSONProviderTest fails at the write time, it can't find the mapping >>>> for List. DataBindingJSONProviderTest fails early at the Aegis >>>> DataBinding >>>> initialization time for the same reason. I thought Lists were supported >>>> by >>>> default ? I haven't found any exam[le showing how a type mapping for >>>> Lists >>>> can be created. >>>> Can you please, whenever you have a chance, have a look at these tests ? >>>> >>>> thanks, Sergey >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/Handling-collections-with-Aegis-in-JAX-RS-tp24933144p25076146.html >>> Sent from the cxf-dev mailing list archive at Nabble.com. >>> >>> >> >> > > -- > View this message in context: > http://www.nabble.com/Handling-collections-with-Aegis-in-JAX-RS-tp24933144p25115676.html > Sent from the cxf-dev mailing list archive at Nabble.com. > >