Sure, I'll build that example, thank you!

On Tue, Jun 16, 2009 at 3:08 PM, Daniel Kulp<[email protected]> wrote:
> On Tue June 16 2009 1:35:43 pm Gabriel Guardincerri wrote:
>> Hi Daniel,
>>
>> I tried that patch, but I'm still getting the same error. I also
>> debugged it a little bit and notice that that method is invoked only
>> for PUT or POST request. But those type of requests are actually
>> working for us with the new version of CXF, we don't have problems
>> there. Our problem is with GET or DELETE services that have some
>> parameter in the URL, like the "getUserByUsername(String username)"
>> example in the files that I sent you.
>>
>> While debugging I also found that the method
>> "IriDecoderHelper.buildDocument((XmlSchemaAnnotated schemaAnnotation,
>> Collection<SchemaInfo> schemas, List<Param> params)" is the one that
>> is called for a GET request. And the good news is that when it is
>> called it has the parameters that were in the URL and its value. I
>> mean, the list "params" has for example one "Param" that is the
>> username and its value when I call getUserByUsername service. So it
>> seems that at that point everything is OK, and that we lose it after
>> that. I was wondering if the problem is when building that document.
>> Did that changed? or do you have any other ideas of where the problem
>> could be?
>
> Nope.  Nothing on that code path seems to have changed in the http binding.
> Possibly something in the super classes someplace or the model setup or
> similar.   Don't really know.   Any chance you can take your interface (at
> least the affected methods) and setup a small test project that shows the
> issue and attach to a JIRA?
>
> Dan
>
>
>
>> Thank you,
>>
>> Gabriel
>>
>> On Mon, Jun 15, 2009 at 5:00 PM, Daniel Kulp<[email protected]> wrote:
>> > Gabriel,
>> >
>> > Just did a diff of the http binding between 2.1.x branch and the 2.0.7
>> > tag and didn't see anything obvious.   There really were not many changes
>> > to the http binding.
>> >
>> > HOWEVER, I did see one suspect change.   Are you in a position to be able
>> > to patch and test?   Basically, in IriDecoderHelper.java, around line
>> > 334, you should see something that looks like:
>> >
>> >                Node node = ec.getFirstChild();
>> >                while (node != null) {
>> >                    ec.removeChild(node);
>> >                    node = node.getNextSibling();
>> >                }
>> >
>> > I THINK that may be the cause of the problem.   Once the node is removed,
>> > I'm willing to bet the node.getNextSibling() call returns null.   Can you
>> > try changing the code to:
>> >
>> >                Node node = ec.getFirstChild();
>> >                while (node != null) {
>> >                    Node next = node.getNextSibling();
>> >                    ec.removeChild(node);
>> >                    node = next;
>> >                }
>> >
>> > and seeing if that fixes it?
>> >
>> > Dan
>> >
>> > On Mon June 15 2009 3:45:50 pm Daniel Kulp wrote:
>> >> Gabriel,
>> >>
>> >> Is it just the createUserWithUser message (and the PUT version) that is
>> >> having the problem or are all the "Gets" also problematic?
>> >>
>> >> That incoming message really looks suspect.   The createUserWithUser
>> >> message isn't namespace qualified at all which would be invalid per any
>> >> of the schema. Thus, I'm surprised that even worked with 2.0.x.     Is
>> >> there any way you could try a POST (with wget or something) of the
>> >> message, but namespace qualify it?    I'm curious if that would work.
>> >>  Most likely, if you are going to want the message accepted, you'll need
>> >> to write an interceptor that would "fake" a namespace on that element.
>> >> Basically, wrapper the XMLStreamReader with a new one that would map
>> >> that element name into a qualified version of it.
>> >>
>> >> Dan
>> >>
>> >> On Mon June 15 2009 3:16:03 pm Gabriel Guardincerri wrote:
>> >> > Hi Dan and Sergey,
>> >> >
>> >> > >> The main change between them that MAY affect the XML binding is
>> >> > >> going from JAXB 2.0.x to JAXB 2.1.x.    The generated code from xjc
>> >> > >> can be quite different and could potentially change things.
>> >> >
>> >> > Dan, it may be that change. Our code works on 2.0.7, but it doesn't
>> >> > work on 2.1.5 nor 2.2.2. If there is a way to fix that I'll really
>> >> > appreciate it. We want to use the latest version 2.2.2 and JAX-RS for
>> >> > some new web services that we need to build. But we need to keep
>> >> > backward compatibility with the old web services that we have. So the
>> >> > best, meaning less effort, option is to have a fix for HTTP-binding in
>> >> > version 2.2.2. We are planning to migrate this old services, but not
>> >> > now.
>> >> >
>> >> > The problem is only with URL params. All our GET and DELETE services
>> >> > that use some URL param don't work, they always get null values.
>> >> >
>> >> > For example
>> >> >
>> >> > For this service
>> >> >
>> >> > @WebMethod
>> >> > @Get
>> >> > @HttpResource(location = "/users/{username}")
>> >> > WSUser getUserByUsername(@WebParam(name = "username")String username)
>> >> > throws UserNotFoundException;
>> >> >
>> >> > Using this request
>> >> >
>> >> > GET http://localhost:8080/rpc/rest/userService/users/user1
>> >> >
>> >> > It doesn't work. The username param has a null value. Is there a way
>> >> > to get a patch for that?
>> >> >
>> >> > > It is interesting. It would be helpful if Gabriel could post two
>> >> > > sample XML instances, one showing what the clients are currently
>> >> > > getting and what they would get if CXF 2.2.2 were used, we can
>> >> > > proceed from there...
>> >> >
>> >> > Sergey, actually when using HTTP-binding with CXF 2.2.2 we get the
>> >> > same XML, the problem is what I mention above, that some methods don't
>> >> > get params. So we were thinking on migrating them to JAX-RS to make it
>> >> > work, but we need to configure it to use the same XML messages format
>> >> > that we  have for HTTP-binding. I'm attaching some xml samples
>> >> > request/response and the interface with the annotations. Sorry that my
>> >> > first post wasn't a clear.
>> >> >
>> >> > Anyway, we prefer to just apply a patch to CXF 2.2.2 to make it work,
>> >> > instead of migrating our old stuff. We are planning to migrate them
>> >> > since it was deprecated, but if possible not for our next version, we
>> >> > are short of time for this release and this problem was unexpected.
>> >> >
>> >> > Thanks in advance,
>> >> >
>> >> > Gabriel
>> >> >
>> >> > On Mon, Jun 15, 2009 at 1:12 PM, Sergey
>> >> > Beryozkin<[email protected]>
>> >>
>> >> wrote:
>> >> > > Hi Dan,
>> >> > >
>> >> > >> Sergey,
>> >> > >>
>> >> > >>
>> >> > >>
>> >> > >>
>> >> > >> I know a bug was fixed in the HTTP binding for 2.2.2 in regards to
>> >> > >> the root element things.   I'm wondering if that may have affected
>> >> > >> this or not.
>> >> > >
>> >> > > possibly...
>> >> > >
>> >> > > thanks, Sergey
>> >> > >
>> >> > >> Dan
>> >> > >>
>> >> > >> On Sun June 14 2009 3:47:26 pm Sergey Beryozkin wrote:
>> >> > >>> Hi,
>> >> > >>>
>> >> > >>> As far as I'm aware no significant changes have been made to the
>> >> > >>> HTTP binding recently, I haven't done any work with it for sure.
>> >> > >>> Perhaps there've been some cosmetic changes but I'm not aware of
>> >> > >>> them.
>> >> > >>>
>> >> > >>> We've agreed to deprecate the HTTP binding as all the focus now is
>> >> > >>> on enhancing the JAX-RS runtime.
>> >> > >>>
>> >> > >>> > The problem is that we need to keep the same XML messages format
>> >> > >>> > for
>> >> > >>>
>> >> > >>> backward compatibility.
>> >> > >>>
>> >> > >>> Can you please post a sample class annotated with HTTPBinding
>> >> > >>> annotations and XML message which is expected by current clients ?
>> >> > >>>
>> >> > >>> Thanks, Sergey
>> >> > >>>
>> >> > >>>
>> >> > >>> -----Original Message-----
>> >> > >>> From: Gabriel Guardincerri [mailto:[email protected]]
>> >> > >>> Sent: 12 June 2009 20:08
>> >> > >>> To: [email protected]
>> >> > >>> Subject: How to migrate REST HTTP-binding to JAX-RS and keep the
>> >> > >>> xml messages format?
>> >> > >>>
>> >> > >>>
>> >> > >>> Hi,
>> >> > >>>
>> >> > >>> We have a lot of WS that were implemented using HTTP-binding of
>> >> > >>> CXF 2.0.11,
>> >> > >>> but when we tried to migrate CXF to 2.2.2 we found out that
>> >> > >>> HTTP-binding do
>> >> > >>> not pass params correctly. So we were trying to migrate those
>> >> > >>> services to
>> >> > >>> JAX-RS. The problem is that we need to keep the same XML messages
>> >> > >>> format for
>> >> > >>> backward compatibility. We tried with the three data binding
>> >> > >>> providers that
>> >> > >>> are in the jaxrs package XMLBeansElementProvider,
>> >> > >>> JAXBElementProvider and
>> >> > >>> AegisElementProvider, but none of them have the same XML format
>> >> > >>> for messages
>> >> > >>> that HTTP-binding has.
>> >> > >>>
>> >> > >>> Is there a way to do so? I mean, to implement services with JAX-RS
>> >> > >>> and use
>> >> > >>> the same XML data binding that has HTTP-binding? Or a way to build
>> >> > >>> the same
>> >> > >>> XML messages?
>> >> > >>>
>> >> > >>> Of course, if there is a way to make HTTP-binding work in version
>> >> > >>> 2.2.2 or
>> >> > >>> 2.1.5, it will be the best solution.
>> >> > >>>
>> >> > >>> Thanks,
>> >> > >>>
>> >> > >>> Gabriel
>> >> > >>
>> >> > >> --
>> >> > >> Daniel Kulp
>> >> > >> [email protected]
>> >> > >> http://www.dankulp.com/blog
>> >
>> > --
>> > Daniel Kulp
>> > [email protected]
>> > http://www.dankulp.com/blog
>
> --
> Daniel Kulp
> [email protected]
> http://www.dankulp.com/blog
>

Reply via email to