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());