[jboss-svn-commits] JBoss Common SVN: r2140 - in jbossxb/trunk/src: main/java/org/jboss/xb/binding/sunday/unmarshalling test/java/org/jboss/test/xml
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 24 17:52:03 EDT 2006
Author: alex.loubyansky at jboss.com
Date: 2006-10-24 17:51:59 -0400 (Tue, 24 Oct 2006)
New Revision: 2140
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java
Log:
don't use characters handler for elements of simple types that are xop-optimized
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java 2006-10-19 13:54:28 UTC (rev 2139)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java 2006-10-24 21:51:59 UTC (rev 2140)
@@ -256,11 +256,11 @@
particle = new ParticleBinding(xopInclude);
- ElementBinding parentElement = (ElementBinding) stack.peek().particle.getTerm();
+ ElementBinding parentElement = (ElementBinding) item.particle.getTerm();
parentElement.setXopUnmarshaller(schema.getXopUnmarshaller());
-
+
item.handler = DefaultHandlers.XOP_HANDLER;
- item.cHandler = CharactersHandler.NOOP;
+ item.ignoreCharacters = true;
item.o = item.handler.startParticle(stack.peek().o, startName, stack.peek().particle, null, nsRegistry);
break;
}
@@ -810,7 +810,7 @@
charType = type;
}
- CharactersHandler charHandler = item.cHandler == null ? charType.getCharactersHandler() : item.cHandler;
+ CharactersHandler charHandler = item.ignoreCharacters ? null : charType.getCharactersHandler();
/**
* If there is text content then unmarshal it and set.
@@ -884,7 +884,7 @@
}
else if(charHandler != null)
{
- TermBeforeSetParentCallback beforeSetParent = element.getBeforeSetParentCallback();
+ TermBeforeSetParentCallback beforeSetParent = charType.getBeforeSetParentCallback();
if(beforeSetParent != null)
{
ctx.parent = o;
@@ -1126,7 +1126,7 @@
final ModelGroupBinding.Cursor cursor;
final ParticleBinding particle;
ParticleHandler handler;
- CharactersHandler cHandler;
+ boolean ignoreCharacters;
Object o;
ValueList repeatableParticleValue;
StringBuffer textContent;
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java 2006-10-19 13:54:28 UTC (rev 2139)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java 2006-10-24 21:51:59 UTC (rev 2140)
@@ -25,7 +25,12 @@
import org.jboss.xb.binding.UnmarshallerFactory;
import org.jboss.xb.binding.sunday.marshalling.MarshallerImpl;
import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TermBeforeSetParentCallback;
+import org.jboss.xb.binding.sunday.unmarshalling.UnmarshallingContext;
import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
import org.jboss.xb.binding.sunday.xop.XOPMarshaller;
import org.jboss.xb.binding.sunday.xop.XOPObject;
@@ -43,6 +48,7 @@
import java.io.StringReader;
import java.io.StringWriter;
import java.util.Arrays;
+import java.util.Iterator;
import junit.framework.TestSuite;
@@ -241,6 +247,51 @@
SCHEMA = XsdBinder.bind(testXsd, resolver);
SCHEMA.setIgnoreUnresolvedFieldOrClass(false);
+
+ TermBeforeSetParentCallback callback = new TermBeforeSetParentCallback()
+ {
+ public Object beforeSetParent(Object o, UnmarshallingContext ctx)
+ {
+ ElementBinding e = (ElementBinding) ctx.getParticle().getTerm();
+ Class propType = ctx.resolvePropertyType();
+
+ String localPart = e.getQName().getLocalPart();
+ if("image".equals(localPart) ||
+ "sig".equals(localPart) ||
+ "imageWithContentType".equals(localPart) ||
+ "octets".equals(localPart) ||
+ "jpeg".equals(localPart))
+ {
+ assertEquals("expected " + byte[].class + " for " + localPart, byte[].class, propType);
+ }
+ else if("awtImage".equals(localPart))
+ {
+ assertEquals(java.awt.Image.class, propType);
+ }
+ else if("string".equals(localPart))
+ {
+ assertEquals(String.class, propType);
+ }
+ else if("source".equals(localPart))
+ {
+ assertEquals(javax.xml.transform.Source.class, propType);
+ }
+ else
+ {
+ fail("unexpected element: " + e.getQName());
+ }
+ return o;
+ }
+ };
+
+ ElementBinding e = SCHEMA.getElement(new javax.xml.namespace.QName("http://www.jboss.org/xml/test/xop", "e"));
+ SequenceBinding seq = (SequenceBinding) e.getType().getParticle().getTerm();
+ for(Iterator i = seq.getParticles().iterator(); i.hasNext();)
+ {
+ ParticleBinding particle = (ParticleBinding) i.next();
+ ElementBinding child = (ElementBinding) particle.getTerm();
+ child.setBeforeSetParentCallback(callback);
+ }
}
if(NON_OPT_XML == null)
More information about the jboss-svn-commits
mailing list