axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Veithen <andreas.veit...@gmail.com>
Subject 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
Date Tue, 18 Oct 2011 20:48:20 GMT
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,  <sagara@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


Mime
View raw message