[jboss-svn-commits] JBoss Common SVN: r2959 - in jbossxb/trunk/src: test/java/org/jboss/test/xb/builder/object/element/jbossxmlnsprefix/test and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 16 05:46:42 EST 2009


Author: alex.loubyansky at jboss.com
Date: 2009-01-16 05:46:42 -0500 (Fri, 16 Jan 2009)
New Revision: 2959

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
   jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/jbossxmlnsprefix/test/JBossXmlNsPrefixUnitTestCase.java
Log:
JBXB-168

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java	2009-01-16 07:49:20 UTC (rev 2958)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java	2009-01-16 10:46:42 UTC (rev 2959)
@@ -1426,10 +1426,10 @@
 
                   PropertyInfo memberProp = propBeanInfo.getProperty(memberPropName);
                   TypeInfo memberTypeInfo = memberProp.getType();
-                  String memberNamespace = defaultNamespace;
+                  XmlElement memberXmlElement = memberProp.getUnderlyingAnnotation(XmlElement.class);
 
+                  String memberNamespace = null;
                   String memberName = null;
-                  XmlElement memberXmlElement = memberProp.getUnderlyingAnnotation(XmlElement.class);
                   if (memberXmlElement != null)
                   {
                      if (!XmlElement.DEFAULT.class.equals(memberXmlElement.type()))
@@ -1439,20 +1439,6 @@
                      memberName = memberXmlElement.name();
                   }
 
-                  JBossXmlNsPrefix memberPrefix = memberProp.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
-                  String memberOverridenDefaultNamespace = defaultNamespace;
-                  if(memberPrefix != null)
-                  {
-                     String ns = schemaBinding.getNamespace(memberPrefix.prefix());
-                     if (ns == null && memberPrefix.schemaTargetIfNotMapped())
-                        throw new IllegalStateException("Prefix '" + memberPrefix.prefix() + "' is not mapped to any namespace!");
-                        
-                     if(memberPrefix.applyToComponentQName())
-                        memberNamespace = ns;
-                     if(memberPrefix.applyToComponentContent())
-                        defaultNamespace = ns;
-                  }
-
                   boolean isCol = false;
                   AbstractPropertyHandler memberPropertyHandler = null;
                   if (memberProp.getType().isCollection())
@@ -1483,9 +1469,25 @@
                      memberPropertyHandler = new PropertyHandler(memberProp, memberTypeInfo);
                   }
 
+                  JBossXmlNsPrefix memberPrefix = memberProp.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
+                  String memberOverridenDefaultNamespace = defaultNamespace;
+                  String prefixNs = null;
+                  if(memberPrefix != null)
+                  {
+                     prefixNs = schemaBinding.getNamespace(memberPrefix.prefix());
+                     if (prefixNs == null && memberPrefix.schemaTargetIfNotMapped())
+                        throw new IllegalStateException("Prefix '" + memberPrefix.prefix() + "' is not mapped to any namespace!");
+                        
+                     if(memberPrefix.applyToComponentQName())
+                        memberNamespace = prefixNs;
+                  }
+
                   QName memberQName = generateXmlName(memberProp.getName(), elementForm, memberNamespace, memberName);
                   propBeanAdapterFactory.addProperty(memberQName, memberPropertyHandler);
 
+                  if(prefixNs != null && memberPrefix.applyToComponentContent())
+                     defaultNamespace = prefixNs;
+                  
                   XBValueAdapter valueAdapter = null;
                   XmlJavaTypeAdapter xmlTypeAdapter = memberProp.getUnderlyingAnnotation(XmlJavaTypeAdapter.class);
                   if (xmlTypeAdapter != null)
@@ -1604,11 +1606,12 @@
          }
 
          // for now support just one JBossXmlNsPrefix
+         String prefixNs = null;
          JBossXmlNsPrefix xmlNsPrefix = property.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
          String overridenDefaultNamespace = defaultNamespace;
          if (xmlNsPrefix != null)
          {
-            String prefixNs = schemaBinding.getNamespace(xmlNsPrefix.prefix());
+            prefixNs = schemaBinding.getNamespace(xmlNsPrefix.prefix());
             if (prefixNs == null)
             {
                if (xmlNsPrefix.schemaTargetIfNotMapped())
@@ -1619,13 +1622,14 @@
             
             if(xmlNsPrefix.applyToComponentQName())
                overrideNamespace = prefixNs;
-            if(xmlNsPrefix.applyToComponentContent())
-               defaultNamespace = prefixNs;
          }
 
          // Determine the name
          QName propertyQName = generateXmlName(property.getName(), elementForm, overrideNamespace, overrideName);
 
+         if(prefixNs != null && xmlNsPrefix.applyToComponentContent())
+            defaultNamespace = prefixNs;
+
          // Create the element
          JBossXmlGroup jbossXmlGroup = null;
          if (!propertyType.isPrimitive())

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/jbossxmlnsprefix/test/JBossXmlNsPrefixUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/jbossxmlnsprefix/test/JBossXmlNsPrefixUnitTestCase.java	2009-01-16 07:49:20 UTC (rev 2958)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/jbossxmlnsprefix/test/JBossXmlNsPrefixUnitTestCase.java	2009-01-16 10:46:42 UTC (rev 2959)
@@ -216,7 +216,7 @@
       
       // child
       e = (ElementBinding) particle.getTerm();
-      assertEquals(new QName("ns.child", "child"), e.getQName());
+      assertEquals(new QName("ns.root", "child"), e.getQName());
       group = (ModelGroupBinding) e.getType().getParticle().getTerm();
       particles = group.getParticles();
       assertEquals(1, particles.size());




More information about the jboss-svn-commits mailing list