[jboss-svn-commits] JBoss Common SVN: r3932 - in jbossxb/trunk: src/main/java/org/jboss/xb/binding and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jan 15 06:08:04 EST 2010
Author: alex.loubyansky at jboss.com
Date: 2010-01-15 06:08:04 -0500 (Fri, 15 Jan 2010)
New Revision: 3932
Modified:
jbossxb/trunk/.classpath
jbossxb/trunk/src/main/java/org/jboss/xb/binding/UnmarshallerFactory.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/UnorderedSequenceBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/AbstractPosition.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/ElementPosition.java
Log:
optimizations: don't duplicate setting parser features (such as validation and namespace awareness), move implementation of parsing-related interfaces into a single class to avoid more classes being loaded and initialized, some other minor changes
Modified: jbossxb/trunk/.classpath
===================================================================
--- jbossxb/trunk/.classpath 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/.classpath 2010-01-15 11:08:04 UTC (rev 3932)
@@ -5,7 +5,7 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1.1/activation-1.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.9.GA/jboss-common-core-2.2.9.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.9.GA/jboss-common-core-2.2.9.GA.jar" sourcepath="/M2_REPO/org/jboss/jboss-common-core/2.2.9.GA/jboss-common-core-2.2.9.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<classpathentry kind="var" path="M2_REPO/wutka-dtdparser/dtdparser121/1.2.1/dtdparser121-1.2.1.jar"/>
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/UnmarshallerFactory.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/UnmarshallerFactory.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/UnmarshallerFactory.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -33,8 +33,8 @@
public abstract class UnmarshallerFactory
{
protected Map<String, Object> features;
- protected Boolean validation = Boolean.TRUE;
- protected Boolean namespaces = Boolean.TRUE;
+ protected Boolean validation;
+ protected Boolean namespaces;
public static UnmarshallerFactory newInstance()
{
@@ -102,14 +102,9 @@
JBossXBParser parser = unmarshaller.getParser();
if(validation != null)
- {
parser.setFeature(Unmarshaller.VALIDATION, validation.booleanValue());
- }
-
if(namespaces != null)
- {
parser.setFeature(Unmarshaller.NAMESPACES, namespaces.booleanValue());
- }
if(features != null)
{
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/parser/sax/SaxJBossXBParser.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -21,6 +21,7 @@
*/
package org.jboss.xb.binding.parser.sax;
+import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
@@ -45,10 +46,9 @@
* @author <a href="mailto:alex at jboss.org">Alexey Loubyansky</a>
* @version <tt>$Revision$</tt>
*/
-public class SaxJBossXBParser
- implements JBossXBParser
+public class SaxJBossXBParser implements JBossXBParser, org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler, ErrorHandler
{
- private static final Logger log = Logger.getLogger(SaxJBossXBParser.class);
+ private static final Logger log = Logger.getLogger("org.jboss.xb.binding.parser.sax.SaxJBossXBParser");
private static final SAXParserFactory saxFactory = SAXParserFactory.newInstance();
static
@@ -69,38 +69,42 @@
private final SAXParser parser;
private final XMLReader reader;
private JBossXBParser.ContentHandler contentHandler;
- private DelegatingContentHandler delegateHandler;
private boolean trace;
public SaxJBossXBParser()
throws JBossXBException
{
+ trace = log.isTraceEnabled();
try
{
parser = saxFactory.newSAXParser();
+ reader = parser.getXMLReader();
}
catch(Exception e)
{
throw new JBossXBException("Failed to create a new SAX parser", e);
}
- try
- {
- reader = parser.getXMLReader();
- }
- catch(SAXException e1)
- {
- throw new JBossXBRuntimeException("Failed to get parser's XMLReader", e1);
- }
-
- delegateHandler = new DelegatingContentHandler();
- reader.setContentHandler(delegateHandler);
- reader.setErrorHandler(MetaDataErrorHandler.INSTANCE);
- reader.setEntityResolver(new JBossEntityResolver());
+ reader.setContentHandler(this);
+ reader.setErrorHandler(this);
+
+ reader.setEntityResolver(
+ new EntityResolver()
+ {
+ private EntityResolver delegate;
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
+ {
+ if(delegate == null)
+ delegate = new JBossEntityResolver();
+ return delegate.resolveEntity(publicId, systemId);
+ }
+ }
+ );
+
// LexicalHandler
try
{
- reader.setProperty("http://xml.org/sax/properties/lexical-handler", delegateHandler);
+ reader.setProperty("http://xml.org/sax/properties/lexical-handler", this);
}
catch(Exception e)
{
@@ -153,7 +157,6 @@
public void parse(String systemId, ContentHandler handler) throws JBossXBException
{
this.contentHandler = handler;
- trace = log.isTraceEnabled();
if(trace)
logParserInfo();
@@ -180,7 +183,6 @@
public void parse(InputSource source, ContentHandler handler) throws JBossXBException
{
this.contentHandler = handler;
- trace = log.isTraceEnabled();
if(trace)
logParserInfo();
@@ -196,7 +198,6 @@
public String getLocationAsString(String fileName)
{
- Locator locator = delegateHandler.getDocumentLocator();
if (locator == null)
return fileName;
else
@@ -231,205 +232,185 @@
log.trace(sb.toString());
}
- // Inner
+ // LexicalHandler
+ private Locator locator;
- private final class DelegatingContentHandler
- implements org.xml.sax.ContentHandler,
- org.xml.sax.ext.LexicalHandler
+ public void comment(char[] ch, int start, int length) throws SAXException
{
- Locator locator;
- // Begin LexicalHandler
+ }
- public void comment(char[] ch, int start, int length) throws SAXException
+ public void startDTD(String name, String publicId, String systemId) throws SAXException
+ {
+ if (contentHandler instanceof DtdAwareContentHandler)
{
- // TODO Auto-generated method stub
-
+ DtdAwareContentHandler dach = (DtdAwareContentHandler) contentHandler;
+ dach.startDTD(name, publicId, systemId);
}
+ }
- public void startDTD(String name, String publicId, String systemId) throws SAXException
+ public void endDTD() throws SAXException
+ {
+ if (contentHandler instanceof DtdAwareContentHandler)
{
- if( contentHandler instanceof DtdAwareContentHandler )
- {
- DtdAwareContentHandler dach = (DtdAwareContentHandler) contentHandler;
- dach.startDTD(name, publicId, systemId);
- }
+ DtdAwareContentHandler dach = (DtdAwareContentHandler) contentHandler;
+ dach.endDTD();
}
- public void endDTD() throws SAXException
- {
- if( contentHandler instanceof DtdAwareContentHandler )
- {
- DtdAwareContentHandler dach = (DtdAwareContentHandler) contentHandler;
- dach.endDTD();
- }
- }
+ }
- public void startEntity(String name) throws SAXException
- {
- // TODO Auto-generated method stub
-
- }
- public void endEntity(String name) throws SAXException
- {
- // TODO Auto-generated method stub
-
- }
+ public void startEntity(String name) throws SAXException
+ {
+ }
- public void startCDATA() throws SAXException
- {
- // TODO Auto-generated method stub
-
- }
- public void endCDATA() throws SAXException
- {
- // TODO Auto-generated method stub
-
- }
+ public void endEntity(String name) throws SAXException
+ {
+ }
- // End LexicalHandler
+ public void startCDATA() throws SAXException
+ {
+ }
+ public void endCDATA() throws SAXException
+ {
+ }
+
+ // ContentHandler
+
public void endDocument()
- {
- }
+ {
+ }
- public void startDocument()
- {
- }
+ public void startDocument()
+ {
+ }
- public void characters(char ch[], int start, int length)
- {
- // todo look at this later
- // do not notify content handler if these are just whitespaces
- //int i = start;
- //while(i < start + length)
- //{
- // if(!Character.isWhitespace(ch[i++]))
- // {
- contentHandler.characters(ch, start, length);
- // break;
- // }
- //}
- }
+ public void characters(char ch[], int start, int length)
+ {
+ // todo look at this later
+ // do not notify content handler if these are just whitespaces
+ //int i = start;
+ //while(i < start + length)
+ //{
+ // if(!Character.isWhitespace(ch[i++]))
+ // {
+ contentHandler.characters(ch, start, length);
+ // break;
+ // }
+ //}
+ }
- public void ignorableWhitespace(char ch[], int start, int length)
- {
- }
+ public void ignorableWhitespace(char ch[], int start, int length)
+ {
+ }
- public void endPrefixMapping(String prefix)
- {
- contentHandler.endPrefixMapping(prefix);
- }
+ public void endPrefixMapping(String prefix)
+ {
+ contentHandler.endPrefixMapping(prefix);
+ }
- public void skippedEntity(String name)
- {
- }
+ public void skippedEntity(String name)
+ {
+ }
- public Locator getDocumentLocator()
- {
- return locator;
- }
-
- public void setDocumentLocator(Locator locator)
- {
- this.locator = locator;
- }
+ public Locator getDocumentLocator()
+ {
+ return locator;
+ }
- public void processingInstruction(String target, String data)
- {
- contentHandler.processingInstruction(target, data);
- }
+ public void setDocumentLocator(Locator locator)
+ {
+ this.locator = locator;
+ }
- public void startPrefixMapping(String prefix, String uri)
- {
- contentHandler.startPrefixMapping(prefix, uri);
- }
+ public void processingInstruction(String target, String data)
+ {
+ contentHandler.processingInstruction(target, data);
+ }
- public void endElement(String namespaceURI, String localName, String qName)
+ public void startPrefixMapping(String prefix, String uri)
+ {
+ contentHandler.startPrefixMapping(prefix, uri);
+ }
+
+ public void endElement(String namespaceURI, String localName, String qName)
+ {
+ if (trace)
{
- if(trace)
+ String name = localName.length() == 0 ? qName : namespaceURI + ':' + localName;
+ log.trace("Enter endElement " + name);
+ try
{
- String name = localName.length() == 0 ? qName : namespaceURI + ':' + localName;
- log.trace("Enter endElement " + name);
- try
- {
- contentHandler.endElement(namespaceURI, localName, qName);
- }
- finally
- {
- log.trace("Exit endElement " + name);
- }
- }
- else
contentHandler.endElement(namespaceURI, localName, qName);
+ }
+ finally
+ {
+ log.trace("Exit endElement " + name);
+ }
}
+ else
+ contentHandler.endElement(namespaceURI, localName, qName);
+ }
- public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
+ public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
+ {
+ if (trace)
{
- if(trace)
+ String name = localName.length() == 0 ? qName : namespaceURI + ':' + localName;
+ log.trace("Enter startElement " + name);
+
+ try
{
- String name = localName.length() == 0 ? qName : namespaceURI + ':' + localName;
- log.trace("Enter startElement " + name);
-
- try
- {
- contentHandler.startElement(namespaceURI, localName, qName, atts);
- }
- finally
- {
- log.trace("Exit startElement " + name);
- }
- }
- else
contentHandler.startElement(namespaceURI, localName, qName, atts);
+ }
+ finally
+ {
+ log.trace("Exit startElement " + name);
+ }
}
+ else
+ contentHandler.startElement(namespaceURI, localName, qName, atts);
}
- private static final class MetaDataErrorHandler
- implements ErrorHandler
+ // Error handling
+
+ public void warning(SAXParseException exception)
{
- public static final ErrorHandler INSTANCE = new MetaDataErrorHandler();
+ log.warn(formatMessage(exception));
+ }
- public void warning(SAXParseException exception)
- {
- log.warn(formatMessage(exception));
- }
+ public void error(SAXParseException exception) throws SAXException
+ {
+ throw new SAXException(formatMessage(exception));
+ }
- public void error(SAXParseException exception)
- throws SAXException
- {
- throw new SAXException(formatMessage(exception));
- }
+ public void fatalError(SAXParseException exception) throws SAXException
+ {
+ throw new SAXException(formatMessage(exception));
+ }
- public void fatalError(SAXParseException exception)
- throws SAXException
+ public String formatMessage(SAXParseException exception)
+ {
+ StringBuffer buffer = new StringBuffer(50);
+ buffer.append(exception.getMessage()).append(" @ ");
+ String location = exception.getPublicId();
+ if (location != null)
{
- throw new SAXException(formatMessage(exception));
+ buffer.append(location);
}
-
- public String formatMessage(SAXParseException exception)
+ else
{
- StringBuffer buffer = new StringBuffer(50);
- buffer.append(exception.getMessage()).append(" @ ");
- String location = exception.getPublicId();
- if(location != null)
+ location = exception.getSystemId();
+ if (location != null)
{
buffer.append(location);
}
else
{
- location = exception.getSystemId();
- if(location != null)
- {
- buffer.append(location);
- }
- else
- {
- buffer.append("*unknown*");
- }
+ buffer.append("*unknown*");
}
- buffer.append('[');
- buffer.append(exception.getLineNumber()).append(',');
- buffer.append(exception.getColumnNumber()).append(']');
- return buffer.toString();
}
+ buffer.append('[');
+ buffer.append(exception.getLineNumber()).append(',');
+ buffer.append(exception.getColumnNumber()).append(']');
+ return buffer.toString();
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -118,5 +118,13 @@
nextNotFound();
return null;
}
+
+ @Override
+ protected ParticleHandler getHandler()
+ {
+ TermBinding term = particle.getTerm();
+ ParticleHandler handler = ((ModelGroupBinding)term).getHandler();
+ return handler == null ? DefaultHandlers.ELEMENT_HANDLER : handler;
+ }
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -135,5 +135,13 @@
nextNotFound();
return null;
}
+
+ @Override
+ protected ParticleHandler getHandler()
+ {
+ TermBinding term = particle.getTerm();
+ ParticleHandler handler = ((ModelGroupBinding)term).getHandler();
+ return handler == null ? DefaultHandlers.ELEMENT_HANDLER : handler;
+ }
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -185,5 +185,13 @@
super.nextNotFound();
pos = -1;
}
+
+ @Override
+ protected ParticleHandler getHandler()
+ {
+ TermBinding term = particle.getTerm();
+ ParticleHandler handler = ((ModelGroupBinding)term).getHandler();
+ return handler == null ? DefaultHandlers.ELEMENT_HANDLER : handler;
+ }
}
}
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 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -24,6 +24,7 @@
import java.lang.reflect.Method;
import javax.xml.namespace.QName;
+
import org.jboss.logging.Logger;
import org.jboss.xb.binding.AttributesImpl;
import org.jboss.xb.binding.Constants;
@@ -48,7 +49,7 @@
public class SundayContentHandler
implements JBossXBParser.DtdAwareContentHandler, PositionStack
{
- final static Logger log = Logger.getLogger(SundayContentHandler.class);
+ private static Logger log;
public final static Object NIL = new Object();
@@ -63,9 +64,7 @@
private String dtdSystemId;
private boolean sawDTD;
- private boolean trace = log.isTraceEnabled();
-
- private UnmarshallingContextImpl ctx = new UnmarshallingContextImpl();
+ private UnmarshallingContextImpl ctx;
private NamespaceRegistry nsRegistry = new NamespaceRegistry();
public SundayContentHandler(SchemaBinding schema)
@@ -237,7 +236,8 @@
ElementBinding elementBinding = (ElementBinding) head.getParticle().getTerm();
Object root = elementBinding.getType().getValueAdapter().cast(head.getValue(), Object.class);
head = null;
-
+ nsRegistry = null;
+
if (sawDTD)
{
// Probably should be integrated into schema binding?
@@ -251,7 +251,9 @@
}
catch (Exception e)
{
- if(trace)
+ if(log == null)
+ log = Logger.getLogger(SundayContentHandler.class);
+ if(log.isTraceEnabled())
log.trace("No setDTD found on root: " + root);
}
}
@@ -302,6 +304,8 @@
public UnmarshallingContextImpl getContext()
{
+ if(ctx == null)
+ ctx = new UnmarshallingContextImpl();
return ctx;
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/UnorderedSequenceBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/UnorderedSequenceBinding.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/UnorderedSequenceBinding.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -183,5 +183,13 @@
nextNotFound();
return null;
}
+
+ @Override
+ protected ParticleHandler getHandler()
+ {
+ TermBinding term = particle.getTerm();
+ ParticleHandler handler = ((ModelGroupBinding)term).getHandler();
+ return handler == null ? DefaultHandlers.ELEMENT_HANDLER : handler;
+ }
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -22,7 +22,6 @@
package org.jboss.xb.binding.sunday.unmarshalling;
import javax.xml.namespace.QName;
-import org.jboss.logging.Logger;
import org.jboss.xb.binding.JBossXBRuntimeException;
import org.jboss.xb.binding.ObjectLocalMarshaller;
import org.jboss.xb.binding.Util;
@@ -37,7 +36,7 @@
public class WildcardBinding
extends TermBinding
{
- private static final Logger log = Logger.getLogger(WildcardBinding.class);
+ //private static final Logger log = Logger.getLogger(WildcardBinding.class);
private static final short PC_LAX = 3;
private static final short PC_SKIP = 2;
@@ -187,14 +186,14 @@
*/
private ElementBinding getUnresolvedElement(QName qName, boolean required)
{
- if(log.isTraceEnabled())
+/* if(log.isTraceEnabled())
{
log.trace(
"getUnresolvedElement for " + qName + ", required=" + required
+ ", unresolvedElementHandler=" + unresolvedElementHandler
);
}
-
+*/
if(unresolvedElementHandler == null)
{
if(required)
@@ -328,5 +327,11 @@
nextNotFound();
return null;
}
+
+ @Override
+ protected ParticleHandler getHandler()
+ {
+ return NoopParticleHandler.INSTANCE;
+ }
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/AbstractPosition.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/AbstractPosition.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/AbstractPosition.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -24,15 +24,11 @@
import javax.xml.namespace.QName;
import org.jboss.logging.Logger;
-import org.jboss.xb.binding.sunday.unmarshalling.DefaultHandlers;
-import org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding;
-import org.jboss.xb.binding.sunday.unmarshalling.NoopParticleHandler;
import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
import org.jboss.xb.binding.sunday.unmarshalling.ParticleHandler;
import org.jboss.xb.binding.sunday.unmarshalling.PositionStack;
import org.jboss.xb.binding.sunday.unmarshalling.RepeatableParticleHandler;
import org.jboss.xb.binding.sunday.unmarshalling.TermBeforeSetParentCallback;
-import org.jboss.xb.binding.sunday.unmarshalling.TermBinding;
import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
import org.jboss.xb.binding.sunday.unmarshalling.SundayContentHandler.UnmarshallingContextImpl;
import org.xml.sax.Attributes;
@@ -143,7 +139,7 @@
public void initValue(Attributes atts)
{
if(handler == null)
- handler = getHandler(particle.getTerm());
+ handler = getHandler();
Object parent = previous == null ? null : previous.getValue();
o = handler.startParticle(parent, qName, particle, atts, stack.getNamespaceRegistry());
}
@@ -221,16 +217,5 @@
parentPosition.getParticle(), handler);
}
- private ParticleHandler getHandler(TermBinding term)
- {
- ParticleHandler handler = null;
- if(term.isModelGroup())
- handler = ((ModelGroupBinding)term).getHandler();
- else if(term.isWildcard())
- //handler = ((WildcardBinding)term).getWildcardHandler();
- handler = NoopParticleHandler.INSTANCE;
- else
- throw new IllegalArgumentException("Unexpected term " + term);
- return handler == null ? DefaultHandlers.ELEMENT_HANDLER : handler;
- }
+ protected abstract ParticleHandler getHandler();
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/ElementPosition.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/ElementPosition.java 2010-01-15 00:55:51 UTC (rev 3931)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/position/ElementPosition.java 2010-01-15 11:08:04 UTC (rev 3932)
@@ -621,4 +621,10 @@
indentation = null;
}
}
+
+ @Override
+ protected ParticleHandler getHandler()
+ {
+ return DefaultHandlers.ELEMENT_HANDLER;
+ }
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list