[jboss-svn-commits] JBoss Common SVN: r2455 - jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/runtime.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 25 07:27:37 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-07-25 07:27:37 -0400 (Wed, 25 Jul 2007)
New Revision: 2455

Modified:
   jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/runtime/BeanHandler.java
Log:
use ValueAdapter if available (should probably be used on a lower level)

Modified: jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/runtime/BeanHandler.java
===================================================================
--- jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/runtime/BeanHandler.java	2007-07-25 11:26:01 UTC (rev 2454)
+++ jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/runtime/BeanHandler.java	2007-07-25 11:27:37 UTC (rev 2455)
@@ -30,6 +30,7 @@
 import org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.TermBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
 import org.jboss.xb.spi.BeanAdapter;
 import org.jboss.xb.spi.BeanAdapterFactory;
 import org.xml.sax.Attributes;
@@ -131,14 +132,20 @@
       if (trace)
          log.trace("setParent " + qName + " parent=" + BuilderUtil.toDebugString(parent) + " child=" + BuilderUtil.toDebugString(o));
 
-      if(particle.getTerm().isModelGroup())
+      TermBinding term = particle.getTerm();
+      ValueAdapter valueAdapter = null;
+      if(term.isModelGroup())
       {
-         QName modelGroupName = ((ModelGroupBinding)particle.getTerm()).getQName();
+         QName modelGroupName = ((ModelGroupBinding)term).getQName();
          if(modelGroupName != null)
          {
             qName = modelGroupName;
          }
       }
+      else if(term.isElement())
+      {
+         valueAdapter = ((ElementBinding)term).getValueAdapter();
+      }
 
       if (parent != null && parent instanceof ArrayWrapper)
       {
@@ -167,7 +174,7 @@
                return;
             }
          }
-         TermBinding element = particle.getTerm();
+         TermBinding element = term;
          if (element.getSchema().isStrictSchema())
          {
             throw new RuntimeException("QName " + qName + " unknown property parent=" + BuilderUtil.toDebugString(parent) + " child=" + BuilderUtil.toDebugString(o) + " available=" + beanAdapter.getAvailable());
@@ -176,7 +183,7 @@
             log.trace("QName " + qName + " unknown property parent=" + BuilderUtil.toDebugString(parent) + " child=" + BuilderUtil.toDebugString(o));
          return;
       }
-      
+
       if(particle.isRepeatable() && o instanceof java.util.Collection)
       {
          // TODO this is not optimal!
@@ -188,6 +195,11 @@
       }
       else
       {
+         // TODO looks like value adapter should be used earlier in the stack
+         if(valueAdapter != null)
+         {
+            o = valueAdapter.cast(o, null/*propertyHandler.getPropertyType().getType()*/);
+         }
          propertyHandler.doHandle(beanAdapter, o, qName);
       }
    }




More information about the jboss-svn-commits mailing list