Author: frankb
Date: Wed Mar 29 14:09:06 2006
New Revision: 389902
URL: http://svn.apache.org/viewcvs?rev=389902&view=rev
Log:
Fix for TUSCANY-130
Added:
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTest.java
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java?rev=389902&r1=389901&r2=389902&view=diff
==============================================================================
---
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
(original)
+++
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
Wed Mar 29 14:09:06 2006
@@ -22,6 +22,8 @@
import org.eclipse.emf.ecore.impl.EFactoryImpl;
import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
/**
* <!-- begin-user-doc -->
@@ -346,27 +348,27 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Boolean createBooleanFromString(EDataType eDataType, String
initialValue)
{
- return (Boolean)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createBooleanObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertBooleanToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return
XMLTypeFactory.eINSTANCE.convertBooleanObject((Boolean)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Boolean createBooleanObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -376,7 +378,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertBooleanObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -386,27 +388,27 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Byte createByteFromString(EDataType eDataType, String initialValue)
{
- return (Byte)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createByteObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertByteToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertByteObject((Byte)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Byte createByteObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -416,7 +418,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertByteObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -426,51 +428,52 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public byte[] createBytesFromString(EDataType eDataType, String initialValue)
{
- // TODO: implement this method
- // Ensure that you remove @generated or mark it @generated NOT
- throw new UnsupportedOperationException();
+ return XMLTypeFactory.eINSTANCE.createBase64Binary(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertBytesToString(EDataType eDataType, Object instanceValue)
{
- // TODO: implement this method
- // Ensure that you remove @generated or mark it @generated NOT
- throw new UnsupportedOperationException();
+ if (instanceValue instanceof byte[]) {
+ return
XMLTypeFactory.eINSTANCE.convertBase64Binary((byte[])instanceValue);
+ } else {
+ return
XMLTypeFactory.eINSTANCE.convertBase64Binary(instanceValue.toString().getBytes());
+ }
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Character createCharacterFromString(EDataType eDataType, String
initialValue)
{
- return (Character)super.createFromString(eDataType, initialValue);
+ return (initialValue != null && initialValue.length() > 0) ?
+ new Character(initialValue.charAt(0)) : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertCharacterToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return String.valueOf(((Character)instanceValue).charValue());
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Character createCharacterObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -480,7 +483,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertCharacterObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -490,107 +493,110 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Date createDateFromString(EDataType eDataType, String initialValue)
{
- return (Date)super.createFromString(eDataType, initialValue);
+ XMLCalendar cal = (XMLCalendar)
XMLTypeFactory.eINSTANCE.createDate(initialValue);
+ return (cal != null) ? cal.getDate() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDateToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertDate(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createDateTimeFromString(EDataType eDataType, String
initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createDateTime(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDateTimeToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertDateTime(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createDayFromString(EDataType eDataType, String initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createGDay(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDayToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertGDay(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public BigDecimal createDecimalFromString(EDataType eDataType, String
initialValue)
{
- return (BigDecimal)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createDecimal(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDecimalToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertDecimal((BigDecimal)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Double createDoubleFromString(EDataType eDataType, String
initialValue)
{
- return (Double)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createDoubleObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDoubleToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertDouble((Double)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Double createDoubleObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -600,7 +606,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDoubleObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -610,47 +616,48 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createDurationFromString(EDataType eDataType, String
initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createDuration(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertDurationToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertDuration(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Float createFloatFromString(EDataType eDataType, String initialValue)
{
- return (Float)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createFloatObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertFloatToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertFloat((Float)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Float createFloatObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -660,7 +667,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertFloatObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -670,47 +677,47 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Integer createIntFromString(EDataType eDataType, String initialValue)
{
- return (Integer)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createIntObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertIntToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertInt((Integer)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public BigInteger createIntegerFromString(EDataType eDataType, String
initialValue)
{
- return (BigInteger)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createInteger(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertIntegerToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertInteger((BigInteger)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Integer createIntObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -720,7 +727,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertIntObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -730,27 +737,27 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Long createLongFromString(EDataType eDataType, String initialValue)
{
- return (Long)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createLongObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertLongToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertLong((Long)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Long createLongObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -760,7 +767,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertLongObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -770,87 +777,89 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createMonthFromString(EDataType eDataType, String initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createGMonth(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertMonthToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertGMonth(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createMonthDayFromString(EDataType eDataType, String
initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createGMonthDay(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertMonthDayToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertGMonthDay(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Object createObjectFromString(EDataType eDataType, String
initialValue)
{
- return (Object)super.createFromString(eDataType, initialValue);
+ return initialValue;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertObjectToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return (instanceValue != null) ? instanceValue.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Short createShortFromString(EDataType eDataType, String initialValue)
{
- return (Short)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createShortObject(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertShortToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertShort((Short)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public Short createShortObjectFromString(EDataType eDataType, String
initialValue)
{
@@ -860,7 +869,7 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertShortObjectToString(EDataType eDataType, Object
instanceValue)
{
@@ -870,141 +879,145 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createStringFromString(EDataType eDataType, String
initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ return initialValue;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertStringToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return (instanceValue != null) ? instanceValue.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public List createStringsFromString(EDataType eDataType, String initialValue)
{
- return (List)super.createFromString(eDataType, initialValue);
+ return XMLTypeFactory.eINSTANCE.createENTITIES(initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertStringsToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertENTITIES((List)instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createTimeFromString(EDataType eDataType, String initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createTime(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertTimeToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertTime(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createURIFromString(EDataType eDataType, String initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ return initialValue;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertURIToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return (instanceValue != null) ? instanceValue.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createYearFromString(EDataType eDataType, String initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createGYear(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertYearToString(EDataType eDataType, Object instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertGYear(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createYearMonthFromString(EDataType eDataType, String
initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createGYearMonth(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertYearMonthToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertGYearMonth(instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String createYearMonthDayFromString(EDataType eDataType, String
initialValue)
{
- return (String)super.createFromString(eDataType, initialValue);
+ Object obj = XMLTypeFactory.eINSTANCE.createDate(initialValue);
+ return (obj != null) ? obj.toString() : null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
public String convertYearMonthDayToString(EDataType eDataType, Object
instanceValue)
{
- return super.convertToString(eDataType, instanceValue);
+ return XMLTypeFactory.eINSTANCE.convertDate(instanceValue);
}
/**
Added:
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTest.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTest.java?rev=389902&view=auto
==============================================================================
---
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTest.java
(added)
+++
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTest.java
Wed Mar 29 14:09:06 2006
@@ -0,0 +1,145 @@
+package org.apache.tuscany.sdo.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+
+public class TypeRoundTripTest extends TestCase {
+
+ private static class Test {
+ Type type;
+ String value;
+ Object obj;
+ Comparator comp;
+
+ Test(Type type, String value, Object obj) {
+ this.type = type;
+ this.value = value;
+ this.obj = obj;
+ }
+
+ Test(Type type, String value, Object obj, Comparator comp) {
+ this.type = type;
+ this.value = value;
+ this.obj = obj;
+ this.comp = comp;
+ }
+ }
+
+ private static class ListComparator implements Comparator {
+ public int compare(Object list1, Object list2) {
+ int answer = 1;
+ if (list1 instanceof List && list2 instanceof List) {
+ List l1 = (List) list1;
+ List l2 = (List) list2;
+ if (l1.size() == l2.size()) {
+ for (int n = 0; n < l1.size(); n++) {
+ if (!l1.get(n).equals(l2.get(n))) {
+ answer = 0;
+ break;
+ }
+ }
+ } else {
+ answer = 0;
+ }
+ } else {
+ answer = 0;
+ }
+ return answer;
+ }
+ }
+
+ private static class BytesComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ o2 = new String((byte[])o2);
+ if (o1.equals(o2)) return 1;
+ else return 0;
+ }
+ }
+
+ private static class DateComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ int answer = 1;
+ try {
+ if (o1 instanceof String && o2 instanceof Date) {
+ SimpleDateFormat sdf =
+ new SimpleDateFormat("yyyy-MM-dd'Z'");
+ o1 = sdf.parse((String)o1);
+ if (!o1.equals(o2)) answer = 0;
+ } else {
+ answer = 0;
+ }
+ } catch (Exception e) {}
+ return answer;
+ }
+ }
+
+ public void testTypeRoundTrips() throws Exception {
+ String URI = "commonj.sdo";
+ TypeHelper types = TypeHelper.INSTANCE;
+ List list = new ArrayList();
+ list.add("foo");
+ list.add("bar");
+ list.add("test");
+ Test[] tests = {
+ new Test(types.getType(URI, "Boolean"), "true", new Boolean(true)),
+ new Test(types.getType(URI, "Byte"), "49", new Byte((byte)49)),
+ new Test(types.getType(URI, "Bytes"), "Zm9v", "foo", new
BytesComparator()),
+ new Test(types.getType(URI, "Character"), "a", new Character('a')),
+ new Test(types.getType(URI, "Date"), "2005-12-12Z",
"2005-12-12Z", new DateComparator()),
+ new Test(types.getType(URI, "DateTime"), "2005-12-12T12:12:12Z",
"2005-12-12T12:12:12Z"),
+ new Test(types.getType(URI, "Day"), "---12", "---12"),
+ new Test(types.getType(URI, "Decimal"), "12.12", new
BigDecimal("12.12")),
+ new Test(types.getType(URI, "Double"), "12.12", new Double(12.12)),
+ new Test(types.getType(URI, "Duration"), "P5Y2M10D", "P5Y2M10D"),
+ new Test(types.getType(URI, "Float"), "12.12", new Float(12.12f)),
+ new Test(types.getType(URI, "Int"), "12", new Integer(12)),
+ new Test(types.getType(URI, "Integer"), "12", new BigInteger("12")),
+ new Test(types.getType(URI, "Long"), "12", new Long(12l)),
+ new Test(types.getType(URI, "Month"), "--12", "--12"),
+ new Test(types.getType(URI, "MonthDay"), "--12-12", "--12-12"),
+ new Test(types.getType(URI, "Object"), "test", "test"),
+ new Test(types.getType(URI, "Short"), "12", new Short((short)12)),
+ new Test(types.getType(URI, "String"), "test", "test"),
+ new Test(types.getType(URI, "Strings"), "foo bar test", list, new
ListComparator()),
+ new Test(types.getType(URI, "Time"), "12:12:12.12",
"12:12:12.12"),
+ new Test(types.getType(URI, "URI"), "http://example.org",
"http://example.org"),
+ new Test(types.getType(URI, "Year"), "2005", "2005"),
+ new Test(types.getType(URI, "YearMonth"), "2005-12", "2005-12"),
+ new Test(types.getType(URI, "YearMonthDay"), "2005-12-12", "2005-12-12")
+ };
+
+ for (int n = 0; n < tests.length; n++) {
+ assertEquals(
+ SDOUtil.convertToString(tests[n].type,
SDOUtil.createFromString(tests[n].type, tests[n].value)),
+ tests[n].value
+ );
+
+ System.out.print(".");
+
+ if (tests[n].comp == null) {
+ assertEquals(
+ SDOUtil.createFromString(tests[n].type,
SDOUtil.convertToString(tests[n].type, tests[n].obj)),
+ tests[n].obj
+ );
+ } else {
+ String o1 = SDOUtil.convertToString(tests[n].type, tests[n].obj);
+ Object o2 = SDOUtil.createFromString(tests[n].type, o1);
+ assertEquals(tests[n].comp.compare(tests[n].obj, o2), 1);
+ }
+ }
+
+ }
+
+}