[ 
https://issues.apache.org/jira/browse/CXF-6764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15123849#comment-15123849
 ] 

Neal Hu commented on CXF-6764:
------------------------------

Hi Dan,
Do we have the class named org.apache.cxf.jaxb.NamespaceMapperInternal?

How about add below logic and new class named 
org.apache.cxf.common.jaxb.NamespaceMapperInternal extends 
com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper

{code:java}
        if (cls == null
            && (mcls.getName().contains(".internal.") || 
mcls.getName().contains("com.sun"))) {
            //Liberty change, when use jdk JAXB we need NamespaceMapper extends 
 com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper
            if (mcls.getName().contains(".internal."))
                className = "org.apache.cxf.common.jaxb.NamespaceMapper" + 
"Internal";
            else
                className = "org.apache.cxf.common.jaxb.NamespaceMapper";

            try {
                cls = ClassLoaderUtils.loadClass(className, JAXBUtils.class);
            } catch (ClassNotFoundException ex2) {
                // ignore
            }
        }
{code}

> Should add RI JAXB Namespacemapper support
> ------------------------------------------
>
>                 Key: CXF-6764
>                 URL: https://issues.apache.org/jira/browse/CXF-6764
>             Project: CXF
>          Issue Type: Bug
>          Components: Core, JAX-RS
>    Affects Versions: 3.0.7, 3.1.4
>         Environment: Windows
>            Reporter: Neal Hu
>             Fix For: 3.1.5, 3.0.8, 3.2.0
>
>
> /cxf-core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java:1097
> {code:java}
>         if (cls == null
>             && (mcls.getName().contains(".internal.") || 
> mcls.getName().contains("com.sun"))) {
>             try {
>                 cls = 
> ClassLoaderUtils.loadClass("org.apache.cxf.common.jaxb.NamespaceMapper", 
>                                                  JAXBUtils.class);
>             } catch (ClassNotFoundException ex2) {
>                 // ignore
>             }
>         }
> {code}
> CXF only add org.apache.cxf.common.jaxb.NamespaceMapper which extends 
> com.sun.xml.bind.marshaller.NamespacePrefixMapper, but the RI JAXB need a 
> mapper extends com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper
> So when we add namespace mapper in JAXBElementProvider subclass, the RI JAXB 
> cann't add the namespace mapping correctly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to