[jboss-svn-commits] JBoss Common SVN: r2449 - in jbossxb-builder/trunk/src/main/java/org/jboss/xb: builder and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 19 09:26:50 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-07-19 09:26:49 -0400 (Thu, 19 Jul 2007)
New Revision: 2449

Modified:
   jbossxb-builder/trunk/src/main/java/org/jboss/xb/annotations/JBossXmlModelGroup.java
   jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
Log:
added propOrder to JBossXmlModelGroup

Modified: jbossxb-builder/trunk/src/main/java/org/jboss/xb/annotations/JBossXmlModelGroup.java
===================================================================
--- jbossxb-builder/trunk/src/main/java/org/jboss/xb/annotations/JBossXmlModelGroup.java	2007-07-18 13:38:52 UTC (rev 2448)
+++ jbossxb-builder/trunk/src/main/java/org/jboss/xb/annotations/JBossXmlModelGroup.java	2007-07-19 13:26:49 UTC (rev 2449)
@@ -39,4 +39,6 @@
    String kind() default JBossXmlConstants.MODEL_GROUP_SEQUENCE;
    
    String name();
+   
+   String[] propOrder() default {""};
 }

Modified: jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
===================================================================
--- jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java	2007-07-18 13:38:52 UTC (rev 2448)
+++ jbossxb-builder/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java	2007-07-19 13:26:49 UTC (rev 2449)
@@ -26,6 +26,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.Stack;
@@ -1044,14 +1045,29 @@
                BeanHandler propHandler = new BeanHandler(propBeanInfo.getName(), propBeanAdapterFactory);
                localModel.setHandler(propHandler);
                
+               String[] memberOrder = xmlModelGroup.propOrder();
+               if(memberOrder.length == 0 || memberOrder[0].length() == 0)
+               {
+                  List<String> propNames = new ArrayList<String>();
+                  for(PropertyInfo prop : propBeanInfo.getProperties())
+                  {
+                     propNames.add(prop.getName());
+                  }
+                  memberOrder = propNames.toArray(new String[propNames.size()]);
+               }
+
+               if(trace)
+                  log.trace("Property order for " + xmlModelGroup.kind() + " property " + property.getName() + ": " + Arrays.asList(memberOrder));
+               
                // bind model group members
-               for(PropertyInfo memberProp : propBeanInfo.getProperties())
+               for(String memberPropName : memberOrder)
                {
-                  if ("class".equals(memberProp.getName()))
+                  if ("class".equals(memberPropName))
                   {
                      continue;
                   }
 
+                  PropertyInfo memberProp = propBeanInfo.getProperty(memberPropName);
                   TypeInfo memberTypeInfo = memberProp.getType();
                   String memberNamespace = defaultNamespace;
                   String memberName = null;
@@ -1063,6 +1079,7 @@
                      memberName = memberXmlElement.name();
                   }
 
+                  boolean isCol = false;
                   AbstractPropertyHandler memberPropertyHandler = null;
                   if(memberTypeInfo.isCollection())
                   {
@@ -1071,6 +1088,7 @@
                      ParameterizedClassInfo pti = (ParameterizedClassInfo) gs;
                      memberPropertyHandler = new CollectionPropertyHandler(memberProp, memberTypeInfo);
                      memberTypeInfo = pti.getActualTypeArguments()[0];
+                     isCol = true;
                   }
                   else
                   {
@@ -1083,11 +1101,11 @@
                   TypeBinding memberTypeBinding = resolveTypeBinding(memberTypeInfo);
                   ElementBinding memberElement = createElementBinding(memberTypeInfo, memberTypeBinding, memberQName, false);
                   memberElement.setNillable(true);
-                  ParticleBinding memberParticle = new ParticleBinding(memberElement, 0, 1, false);
+                  ParticleBinding memberParticle = new ParticleBinding(memberElement, 0, 1, false /* TODO should be isCol*/);
                   localModel.addParticle(memberParticle);
                   
                   if(trace)
-                     log.trace("added " + memberElement.getQName() + " to " + xmlModelGroup.kind() + ", property " + property.getName());
+                     log.trace("added " + memberParticle + " to " + xmlModelGroup.kind() + ", property " + property.getName());
                }
 
                pop();




More information about the jboss-svn-commits mailing list