[jboss-svn-commits] JBoss Common SVN: r3954 - in jbossxb/trunk/src: main/java/org/jboss/xb/binding/sunday/unmarshalling and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jan 22 12:02:20 EST 2010
Author: alex.loubyansky at jboss.com
Date: 2010-01-22 12:02:19 -0500 (Fri, 22 Jan 2010)
New Revision: 3954
Removed:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopParticleHandler.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopRepeatableParticleHandler.java
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/Constants.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ElementBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TermBinding.java
jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.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/XsdBinder.java
jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/BuilderParticleHandler.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/GlobalGroupUnitTestCase.java
Log:
switched from not_set/true/false Boolean-based impl to int-based impl, from separate singleton (noop) handler classes to constants initialized to anonymous inner implementations of handlers
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/Constants.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/Constants.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/Constants.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -97,4 +97,8 @@
QName QNAME_XMIME_BASE64BINARY = new QName(NS_XML_MIME, "base64Binary");
QName QNAME_XMIME_CONTENTTYPE = new QName(NS_XML_MIME, "contentType");
QName QNAME_XOP_INCLUDE = new QName(Constants.NS_XOP_INCLUDE, "Include");
+
+ int NOT_SET = 0;
+ int FALSE = 1;
+ int TRUE = 2;
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -21,6 +21,7 @@
*/
package org.jboss.xb.binding.sunday.unmarshalling;
+import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
import org.jboss.xb.binding.sunday.unmarshalling.CharactersHandler.UnmarshalCharactersHandler;
@@ -28,6 +29,7 @@
import org.jboss.xb.binding.sunday.unmarshalling.impl.runtime.RtCharactersHandler;
import org.jboss.xb.binding.sunday.unmarshalling.impl.runtime.RtElementHandler;
import org.jboss.xb.binding.sunday.xop.XOPElementHandler;
+import org.xml.sax.Attributes;
/**
* The DefaultHandlers.
@@ -46,7 +48,8 @@
public static ParticleHandler SIMPLE_HANDLER = new RtElementHandler()
{
- public Object startParticle(Object parent, QName qName, ParticleBinding particle)
+ @Override
+ public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs, NamespaceContext nsCtx)
{
return null;
}
@@ -67,9 +70,41 @@
}
};
- //public static CharactersHandler CHARACTERS_HANDLER = RtCharactersHandler.INSTANCE;
-
public static ParticleHandler XOP_HANDLER = new XOPElementHandler();
- public static RepeatableParticleHandler REPEATABLE_HANDLER = NoopRepeatableParticleHandler.INSTANCE;
+ public static ParticleHandler NOOP_PARTICLE_HANDLER = new ParticleHandler()
+ {
+ public Object endParticle(Object o, QName elementName, ParticleBinding particle)
+ {
+ return o;
+ }
+
+ public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle,
+ ParticleBinding parentParticle)
+ {
+ }
+
+ public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs,
+ NamespaceContext nsCtx)
+ {
+ return parent;
+ }
+ };
+
+ public static RepeatableParticleHandler REPEATABLE_HANDLER = new RepeatableParticleHandler()
+ {
+ public Object startRepeatableParticle(Object parent, QName startName, ParticleBinding particle)
+ {
+ return null;
+ }
+
+ public void endRepeatableParticle(Object parent, Object o, QName elementName, ParticleBinding particle, ParticleBinding parentParticle)
+ {
+ }
+
+ public void addTermValue(Object particleValue, Object termValue, QName elementName,
+ ParticleBinding particle, ParticleBinding parentParticle, ParticleHandler handler)
+ {
+ }
+ };
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ElementBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ElementBinding.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ElementBinding.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -31,6 +31,7 @@
import org.jboss.xb.binding.metadata.MapEntryMetaData;
import org.jboss.xb.binding.metadata.PutMethodMetaData;
import org.jboss.xb.binding.metadata.ValueMetaData;
+import org.jboss.xb.binding.Constants;
import org.jboss.xb.binding.JBossXBRuntimeException;
import org.jboss.xb.binding.sunday.marshalling.TermBeforeMarshallingCallback;
import org.jboss.xb.binding.sunday.xop.XOPUnmarshaller;
@@ -47,7 +48,7 @@
protected TypeBinding typeBinding;
protected boolean nillable;
- protected Boolean normalizeSpace;
+ protected int normalizeSpace;
protected XOPUnmarshaller xopUnmarshaller;
@@ -68,6 +69,7 @@
throw new JBossXBRuntimeException("Each element must have a non-null QName!");
this.qName = qName;
}
+
public List<ElementInterceptor> getInterceptors()
{
return interceptors;
@@ -99,7 +101,6 @@
if( interceptors.contains(interceptor) == false )
interceptors.add(interceptor);
}
-
}
}
@@ -146,7 +147,7 @@
public boolean isSkip()
{
- return skip == null ? typeBinding.isSkip() : skip.booleanValue();
+ return skip == Constants.NOT_SET ? typeBinding.isSkip() : skip == Constants.TRUE;
}
public ValueAdapter getValueAdapter()
@@ -199,16 +200,16 @@
this.xopUnmarshaller = xopUnmarshaller;
}
- public void setNormalizeSpace(Boolean value)
+ public void setNormalizeSpace(boolean value)
{
- this.normalizeSpace = value;
+ this.normalizeSpace = value ? Constants.TRUE : Constants.FALSE;
}
public boolean isNormalizeSpace()
{
- if(normalizeSpace != null)
- return normalizeSpace.booleanValue();
- return schema == null ? true : schema.isNormalizeSpace();
+ if(normalizeSpace == Constants.NOT_SET)
+ return schema == null ? true : schema.isNormalizeSpace();
+ return normalizeSpace == Constants.TRUE;
}
public String toString()
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -25,6 +25,7 @@
import javax.xml.namespace.QName;
+import org.jboss.xb.binding.Constants;
import org.xml.sax.Attributes;
/**
@@ -104,7 +105,7 @@
public boolean isSkip()
{
- return skip == null || skip;
+ return skip != Constants.FALSE;
}
public boolean isModelGroup()
Deleted: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopParticleHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopParticleHandler.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopParticleHandler.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -1,54 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.xb.binding.sunday.unmarshalling;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-
-import org.xml.sax.Attributes;
-
-/**
- * A NoopParticleHandler.
- *
- * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
- * @version $Revision: 1.1 $
- */
-public class NoopParticleHandler implements ParticleHandler
-{
- public static final NoopParticleHandler INSTANCE = new NoopParticleHandler();
-
- public Object endParticle(Object o, QName elementName, ParticleBinding particle)
- {
- return o;
- }
-
- public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle,
- ParticleBinding parentParticle)
- {
- }
-
- public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs,
- NamespaceContext nsCtx)
- {
- return parent;
- }
-}
Deleted: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopRepeatableParticleHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopRepeatableParticleHandler.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/NoopRepeatableParticleHandler.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -1,48 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.xb.binding.sunday.unmarshalling;
-
-import javax.xml.namespace.QName;
-
-/**
- *
- * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
- * @version $Revision: 1.1 $
- */
-public class NoopRepeatableParticleHandler implements RepeatableParticleHandler
-{
- public static final NoopRepeatableParticleHandler INSTANCE = new NoopRepeatableParticleHandler();
-
- public Object startRepeatableParticle(Object parent, QName startName, ParticleBinding particle)
- {
- return null;
- }
-
- public void endRepeatableParticle(Object parent, Object o, QName elementName, ParticleBinding particle, ParticleBinding parentParticle)
- {
- }
-
- public void addTermValue(Object particleValue, Object termValue, QName elementName,
- ParticleBinding particle, ParticleBinding parentParticle, ParticleHandler handler)
- {
- }
-}
\ No newline at end of file
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TermBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TermBinding.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TermBinding.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -23,6 +23,7 @@
import javax.xml.namespace.QName;
+import org.jboss.xb.binding.Constants;
import org.jboss.xb.binding.metadata.ClassMetaData;
import org.jboss.xb.binding.metadata.PropertyMetaData;
import org.jboss.xb.binding.metadata.MapEntryMetaData;
@@ -49,7 +50,7 @@
protected ValueMetaData valueMetaData;
protected boolean mapEntryKey;
protected boolean mapEntryValue;
- protected Boolean skip;
+ protected int skip;
protected ValueAdapter valueAdapter;
protected TermBeforeMarshallingCallback beforeMarshallingCallback;
protected TermBeforeSetParentCallback beforeSetParentCallback;
@@ -156,9 +157,9 @@
public abstract boolean isSkip();
- public void setSkip(Boolean skip)
+ public void setSkip(boolean skip)
{
- this.skip = skip;
+ this.skip = skip ? Constants.TRUE : Constants.FALSE;
}
public ValueAdapter getValueAdapter()
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -49,7 +49,7 @@
* @version <tt>$Revision$</tt>
*/
public class TypeBinding
-{
+{
protected QName qName;
/** Map<QName, AttributeBinding> */
private Map<QName, AttributeBinding> attrs;
@@ -69,9 +69,9 @@
private TermBeforeMarshallingCallback beforeMarshallingCallback;
private TermBeforeSetParentCallback beforeSetParentCallback;
- private Boolean startElementCreatesObject;
- private int simple; // 0 - not set, 1 - false, 2 - true
- private Boolean ignoreEmptyString;
+ private int startElementCreatesObject;
+ private int simple;
+ private int ignoreEmptyString;
private WildcardBinding wildcard;
private ParticleBinding particle;
@@ -87,7 +87,7 @@
/** Map<QName, List<ElementInterceptor>>
* these are local element interceptors that are "added" to the interceptor stack
* defined in the element binding */
- private Map<QName, List<ElementInterceptor>> interceptors = Collections.emptyMap();
+ private Map<QName, List<ElementInterceptor>> interceptors;
public TypeBinding()
{
@@ -346,25 +346,21 @@
{
ElementBinding el = getElement(qName);
if(el == null)
- {
el = addElement(qName, new TypeBinding());
+
+ if(interceptors == null)
+ {
+ interceptors = Collections.singletonMap(qName, Collections.singletonList(interceptor));
+ return;
}
- //el.pushInterceptor(interceptor);
List<ElementInterceptor> intList = (List<ElementInterceptor>) interceptors.get(qName);
if(intList == null)
{
intList = Collections.singletonList(interceptor);
- switch(interceptors.size())
- {
- case 0:
- interceptors = Collections.singletonMap(qName, intList);
- break;
- case 1:
- interceptors = new HashMap<QName, List<ElementInterceptor>>(interceptors);
- default:
- interceptors.put(qName, intList);
- }
+ if(interceptors.size() == 1)
+ interceptors = new HashMap<QName, List<ElementInterceptor>>(interceptors);
+ interceptors.put(qName, intList);
}
else
{
@@ -387,6 +383,8 @@
*/
public List<ElementInterceptor> getInterceptors(QName qName)
{
+ if(interceptors == null)
+ return Collections.<ElementInterceptor>emptyList();
List<ElementInterceptor> list = interceptors.get(qName);
return list == null ? Collections.<ElementInterceptor>emptyList() : list;
}
@@ -406,12 +404,12 @@
// actually, a type can be complex when the particle is null and
// there are no attributes. But the XsdBinder will set the value of simple
// to false. This check is for schema bindings created programmatically
- return simple == 0 ? particle == null && attrs == null : simple == 2;
+ return simple == Constants.NOT_SET ? particle == null && attrs == null : simple == Constants.TRUE;
}
public void setSimple(boolean simple)
{
- this.simple = simple ? 2 : 1;
+ this.simple = simple ? Constants.TRUE : Constants.FALSE;
}
public boolean isTextContentAllowed()
@@ -520,8 +518,8 @@
*/
public boolean isStartElementCreatesObject()
{
- return startElementCreatesObject == null ?
- particle != null || attrs != null : startElementCreatesObject;
+ return startElementCreatesObject == Constants.NOT_SET ?
+ particle != null || attrs != null : startElementCreatesObject == Constants.TRUE;
}
/**
@@ -535,7 +533,7 @@
*/
public void setStartElementCreatesObject(boolean startElementCreatesObject)
{
- this.startElementCreatesObject = startElementCreatesObject;
+ this.startElementCreatesObject = startElementCreatesObject ? Constants.TRUE : Constants.FALSE;
}
private boolean initializedWildcard;
@@ -676,12 +674,12 @@
public boolean isIgnoreEmptyString()
{
- return ignoreEmptyString == null ? !isSimple() : ignoreEmptyString;
+ return ignoreEmptyString == Constants.NOT_SET ? !isSimple() : ignoreEmptyString == Constants.TRUE;
}
public void setIgnoreEmptyString(boolean value)
{
- this.ignoreEmptyString = value;
+ this.ignoreEmptyString = value ? Constants.TRUE : Constants.FALSE;
}
public AnyAttributeBinding getAnyAttribute()
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-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -22,6 +22,8 @@
package org.jboss.xb.binding.sunday.unmarshalling;
import javax.xml.namespace.QName;
+
+import org.jboss.xb.binding.Constants;
import org.jboss.xb.binding.JBossXBRuntimeException;
import org.jboss.xb.binding.ObjectLocalMarshaller;
import org.jboss.xb.binding.Util;
@@ -213,7 +215,7 @@
ElementBinding element = new ElementBinding(schema, qName, type);
// this is unresolved element we don't care about
- element.setSkip(Boolean.TRUE);
+ element.setSkip(true);
return element;
}
}
@@ -256,7 +258,7 @@
public boolean isSkip()
{
- return skip == null ? true : skip.booleanValue();
+ return skip != Constants.FALSE;
}
public boolean isModelGroup()
@@ -329,7 +331,7 @@
@Override
protected ParticleHandler getHandler()
{
- return NoopParticleHandler.INSTANCE;
+ return DefaultHandlers.NOOP_PARTICLE_HANDLER;
}
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -1448,7 +1448,7 @@
msg += ": will be skipped, it's attributes, character content and children will be set on the parent";
log.trace(msg);
}
- term.setSkip(skipAnnotation ? Boolean.TRUE : Boolean.FALSE);
+ term.setSkip(skipAnnotation);
}
}
}
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -103,9 +103,9 @@
import org.jboss.xb.binding.sunday.unmarshalling.CharactersHandler;
import org.jboss.xb.binding.sunday.unmarshalling.ChoiceBinding;
import org.jboss.xb.binding.sunday.unmarshalling.DefaultElementInterceptor;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultHandlers;
import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
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.RepeatableParticleHandler;
@@ -1140,7 +1140,7 @@
if (trace)
log.trace(model.getGroupType() + " model group for type=" + beanInfo.getName());
- model.setHandler(BuilderParticleHandler.INSTANCE);
+ model.setHandler(BuilderParticleHandler.PARENT_ELEMENT);
ParticleBinding typeParticle = new ParticleBinding(model);
typeParticle.setMinOccurs(1);
typeParticle.setMaxOccurs(1);
@@ -1447,7 +1447,7 @@
if (elements.length > 1)
{
ChoiceBinding choice = new ChoiceBinding(schemaBinding);
- choice.setHandler(BuilderParticleHandler.INSTANCE);
+ choice.setHandler(BuilderParticleHandler.PARENT_GROUP);
ParticleBinding particleBinding = new ParticleBinding(choice);
particleBinding.setMinOccurs(0);
// WARN normally maxOccursUnbounded should be set to true in this case
@@ -1558,7 +1558,7 @@
}
else
{
- elementTypeBinding.setHandler(BuilderParticleHandler.INSTANCE);
+ elementTypeBinding.setHandler(BuilderParticleHandler.PARENT_GROUP);
}
elementTypeBinding.setSchemaBinding(schemaBinding);
ElementBinding elementBinding = createElementBinding(localPropertyType, elementTypeBinding, propertyQName, false);
@@ -1571,7 +1571,7 @@
// Setup the child model
ChoiceBinding childModel = new ChoiceBinding(schemaBinding);
- childModel.setHandler(BuilderParticleHandler.INSTANCE);
+ childModel.setHandler(BuilderParticleHandler.PARENT_ELEMENT);
ParticleBinding particleBinding = new ParticleBinding(childModel);
particleBinding.setMinOccurs(0);
particleBinding.setMaxOccurs(1);
@@ -1874,7 +1874,7 @@
log.trace("Property order for " + annotation.kind() + " property " + property.getName() + ": " + Arrays.asList(memberOrder));
group = createModelGroup(annotation.kind(), groupType, memberOrder.length > 1 && propOrderMissing, annotation.propOrder());
- group.setSkip(Boolean.FALSE);
+ group.setSkip(false);
group.setHandler(propHandler);
// bind model group members
@@ -1966,14 +1966,14 @@
{
TypeBinding wrapperType = new TypeBinding();
SequenceBinding seq = new SequenceBinding(schemaBinding);
- seq.setHandler(BuilderParticleHandler.INSTANCE);
+ seq.setHandler(BuilderParticleHandler.PARENT_ELEMENT);
ParticleBinding particle = new ParticleBinding(seq);
wrapperType.setParticle(particle);
- wrapperType.setHandler(NoopParticleHandler.INSTANCE);
+ wrapperType.setHandler(DefaultHandlers.NOOP_PARTICLE_HANDLER);
ElementBinding wrapperElement = createElementBinding(propertyType, wrapperType, wrapperQName, false);
wrapperElement.setNillable(annotation.nillable());
- wrapperElement.setSkip(Boolean.TRUE);
+ wrapperElement.setSkip(true);
particle = new ParticleBinding(wrapperElement, annotation.required() ? 1 : 0, 1, propertyType.isCollection() || propertyType.isArray());
parentModel.addParticle(particle);
@@ -2252,7 +2252,7 @@
keyValueSequence = new SequenceBinding(schemaBinding);
if(entryType == null)
{
- keyValueSequence.setSkip(Boolean.FALSE);
+ keyValueSequence.setSkip(false);
keyValueSequence.setQName(propertyQName);
schemaBinding.addGroup(keyValueSequence.getQName(), keyValueSequence);
ParticleBinding keyValueParticle = new ParticleBinding(keyValueSequence, 0, -1, true);
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/BuilderParticleHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/BuilderParticleHandler.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/BuilderParticleHandler.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -42,6 +42,58 @@
/** The singleton instance */
public static final BuilderParticleHandler INSTANCE = new BuilderParticleHandler();
+ public static final ParticleHandler PARENT_ELEMENT = new ParticleHandler()
+ {
+ public Object endParticle(Object o, QName elementName, ParticleBinding particle)
+ {
+ return o;
+ }
+
+ public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle, ParticleBinding parentParticle)
+ {
+ if (particle.getTerm().isElement())
+ {
+ ParticleHandler particleHandler = ((ElementBinding)parentParticle.getTerm()).getType().getHandler();
+ if(particleHandler != null)
+ particleHandler.setParent(parent, o, elementName, particle, parentParticle);
+ }
+ }
+
+ public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs,
+ NamespaceContext nsCtx)
+ {
+ return parent;
+ }
+ };
+
+ public static final ParticleHandler PARENT_GROUP = new ParticleHandler()
+ {
+ public Object endParticle(Object o, QName elementName, ParticleBinding particle)
+ {
+ return o;
+ }
+
+ public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle, ParticleBinding parentParticle)
+ {
+ if (particle.getTerm().isElement())
+ {
+ TermBinding parentTerm = parentParticle.getTerm();
+ if (!parentTerm.isSkip())
+ {
+ ParticleHandler particleHandler = ((ModelGroupBinding)parentTerm).getHandler();
+ if(particleHandler != null)
+ particleHandler.setParent(parent, o, elementName, particle, parentParticle);
+ }
+ }
+ }
+
+ public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs,
+ NamespaceContext nsCtx)
+ {
+ return parent;
+ }
+ };
+
public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs, NamespaceContext nsCtx)
{
return parent;
@@ -49,11 +101,10 @@
public void setParent(Object parent, Object o, QName elementName, ParticleBinding particle, ParticleBinding parentParticle)
{
- TermBinding term = particle.getTerm();
- TermBinding parentTerm = parentParticle.getTerm();
- if (term.isModelGroup() == false)
+ if (particle.getTerm().isModelGroup() == false)
{
ParticleHandler particleHandler = null;
+ TermBinding parentTerm = parentParticle.getTerm();
if(parentTerm.isElement())
{
particleHandler = ((ElementBinding)parentTerm).getType().getHandler();
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/GlobalGroupUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/GlobalGroupUnitTestCase.java 2010-01-22 16:12:09 UTC (rev 3953)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/GlobalGroupUnitTestCase.java 2010-01-22 17:02:19 UTC (rev 3954)
@@ -125,7 +125,7 @@
ModelGroupBinding group = schema.getGroup(new QName(NS, "global1"));
assertNotNull(group);
group.setClassMetaData(classMetaData);
- group.setSkip(Boolean.FALSE);
+ group.setSkip(false);
// TODO should be able to determine this from the global group name!
PropertyMetaData prop = new PropertyMetaData();
More information about the jboss-svn-commits
mailing list