[jboss-svn-commits] JBoss Common SVN: r2614 - in jbossxb/trunk/src: test/java/org/jboss/test/xb/builder/object/element/wrapper/support and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 9 05:52:46 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-10-09 05:52:46 -0400 (Tue, 09 Oct 2007)
New Revision: 2614

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
   jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java
   jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java
   jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml
   jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml
   jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml
Log:
fixes for @XmlElementWrapper support

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java	2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java	2007-10-09 09:52:46 UTC (rev 2614)
@@ -1240,6 +1240,39 @@
          // for now support just one JBossXmlNsPrefix
          JBossXmlNsPrefix xmlNsPrefix = property.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
 
+         // support for @XmlElementWrapper
+         // the wrapping element is ignored in this case
+         XmlElementWrapper xmlWrapper = property.getUnderlyingAnnotation(XmlElementWrapper.class);
+         if(xmlWrapper != null)
+         {
+            String wrapperNamespace = xmlWrapper.namespace();
+            String wrapperName = xmlWrapper.name();
+            boolean wrapperNillable = xmlWrapper.nillable();
+
+            QName wrapperQName = generateXmlName(property.getName(), elementForm, wrapperNamespace, wrapperName);
+
+            boolean typeIsNew = !typeCache.containsKey(propertyType);
+
+            TypeBinding wrapperType = new TypeBinding();
+            SequenceBinding seq = new SequenceBinding(schemaBinding);
+            seq.setHandler(BuilderParticleHandler.INSTANCE);
+            ParticleBinding particle = new ParticleBinding(seq);
+            wrapperType.setParticle(particle);
+            wrapperType.setHandler(new DefaultElementHandler());
+
+            ElementBinding wrapperElement = createElementBinding(propertyType, wrapperType, wrapperQName, false);
+            wrapperElement.setNillable(wrapperNillable);
+            wrapperElement.setSkip(Boolean.TRUE);
+            particle = new ParticleBinding(wrapperElement, 1, 1, false);
+            localModel.addParticle(particle);
+
+            localModel = seq;
+            
+            if (trace)
+               log.trace("Added property " + wrapperQName + " for type=" + beanInfo.getName() + " property="
+                     + property.getName() + " as a wrapper element");
+         }
+         
          // Setup a choice
          if (elements.length > 1)
          {
@@ -1430,23 +1463,6 @@
                   propertyHandler = new CollectionPropertyHandler(property, localPropertyType);
                   isCol = true;
                   localPropertyType = findComponentType((ClassInfo) localPropertyType);
-
-//                  TypeInfo gs = ((ClassInfo) localPropertyType).getGenericSuperclass();
-//                  if (gs instanceof ParameterizedClassInfo)
-//                  {
-//                     ParameterizedClassInfo pti = (ParameterizedClassInfo) gs;
-//                     ClassInfo typeArg = (ClassInfo) pti.getActualTypeArguments()[0];
-//                     //if (((ClassInfo) typeArg).getUnderlyingAnnotation(XmlType.class) != null)
-//                     if (typeArg.getUnderlyingAnnotation(JBossXmlModelGroup.class) == null)
-//                     {// it may be a model group in which case we don't want to change the type
-//                        localPropertyType = typeArg;
-//                     
-//                        if(!type.equals(typeArg))
-//                        {
-//                           throw new IllegalStateException("Expected " + type + " but got " + typeArg.getName());
-//                        }
-//                     }
-//                  }
                }
                else
                {
@@ -1454,96 +1470,36 @@
                }
 
                ParticleBinding particle;
-
-               if (propertyType.isCollection() && property.getUnderlyingAnnotation(XmlElementWrapper.class) != null)
+               // DOM elements are going to be treated as unresolved
+               // however having the property registered
+               if (!Element.class.getName().equals(propertyType.getName()))
                {
-                  // support for @XmlElementWrapper
-                  // the wrapping element is ignored in this case
-                  XmlElementWrapper xmlWrapper = property.getUnderlyingAnnotation(XmlElementWrapper.class);
-                  String wrapperNamespace = xmlWrapper.namespace();
-                  String wrapperName = xmlWrapper.name();
-                  boolean wrapperNillable = xmlWrapper.nillable();
-
-                  QName childQName = qName;
-                  qName = generateXmlName(property.getName(), elementForm, wrapperNamespace, wrapperName);
-
-                  boolean typeIsNew = !typeCache.containsKey(propertyType);
-
-                  TypeBinding wrapperType = new TypeBinding();
-                  SequenceBinding seq = new SequenceBinding(schemaBinding);
-                  seq.setHandler(BuilderParticleHandler.INSTANCE);
-                  particle = new ParticleBinding(seq);
-                  wrapperType.setParticle(particle);
-                  wrapperType.setHandler(new DefaultElementHandler());
-
-                  ElementBinding wrapperElement = createElementBinding(propertyType, wrapperType, qName, false);
-                  wrapperElement.setNillable(wrapperNillable);
-                  wrapperElement.setSkip(Boolean.TRUE);
-                  particle = new ParticleBinding(wrapperElement, 1, 1, false);
-                  targetGroup.addParticle(particle);
-
-                  if(trace)
-                     log.trace("Added property " + qName + " for type=" + beanInfo.getName() + " property="
-                           + property.getName() + " as a wrapper element");
-
-                  if (typeIsNew)
+                  XBValueAdapter valueAdapter = null;
+                  XmlJavaTypeAdapter xmlTypeAdapter = property.getUnderlyingAnnotation(XmlJavaTypeAdapter.class);
+                  if (xmlTypeAdapter != null)
                   {
-                     // component stuff
-                     ClassInfo typeArg = (ClassInfo) findComponentType(property);
-                     if (typeArg == null)
-                     {
-                        throw new IllegalStateException("Failed to determine component type for collection "
-                              + propertyType.getName());
-                     }
-                     TypeInfo childType = JBossXBBuilder.configuration.getTypeInfo(typeArg.getType());
-
-                     TypeBinding childTypeBinding = resolveTypeBinding(childType);
-                     ElementBinding childElement = createElementBinding(childType, childTypeBinding, childQName, false);
-
-                     // Bind it to the model
-                     ParticleBinding childParticle = new ParticleBinding(childElement, 0, 1, true);
-                     wrapperElement.getType().addParticle(childParticle);
-
-                     beanAdapterFactory.addProperty(childQName, propertyHandler);
-                     if (trace)
-                        log.trace("Added property " + childQName + " for type=" + beanInfo.getName() + " property="
-                              + property.getName() + " handler=" + propertyHandler + " wrapper=" + qName);
+                     valueAdapter = new XBValueAdapter(xmlTypeAdapter.value(), propertyType.getTypeInfoFactory());
+                     localPropertyType = valueAdapter.getAdaptedType();
                   }
-               }
-               // else if it's not a DOM element which is going to be treated as wildcard
-               else
-               {
-                  // DOM elements are going to be treated as unresolved
-                  // however having the property registered
-                  if(!Element.class.getName().equals(propertyType.getName()))
-                  {
-                     XBValueAdapter valueAdapter = null;
-                     XmlJavaTypeAdapter xmlTypeAdapter = property.getUnderlyingAnnotation(XmlJavaTypeAdapter.class);
-                     if (xmlTypeAdapter != null)
-                     {
-                        valueAdapter = new XBValueAdapter(xmlTypeAdapter.value(), propertyType.getTypeInfoFactory());
-                        localPropertyType = valueAdapter.getAdaptedType();
-                     }
 
-                     TypeBinding elementTypeBinding = resolveTypeBinding(localPropertyType);
-                     ElementBinding elementBinding = createElementBinding(localPropertyType, elementTypeBinding, qName,
-                           false);
-                     elementBinding.setNillable(nillable);
-                     elementBinding.setValueAdapter(valueAdapter);
+                  TypeBinding elementTypeBinding = resolveTypeBinding(localPropertyType);
+                  ElementBinding elementBinding = createElementBinding(localPropertyType, elementTypeBinding, qName,
+                        false);
+                  elementBinding.setNillable(nillable);
+                  elementBinding.setValueAdapter(valueAdapter);
 
-                     // Bind it to the model
-                     particle = new ParticleBinding(elementBinding, 1, 1, isCol);
-                     if (required == false)
-                        particle.setMinOccurs(0);
+                  // Bind it to the model
+                  particle = new ParticleBinding(elementBinding, 1, 1, isCol);
+                  if (required == false)
+                     particle.setMinOccurs(0);
 
-                     targetGroup.addParticle(particle);
-                  }
-
-                  beanAdapterFactory.addProperty(qName, propertyHandler);
-                  if (trace)
-                     log.trace("Added property " + qName + " for type=" + beanInfo.getName() + " property="
-                           + property.getName() + " handler=" + propertyHandler);
+                  targetGroup.addParticle(particle);
                }
+
+               beanAdapterFactory.addProperty(qName, propertyHandler);
+               if (trace)
+                  log.trace("Added property " + qName + " for type=" + beanInfo.getName() + " property="
+                        + property.getName() + " handler=" + propertyHandler);
             }
          }
          pop();

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java	2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java	2007-10-09 09:52:46 UTC (rev 2614)
@@ -50,7 +50,7 @@
    @Override
    public boolean equals(Object obj)
    {
-      if (obj instanceof MyNumber)
+      if (!(obj instanceof MyNumber))
          return false;
       MyNumber n = (MyNumber) obj;
       return x.equals(n.x);

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java	2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java	2007-10-09 09:52:46 UTC (rev 2614)
@@ -19,11 +19,12 @@
    public void testFooWrapper()
       throws Exception
    {
-      enableTrace("org.jboss.xb");
+      //enableTrace("org.jboss.xb");
       Foo foo = unmarshalObject(Foo.class);
       List<Number> items = foo.getItems();
       assertEquals(3, items.size());
    }
+   
    public void testFoo2Wrapper()
       throws Exception
    {
@@ -31,6 +32,7 @@
       List<Number> items = foo.getItems();
       assertEquals(3, items.size());
    }
+   
    public void testFoo3Wrapper()
       throws Exception
    {

Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml	2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml	2007-10-09 09:52:46 UTC (rev 2614)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <foo2>
-	<bar>
-		<int>1</int>
-	</bar>
-	<bar>
-		<int>2</int>
-	</bar>
-	<bar>
-		<float>1.1</float>
-	</bar>
+  <bar>
+    <int>1</int>
+    <int>2</int>
+    <float>1.1</float>
+  </bar>
 </foo2>

Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml	2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml	2007-10-09 09:52:46 UTC (rev 2614)
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <foo3>
-	<bar>
-		<int>1</int>
-	</bar>
-	<bar>
-		<int>2</int>
-	</bar>
-	<bar>
-		<float>1.1</float>
-	</bar>
-	<bar>
-		<x>123456789</x>
-	</bar>
+  <bar>
+    <int>1</int>
+  </bar>
+  <bar>
+    <int>2</int>
+  </bar>
+  <bar>
+    <float>1.1</float>
+  </bar>
+  <bar>
+    <x>123456789</x>
+  </bar>
 </foo3>

Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml	2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml	2007-10-09 09:52:46 UTC (rev 2614)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <foo>
-	<bar>
-		<int>1</int>
-	</bar>
-	<bar>
-		<int>2</int>
-	</bar>
-	<bar>
-		<float>1.1</float>
-	</bar>
+  <bar>
+    <int>1</int>
+    <int>2</int>
+    <float>1.1</float>
+  </bar>
 </foo>




More information about the jboss-svn-commits mailing list