[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