You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Andreas Veithen <an...@gmail.com> on 2011/10/18 22:48:20 UTC
Re: svn commit: r1177265 - in /axis/axis2/java/core/trunk/modules/kernel:
src/org/apache/axis2/description/java2wsdl/TypeTable.java test/org/apache/axis2/description/java2wsdl/TypeTableTest.java
The functionality of the isSuperClass method is actually already
provided by the JRE:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)
Andreas
On Thu, Sep 29, 2011 at 13:19, <sa...@apache.org> wrote:
> Author: sagara
> Date: Thu Sep 29 11:19:01 2011
> New Revision: 1177265
>
> URL: http://svn.apache.org/viewvc?rev=1177265&view=rev
> Log:
> Changed getSchemaTypeNameByClass(String name) method to use Class as the comparison basis instead of String comparison.
>
> Modified:
> axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java
> axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java
>
> Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java
> URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java?rev=1177265&r1=1177264&r2=1177265&view=diff
> ==============================================================================
> --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java (original)
> +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java Thu Sep 29 11:19:01 2011
> @@ -28,6 +28,7 @@ import javax.xml.datatype.Duration;
> import javax.xml.datatype.XMLGregorianCalendar;
> import javax.xml.namespace.QName;
> import java.util.ArrayList;
> +import java.util.Calendar;
> import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
> @@ -114,9 +115,7 @@ public class TypeTable {
> simpleTypetoxsd.put("java.util.Date",
> new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "date", "xs"));
> simpleTypetoxsd.put("java.util.Calendar",
> - new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));
> - simpleTypetoxsd.put("java.util.GregorianCalendar",
> - new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));
> + new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));
>
> // SQL date time
> simpleTypetoxsd.put("java.sql.Date",
> @@ -334,19 +333,52 @@ public class TypeTable {
> */
> private QName getSchemaTypeNameByClass(String name) {
> /*
> + * e.g
> * XMLGregorianCalendar can be found as following classes.
> * 1.)com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl
> * 2.)org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl
> */
> - if ("com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl"
> - .equals(name)
> - || "org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl"
> - .equals(name)) {
> - return (QName) simpleTypetoxsd.get(XMLGregorianCalendar.class
> - .getName());
> + try {
> + Class thisClass = Class.forName(name);
> + if(isSuperClass(thisClass, XMLGregorianCalendar.class)) {
> + return (QName) simpleTypetoxsd.get(XMLGregorianCalendar.class
> + .getName());
> +
> + } else if(isSuperClass(thisClass, Calendar.class)) {
> + return (QName) simpleTypetoxsd.get(Calendar.class
> + .getName());
> + }
> + } catch (ClassNotFoundException e) {
> + e.printStackTrace();
> }
> +
> return null;
> }
> +
> + /**
> + * This method check whether given child class in a extended class of given
> + * parent class.
> + * TODO - may be need to come up with a better name for this method .
> + *
> + * @param child
> + * the child
> + * @param parent
> + * the parent
> + * @return true, if is super class
> + */
> + public static boolean isSuperClass(Class child, Class parent) {
> + if (child == null || parent == null) {
> + return false;
> + }
> + Class superclass = child.getSuperclass();
> + while (superclass != null) {
> + if (superclass.getName().equals(parent.getName())) {
> + return true;
> + }
> + superclass = superclass.getSuperclass();
> + }
> + return false;
> + }
> }
>
>
>
> Modified: axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java
> URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java?rev=1177265&r1=1177264&r2=1177265&view=diff
> ==============================================================================
> --- axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java (original)
> +++ axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java Thu Sep 29 11:19:01 2011
> @@ -19,15 +19,23 @@
>
> package org.apache.axis2.description.java2wsdl;
>
> +import java.math.BigDecimal;
> import java.math.BigInteger;
> +import java.util.GregorianCalendar;
> +import java.util.Locale;
> +import java.util.TimeZone;
>
> import javax.activation.DataHandler;
> +import javax.xml.datatype.Duration;
> +import javax.xml.datatype.XMLGregorianCalendar;
> import javax.xml.namespace.QName;
>
> import junit.framework.TestCase;
>
> import org.apache.ws.commons.schema.constants.Constants;
>
> +
> +
> /**
> * The Class TypeTableTest is used to test
> * {@link org.apache.axis2.description.java2wsdl.TypeTable TypeTable} class.
> @@ -80,5 +88,217 @@ public class TypeTableTest extends TestC
> assertNull("NULl value expected",
> typeTable.getClassNameForQName(Constants.XSD_LANGUAGE));
> }
> +
> +
> + public void testGetSchemaTypeName() {
> + String className = null;
> + QName dateType = new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD,
> + "date", "xs");
> + TypeTable typeTable = new TypeTable();
> +
> + className = "com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl";
> + assertEquals("Not the expected value", dateType,
> + typeTable.getSchemaTypeName(className));
> +
> + className = TestXMLGregorianCalendarImpl.class.getName();
> + assertEquals("Not the expected value", dateType,
> + typeTable.getSchemaTypeName(className));
> +
> + className = GregorianCalendar.class.getName();
> + dateType = new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD,
> + "dateTime", "xs");
> + System.out.println( typeTable.getSchemaTypeName(className));
> + assertEquals("Not the expected value", dateType,
> + typeTable.getSchemaTypeName(className));
> +
> + className = TestCalendarImpl.class.getName();
> + assertNull("Not the expected value",
> + typeTable.getSchemaTypeName(className));
> + }
> +
> + class TestXMLGregorianCalendarImpl extends XMLGregorianCalendar {
> + @Override
> + public void clear() {
> + }
> +
> + @Override
> + public void reset() {
> +
> + }
> +
> + @Override
> + public void setYear(BigInteger year) {
> +
> + }
> +
> + @Override
> + public void setYear(int year) {
> +
> + }
> +
> + @Override
> + public void setMonth(int month) {
> +
> + }
> +
> + @Override
> + public void setDay(int day) {
> +
> + }
> +
> + @Override
> + public void setTimezone(int offset) {
> +
> + }
> +
> + @Override
> + public void setHour(int hour) {
> +
> + }
> +
> + @Override
> + public void setMinute(int minute) {
> +
> + }
> +
> + @Override
> + public void setSecond(int second) {
> +
> + }
> +
> + @Override
> + public void setMillisecond(int millisecond) {
> +
> + }
> +
> + @Override
> + public void setFractionalSecond(BigDecimal fractional) {
> +
> + }
> +
> + @Override
> + public BigInteger getEon() {
> +
> + return null;
> + }
> +
> + @Override
> + public int getYear() {
> +
> + return 0;
> + }
> +
> + @Override
> + public BigInteger getEonAndYear() {
> +
> + return null;
> + }
> +
> + @Override
> + public int getMonth() {
> +
> + return 0;
> + }
> +
> + @Override
> + public int getDay() {
> +
> + return 0;
> + }
> +
> + @Override
> + public int getTimezone() {
> +
> + return 0;
> + }
> +
> + @Override
> + public int getHour() {
> +
> + return 0;
> + }
> +
> + @Override
> + public int getMinute() {
> +
> + return 0;
> + }
> +
> + @Override
> + public int getSecond() {
> +
> + return 0;
> + }
> +
> + @Override
> + public BigDecimal getFractionalSecond() {
> +
> + return null;
> + }
> +
> + @Override
> + public int compare(XMLGregorianCalendar xmlGregorianCalendar) {
> +
> + return 0;
> + }
> +
> + @Override
> + public XMLGregorianCalendar normalize() {
> +
> + return null;
> + }
> +
> + @Override
> + public String toXMLFormat() {
> +
> + return null;
> + }
> +
> + @Override
> + public QName getXMLSchemaType() {
> +
> + return null;
> + }
> +
> + @Override
> + public boolean isValid() {
> + return false;
> + }
> +
> + @Override
> + public void add(Duration duration) {
> +
> + }
> +
> + @Override
> + public GregorianCalendar toGregorianCalendar() {
> +
> + return null;
> + }
> +
> + @Override
> + public GregorianCalendar toGregorianCalendar(TimeZone timezone,
> + Locale aLocale, XMLGregorianCalendar defaults) {
> +
> + return null;
> + }
> +
> + @Override
> + public TimeZone getTimeZone(int defaultZoneoffset) {
> +
> + return null;
> + }
> +
> + @Override
> + public Object clone() {
> +
> + return null;
> + }
> +
> + }
> +
> + class TestCalendarImpl {
> +
> + }
>
> }
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org
Re: svn commit: r1177265 - in /axis/axis2/java/core/trunk/modules/kernel:
src/org/apache/axis2/description/java2wsdl/TypeTable.java test/org/apache/axis2/description/java2wsdl/TypeTableTest.java
Posted by Sagara Gunathunga <sa...@gmail.com>.
On Wed, Oct 19, 2011 at 2:18 AM, Andreas Veithen
<an...@gmail.com> wrote:
> The functionality of the isSuperClass method is actually already
> provided by the JRE:
>
> http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)
I also used above method several places in adb module, I can't recall
exactly how I get this idea to implement isSuperClass method :)
It seems isAssignableFrom method smart enough for TypeTable's
requirement too will change this.
Thanks !
>
> Andreas
>
> On Thu, Sep 29, 2011 at 13:19, <sa...@apache.org> wrote:
>> Author: sagara
>> Date: Thu Sep 29 11:19:01 2011
>> New Revision: 1177265
>>
>> URL: http://svn.apache.org/viewvc?rev=1177265&view=rev
>> Log:
>> Changed getSchemaTypeNameByClass(String name) method to use Class as the comparison basis instead of String comparison.
>>
>> Modified:
>> axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java
>> axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java
>>
>> Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java
>> URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java?rev=1177265&r1=1177264&r2=1177265&view=diff
>> ==============================================================================
>> --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java (original)
>> +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/TypeTable.java Thu Sep 29 11:19:01 2011
>> @@ -28,6 +28,7 @@ import javax.xml.datatype.Duration;
>> import javax.xml.datatype.XMLGregorianCalendar;
>> import javax.xml.namespace.QName;
>> import java.util.ArrayList;
>> +import java.util.Calendar;
>> import java.util.HashMap;
>> import java.util.List;
>> import java.util.Map;
>> @@ -114,9 +115,7 @@ public class TypeTable {
>> simpleTypetoxsd.put("java.util.Date",
>> new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "date", "xs"));
>> simpleTypetoxsd.put("java.util.Calendar",
>> - new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));
>> - simpleTypetoxsd.put("java.util.GregorianCalendar",
>> - new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));
>> + new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));
>>
>> // SQL date time
>> simpleTypetoxsd.put("java.sql.Date",
>> @@ -334,19 +333,52 @@ public class TypeTable {
>> */
>> private QName getSchemaTypeNameByClass(String name) {
>> /*
>> + * e.g
>> * XMLGregorianCalendar can be found as following classes.
>> * 1.)com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl
>> * 2.)org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl
>> */
>> - if ("com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl"
>> - .equals(name)
>> - || "org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl"
>> - .equals(name)) {
>> - return (QName) simpleTypetoxsd.get(XMLGregorianCalendar.class
>> - .getName());
>> + try {
>> + Class thisClass = Class.forName(name);
>> + if(isSuperClass(thisClass, XMLGregorianCalendar.class)) {
>> + return (QName) simpleTypetoxsd.get(XMLGregorianCalendar.class
>> + .getName());
>> +
>> + } else if(isSuperClass(thisClass, Calendar.class)) {
>> + return (QName) simpleTypetoxsd.get(Calendar.class
>> + .getName());
>> + }
>> + } catch (ClassNotFoundException e) {
>> + e.printStackTrace();
>> }
>> +
>> return null;
>> }
>> +
>> + /**
>> + * This method check whether given child class in a extended class of given
>> + * parent class.
>> + * TODO - may be need to come up with a better name for this method .
>> + *
>> + * @param child
>> + * the child
>> + * @param parent
>> + * the parent
>> + * @return true, if is super class
>> + */
>> + public static boolean isSuperClass(Class child, Class parent) {
>> + if (child == null || parent == null) {
>> + return false;
>> + }
>> + Class superclass = child.getSuperclass();
>> + while (superclass != null) {
>> + if (superclass.getName().equals(parent.getName())) {
>> + return true;
>> + }
>> + superclass = superclass.getSuperclass();
>> + }
>> + return false;
>> + }
>> }
>>
>>
>>
>> Modified: axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java
>> URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java?rev=1177265&r1=1177264&r2=1177265&view=diff
>> ==============================================================================
>> --- axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java (original)
>> +++ axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/description/java2wsdl/TypeTableTest.java Thu Sep 29 11:19:01 2011
>> @@ -19,15 +19,23 @@
>>
>> package org.apache.axis2.description.java2wsdl;
>>
>> +import java.math.BigDecimal;
>> import java.math.BigInteger;
>> +import java.util.GregorianCalendar;
>> +import java.util.Locale;
>> +import java.util.TimeZone;
>>
>> import javax.activation.DataHandler;
>> +import javax.xml.datatype.Duration;
>> +import javax.xml.datatype.XMLGregorianCalendar;
>> import javax.xml.namespace.QName;
>>
>> import junit.framework.TestCase;
>>
>> import org.apache.ws.commons.schema.constants.Constants;
>>
>> +
>> +
>> /**
>> * The Class TypeTableTest is used to test
>> * {@link org.apache.axis2.description.java2wsdl.TypeTable TypeTable} class.
>> @@ -80,5 +88,217 @@ public class TypeTableTest extends TestC
>> assertNull("NULl value expected",
>> typeTable.getClassNameForQName(Constants.XSD_LANGUAGE));
>> }
>> +
>> +
>> + public void testGetSchemaTypeName() {
>> + String className = null;
>> + QName dateType = new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD,
>> + "date", "xs");
>> + TypeTable typeTable = new TypeTable();
>> +
>> + className = "com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl";
>> + assertEquals("Not the expected value", dateType,
>> + typeTable.getSchemaTypeName(className));
>> +
>> + className = TestXMLGregorianCalendarImpl.class.getName();
>> + assertEquals("Not the expected value", dateType,
>> + typeTable.getSchemaTypeName(className));
>> +
>> + className = GregorianCalendar.class.getName();
>> + dateType = new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD,
>> + "dateTime", "xs");
>> + System.out.println( typeTable.getSchemaTypeName(className));
>> + assertEquals("Not the expected value", dateType,
>> + typeTable.getSchemaTypeName(className));
>> +
>> + className = TestCalendarImpl.class.getName();
>> + assertNull("Not the expected value",
>> + typeTable.getSchemaTypeName(className));
>> + }
>> +
>> + class TestXMLGregorianCalendarImpl extends XMLGregorianCalendar {
>> + @Override
>> + public void clear() {
>> + }
>> +
>> + @Override
>> + public void reset() {
>> +
>> + }
>> +
>> + @Override
>> + public void setYear(BigInteger year) {
>> +
>> + }
>> +
>> + @Override
>> + public void setYear(int year) {
>> +
>> + }
>> +
>> + @Override
>> + public void setMonth(int month) {
>> +
>> + }
>> +
>> + @Override
>> + public void setDay(int day) {
>> +
>> + }
>> +
>> + @Override
>> + public void setTimezone(int offset) {
>> +
>> + }
>> +
>> + @Override
>> + public void setHour(int hour) {
>> +
>> + }
>> +
>> + @Override
>> + public void setMinute(int minute) {
>> +
>> + }
>> +
>> + @Override
>> + public void setSecond(int second) {
>> +
>> + }
>> +
>> + @Override
>> + public void setMillisecond(int millisecond) {
>> +
>> + }
>> +
>> + @Override
>> + public void setFractionalSecond(BigDecimal fractional) {
>> +
>> + }
>> +
>> + @Override
>> + public BigInteger getEon() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public int getYear() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public BigInteger getEonAndYear() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public int getMonth() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public int getDay() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public int getTimezone() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public int getHour() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public int getMinute() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public int getSecond() {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public BigDecimal getFractionalSecond() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public int compare(XMLGregorianCalendar xmlGregorianCalendar) {
>> +
>> + return 0;
>> + }
>> +
>> + @Override
>> + public XMLGregorianCalendar normalize() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public String toXMLFormat() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public QName getXMLSchemaType() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public boolean isValid() {
>> + return false;
>> + }
>> +
>> + @Override
>> + public void add(Duration duration) {
>> +
>> + }
>> +
>> + @Override
>> + public GregorianCalendar toGregorianCalendar() {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public GregorianCalendar toGregorianCalendar(TimeZone timezone,
>> + Locale aLocale, XMLGregorianCalendar defaults) {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public TimeZone getTimeZone(int defaultZoneoffset) {
>> +
>> + return null;
>> + }
>> +
>> + @Override
>> + public Object clone() {
>> +
>> + return null;
>> + }
>> +
>> + }
>> +
>> + class TestCalendarImpl {
>> +
>> + }
>>
>> }
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
> For additional commands, e-mail: java-dev-help@axis.apache.org
>
>
--
Sagara Gunathunga
Blog - http://ssagara.blogspot.com
Web - http://people.apache.org/~sagara/
LinkedIn - http://www.linkedin.com/in/ssagara
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org