[jboss-svn-commits] JBoss Common SVN: r3376 - jbossxb/trunk/src/main/java/org/jboss/xb/util.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jul 14 12:15:06 EDT 2009
Author: alex.loubyansky at jboss.com
Date: 2009-07-14 12:15:05 -0400 (Tue, 14 Jul 2009)
New Revision: 3376
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/util/DefaultSchemaBindingValidator.java
Log:
JBXB-217
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/util/DefaultSchemaBindingValidator.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/util/DefaultSchemaBindingValidator.java 2009-07-14 04:55:30 UTC (rev 3375)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/util/DefaultSchemaBindingValidator.java 2009-07-14 16:15:05 UTC (rev 3376)
@@ -410,7 +410,47 @@
if(modelGroupBinding instanceof AllBinding || modelGroupBinding instanceof UnorderedSequenceBinding)
all = true;
else
- handleError("ModelGroupBinding expected to be a sequence but was " + modelGroupBinding);
+ {
+ // here we're going to try to detect an extended choice wrapped by xerces into a sequence
+ boolean extendedChoice = false;
+ if(modelGroupBinding instanceof ChoiceBinding)
+ {
+ XSObjectList particles = xsModelGroup.getParticles();
+ // there should be two particles
+ if(particles.getLength() == 2)
+ {
+ XSParticle p = (XSParticle) particles.item(0);
+ XSTerm term = p.getTerm();
+ // first particle must be a choice
+ if(term.getType() == XSConstants.MODEL_GROUP)
+ {
+ if(((XSModelGroup)term).getCompositor() == XSModelGroup.COMPOSITOR_CHOICE)
+ {
+ p = (XSParticle) particles.item(1);
+ term = p.getTerm();
+ // second particle can be a choice or an empty sequence
+ if(term.getType() == XSConstants.MODEL_GROUP)
+ {
+ XSModelGroup extensionGroup = (XSModelGroup) term;
+ if(extensionGroup.getCompositor() == XSModelGroup.COMPOSITOR_CHOICE)
+ extendedChoice = true;
+ else if(extensionGroup.getCompositor() == XSModelGroup.COMPOSITOR_SEQUENCE &&
+ extensionGroup.getParticles().getLength() == 0)
+ extendedChoice = true;
+ }
+ }
+ }
+ }
+ }
+
+ if(extendedChoice)
+ {
+ log(" - the sequence is treated as an extended choice");
+ all = true;
+ }
+ else
+ handleError("ModelGroupBinding expected to be a sequence but was " + modelGroupBinding);
+ }
}
}
else if(xsCompositor == XSModelGroup.COMPOSITOR_CHOICE)
More information about the jboss-svn-commits
mailing list