You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2007/07/17 21:54:04 UTC

[jira] Created: (CXF-802) Java first with unqualified/unannotated JAXB objects don't generate proper soap messages....

Java first with unqualified/unannotated JAXB objects don't generate proper soap messages....
--------------------------------------------------------------------------------------------

                 Key: CXF-802
                 URL: https://issues.apache.org/jira/browse/CXF-802
             Project: CXF
          Issue Type: Bug
          Components: Core, JAX-WS Runtime, JAXB Databinding, Soap Binding
    Affects Versions: 2.0
            Reporter: Daniel Kulp
            Assignee: Daniel Kulp
             Fix For: 2.0.1



In a java first scenario, if the service interface/impl is set for the default of wrapped doc/lit and returns a simple pojo bean with no annotations, (thus no namespace set so defaults to unqualified), AND the user does not run wsdl2java with -s to generate the wrapper beans, the service doesn't work.

The resulting soap message is not correct.   The WrappedOutInterceptor sets the default namespace to the namespace of the wrapper type.  However, the jaxb databinding does not "unset" that when it writes.   Thus, you get something like:
<getJerkResponse xmlns="http://server.token.example.com/endpoint">
    <ns2:result xmlns:ns2="http://server.token.example.com/endpoint">
        <jerkName>somebody</jerkName>
    </ns2:result>
</getJerkResponse>
The "jerkName" element  ends up qualified in the parser

Next problem.   If I fixed the WrappedOut to qualify the getJerkReponse element, you get:
<ns1:getJerkResponse xmlns:ns1="http://server.token.example.com/endpoint">
    <ns2:result xmlns:ns2="http://server.token.example.com/endpoint">
        <jerkName>somebody</jerkName>
    </ns2:result>
</ns1:getJerkResponse>
which also is incorrect.   The "result" element should be unqualified.    The part names in the unwrapped operation should have null namespaces if the schema is unqualified.    Thus, the JAXBElement that is used to write the parts would be properly unqualified.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CXF-802) Java first with unqualified/unannotated JAXB objects don't generate proper soap messages....

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp resolved CXF-802.
-----------------------------

    Resolution: Fixed

> Java first with unqualified/unannotated JAXB objects don't generate proper soap messages....
> --------------------------------------------------------------------------------------------
>
>                 Key: CXF-802
>                 URL: https://issues.apache.org/jira/browse/CXF-802
>             Project: CXF
>          Issue Type: Bug
>          Components: Core, JAX-WS Runtime, JAXB Databinding, Soap Binding
>    Affects Versions: 2.0
>            Reporter: Daniel Kulp
>            Assignee: Daniel Kulp
>             Fix For: 2.0.1
>
>
> In a java first scenario, if the service interface/impl is set for the default of wrapped doc/lit and returns a simple pojo bean with no annotations, (thus no namespace set so defaults to unqualified), AND the user does not run wsdl2java with -s to generate the wrapper beans, the service doesn't work.
> The resulting soap message is not correct.   The WrappedOutInterceptor sets the default namespace to the namespace of the wrapper type.  However, the jaxb databinding does not "unset" that when it writes.   Thus, you get something like:
> <getJerkResponse xmlns="http://server.token.example.com/endpoint">
>     <ns2:result xmlns:ns2="http://server.token.example.com/endpoint">
>         <jerkName>somebody</jerkName>
>     </ns2:result>
> </getJerkResponse>
> The "jerkName" element  ends up qualified in the parser
> Next problem.   If I fixed the WrappedOut to qualify the getJerkReponse element, you get:
> <ns1:getJerkResponse xmlns:ns1="http://server.token.example.com/endpoint">
>     <ns2:result xmlns:ns2="http://server.token.example.com/endpoint">
>         <jerkName>somebody</jerkName>
>     </ns2:result>
> </ns1:getJerkResponse>
> which also is incorrect.   The "result" element should be unqualified.    The part names in the unwrapped operation should have null namespaces if the schema is unqualified.    Thus, the JAXBElement that is used to write the parts would be properly unqualified.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CXF-802) Java first with unqualified/unannotated JAXB objects don't generate proper soap messages....

Posted by "Michael Lake (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CXF-802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513348 ] 

Michael Lake commented on CXF-802:
----------------------------------

Can be worked around by creating a file in your package of types to be marshalled called package-info.java

put something like the following into it:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://wstypes.server.example.com",
                                     elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
 package com.example.token.server.wstypes;

> Java first with unqualified/unannotated JAXB objects don't generate proper soap messages....
> --------------------------------------------------------------------------------------------
>
>                 Key: CXF-802
>                 URL: https://issues.apache.org/jira/browse/CXF-802
>             Project: CXF
>          Issue Type: Bug
>          Components: Core, JAX-WS Runtime, JAXB Databinding, Soap Binding
>    Affects Versions: 2.0
>            Reporter: Daniel Kulp
>            Assignee: Daniel Kulp
>             Fix For: 2.0.1
>
>
> In a java first scenario, if the service interface/impl is set for the default of wrapped doc/lit and returns a simple pojo bean with no annotations, (thus no namespace set so defaults to unqualified), AND the user does not run wsdl2java with -s to generate the wrapper beans, the service doesn't work.
> The resulting soap message is not correct.   The WrappedOutInterceptor sets the default namespace to the namespace of the wrapper type.  However, the jaxb databinding does not "unset" that when it writes.   Thus, you get something like:
> <getJerkResponse xmlns="http://server.token.example.com/endpoint">
>     <ns2:result xmlns:ns2="http://server.token.example.com/endpoint">
>         <jerkName>somebody</jerkName>
>     </ns2:result>
> </getJerkResponse>
> The "jerkName" element  ends up qualified in the parser
> Next problem.   If I fixed the WrappedOut to qualify the getJerkReponse element, you get:
> <ns1:getJerkResponse xmlns:ns1="http://server.token.example.com/endpoint">
>     <ns2:result xmlns:ns2="http://server.token.example.com/endpoint">
>         <jerkName>somebody</jerkName>
>     </ns2:result>
> </ns1:getJerkResponse>
> which also is incorrect.   The "result" element should be unqualified.    The part names in the unwrapped operation should have null namespaces if the schema is unqualified.    Thus, the JAXBElement that is used to write the parts would be properly unqualified.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.