Backport of fix for default namespace issue from 2.3 Reviewed by Blaise Doughan
diff --git a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java index ff46127..a892b64 100644 --- a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java +++ b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
@@ -2196,6 +2196,9 @@ XmlElementDecl elementDecl = (XmlElementDecl) helper.getAnnotation(next, XmlElementDecl.class); String url = elementDecl.namespace(); Class scopeClass = elementDecl.scope(); + if(XMLConstants.EMPTY_STRING.equals(url)) { + isDefaultNamespaceAllowed = false; + } if ("##default".equals(url)) { url = namespaceInfo.getNamespace(); }
diff --git a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java index 5288786..668a896 100644 --- a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java +++ b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
@@ -229,20 +229,22 @@ } JavaClass manyValueJavaClass = helper.getJavaClass(ManyValue.class); - if(!manyValueJavaClass.isAssignableFrom(javaClass)){ - if (rootElem == null) { - descriptor.setDefaultRootElement(""); - } else { - if (namespace.length() == 0) { - descriptor.setDefaultRootElement(elementName); + if (!manyValueJavaClass.isAssignableFrom(javaClass)){ + if(namespace.length() != 0) { + if(isDefaultNamespaceAllowed && globalNamespaceResolver.getDefaultNamespaceURI() == null && namespace.length() != 0) { + globalNamespaceResolver.setDefaultNamespaceURI(namespace); + namespaceInfo.getNamespaceResolverForDescriptor().setDefaultNamespaceURI(namespace); + } + } + if (rootElem == null) { + descriptor.setDefaultRootElement(""); } else { - if(isDefaultNamespaceAllowed && globalNamespaceResolver.getDefaultNamespaceURI() == null){ - globalNamespaceResolver.setDefaultNamespaceURI(namespace); - namespaceInfo.getNamespaceResolverForDescriptor().setDefaultNamespaceURI(namespace); - } - descriptor.setDefaultRootElement(getQualifiedString(getPrefixForNamespace(namespace, namespaceInfo.getNamespaceResolverForDescriptor(), null), elementName)); - } - } + if (namespace.length() == 0) { + descriptor.setDefaultRootElement(elementName); + } else { + descriptor.setDefaultRootElement(getQualifiedString(getPrefixForNamespace(namespace, namespaceInfo.getNamespaceResolverForDescriptor(), null), elementName)); + } + } } descriptor.setNamespaceResolver(namespaceInfo.getNamespaceResolverForDescriptor());