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