[jboss-svn-commits] JBoss Common SVN: r2717 - in jbossxb/trunk/src: main/java/org/jboss/javabean/plugins/jaxb and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Mar 3 12:34:23 EST 2008
Author: adrian at jboss.org
Date: 2008-03-03 12:34:22 -0500 (Mon, 03 Mar 2008)
New Revision: 2717
Added:
jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/AbstractParameter.java
jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructor.xml
jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityInt.xml
jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityString.xml
jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorExplicitFactoryClassAndParams.xml
jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorFactory.xml
Removed:
jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/xml/
Modified:
jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Constructor.java
jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/JavaBean.java
jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Parameter.java
jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Property.java
jbossxb/trunk/src/main/resources/schema/javabean_2_0.xsd
jbossxb/trunk/src/test/java/org/jboss/test/javabean/support/AmbiguityBean.java
jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/AmbiguityTestCase.java
jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/PropertyTestCase.java
Log:
[JBXB-122] [JBXB-123] - Removal of old schema binding initializer and fixes for broken parsing in the annotations
Added: jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/AbstractParameter.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/AbstractParameter.java (rev 0)
+++ jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/AbstractParameter.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -0,0 +1,63 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.javabean.plugins.jaxb;
+
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlValue;
+
+/**
+ * Abstrat Parameter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class AbstractParameter
+{
+ private String type;
+
+ private Object value;
+
+ public String getType()
+ {
+ return type;
+ }
+
+ @XmlAttribute(name="class")
+ public void setType(String type)
+ {
+ this.type = type;
+ }
+
+ public Object getValue()
+ {
+ return value;
+ }
+
+ @XmlValue
+ @XmlAnyElement
+ public void setValue(Object value)
+ {
+ this.value = value;
+ }
+}
Modified: jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Constructor.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Constructor.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Constructor.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -21,8 +21,11 @@
*/
package org.jboss.javabean.plugins.jaxb;
+import java.util.List;
+
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlType;
/**
@@ -39,7 +42,7 @@
private String factoryMethod;
- private Parameter[] parameters;
+ private List<? extends AbstractParameter> parameters;
public String getFactoryClass()
{
@@ -63,13 +66,17 @@
this.factoryMethod = factoryMethod;
}
- public Parameter[] getParameters()
+ public List<? extends AbstractParameter> getParameters()
{
return parameters;
}
- @XmlElement(name="parameter")
- public void setParameters(Parameter[] parameters)
+ @XmlElements
+ ({
+ @XmlElement(name="parameter", type=Parameter.class),
+ @XmlElement(name="property", type=Property.class)
+ })
+ public void setParameters(List<? extends AbstractParameter> parameters)
{
this.parameters = parameters;
}
Modified: jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/JavaBean.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/JavaBean.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/JavaBean.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -23,6 +23,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
@@ -206,13 +207,17 @@
* @param parameters the parameters
* @return parameter types
*/
- protected String[] getSignature(Parameter[] parameters)
+ protected String[] getSignature(List<? extends AbstractParameter> parameters)
{
if (parameters == null)
return new String[0];
- String[] signature = new String[parameters.length];
+ String[] signature = new String[parameters.size()];
for (int i = 0; i < signature.length; ++i)
- signature[i] = parameters[i].getType();
+ {
+ AbstractParameter parameter = parameters.get(i);
+ if (parameter instanceof Parameter)
+ signature[i] = ((Parameter) parameter).getParamType();
+ }
return signature;
}
@@ -223,17 +228,22 @@
* @param paramTypes the types
* @return parameter values
*/
- protected Object[] getParams(Parameter[] parameters, TypeInfo[] paramTypes)
+ protected Object[] getParams(List<? extends AbstractParameter> parameters, TypeInfo[] paramTypes)
{
if (parameters == null)
return new String[0];
- Object[] params = new Object[parameters.length];
+ Object[] params = new Object[parameters.size()];
for (int i = 0; i < params.length; ++i)
{
- Object value = parameters[i].getValue();
+ AbstractParameter parameter = parameters.get(i);
+ Object value = parameter.getValue();
try
{
- params[i] = paramTypes[i].convertValue(value, false);
+ TypeInfo parameterType = paramTypes[i];
+ String type = parameter.getType();
+ if (type != null)
+ parameterType = parameterType.getTypeInfoFactory().getTypeInfo(type, null);
+ params[i] = parameterType.convertValue(value, false);
}
catch (Throwable t)
{
Modified: jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Parameter.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Parameter.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Parameter.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -21,9 +21,8 @@
*/
package org.jboss.javabean.plugins.jaxb;
-import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.XmlType;
/**
* Parameter.
@@ -32,32 +31,19 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
-public class Parameter
+ at XmlType(name="propertyType")
+public class Parameter extends AbstractParameter
{
- private String type;
+ private String paramType;
- private Object value;
-
- public String getType()
+ public String getParamType()
{
- return type;
+ return paramType;
}
-
- @XmlAttribute(name="class")
- public void setType(String type)
+
+ @XmlAttribute(name="paramClass")
+ public void setParamType(String type)
{
- this.type = type;
+ this.paramType = type;
}
-
- public Object getValue()
- {
- return value;
- }
-
- @XmlValue
- @XmlAnyElement
- public void setValue(Object value)
- {
- this.value = value;
- }
}
Modified: jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Property.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Property.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/main/java/org/jboss/javabean/plugins/jaxb/Property.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -32,7 +32,7 @@
* @version $Revision: 1.1 $
*/
@XmlType(name="propertyType")
-public class Property extends Parameter
+public class Property extends AbstractParameter
{
private String name;
@@ -41,7 +41,7 @@
return name;
}
- @XmlAttribute
+ @XmlAttribute(name="name")
public void setName(String name)
{
this.name = name;
Modified: jbossxb/trunk/src/main/resources/schema/javabean_2_0.xsd
===================================================================
--- jbossxb/trunk/src/main/resources/schema/javabean_2_0.xsd 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/main/resources/schema/javabean_2_0.xsd 2008-03-03 17:34:22 UTC (rev 2717)
@@ -77,9 +77,10 @@
]]>
</xsd:documentation>
</xsd:annotation>
- <xsd:sequence>
- <xsd:element name="property" type="propertyType" minOccurs="1" maxOccurs="unbounded"/>
- </xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="property" type="propertyType"/>
+ <xsd:element name="parameter" type="propertyType"/>
+ </xsd:choice>
<xsd:attribute name="factoryClass" type="classNameType" use="optional"/>
<xsd:attribute name="factoryMethod" type="xsd:token" use="optional"/>
</xsd:complexType>
@@ -104,8 +105,35 @@
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="valueType"/>
+ <xsd:attribute name="name" type="xsd:token"/>
</xsd:complexContent>
</xsd:complexType>
+
+ <xsd:complexType name="parameterType" mixed="true">
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+ A parameter defines values passed to the constructor or factory method.
+
+ e.g. Using the type from the setter argument
+ <javabean ...>
+ <constructor>
+ <parameter>Some value</property>
+ </constructor>
+ </javabean>
+
+ e.g. Overridding the injected type and setting the parameter type for constructor/method resolution
+ <javabean ...>
+ <parameter class="java.lang.String" paramClass="java.lang.Object">Some value</property>
+ </javabean>
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexContent>
+ <xsd:extension base="valueType"/>
+ <xsd:attribute name="paramClass" type="classNameType"/>
+ </xsd:complexContent>
+ </xsd:complexType>
<xsd:simpleType name="classNameType">
<xsd:annotation>
Modified: jbossxb/trunk/src/test/java/org/jboss/test/javabean/support/AmbiguityBean.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/javabean/support/AmbiguityBean.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/test/java/org/jboss/test/javabean/support/AmbiguityBean.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -31,6 +31,20 @@
private Integer someint;
private String somestring;
+ public AmbiguityBean()
+ {
+ }
+
+ public AmbiguityBean(String someString)
+ {
+ this.somestring = someString;
+ }
+
+ public AmbiguityBean(int someint)
+ {
+ this.someint = someint;
+ }
+
public void setSomething(Integer integer)
{
someint = integer;
Modified: jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/AmbiguityTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/AmbiguityTestCase.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/AmbiguityTestCase.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -66,4 +66,18 @@
assertEquals(something.getClass(), String.class);
}
+ public void testConstructorInt() throws Exception
+ {
+ AmbiguityBean ab = unmarshal("TestConstructorAmbiguityInt.xml", AmbiguityBean.class);
+ Object something = ab.something();
+ assertEquals(something.getClass(), Integer.class);
+ }
+
+ public void testConstrutorString() throws Exception
+ {
+ AmbiguityBean ab = unmarshal("TestConstructorAmbiguityString.xml", AmbiguityBean.class);
+ Object something = ab.something();
+ assertEquals(something.getClass(), String.class);
+ }
+
}
Modified: jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/PropertyTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/PropertyTestCase.java 2008-03-03 17:13:08 UTC (rev 2716)
+++ jbossxb/trunk/src/test/java/org/jboss/test/javabean/test/PropertyTestCase.java 2008-03-03 17:34:22 UTC (rev 2717)
@@ -103,6 +103,27 @@
validateFields("(<all-fields>)", "SimpleBeanFactory.newInstance(<all-fields>)", bean);
}
+ public void testConstructor() throws Exception
+ {
+ // check bean
+ SimpleBean bean = unmarshal("TestConstructor.xml", SimpleBean.class);
+ validateFields("(<all-fields>)", null, bean);
+ }
+
+ public void testConstructorFactory() throws Exception
+ {
+ // check bean
+ SimpleBean bean = unmarshal("TestConstructorFactory.xml", SimpleBean.class);
+ validateFields("(<all-fields>)", "getInstance(<all-fields>)", bean);
+ }
+
+ public void testConstructorExplicitFactoryClassAndParams() throws Exception
+ {
+ // check bean
+ SimpleBean bean = unmarshal("TestConstructorExplicitFactoryClassAndParams.xml", SimpleBean.class);
+ validateFields("(<all-fields>)", "SimpleBeanFactory.newInstance(<all-fields>)", bean);
+ }
+
/**
* Validate the JavaBean property name introspection
* @throws Exception
Added: jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructor.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructor.xml (rev 0)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructor.xml 2008-03-03 17:34:22 UTC (rev 2717)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<javabean xmlns="urn:jboss:javabean:2.0"
+ class="org.jboss.test.javabean.support.SimpleBean">
+ <!--
+ public SimpleBean(Object anObject, String string, Byte byte1,
+ Boolean boolean1, Character character, Short short1,
+ Integer anInt, Long long1, Float float1, Double double1,
+ Date date, BigDecimal bigDecimal, BigInteger bigInteger,
+ byte abyte, boolean aboolean, char achar, short ashort,
+ int anint2, long along, float afloat, double adouble,
+ Number number, String overloadedProperty, String xyz, String abc)
+ -->
+ <constructor>
+ <parameter name="anObject">anObjectValue</parameter>
+ <parameter>StringValue</parameter>
+ <parameter>12</parameter>
+ <parameter>true</parameter>
+ <parameter>x</parameter>
+ <parameter>123</parameter>
+ <parameter>1234</parameter>
+ <parameter>12345</parameter>
+ <parameter>3.14</parameter>
+ <parameter>3.14e12</parameter>
+ <parameter>Jan 01 00:00:00 CET 2001</parameter>
+ <parameter>12e4</parameter>
+ <parameter>123456</parameter>
+ <parameter>12</parameter>
+ <parameter>true</parameter>
+ <parameter>y</parameter>
+ <parameter>123</parameter>
+ <parameter>1234</parameter>
+ <parameter>12345</parameter>
+ <parameter>3.14</parameter>
+ <parameter>3.14e12</parameter>
+ <parameter class="java.lang.Long">12345</parameter>
+ <parameter>StringValue</parameter>
+ <parameter>XYZ</parameter>
+ <parameter>abc</parameter>
+ </constructor>
+</javabean>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityInt.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityInt.xml (rev 0)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityInt.xml 2008-03-03 17:34:22 UTC (rev 2717)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<javabean xmlns="urn:jboss:javabean:2.0" class="org.jboss.test.javabean.support.AmbiguityBean">
+ <constructor>
+ <parameter class="java.lang.Integer" paramClass="int">123</parameter>
+ </constructor>
+</javabean>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityString.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityString.xml (rev 0)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorAmbiguityString.xml 2008-03-03 17:34:22 UTC (rev 2717)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<javabean xmlns="urn:jboss:javabean:2.0" class="org.jboss.test.javabean.support.AmbiguityBean">
+ <constructor>
+ <parameter paramClass="java.lang.String">SomeString</parameter>
+ </constructor>
+</javabean>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorExplicitFactoryClassAndParams.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorExplicitFactoryClassAndParams.xml (rev 0)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorExplicitFactoryClassAndParams.xml 2008-03-03 17:34:22 UTC (rev 2717)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<javabean xmlns="urn:jboss:javabean:2.0"
+ class="org.jboss.test.javabean.support.SimpleBean">
+ <!--
+ public SimpleBean(Object anObject, String string, Byte byte1,
+ Boolean boolean1, Character character, Short short1,
+ Integer anInt, Long long1, Float float1, Double double1,
+ Date date, BigDecimal bigDecimal, BigInteger bigInteger,
+ byte abyte, boolean aboolean, char achar, short ashort,
+ int anint2, long along, float afloat, double adouble,
+ Number number, String overloadedProperty, String xyz, String abc)
+ -->
+ <constructor factoryClass="org.jboss.test.javabean.support.SimpleBeanFactory"
+ factoryMethod="newInstance">
+ <parameter class="java.lang.Object">anObjectValue</parameter>
+ <parameter>StringValue</parameter>
+ <parameter>12</parameter>
+ <parameter>true</parameter>
+ <parameter>x</parameter>
+ <parameter>123</parameter>
+ <parameter>1234</parameter>
+ <parameter>12345</parameter>
+ <parameter>3.14</parameter>
+ <parameter>3.14e12</parameter>
+ <parameter>Jan 01 00:00:00 CET 2001</parameter>
+ <parameter>12e4</parameter>
+ <parameter>123456</parameter>
+ <parameter>12</parameter>
+ <parameter>true</parameter>
+ <parameter>y</parameter>
+ <parameter>123</parameter>
+ <parameter>1234</parameter>
+ <parameter>12345</parameter>
+ <parameter>3.14</parameter>
+ <parameter>3.14e12</parameter>
+ <parameter class="java.lang.Long">12345</parameter>
+ <parameter>StringValue</parameter>
+ <parameter>XYZ</parameter>
+ <parameter>abc</parameter>
+ </constructor>
+</javabean>
Added: jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorFactory.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorFactory.xml (rev 0)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/javabean/test/TestConstructorFactory.xml 2008-03-03 17:34:22 UTC (rev 2717)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<javabean xmlns="urn:jboss:javabean:2.0"
+ class="org.jboss.test.javabean.support.SimpleBean">
+ <!--
+ public SimpleBean(Object anObject, String string, Byte byte1,
+ Boolean boolean1, Character character, Short short1,
+ Integer anInt, Long long1, Float float1, Double double1,
+ Date date, BigDecimal bigDecimal, BigInteger bigInteger,
+ byte abyte, boolean aboolean, char achar, short ashort,
+ int anint2, long along, float afloat, double adouble,
+ Number number, String overloadedProperty, String xyz, String abc)
+ -->
+ <constructor factoryMethod="getInstance">
+ <parameter class="java.lang.Object">anObjectValue</parameter>
+ <parameter>StringValue</parameter>
+ <parameter>12</parameter>
+ <parameter>true</parameter>
+ <parameter>x</parameter>
+ <parameter>123</parameter>
+ <parameter>1234</parameter>
+ <parameter>12345</parameter>
+ <parameter>3.14</parameter>
+ <parameter>3.14e12</parameter>
+ <parameter>Jan 01 00:00:00 CET 2001</parameter>
+ <parameter>12e4</parameter>
+ <parameter>123456</parameter>
+ <parameter>12</parameter>
+ <parameter>true</parameter>
+ <parameter>y</parameter>
+ <parameter>123</parameter>
+ <parameter>1234</parameter>
+ <parameter>12345</parameter>
+ <parameter>3.14</parameter>
+ <parameter>3.14e12</parameter>
+ <parameter class="java.lang.Long">12345</parameter>
+ <parameter>StringValue</parameter>
+ <parameter>XYZ</parameter>
+ <parameter>abc</parameter>
+ </constructor>
+</javabean>
More information about the jboss-svn-commits
mailing list