[jboss-svn-commits] JBoss Common SVN: r2614 - in jbossxb/trunk/src: test/java/org/jboss/test/xb/builder/object/element/wrapper/support and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 9 05:52:46 EDT 2007
Author: alex.loubyansky at jboss.com
Date: 2007-10-09 05:52:46 -0400 (Tue, 09 Oct 2007)
New Revision: 2614
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java
jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java
jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml
jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml
Log:
fixes for @XmlElementWrapper support
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java 2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/builder/JBossXBNoSchemaBuilder.java 2007-10-09 09:52:46 UTC (rev 2614)
@@ -1240,6 +1240,39 @@
// for now support just one JBossXmlNsPrefix
JBossXmlNsPrefix xmlNsPrefix = property.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
+ // support for @XmlElementWrapper
+ // the wrapping element is ignored in this case
+ XmlElementWrapper xmlWrapper = property.getUnderlyingAnnotation(XmlElementWrapper.class);
+ if(xmlWrapper != null)
+ {
+ String wrapperNamespace = xmlWrapper.namespace();
+ String wrapperName = xmlWrapper.name();
+ boolean wrapperNillable = xmlWrapper.nillable();
+
+ QName wrapperQName = generateXmlName(property.getName(), elementForm, wrapperNamespace, wrapperName);
+
+ boolean typeIsNew = !typeCache.containsKey(propertyType);
+
+ TypeBinding wrapperType = new TypeBinding();
+ SequenceBinding seq = new SequenceBinding(schemaBinding);
+ seq.setHandler(BuilderParticleHandler.INSTANCE);
+ ParticleBinding particle = new ParticleBinding(seq);
+ wrapperType.setParticle(particle);
+ wrapperType.setHandler(new DefaultElementHandler());
+
+ ElementBinding wrapperElement = createElementBinding(propertyType, wrapperType, wrapperQName, false);
+ wrapperElement.setNillable(wrapperNillable);
+ wrapperElement.setSkip(Boolean.TRUE);
+ particle = new ParticleBinding(wrapperElement, 1, 1, false);
+ localModel.addParticle(particle);
+
+ localModel = seq;
+
+ if (trace)
+ log.trace("Added property " + wrapperQName + " for type=" + beanInfo.getName() + " property="
+ + property.getName() + " as a wrapper element");
+ }
+
// Setup a choice
if (elements.length > 1)
{
@@ -1430,23 +1463,6 @@
propertyHandler = new CollectionPropertyHandler(property, localPropertyType);
isCol = true;
localPropertyType = findComponentType((ClassInfo) localPropertyType);
-
-// TypeInfo gs = ((ClassInfo) localPropertyType).getGenericSuperclass();
-// if (gs instanceof ParameterizedClassInfo)
-// {
-// ParameterizedClassInfo pti = (ParameterizedClassInfo) gs;
-// ClassInfo typeArg = (ClassInfo) pti.getActualTypeArguments()[0];
-// //if (((ClassInfo) typeArg).getUnderlyingAnnotation(XmlType.class) != null)
-// if (typeArg.getUnderlyingAnnotation(JBossXmlModelGroup.class) == null)
-// {// it may be a model group in which case we don't want to change the type
-// localPropertyType = typeArg;
-//
-// if(!type.equals(typeArg))
-// {
-// throw new IllegalStateException("Expected " + type + " but got " + typeArg.getName());
-// }
-// }
-// }
}
else
{
@@ -1454,96 +1470,36 @@
}
ParticleBinding particle;
-
- if (propertyType.isCollection() && property.getUnderlyingAnnotation(XmlElementWrapper.class) != null)
+ // DOM elements are going to be treated as unresolved
+ // however having the property registered
+ if (!Element.class.getName().equals(propertyType.getName()))
{
- // support for @XmlElementWrapper
- // the wrapping element is ignored in this case
- XmlElementWrapper xmlWrapper = property.getUnderlyingAnnotation(XmlElementWrapper.class);
- String wrapperNamespace = xmlWrapper.namespace();
- String wrapperName = xmlWrapper.name();
- boolean wrapperNillable = xmlWrapper.nillable();
-
- QName childQName = qName;
- qName = generateXmlName(property.getName(), elementForm, wrapperNamespace, wrapperName);
-
- boolean typeIsNew = !typeCache.containsKey(propertyType);
-
- TypeBinding wrapperType = new TypeBinding();
- SequenceBinding seq = new SequenceBinding(schemaBinding);
- seq.setHandler(BuilderParticleHandler.INSTANCE);
- particle = new ParticleBinding(seq);
- wrapperType.setParticle(particle);
- wrapperType.setHandler(new DefaultElementHandler());
-
- ElementBinding wrapperElement = createElementBinding(propertyType, wrapperType, qName, false);
- wrapperElement.setNillable(wrapperNillable);
- wrapperElement.setSkip(Boolean.TRUE);
- particle = new ParticleBinding(wrapperElement, 1, 1, false);
- targetGroup.addParticle(particle);
-
- if(trace)
- log.trace("Added property " + qName + " for type=" + beanInfo.getName() + " property="
- + property.getName() + " as a wrapper element");
-
- if (typeIsNew)
+ XBValueAdapter valueAdapter = null;
+ XmlJavaTypeAdapter xmlTypeAdapter = property.getUnderlyingAnnotation(XmlJavaTypeAdapter.class);
+ if (xmlTypeAdapter != null)
{
- // component stuff
- ClassInfo typeArg = (ClassInfo) findComponentType(property);
- if (typeArg == null)
- {
- throw new IllegalStateException("Failed to determine component type for collection "
- + propertyType.getName());
- }
- TypeInfo childType = JBossXBBuilder.configuration.getTypeInfo(typeArg.getType());
-
- TypeBinding childTypeBinding = resolveTypeBinding(childType);
- ElementBinding childElement = createElementBinding(childType, childTypeBinding, childQName, false);
-
- // Bind it to the model
- ParticleBinding childParticle = new ParticleBinding(childElement, 0, 1, true);
- wrapperElement.getType().addParticle(childParticle);
-
- beanAdapterFactory.addProperty(childQName, propertyHandler);
- if (trace)
- log.trace("Added property " + childQName + " for type=" + beanInfo.getName() + " property="
- + property.getName() + " handler=" + propertyHandler + " wrapper=" + qName);
+ valueAdapter = new XBValueAdapter(xmlTypeAdapter.value(), propertyType.getTypeInfoFactory());
+ localPropertyType = valueAdapter.getAdaptedType();
}
- }
- // else if it's not a DOM element which is going to be treated as wildcard
- else
- {
- // DOM elements are going to be treated as unresolved
- // however having the property registered
- if(!Element.class.getName().equals(propertyType.getName()))
- {
- XBValueAdapter valueAdapter = null;
- XmlJavaTypeAdapter xmlTypeAdapter = property.getUnderlyingAnnotation(XmlJavaTypeAdapter.class);
- if (xmlTypeAdapter != null)
- {
- valueAdapter = new XBValueAdapter(xmlTypeAdapter.value(), propertyType.getTypeInfoFactory());
- localPropertyType = valueAdapter.getAdaptedType();
- }
- TypeBinding elementTypeBinding = resolveTypeBinding(localPropertyType);
- ElementBinding elementBinding = createElementBinding(localPropertyType, elementTypeBinding, qName,
- false);
- elementBinding.setNillable(nillable);
- elementBinding.setValueAdapter(valueAdapter);
+ TypeBinding elementTypeBinding = resolveTypeBinding(localPropertyType);
+ ElementBinding elementBinding = createElementBinding(localPropertyType, elementTypeBinding, qName,
+ false);
+ elementBinding.setNillable(nillable);
+ elementBinding.setValueAdapter(valueAdapter);
- // Bind it to the model
- particle = new ParticleBinding(elementBinding, 1, 1, isCol);
- if (required == false)
- particle.setMinOccurs(0);
+ // Bind it to the model
+ particle = new ParticleBinding(elementBinding, 1, 1, isCol);
+ if (required == false)
+ particle.setMinOccurs(0);
- targetGroup.addParticle(particle);
- }
-
- beanAdapterFactory.addProperty(qName, propertyHandler);
- if (trace)
- log.trace("Added property " + qName + " for type=" + beanInfo.getName() + " property="
- + property.getName() + " handler=" + propertyHandler);
+ targetGroup.addParticle(particle);
}
+
+ beanAdapterFactory.addProperty(qName, propertyHandler);
+ if (trace)
+ log.trace("Added property " + qName + " for type=" + beanInfo.getName() + " property="
+ + property.getName() + " handler=" + propertyHandler);
}
}
pop();
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java 2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/support/MyNumber.java 2007-10-09 09:52:46 UTC (rev 2614)
@@ -50,7 +50,7 @@
@Override
public boolean equals(Object obj)
{
- if (obj instanceof MyNumber)
+ if (!(obj instanceof MyNumber))
return false;
MyNumber n = (MyNumber) obj;
return x.equals(n.x);
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java 2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/element/wrapper/test/WrapperUnitTestCase.java 2007-10-09 09:52:46 UTC (rev 2614)
@@ -19,11 +19,12 @@
public void testFooWrapper()
throws Exception
{
- enableTrace("org.jboss.xb");
+ //enableTrace("org.jboss.xb");
Foo foo = unmarshalObject(Foo.class);
List<Number> items = foo.getItems();
assertEquals(3, items.size());
}
+
public void testFoo2Wrapper()
throws Exception
{
@@ -31,6 +32,7 @@
List<Number> items = foo.getItems();
assertEquals(3, items.size());
}
+
public void testFoo3Wrapper()
throws Exception
{
Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml 2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo2Wrapper.xml 2007-10-09 09:52:46 UTC (rev 2614)
@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<foo2>
- <bar>
- <int>1</int>
- </bar>
- <bar>
- <int>2</int>
- </bar>
- <bar>
- <float>1.1</float>
- </bar>
+ <bar>
+ <int>1</int>
+ <int>2</int>
+ <float>1.1</float>
+ </bar>
</foo2>
Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml 2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFoo3Wrapper.xml 2007-10-09 09:52:46 UTC (rev 2614)
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<foo3>
- <bar>
- <int>1</int>
- </bar>
- <bar>
- <int>2</int>
- </bar>
- <bar>
- <float>1.1</float>
- </bar>
- <bar>
- <x>123456789</x>
- </bar>
+ <bar>
+ <int>1</int>
+ </bar>
+ <bar>
+ <int>2</int>
+ </bar>
+ <bar>
+ <float>1.1</float>
+ </bar>
+ <bar>
+ <x>123456789</x>
+ </bar>
</foo3>
Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml 2007-10-09 09:16:08 UTC (rev 2613)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/element/wrapper/test/Wrapper_testFooWrapper.xml 2007-10-09 09:52:46 UTC (rev 2614)
@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<foo>
- <bar>
- <int>1</int>
- </bar>
- <bar>
- <int>2</int>
- </bar>
- <bar>
- <float>1.1</float>
- </bar>
+ <bar>
+ <int>1</int>
+ <int>2</int>
+ <float>1.1</float>
+ </bar>
</foo>
More information about the jboss-svn-commits
mailing list