[jboss-svn-commits] JBoss Common SVN: r4183 - in jbossxb/trunk/src: test/java/org/jboss/test/xb/builder and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 17 11:20:53 EDT 2010


Author: alex.loubyansky at jboss.com
Date: 2010-03-17 11:20:52 -0400 (Wed, 17 Mar 2010)
New Revision: 4183

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/impl/runtime/RtElementHandler.java
   jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java
   jbossxb/trunk/src/test/java/org/jboss/test/xml/WildcardUnresolvedElementsUnitTestCase.java
Log:
JBXB-243

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/impl/runtime/RtElementHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/impl/runtime/RtElementHandler.java	2010-03-17 15:17:33 UTC (rev 4182)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/impl/runtime/RtElementHandler.java	2010-03-17 15:20:52 UTC (rev 4183)
@@ -118,7 +118,7 @@
          log.trace("setParent " + qName + " parent=" + parent + " object=" + o + " term=" + term);
       }
 
-      TermBinding parentTerm = parentParticle.getTerm();
+      final TermBinding parentTerm = parentParticle.getTerm();
 
       if(term.isMapEntryKey())
       {
@@ -248,18 +248,7 @@
          }
 
          // the wildcard this element is a content of
-         WildcardBinding wildcard = null;
-         if(parentTerm != null && parentTerm.isElement())
-         {
-            ElementBinding parentElement = (ElementBinding)parentTerm;
-            TypeBinding parentType = parentElement.getType();
-            wildcard = parentType.getWildcard();
-            // there should be a better way of checking this
-            if(wildcard != null && parentType.getElement(qName) != null)
-            {
-               wildcard = null;
-            }
-         }
+         WildcardBinding wildcard = parentTerm.isWildcard() ? (WildcardBinding) parentTerm : null;
 
          if(owner instanceof ValueList)
          {
@@ -312,8 +301,9 @@
             if (trace)
                log.trace("setParent " + qName + " metadata set " + propName);
 
+            boolean repeatable = particle.isRepeatable() || wildcard != null && parentParticle.isRepeatable();            
             // TODO with RepeatableParticleHandler.NOOP check for Collection should be commented out
-            if(particle.isRepeatable() && !(o instanceof Collection))
+            if(repeatable && !(o instanceof Collection))
             {
                RtUtil.add(owner, o, propName, colType,
                      term.getSchema().isIgnoreUnresolvedFieldOrClass(),

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java	2010-03-17 15:17:33 UTC (rev 4182)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java	2010-03-17 15:20:52 UTC (rev 4183)
@@ -125,13 +125,13 @@
    {
       TestSchemaResolver resolver = new TestSchemaResolver();
       
-      SchemaBinding schemaBinding = JBossXBBuilder.build(reference);
+      SchemaBinding schemaBinding = JBossXBBuilder.build(reference, true);
       resolver.addSchemaBinding(schemaBinding);
       if (others != null)
       {
          for (Class<?> other : others)
          {
-            SchemaBinding otherBinding = JBossXBBuilder.build(other);
+            SchemaBinding otherBinding = JBossXBBuilder.build(other, true);
             resolver.addSchemaBinding(otherBinding);
          }
       }

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/WildcardUnresolvedElementsUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/WildcardUnresolvedElementsUnitTestCase.java	2010-03-17 15:17:33 UTC (rev 4182)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/WildcardUnresolvedElementsUnitTestCase.java	2010-03-17 15:20:52 UTC (rev 4183)
@@ -57,6 +57,7 @@
 import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.WildcardBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
+import org.jboss.xb.binding.sunday.unmarshalling.impl.runtime.RtElementHandler;
 import org.jboss.xb.util.DomCharactersHandler;
 import org.jboss.xb.util.DomLocalMarshaller;
 import org.jboss.xb.util.DomParticleHandler;
@@ -273,32 +274,7 @@
       }
       else
       {
-         unresolvedElementHandler = new DomParticleHandler()
-         {
-            public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle,
-                  ParticleBinding parentParticle)
-            {
-               if (parent instanceof Element)
-               {
-                  ((Element) parent).appendChild((Element) o);
-               }
-               else
-               {
-                  ArrayOfAny arr = (ArrayOfAny)parent;
-                  Object[] any = arr.get_any();
-                  if(any == null)
-                     any = new Object[1];
-                  else
-                  {
-                     Object[] tmp = any;
-                     any = new Object[any.length + 1];
-                     System.arraycopy(tmp, 0, any, 0, tmp.length);
-                  }
-                  arr.set_any(any);
-                  any[any.length - 1] = o;
-               }
-            }
-         };
+         unresolvedElementHandler = DomParticleHandler.INSTANCE;
          unresolvedCharactersHandler = DomCharactersHandler.INSTANCE;
       }
 
@@ -890,6 +866,7 @@
    }
 
    public static class GenericElementHandler
+      extends RtElementHandler
       implements ParticleHandler
    {
       public Object startParticle(Object parent,
@@ -923,24 +900,9 @@
                             ParticleBinding parentParticle)
       {
          if(parent instanceof GenericElement)
-         {
             ((GenericElement)parent).addChild((GenericElement)o);
-         }
          else
-         {
-            ArrayOfAny arr = (ArrayOfAny)parent;
-            Object[] any = arr.get_any();
-            if(any == null)
-               any = new Object[1];
-            else
-            {
-               Object[] tmp = any;
-               any = new Object[any.length + 1];
-               System.arraycopy(tmp, 0, any, 0, tmp.length);
-            }
-            arr.set_any(any);
-            any[any.length - 1] = o;
-         }
+            super.setParent(parent, o, elementName, particle, parentParticle);
       }
    }
 }



More information about the jboss-svn-commits mailing list