[jboss-svn-commits] JBoss Common SVN: r1971 - trunk/jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 25 08:57:16 EDT 2006
Author: alex.loubyansky at jboss.com
Date: 2006-08-25 08:57:14 -0400 (Fri, 25 Aug 2006)
New Revision: 1971
Modified:
trunk/jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/JBXB76ContentHandler.java
Log:
complete calls to start/end-RepeatableParticle for modelgroups
Modified: trunk/jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/JBXB76ContentHandler.java
===================================================================
--- trunk/jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/JBXB76ContentHandler.java 2006-08-25 10:01:06 UTC (rev 1970)
+++ trunk/jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/JBXB76ContentHandler.java 2006-08-25 12:57:14 UTC (rev 1971)
@@ -115,6 +115,10 @@
else
{
endParticle(item, endName, 1);
+ if(item.cursor.getParticle().isRepeatable())
+ {
+ endRepeatableParticle(item.cursor.getParticle());
+ }
pop();
}
}
@@ -259,7 +263,8 @@
continue;
}
- int currentOccurence = cursor.getOccurence();
+ int prevOccurence = cursor.getOccurence();
+ ParticleBinding prevParticle = cursor.isPositioned() ? cursor.getCurrentParticle() : null;
List newCursors = cursor.startElement(startName, atts);
if(newCursors.isEmpty())
{
@@ -268,8 +273,22 @@
}
else
{
- if(cursor.getOccurence() - currentOccurence > 0 || item.ended)
+ ParticleBinding curParticle = cursor.getCurrentParticle();
+ if(curParticle != prevParticle)
{
+ if(prevParticle != null && prevParticle.isRepeatable() && prevParticle.getTerm().isModelGroup())
+ {
+ endRepeatableParticle(prevParticle);
+ }
+
+ if(curParticle.isRepeatable())
+ {
+ startRepeatableParticle(curParticle);
+ }
+ }
+
+ if(cursor.getOccurence() - prevOccurence > 0 || item.ended)
+ {
endParticle(item, startName, 1);
ParticleBinding modelGroupParticle = cursor.getParticle();
@@ -545,12 +564,12 @@
private void startRepeatableParticle(ParticleBinding particle)
{
- //System.out.println("start repeatable particle: " + particle.getTerm());
+ //System.out.println(" start repeatable particle: " + particle.getTerm());
}
private void endRepeatableParticle(ParticleBinding particle)
{
- //System.out.println("end repeatable particle: " + particle.getTerm());
+ //System.out.println(" end repeatable particle: " + particle.getTerm());
}
private void endParticle(StackItem item, QName qName, int parentStackPos)
@@ -898,7 +917,7 @@
}
}
- private StackItem push(ModelGroupBinding.Cursor cursor, Object o)
+ private void push(ModelGroupBinding.Cursor cursor, Object o)
{
StackItem item = new StackItem(cursor, o);
stack.push(item);
@@ -906,8 +925,6 @@
{
log.trace("pushed cursor " + cursor + ", o=" + o);
}
-
- return item;
}
private StackItem pop()
@@ -928,7 +945,6 @@
log.trace("poped null");
}
}
-
return item;
}
More information about the jboss-svn-commits
mailing list