You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/05/02 20:15:46 UTC

svn commit: r534580 [2/3] - in /incubator/tuscany/java/sca/modules: core-databinding/src/main/java/org/apache/tuscany/core/databinding/module/ core-databinding/src/main/java/org/apache/tuscany/core/databinding/transformers/ databinding-axiom/src/main/j...

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/Java2SimpleTypeTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/Java2SimpleTypeTransformer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleType2JavaTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleType2JavaTransformer.java?view=auto&rev=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleType2JavaTransformer.java (added)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleType2JavaTransformer.java Wed May  2 11:15:41 2007
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.databinding.impl;
+
+import org.apache.tuscany.databinding.PullTransformer;
+import org.apache.tuscany.databinding.SimpleTypeMapper;
+import org.apache.tuscany.databinding.TransformationContext;
+import org.apache.tuscany.interfacedef.util.XMLType;
+
+/**
+ * Transformer to convert data from a databinding's representation of simple
+ * types to Java Objects
+ */
+public abstract class SimpleType2JavaTransformer<T> extends BaseTransformer<T, Object> implements
+    PullTransformer<T, Object> {
+
+    protected SimpleTypeMapper mapper;
+
+    public SimpleType2JavaTransformer() {
+        this.mapper = new SimpleTypeMapperImpl();
+    }
+
+    public SimpleType2JavaTransformer(SimpleTypeMapper mapper) {
+        this.mapper = (mapper != null) ? mapper : new SimpleTypeMapperImpl();
+    }
+
+    public Object transform(T source, TransformationContext context) {
+        XMLType xmlType = (XMLType) context.getSourceDataType().getLogical();
+        return mapper.toJavaObject(xmlType.getTypeName(), getText(source), context);
+    }
+
+    public Class getTargetType() {
+        return Object.class;
+    }
+
+    public int getWeight() {
+        // Cannot be used for imtermediate
+        return 10000;
+    }
+
+    /**
+     * Get the string value from the source
+     * @param source
+     * @return A string
+     */
+    protected abstract String getText(T source);
+}

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleType2JavaTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleType2JavaTransformer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleTypeMapperImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleTypeMapperImpl.java?view=auto&rev=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleTypeMapperImpl.java (added)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleTypeMapperImpl.java Wed May  2 11:15:41 2007
@@ -0,0 +1,392 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.databinding.impl;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.databinding.SimpleTypeMapper;
+import org.apache.tuscany.databinding.TransformationContext;
+import org.apache.tuscany.interfacedef.util.TypeInfo;
+
+public class SimpleTypeMapperImpl extends XSDDataTypeConverter implements SimpleTypeMapper {
+
+    public static final Map<Class, String> JAVA2XML = new HashMap<Class, String>();
+
+    public static final String URI_2001_SCHEMA_XSD = "http://www.w3.org/2001/XMLSchema";
+
+    public static final Map<String, Class> XML2JAVA = new HashMap<String, Class>();
+
+    public static final QName XSD_ANY = new QName(URI_2001_SCHEMA_XSD, "any");
+
+    public static final QName XSD_ANYSIMPLETYPE = new QName(URI_2001_SCHEMA_XSD, "anySimpleType");
+
+    public static final QName XSD_ANYTYPE = new QName(URI_2001_SCHEMA_XSD, "anyType");
+
+    public static final QName XSD_ANYURI = new QName(URI_2001_SCHEMA_XSD, "anyURI");
+
+    public static final QName XSD_BASE64 = new QName(URI_2001_SCHEMA_XSD, "base64Binary");
+
+    public static final QName XSD_BOOLEAN = new QName(URI_2001_SCHEMA_XSD, "boolean");
+
+    public static final QName XSD_BYTE = new QName(URI_2001_SCHEMA_XSD, "byte");
+
+    public static final QName XSD_DATE = new QName(URI_2001_SCHEMA_XSD, "date");
+
+    public static final QName XSD_DATETIME = new QName(URI_2001_SCHEMA_XSD, "dateTime");
+
+    public static final QName XSD_DAY = new QName(URI_2001_SCHEMA_XSD, "gDay");
+
+    public static final QName XSD_DECIMAL = new QName(URI_2001_SCHEMA_XSD, "decimal");
+
+    public static final QName XSD_DOUBLE = new QName(URI_2001_SCHEMA_XSD, "double");
+
+    public static final QName XSD_DURATION = new QName(URI_2001_SCHEMA_XSD, "duration");
+
+    public static final QName XSD_ENTITIES = new QName(URI_2001_SCHEMA_XSD, "ENTITIES");
+
+    public static final QName XSD_ENTITY = new QName(URI_2001_SCHEMA_XSD, "ENTITY");
+
+    public static final QName XSD_FLOAT = new QName(URI_2001_SCHEMA_XSD, "float");
+
+    public static final QName XSD_HEXBIN = new QName(URI_2001_SCHEMA_XSD, "hexBinary");
+
+    public static final QName XSD_IDREF = new QName(URI_2001_SCHEMA_XSD, "IDREF");
+
+    public static final QName XSD_IDREFS = new QName(URI_2001_SCHEMA_XSD, "IDREFS");
+
+    public static final QName XSD_INT = new QName(URI_2001_SCHEMA_XSD, "int");
+
+    public static final QName XSD_INTEGER = new QName(URI_2001_SCHEMA_XSD, "integer");
+
+    public static final QName XSD_LONG = new QName(URI_2001_SCHEMA_XSD, "long");
+
+    public static final QName XSD_MONTH = new QName(URI_2001_SCHEMA_XSD, "gMonth");
+
+    public static final QName XSD_MONTHDAY = new QName(URI_2001_SCHEMA_XSD, "gMonthDay");
+
+    public static final QName XSD_NAME = new QName(URI_2001_SCHEMA_XSD, "Name");
+
+    public static final QName XSD_NCNAME = new QName(URI_2001_SCHEMA_XSD, "NCName");
+
+    public static final QName XSD_NEGATIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "negativeInteger");
+
+    public static final QName XSD_NMTOKEN = new QName(URI_2001_SCHEMA_XSD, "NMTOKEN");
+
+    public static final QName XSD_NMTOKENS = new QName(URI_2001_SCHEMA_XSD, "NMTOKENS");
+
+    public static final QName XSD_NONNEGATIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "nonNegativeInteger");
+
+    public static final QName XSD_NONPOSITIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "nonPositiveInteger");
+
+    public static final QName XSD_NORMALIZEDSTRING = new QName(URI_2001_SCHEMA_XSD, "normalizedString");
+
+    public static final QName XSD_NOTATION = new QName(URI_2001_SCHEMA_XSD, "NOTATION");
+
+    public static final QName XSD_POSITIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "positiveInteger");
+
+    public static final QName XSD_QNAME = new QName(URI_2001_SCHEMA_XSD, "QName");
+
+    public static final QName XSD_SHORT = new QName(URI_2001_SCHEMA_XSD, "short");
+
+    public static final Map<String, TypeInfo> XSD_SIMPLE_TYPES = new HashMap<String, TypeInfo>();
+
+    public static final QName XSD_STRING = new QName(URI_2001_SCHEMA_XSD, "string");
+
+    public static final QName XSD_TIME = new QName(URI_2001_SCHEMA_XSD, "time");
+
+    public static final QName XSD_TOKEN = new QName(URI_2001_SCHEMA_XSD, "token");
+
+    public static final QName XSD_UNSIGNEDBYTE = new QName(URI_2001_SCHEMA_XSD, "unsignedByte");
+
+    public static final QName XSD_UNSIGNEDINT = new QName(URI_2001_SCHEMA_XSD, "unsignedInt");
+
+    public static final QName XSD_UNSIGNEDLONG = new QName(URI_2001_SCHEMA_XSD, "unsignedLong");
+
+    public static final QName XSD_UNSIGNEDSHORT = new QName(URI_2001_SCHEMA_XSD, "unsignedShort");
+
+    public static final QName XSD_YEAR = new QName(URI_2001_SCHEMA_XSD, "gYear");
+
+    public static final QName XSD_YEARMONTH = new QName(URI_2001_SCHEMA_XSD, "gYearMonth");
+
+    private static final String[] XSD_TYPE_NAMES =
+    {"string", "boolean", "double", "float", "int", "integer", "long", "short", "byte", "decimal", "base64Binary",
+     "hexBinary", "anySimpleType", "anyType", "any", "QName", "dateTime", "date", "time", "normalizedString",
+     "token", "unsignedLong", "unsignedInt", "unsignedShort", "unsignedByte", "positiveInteger", "negativeInteger",
+     "nonNegativeInteger", "nonPositiveInteger", "gYearMonth", "gMonthDay", "gYear", "gMonth", "gDay", "duration",
+     "Name", "NCName", "NMTOKEN", "NMTOKENS", "NOTATION", "ENTITY", "ENTITIES", "IDREF", "IDREFS", "anyURI",
+     "language", "ID"};
+
+    static {
+        for (String type : XSD_TYPE_NAMES) {
+            TypeInfo simpleType = new TypeInfo(new QName(URI_2001_SCHEMA_XSD, type), true, null);
+            XSD_SIMPLE_TYPES.put(type, simpleType);
+        }
+    }
+
+    static {
+        JAVA2XML.put(boolean.class, "boolean");
+        JAVA2XML.put(byte.class, "byte");
+        JAVA2XML.put(short.class, "short");
+        JAVA2XML.put(int.class, "int");
+        JAVA2XML.put(long.class, "long");
+        JAVA2XML.put(float.class, "float");
+        JAVA2XML.put(double.class, "double");
+        JAVA2XML.put(Boolean.class, "boolean");
+        JAVA2XML.put(Byte.class, "byte");
+        JAVA2XML.put(Short.class, "short");
+        JAVA2XML.put(Integer.class, "int");
+        JAVA2XML.put(Long.class, "long");
+        JAVA2XML.put(Float.class, "float");
+        JAVA2XML.put(Double.class, "double");
+        JAVA2XML.put(java.lang.String.class, "string");
+        JAVA2XML.put(java.math.BigInteger.class, "integer");
+        JAVA2XML.put(java.math.BigDecimal.class, "decimal");
+        JAVA2XML.put(java.util.Calendar.class, "dateTime");
+        JAVA2XML.put(java.util.Date.class, "dateTime");
+        JAVA2XML.put(javax.xml.namespace.QName.class, "QName");
+        JAVA2XML.put(java.net.URI.class, "string");
+        JAVA2XML.put(javax.xml.datatype.XMLGregorianCalendar.class, "anySimpleType");
+        JAVA2XML.put(javax.xml.datatype.Duration.class, "duration");
+        JAVA2XML.put(java.lang.Object.class, "anyType");
+        JAVA2XML.put(java.awt.Image.class, "base64Binary");
+        JAVA2XML.put(byte[].class, "base64Binary");
+        // java2XSD.put(javax.activation.DataHandler.class, "base64Binary");
+        JAVA2XML.put(javax.xml.transform.Source.class, "base64Binary");
+        JAVA2XML.put(java.util.UUID.class, "string");
+    }
+
+    static {
+        XML2JAVA.put("string", java.lang.String.class);
+        XML2JAVA.put("integer", java.math.BigInteger.class);
+        XML2JAVA.put("int", int.class);
+        XML2JAVA.put("long", long.class);
+        XML2JAVA.put("short", short.class);
+        XML2JAVA.put("decimal", java.math.BigDecimal.class);
+        XML2JAVA.put("float", float.class);
+        XML2JAVA.put("double", double.class);
+        XML2JAVA.put("boolean", boolean.class);
+        XML2JAVA.put("byte", byte.class);
+        XML2JAVA.put("QName", javax.xml.namespace.QName.class);
+        XML2JAVA.put("dateTime", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("base64Binary", byte[].class);
+        XML2JAVA.put("hexBinary", byte[].class);
+        XML2JAVA.put("unsignedInt", long.class);
+        XML2JAVA.put("unsignedShort", int.class);
+        XML2JAVA.put("unsignedByte", short.class);
+        XML2JAVA.put("time", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("date", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("gDay", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("gMonth", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("gYear", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("gYearMonth", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("gMonthDay", javax.xml.datatype.XMLGregorianCalendar.class);
+        XML2JAVA.put("anySimpleType", java.lang.Object.class); // For elements
+        // XML2JAVA.put("anySimpleType", java.lang.String.class); // For
+        // attributes
+        XML2JAVA.put("duration", javax.xml.datatype.Duration.class);
+        XML2JAVA.put("NOTATION", javax.xml.namespace.QName.class);
+    }
+
+    private DatatypeFactory factory;
+
+    public SimpleTypeMapperImpl() {
+        super();
+        try {
+            this.factory = DatatypeFactory.newInstance();
+        } catch (DatatypeConfigurationException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    public static Class getJavaType(QName xmlType) {
+        if (URI_2001_SCHEMA_XSD.equals(xmlType.getNamespaceURI())) {
+            return XML2JAVA.get(xmlType.getLocalPart());
+        } else {
+            return null;
+        }
+    }
+
+    public TypeInfo getXMLType(Class javaType) {
+        return XSD_SIMPLE_TYPES.get(JAVA2XML.get(javaType));
+    }
+
+    public Object toJavaObject(QName simpleType, String literal, TransformationContext context) {
+        /**
+         * <ul>
+         * <li>xsd:string --- java.lang.String
+         * <li>xsd:integer --- java.math.BigInteger
+         * <li>xsd:int --- int
+         * <li>xsd:long --- long
+         * <li>xsd:short --- short
+         * <li>xsd:decimal --- java.math.BigDecimal
+         * <li>xsd:float --- float
+         * <li>xsd:double --- double
+         * <li>xsd:boolean --- boolean
+         * <li>xsd:byte --- byte
+         * <li>xsd:QName --- javax.xml.namespace.QName
+         * <li>xsd:dateTime --- javax.xml.datatype.XMLGregorianCalendar
+         * <li>xsd:base64Binary --- byte[]
+         * <li>xsd:hexBinary --- byte[]
+         * <li>xsd:unsignedInt --- long
+         * <li>xsd:unsignedShort --- int
+         * <li>xsd:unsignedByte --- short
+         * <li>xsd:time --- javax.xml.datatype.XMLGregorianCalendar
+         * <li>xsd:date --- javax.xml.datatype.XMLGregorianCalendar
+         * <li>xsd:g* --- javax.xml.datatype.XMLGregorianCalendar
+         * <li>xsd:anySimpleType (for xsd:element of this type)a
+         * java.lang.Object
+         * <li>xsd:anySimpleType (for xsd:attribute of this type)
+         * java.lang.String
+         * <li>xsd:duration javax.xml.datatype.Duration
+         * <li>xsd:NOTATION javax.xml.namespace.QName
+         * </ul>
+         */
+
+        if (literal == null) {
+            return null;
+        }
+        String value = literal.trim();
+
+        QName type = simpleType;
+        if (type.equals(XSD_STRING)) {
+            return parseString(value);
+        } else if (type.equals(XSD_INT)) {
+            return parseInt(value);
+        } else if (type.equals(XSD_INTEGER)) {
+            return parseInteger(value);
+        } else if (type.equals(XSD_INT)) {
+            return parseInt(value);
+        } else if (type.equals(XSD_FLOAT)) {
+            return parseFloat(value);
+        } else if (type.equals(XSD_DOUBLE)) {
+            return parseDouble(value);
+        } else if (type.equals(XSD_SHORT)) {
+            return parseShort(value);
+        } else if (type.equals(XSD_DECIMAL)) {
+            return parseDecimal(value);
+        } else if (type.equals(XSD_BOOLEAN)) {
+            return parseBoolean(value);
+        } else if (type.equals(XSD_BYTE)) {
+            return parseByte(value);
+        } else if (type.equals(XSD_LONG)) {
+            return parseLong(value);
+        } else if (type.equals(XSD_UNSIGNEDBYTE)) {
+            return parseUnsignedShort(value);
+        } else if (type.equals(XSD_UNSIGNEDSHORT)) {
+            return parseUnsignedShort(value);
+        } else if (type.equals(XSD_UNSIGNEDINT)) {
+            return parseUnsignedInt(value);
+        } else if (type.equals(XSD_UNSIGNEDLONG)) {
+            return parseUnsignedInt(value);
+        } else if (type.equals(XSD_DATETIME)) {
+            return parseDateTime(value);
+        } else if (type.equals(XSD_DATE)) {
+            return parseDate(value);
+        } else if (type.equals(XSD_TIME)) {
+            return parseTime(value);
+        } else if (type.equals(XSD_DURATION)) {
+            return parseDuration(value);
+        } else if (type.equals(XSD_HEXBIN)) {
+            return parseHexBinary(value);
+        } else if (type.equals(XSD_BASE64)) {
+            return parseBase64Binary(value);
+        } else if (type.equals(XSD_QNAME)) {
+            NamespaceContext namespaceContext =
+                (NamespaceContext)((context != null) ? context.getMetadata().get(NamespaceContext.class.getName()) : null);
+            return parseQName(value, namespaceContext);
+        } else if (type.equals(XSD_NOTATION)) {
+            NamespaceContext namespaceContext =
+                (NamespaceContext)((context != null) ? context.getMetadata().get(NamespaceContext.class.getName()) : null);
+            return parseQName(value, namespaceContext);
+        } else if (type.equals(XSD_YEAR)) {
+            return factory.newXMLGregorianCalendar(value);
+        } else if (type.equals(XSD_MONTH)) {
+            return factory.newXMLGregorianCalendar(value);
+        } else if (type.equals(XSD_DAY)) {
+            return factory.newXMLGregorianCalendar(value);
+        } else if (type.equals(XSD_YEARMONTH)) {
+            return factory.newXMLGregorianCalendar(value);
+        } else if (type.equals(XSD_MONTHDAY)) {
+            return factory.newXMLGregorianCalendar(value);
+        } else {
+            return value;
+        }
+    }
+
+    @SuppressWarnings("deprecation")
+    private XMLGregorianCalendar toXMLGregorianCalendar(Date date) {
+        GregorianCalendar c =
+            new GregorianCalendar(date.getYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(),
+                                  date.getSeconds());
+        return factory.newXMLGregorianCalendar(c);
+    }
+
+    private XMLGregorianCalendar toXMLGregorianCalendar(GregorianCalendar calendar) {
+        return factory.newXMLGregorianCalendar(calendar);
+    }
+
+    public String toXMLLiteral(QName simpleType, Object obj, TransformationContext context) {
+        if (obj instanceof Float || obj instanceof Double) {
+            if (obj instanceof Float) {
+                return printDouble(((Float)obj).floatValue());
+            } else {
+                return printDouble(((Double)obj).doubleValue());
+            }
+        } else if (obj instanceof GregorianCalendar) {
+            GregorianCalendar calendar = (GregorianCalendar)obj;
+            return toXMLGregorianCalendar(calendar).toXMLFormat();
+        } else if (obj instanceof Date) {
+            return toXMLGregorianCalendar((Date)obj).toXMLFormat();
+        } else if (obj instanceof XMLGregorianCalendar) {
+            return ((XMLGregorianCalendar)obj).toXMLFormat();
+        } else if (obj instanceof byte[]) {
+            if (simpleType != null) {
+                if (simpleType.equals(XSD_BASE64)) {
+                    return printBase64Binary((byte[])obj);
+                } else if (simpleType.equals(XSD_HEXBIN)) {
+                    return printHexBinary((byte[])obj);
+                }
+            }
+        } else if (obj instanceof QName) {
+            NamespaceContext namespaceContext =
+                (NamespaceContext)((context != null) ? context.getMetadata().get(NamespaceContext.class.getName()) : null);
+            return printQName((QName)obj, namespaceContext);
+        }
+        return obj.toString();
+    }
+
+    public static boolean isSimpleXSDType(QName typeName) {
+        if (typeName == null) {
+            return false;
+        }
+        return typeName.getNamespaceURI().equals(URI_2001_SCHEMA_XSD) 
+            && XSD_SIMPLE_TYPES.get(typeName.getLocalPart()) != null;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleTypeMapperImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/SimpleTypeMapperImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/XSDDataTypeConverter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/XSDDataTypeConverter.java?view=auto&rev=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/XSDDataTypeConverter.java (added)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/XSDDataTypeConverter.java Wed May  2 11:15:41 2007
@@ -0,0 +1,940 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.databinding.impl;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.util.Calendar;
+import java.util.TimeZone;
+import javax.xml.XMLConstants;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+
+/**
+ * Utility class for XSD data type conversions
+ */
+public class XSDDataTypeConverter {
+    public static final class Base64Binary {
+        private static final char[] S_BASE64CHAR =
+        {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
+            'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
+            'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4',
+            '5', '6', '7', '8', '9', '+', '/'};
+
+        private static final char S_BASE64PAD = '=';
+
+        private static final byte[] S_DECODETABLE = new byte[128];
+
+        static {
+            for (int i = 0; i < S_DECODETABLE.length; i++) {
+                S_DECODETABLE[i] = Byte.MAX_VALUE; // 127
+            }
+            for (int i = 0; i < S_BASE64CHAR.length; i++) {
+                // 0 to 63
+                S_DECODETABLE[S_BASE64CHAR[i]] = (byte) i;
+            }
+        }
+
+        private Base64Binary() {
+        }
+
+        /**
+         * 
+         */
+        public static byte[] decode(char[] data, int off, int len) {
+            char[] ibuf = new char[4];
+            int ibufcount = 0;
+            byte[] obuf = new byte[len / 4 * 3 + 3];
+            int obufcount = 0;
+            for (int i = off; i < off + len; i++) {
+                char ch = data[i];
+                if (ch == S_BASE64PAD || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                    ibuf[ibufcount++] = ch;
+                    if (ibufcount == ibuf.length) {
+                        ibufcount = 0;
+                        obufcount += decode0(ibuf, obuf, obufcount);
+                    }
+                }
+            }
+            if (obufcount == obuf.length) {
+                return obuf;
+            }
+            byte[] ret = new byte[obufcount];
+            System.arraycopy(obuf, 0, ret, 0, obufcount);
+            return ret;
+        }
+
+        /**
+         * 
+         */
+        public static void decode(char[] data, int off, int len, OutputStream ostream) throws IOException {
+            char[] ibuf = new char[4];
+            int ibufcount = 0;
+            byte[] obuf = new byte[3];
+            for (int i = off; i < off + len; i++) {
+                char ch = data[i];
+                if (ch == S_BASE64PAD || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                    ibuf[ibufcount++] = ch;
+                    if (ibufcount == ibuf.length) {
+                        ibufcount = 0;
+                        int obufcount = decode0(ibuf, obuf, 0);
+                        ostream.write(obuf, 0, obufcount);
+                    }
+                }
+            }
+        }
+
+        /**
+         * 
+         */
+        public static byte[] decode(String data) {
+            char[] ibuf = new char[4];
+            int ibufcount = 0;
+            byte[] obuf = new byte[data.length() / 4 * 3 + 3];
+            int obufcount = 0;
+            for (int i = 0; i < data.length(); i++) {
+                char ch = data.charAt(i);
+                if (ch == S_BASE64PAD || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                    ibuf[ibufcount++] = ch;
+                    if (ibufcount == ibuf.length) {
+                        ibufcount = 0;
+                        obufcount += decode0(ibuf, obuf, obufcount);
+                    }
+                }
+            }
+            if (obufcount == obuf.length) {
+                return obuf;
+            }
+            byte[] ret = new byte[obufcount];
+            System.arraycopy(obuf, 0, ret, 0, obufcount);
+            return ret;
+        }
+
+        /**
+         * 
+         */
+        public static void decode(String data, OutputStream ostream) throws IOException {
+            char[] ibuf = new char[4];
+            int ibufcount = 0;
+            byte[] obuf = new byte[3];
+            for (int i = 0; i < data.length(); i++) {
+                char ch = data.charAt(i);
+                if (ch == S_BASE64PAD || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                    ibuf[ibufcount++] = ch;
+                    if (ibufcount == ibuf.length) {
+                        ibufcount = 0;
+                        int obufcount = decode0(ibuf, obuf, 0);
+                        ostream.write(obuf, 0, obufcount);
+                    }
+                }
+            }
+        }
+
+        private static int decode0(char[] ibuf, byte[] obuf, int index) {
+            int wp = index;
+            int outlen = 3;
+            if (ibuf[3] == S_BASE64PAD) {
+                outlen = 2;
+            }
+            if (ibuf[2] == S_BASE64PAD) {
+                outlen = 1;
+            }
+            int b0 = S_DECODETABLE[ibuf[0]];
+            int b1 = S_DECODETABLE[ibuf[1]];
+            int b2 = S_DECODETABLE[ibuf[2]];
+            int b3 = S_DECODETABLE[ibuf[3]];
+            switch (outlen) {
+                case 1:
+                    obuf[wp] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
+                    return 1;
+                case 2:
+                    obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
+                    obuf[wp] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
+                    return 2;
+                case 3:
+                    obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
+                    obuf[wp++] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
+                    obuf[wp] = (byte) (b2 << 6 & 0xc0 | b3 & 0x3f);
+                    return 3;
+                default:
+                    throw new IllegalArgumentException("The character sequence is not base64 encoded.");
+            }
+        }
+
+        /**
+         * Returns base64 representation of specified byte array.
+         */
+        public static String encode(byte[] data) {
+            return encode(data, 0, data.length);
+        }
+
+        /**
+         * Returns base64 representation of specified byte array.
+         */
+        public static String encode(byte[] data, int off, int len) {
+            if (len <= 0) {
+                return "";
+            }
+            char[] out = new char[len / 3 * 4 + 4];
+            int rindex = off;
+            int windex = 0;
+            int rest = len - off;
+            while (rest >= 3) {
+                int i =
+                    ((data[rindex] & 0xff) << 16) + ((data[rindex + 1] & 0xff) << 8)
+                        + (data[rindex + 2] & 0xff);
+                out[windex++] = S_BASE64CHAR[i >> 18];
+                out[windex++] = S_BASE64CHAR[(i >> 12) & 0x3f];
+                out[windex++] = S_BASE64CHAR[(i >> 6) & 0x3f];
+                out[windex++] = S_BASE64CHAR[i & 0x3f];
+                rindex += 3;
+                rest -= 3;
+            }
+            if (rest == 1) {
+                int i = data[rindex] & 0xff;
+                out[windex++] = S_BASE64CHAR[i >> 2];
+                out[windex++] = S_BASE64CHAR[(i << 4) & 0x3f];
+                out[windex++] = S_BASE64PAD;
+                out[windex++] = S_BASE64PAD;
+            } else if (rest == 2) {
+                int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
+                out[windex++] = S_BASE64CHAR[i >> 10];
+                out[windex++] = S_BASE64CHAR[(i >> 4) & 0x3f];
+                out[windex++] = S_BASE64CHAR[(i << 2) & 0x3f];
+                out[windex++] = S_BASE64PAD;
+            }
+            return new String(out, 0, windex);
+        }
+
+        /**
+         * Outputs base64 representation of the specified byte array to a byte stream.
+         */
+        public static void encode(byte[] data, int off, int len, OutputStream ostream) throws IOException {
+            if (len <= 0) {
+                return;
+            }
+            byte[] out = new byte[4];
+            int rindex = off;
+            int rest = len - off;
+            while (rest >= 3) {
+                int i =
+                    ((data[rindex] & 0xff) << 16) + ((data[rindex + 1] & 0xff) << 8)
+                        + (data[rindex + 2] & 0xff);
+                out[0] = (byte) S_BASE64CHAR[i >> 18];
+                out[1] = (byte) S_BASE64CHAR[(i >> 12) & 0x3f];
+                out[2] = (byte) S_BASE64CHAR[(i >> 6) & 0x3f];
+                out[3] = (byte) S_BASE64CHAR[i & 0x3f];
+                ostream.write(out, 0, 4);
+                rindex += 3;
+                rest -= 3;
+            }
+            if (rest == 1) {
+                int i = data[rindex] & 0xff;
+                out[0] = (byte) S_BASE64CHAR[i >> 2];
+                out[1] = (byte) S_BASE64CHAR[(i << 4) & 0x3f];
+                out[2] = (byte) S_BASE64PAD;
+                out[3] = (byte) S_BASE64PAD;
+                ostream.write(out, 0, 4);
+            } else if (rest == 2) {
+                int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
+                out[0] = (byte) S_BASE64CHAR[i >> 10];
+                out[1] = (byte) S_BASE64CHAR[(i >> 4) & 0x3f];
+                out[2] = (byte) S_BASE64CHAR[(i << 2) & 0x3f];
+                out[3] = (byte) S_BASE64PAD;
+                ostream.write(out, 0, 4);
+            }
+        }
+
+        /**
+         * Outputs base64 representation of the specified byte array to a character stream.
+         */
+        public static void encode(byte[] data, int off, int len, Writer writer) throws IOException {
+            if (len <= 0) {
+                return;
+            }
+            char[] out = new char[4];
+            int rindex = off;
+            int rest = len - off;
+            int output = 0;
+            while (rest >= 3) {
+                int i =
+                    ((data[rindex] & 0xff) << 16) + ((data[rindex + 1] & 0xff) << 8)
+                        + (data[rindex + 2] & 0xff);
+                out[0] = S_BASE64CHAR[i >> 18];
+                out[1] = S_BASE64CHAR[(i >> 12) & 0x3f];
+                out[2] = S_BASE64CHAR[(i >> 6) & 0x3f];
+                out[3] = S_BASE64CHAR[i & 0x3f];
+                writer.write(out, 0, 4);
+                rindex += 3;
+                rest -= 3;
+                output += 4;
+                if (output % 76 == 0) {
+                    writer.write("\n");
+                }
+            }
+            if (rest == 1) {
+                int i = data[rindex] & 0xff;
+                out[0] = S_BASE64CHAR[i >> 2];
+                out[1] = S_BASE64CHAR[(i << 4) & 0x3f];
+                out[2] = S_BASE64PAD;
+                out[3] = S_BASE64PAD;
+                writer.write(out, 0, 4);
+            } else if (rest == 2) {
+                int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
+                out[0] = S_BASE64CHAR[i >> 10];
+                out[1] = S_BASE64CHAR[(i >> 4) & 0x3f];
+                out[2] = S_BASE64CHAR[(i << 2) & 0x3f];
+                out[3] = S_BASE64PAD;
+                writer.write(out, 0, 4);
+            }
+        }
+    }
+
+    /**
+     * <p/>
+     * Utility class for xs:hexbinary. </p>
+     */
+    public static final class HexBinary {
+        private HexBinary() {
+        }
+
+        /**
+         * Converts the string <code>pValue</code> into an array of hex bytes.
+         */
+        public static byte[] decode(String pValue) {
+            if ((pValue.length() % 2) != 0) {
+                throw new IllegalArgumentException("A HexBinary string must have even length.");
+            }
+            byte[] result = new byte[pValue.length() / 2];
+            int j = 0;
+            int i = 0;
+            while (i < pValue.length()) {
+                byte b;
+                char c = pValue.charAt(i++);
+                char d = pValue.charAt(i++);
+                if (c >= '0' && c <= '9') {
+                    b = (byte) ((c - '0') << 4);
+                } else if (c >= 'A' && c <= 'F') {
+                    b = (byte) ((c - 'A' + 10) << 4);
+                } else if (c >= 'a' && c <= 'f') {
+                    b = (byte) ((c - 'a' + 10) << 4);
+                } else {
+                    throw new IllegalArgumentException("Invalid hex digit: " + c);
+                }
+                if (d >= '0' && d <= '9') {
+                    b += (byte) (d - '0');
+                } else if (d >= 'A' && d <= 'F') {
+                    b += (byte) (d - 'A' + 10);
+                } else if (d >= 'a' && d <= 'f') {
+                    b += (byte) (d - 'a' + 10);
+                } else {
+                    throw new IllegalArgumentException("Invalid hex digit: " + d);
+                }
+                result[j++] = b;
+            }
+            return result;
+        }
+
+        /**
+         * Converts the byte array <code>pHexBinary</code> into a string.
+         */
+        public static String encode(byte[] pHexBinary) {
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < pHexBinary.length; i++) {
+                byte b = pHexBinary[i];
+                byte c = (byte) ((b & 0xf0) >> 4);
+                if (c <= 9) {
+                    result.append((char) ('0' + c));
+                } else {
+                    result.append((char) ('A' + c - 10));
+                }
+                c = (byte) (b & 0x0f);
+                if (c <= 9) {
+                    result.append((char) ('0' + c));
+                } else {
+                    result.append((char) ('A' + c - 10));
+                }
+            }
+            return result.toString();
+        }
+
+        /**
+         * Creates a clone of the given byte array.
+         */
+        public static byte[] getClone(byte[] pHexBinary) {
+            byte[] result = new byte[pHexBinary.length];
+            System.arraycopy(pHexBinary, 0, result, 0, pHexBinary.length);
+            return result;
+        }
+    }
+
+    public class XSDDateFormat extends XSDDateTimeFormat {
+        private static final long serialVersionUID = -1629412916827246627L;
+
+        /**
+         * Creates a new instance.
+         */
+        public XSDDateFormat() {
+            super(true, false);
+        }
+    }
+
+    /**
+     * <p/>
+     * An instance of {@link java.text.Format}, which may be used to parse and format <code>xs:dateTime</code> values.
+     * </p>
+     */
+    public static class XSDDateTimeFormat extends Format {
+        private static final long serialVersionUID = -1148332471737068969L;
+
+        final boolean parseDate;
+
+        final boolean parseTime;
+
+        /**
+         * Creates a new instance.
+         */
+        public XSDDateTimeFormat() {
+            this(true, true);
+        }
+
+        XSDDateTimeFormat(boolean pParseDate, boolean pParseTime) {
+            parseDate = pParseDate;
+            parseTime = pParseTime;
+        }
+
+        private void append(StringBuffer pBuffer, int pNum, int pMinLen) {
+            String s = Integer.toString(pNum);
+            for (int i = s.length(); i < pMinLen; i++) {
+                pBuffer.append('0');
+            }
+            pBuffer.append(s);
+        }
+
+        public StringBuffer format(Object pCalendar, StringBuffer pBuffer, FieldPosition pPos) {
+            assert pCalendar != null : "The Calendar argument must not be null.";
+            assert pBuffer != null : "The StringBuffer argument must not be null.";
+            assert pPos != null : "The FieldPosition argument must not be null.";
+
+            Calendar cal = (Calendar) pCalendar;
+            if (parseDate) {
+                int year = cal.get(Calendar.YEAR);
+                if (year < 0) {
+                    pBuffer.append('-');
+                    year = -year;
+                }
+                append(pBuffer, year, 4);
+                pBuffer.append('-');
+                append(pBuffer, cal.get(Calendar.MONTH) + 1, 2);
+                pBuffer.append('-');
+                append(pBuffer, cal.get(Calendar.DAY_OF_MONTH), 2);
+                if (parseTime) {
+                    pBuffer.append('T');
+                }
+            }
+            if (parseTime) {
+                append(pBuffer, cal.get(Calendar.HOUR_OF_DAY), 2);
+                pBuffer.append(':');
+                append(pBuffer, cal.get(Calendar.MINUTE), 2);
+                pBuffer.append(':');
+                append(pBuffer, cal.get(Calendar.SECOND), 2);
+                int millis = cal.get(Calendar.MILLISECOND);
+                if (millis > 0) {
+                    pBuffer.append('.');
+                    append(pBuffer, millis, 3);
+                }
+            }
+            TimeZone tz = cal.getTimeZone();
+            // JDK 1.4: int offset = tz.getOffset(cal.getTimeInMillis());
+            int offset = cal.get(Calendar.ZONE_OFFSET);
+            if (tz.inDaylightTime(cal.getTime())) {
+                offset += cal.get(Calendar.DST_OFFSET);
+            }
+            if (offset == 0) {
+                pBuffer.append('Z');
+            } else {
+                if (offset < 0) {
+                    pBuffer.append('-');
+                    offset = -offset;
+                } else {
+                    pBuffer.append('+');
+                }
+                int minutes = offset / (60 * 1000);
+                int hours = minutes / 60;
+                minutes -= hours * 60;
+                append(pBuffer, hours, 2);
+                pBuffer.append(':');
+                append(pBuffer, minutes, 2);
+            }
+            return pBuffer;
+        }
+
+        private int parseInt(String pString, int offset, StringBuffer pDigits) {
+            int length = pString.length();
+            int pOffset = offset;
+            pDigits.setLength(0);
+            while (pOffset < length) {
+                char c = pString.charAt(pOffset);
+                if (Character.isDigit(c)) {
+                    pDigits.append(c);
+                    ++pOffset;
+                } else {
+                    break;
+                }
+            }
+            return pOffset;
+        }
+
+        public Object parseObject(String pString, ParsePosition pParsePosition) {
+            assert pString != null : "The String argument must not be null.";
+            assert pParsePosition != null : "The ParsePosition argument must not be null.";
+            int offset = pParsePosition.getIndex();
+            int length = pString.length();
+
+            boolean isMinus = false;
+            StringBuffer digits = new StringBuffer();
+            int year = 0;
+            int month = 0;
+            int mday = 0;
+            if (parseDate) {
+                // Sign
+                if (offset < length) {
+                    char c = pString.charAt(offset);
+                    if (c == '+') {
+                        ++offset;
+                    } else if (c == '-') {
+                        ++offset;
+                        isMinus = true;
+                    }
+                }
+
+                offset = parseInt(pString, offset, digits);
+                if (digits.length() < 4) {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+                year = Integer.parseInt(digits.toString());
+
+                if (offset < length && pString.charAt(offset) == '-') {
+                    ++offset;
+                } else {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+
+                offset = parseInt(pString, offset, digits);
+                if (digits.length() != 2) {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+                month = Integer.parseInt(digits.toString());
+
+                if (offset < length && pString.charAt(offset) == '-') {
+                    ++offset;
+                } else {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+
+                offset = parseInt(pString, offset, digits);
+                if (digits.length() != 2) {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+                mday = Integer.parseInt(digits.toString());
+
+                if (parseTime) {
+                    if (offset < length && pString.charAt(offset) == 'T') {
+                        ++offset;
+                    } else {
+                        pParsePosition.setErrorIndex(offset);
+                        return null;
+                    }
+                }
+            } else {
+                year = month = mday = 0;
+            }
+
+            int hour = 0;
+            int minute = 0;
+            int second = 0;
+            int millis = 0;
+            if (parseTime) {
+                offset = parseInt(pString, offset, digits);
+                if (digits.length() != 2) {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+                hour = Integer.parseInt(digits.toString());
+
+                if (offset < length && pString.charAt(offset) == ':') {
+                    ++offset;
+                } else {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+
+                offset = parseInt(pString, offset, digits);
+                if (digits.length() != 2) {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+                minute = Integer.parseInt(digits.toString());
+
+                if (offset < length && pString.charAt(offset) == ':') {
+                    ++offset;
+                } else {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+
+                offset = parseInt(pString, offset, digits);
+                if (digits.length() != 2) {
+                    pParsePosition.setErrorIndex(offset);
+                    return null;
+                }
+                second = Integer.parseInt(digits.toString());
+
+                if (offset < length && pString.charAt(offset) == '.') {
+                    ++offset;
+                    offset = parseInt(pString, offset, digits);
+                    if (digits.length() > 0) {
+                        millis = Integer.parseInt(digits.toString());
+                    } else {
+                        millis = 0;
+                    }
+                } else {
+                    millis = 0;
+                }
+            } else {
+                hour = minute = second = millis = 0;
+            }
+
+            digits.setLength(0);
+            digits.append("GMT");
+            if (offset < length) {
+                char c = pString.charAt(offset);
+                if (c == 'Z') {
+                    // Ignore UTC, it is the default
+                    ++offset;
+                } else if (c == '+' || c == '-') {
+                    digits.append(c);
+                    ++offset;
+                    for (int i = 0; i < 5; i++) {
+                        if (offset >= length) {
+                            pParsePosition.setErrorIndex(offset);
+                            return null;
+                        }
+                        c = pString.charAt(offset);
+                        if ((i != 2 && Character.isDigit(c)) || (i == 2 && c == ':')) {
+                            digits.append(c);
+                        } else {
+                            pParsePosition.setErrorIndex(offset);
+                            return null;
+                        }
+                        ++offset;
+                    }
+                }
+            }
+
+            Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(digits.toString()));
+            cal.set(isMinus ? -year : year, parseDate ? month - 1 : month, mday, hour, minute, second);
+            cal.set(Calendar.MILLISECOND, millis);
+            pParsePosition.setIndex(offset);
+            return cal;
+        }
+    }
+
+    public static class XSDTimeFormat extends XSDDateTimeFormat {
+        private static final long serialVersionUID = 1346506860724640517L;
+
+        /**
+         * Creates a new instance.
+         */
+        public XSDTimeFormat() {
+            super(false, true);
+        }
+    }
+
+    private static final long MAX_UNSIGNED_INT = (((long) Integer.MAX_VALUE) * 2) + 1;
+
+    private static final int MAX_UNSIGNED_SHORT = Short.MAX_VALUE * 2 + 1;
+
+    public String parseAnySimpleType(String value) {
+        return value;
+    }
+
+    public byte[] parseBase64Binary(String value) {
+        return Base64Binary.decode(value);
+    }
+
+    public boolean parseBoolean(String value) {
+        return Boolean.valueOf(value).booleanValue();
+    }
+
+    public byte parseByte(String value) {
+        return Byte.parseByte(value);
+    }
+
+    public Calendar parseDate(String value) {
+        XSDDateFormat format = new XSDDateFormat();
+        ParsePosition pos = new ParsePosition(0);
+        Calendar cal = (Calendar) format.parseObject(value, pos);
+        if (cal == null) {
+            throw new IllegalArgumentException("Failed to parse date " + value + " at:"
+                + value.substring(pos.getErrorIndex()));
+        }
+        return cal;
+    }
+
+    public Calendar parseDateTime(String value) {
+        XSDDateTimeFormat format = new XSDDateTimeFormat();
+        ParsePosition pos = new ParsePosition(0);
+        Calendar cal = (Calendar) format.parseObject(value, pos);
+        if (cal == null) {
+            throw new IllegalArgumentException("Failed to parse dateTime " + value + " at:"
+                + value.substring(pos.getErrorIndex()));
+        }
+        return cal;
+    }
+
+    public BigDecimal parseDecimal(String value) {
+        return new BigDecimal(value);
+    }
+
+    public double parseDouble(String value) {
+        if ("INF".equals(value)) {
+            return Double.POSITIVE_INFINITY;
+        } else if ("-INF".equals(value)) {
+            return Double.NEGATIVE_INFINITY;
+        } else if ("NaN".equals(value)) {
+            return Double.NaN;
+        } else {
+            return Double.parseDouble(value);
+        }
+    }
+
+    public Duration parseDuration(String pDuration) {
+        try {
+            return DatatypeFactory.newInstance().newDuration(pDuration);
+        } catch (DatatypeConfigurationException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    public float parseFloat(String value) {
+        if ("INF".equals(value)) {
+            return Float.POSITIVE_INFINITY;
+        } else if ("-INF".equals(value)) {
+            return Float.NEGATIVE_INFINITY;
+        } else if ("NaN".equals(value)) {
+            return Float.NaN;
+        } else {
+            return Float.parseFloat(value);
+        }
+    }
+
+    public byte[] parseHexBinary(String value) {
+        return HexBinary.decode(value);
+    }
+
+    public int parseInt(String value) {
+        return Integer.parseInt(value);
+    }
+
+    public BigInteger parseInteger(String value) {
+        return new BigInteger(value);
+    }
+
+    public long parseLong(String value) {
+        return Long.parseLong(value);
+    }
+
+    public QName parseQName(String value, NamespaceContext context) {
+        int offset = value.indexOf(':');
+        String uri;
+        String localName;
+        switch (offset) {
+            case -1:
+                localName = value;
+                uri = context.getNamespaceURI("");
+                if (uri == null) {
+                    // Should not happen, indicates an error in the
+                    // NamespaceContext
+                    // implementation
+                    throw new IllegalArgumentException("The default prefix is not bound.");
+                }
+                break;
+            case 0:
+                throw new IllegalArgumentException("Default prefix must be indicated by not using a colon: "
+                    + value);
+            default:
+                String prefix = value.substring(0, offset);
+                localName = value.substring(offset + 1);
+                uri = context.getNamespaceURI(prefix);
+                if (uri == null) {
+                    throw new IllegalArgumentException("The prefix " + prefix + " is not bound.");
+                }
+        }
+        return new QName(uri, localName);
+    }
+
+    public short parseShort(String value) {
+        return Short.parseShort(value);
+    }
+
+    public String parseString(String value) {
+        return value;
+    }
+
+    public Calendar parseTime(String value) {
+        XSDTimeFormat format = new XSDTimeFormat();
+        ParsePosition pos = new ParsePosition(0);
+        Calendar cal = (Calendar) format.parseObject(value, pos);
+        if (cal == null) {
+            throw new IllegalArgumentException("Failed to parse time " + value + " at:"
+                + value.substring(pos.getErrorIndex()));
+        }
+        return cal;
+    }
+
+    public long parseUnsignedInt(String value) {
+        long l = Long.parseLong(value);
+        if (l < 0) {
+            throw new IllegalArgumentException("Failed to parse UnsignedInt " + value
+                + ": result is negative");
+        }
+        if (l > MAX_UNSIGNED_INT) {
+            throw new IllegalArgumentException("Failed to parse UnsignedInt " + value
+                + ": result exceeds maximum value " + MAX_UNSIGNED_INT);
+        }
+        return l;
+    }
+
+    public int parseUnsignedShort(String value) {
+        int i = Integer.parseInt(value);
+        if (i < 0) {
+            throw new IllegalArgumentException("Failed to parse UnsignedShort " + value
+                + ": result is negative");
+        }
+        if (i > MAX_UNSIGNED_SHORT) {
+            throw new IllegalArgumentException("Failed to parse UnsignedShort " + value
+                + ": result exceeds maximum value " + MAX_UNSIGNED_SHORT);
+        }
+        return i;
+    }
+
+    public String printAnySimpleType(String value) {
+        return value;
+    }
+
+    public String printBase64Binary(byte[] value) {
+        return Base64Binary.encode(value);
+    }
+
+    public String printBoolean(boolean value) {
+        return (value ? Boolean.TRUE : Boolean.FALSE).toString();
+    }
+
+    public String printByte(byte value) {
+        return Byte.toString(value);
+    }
+
+    public String printDate(Calendar value) {
+        return new XSDDateFormat().format(value);
+    }
+
+    public String printDateTime(Calendar value) {
+        return new XSDDateTimeFormat().format(value);
+    }
+
+    public String printDecimal(BigDecimal value) {
+        return value.toString();
+    }
+
+    public String printDouble(double value) {
+        return Double.toString(value);
+    }
+
+    public String printDuration(Duration pDuration) {
+        return pDuration.toString();
+    }
+
+    public String printFloat(float value) {
+        return Float.toString(value);
+    }
+
+    public String printHexBinary(byte[] value) {
+        return HexBinary.encode(value);
+    }
+
+    public String printInt(int value) {
+        return Integer.toString(value);
+    }
+
+    public String printInteger(BigInteger value) {
+        return value.toString();
+    }
+
+    public String printLong(long value) {
+        return Long.toString(value);
+    }
+
+    public String printQName(QName value, NamespaceContext context) {
+        String prefix = context.getPrefix(value.getNamespaceURI());
+        if (prefix == null) {
+            throw new IllegalArgumentException("The namespace URI " + value.getNamespaceURI()
+                + " is not bound.");
+        } else if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix)) {
+            return value.getLocalPart();
+        } else {
+            return prefix + ":" + value.getLocalPart();
+        }
+    }
+
+    public String printShort(short value) {
+        return Short.toString(value);
+    }
+
+    public String printString(String value) {
+        return value;
+    }
+
+    public String printTime(Calendar value) {
+        return new XSDTimeFormat().format(value);
+    }
+
+    public String printUnsignedInt(long value) {
+        return Long.toString(value);
+    }
+
+    public String printUnsignedShort(int value) {
+        return Integer.toString(value);
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/XSDDataTypeConverter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/impl/XSDDataTypeConverter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java Wed May  2 11:15:41 2007
@@ -21,7 +21,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.tuscany.databinding.extension.DOMHelper;
+import org.apache.tuscany.databinding.impl.DOMHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java Wed May  2 11:15:41 2007
@@ -23,11 +23,11 @@
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.apache.tuscany.databinding.xml.BeanUtil;
 import org.apache.tuscany.databinding.xml.XMLDocumentStreamReader;
 
-public class JavaBean2XMLStreamReader extends TransformerExtension<Object, XMLStreamReader> implements
+public class JavaBean2XMLStreamReader extends BaseTransformer<Object, XMLStreamReader> implements
     PullTransformer<Object, XMLStreamReader> {
 
     public XMLStreamReader transform(Object source, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java Wed May  2 11:15:41 2007
@@ -31,13 +31,13 @@
 
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
-import org.apache.tuscany.databinding.extension.SimpleTypeMapperExtension;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.SimpleTypeMapperImpl;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 
 /**
  * Transformer to convert data from a JavaBean object to xml
  */
-public abstract class JavaBean2XMLTransformer<T> extends TransformerExtension<Object, T> implements
+public abstract class JavaBean2XMLTransformer<T> extends BaseTransformer<Object, T> implements
         PullTransformer<Object, T> {
 
     public static final String GET = "get";
@@ -47,10 +47,10 @@
     public static final String HTTP = "http://";
     private static int prefixCount = 1;
     
-    protected SimpleTypeMapperExtension mapper;
+    protected SimpleTypeMapperImpl mapper;
 
     public JavaBean2XMLTransformer() {
-        this.mapper = new SimpleTypeMapperExtension();
+        this.mapper = new SimpleTypeMapperImpl();
     }
 
     public T transform(Object source, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java Wed May  2 11:15:41 2007
@@ -29,12 +29,12 @@
 import java.io.OutputStream;
 import java.io.Serializable;
 
-import org.apache.tuscany.databinding.extension.DataBindingExtension;
+import org.apache.tuscany.databinding.impl.BaseDataBinding;
 
 /**
  * DataBinding for JavaBeans
  */
-public class JavaBeansDataBinding extends DataBindingExtension {
+public class JavaBeansDataBinding extends BaseDataBinding {
     /**
      * Defining a weight to a very high number so that the transformer won't be picked
      * up by other paths unless it's the only available path

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java Wed May  2 11:15:41 2007
@@ -31,22 +31,22 @@
 
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
-import org.apache.tuscany.databinding.extension.SimpleTypeMapperExtension;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.SimpleTypeMapperImpl;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.apache.tuscany.interfacedef.util.XMLType;
 
 /**
  * Transformer to convert data from XML to JavaBean
  */
-public abstract class XML2JavaBeanTransformer<T> extends TransformerExtension<T, Object> implements
+public abstract class XML2JavaBeanTransformer<T> extends BaseTransformer<T, Object> implements
         PullTransformer<T, Object> {
 
     public static final String SET = "set";
 
-    protected SimpleTypeMapperExtension mapper;
+    protected SimpleTypeMapperImpl mapper;
 
     public XML2JavaBeanTransformer() {
-        this.mapper = new SimpleTypeMapperExtension();
+        this.mapper = new SimpleTypeMapperImpl();
     }
 
     @Override
@@ -60,7 +60,7 @@
     }
 
     public Object toJavaObject(QName xmlType, T xmlElement, TransformationContext context) {
-        if (SimpleTypeMapperExtension.isSimpleXSDType(xmlType)) {
+        if (SimpleTypeMapperImpl.isSimpleXSDType(xmlType)) {
             return mapper.toJavaObject(xmlType, getText(xmlElement), context);
         } else {
             Class<?> javaType = (Class<?>)context.getTargetDataType().getPhysical();

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/BeanUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/BeanUtil.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/BeanUtil.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/BeanUtil.java Wed May  2 11:15:41 2007
@@ -33,14 +33,14 @@
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
 
-import org.apache.tuscany.databinding.extension.SimpleTypeMapperExtension;
+import org.apache.tuscany.databinding.impl.SimpleTypeMapperImpl;
 import org.apache.tuscany.interfacedef.util.TypeInfo;
 
 public final class BeanUtil {
     private static final Object[] NULL = (Object[])null;
     private static int nsCount = 1;
 
-    private static final SimpleTypeMapperExtension MAPPER = new SimpleTypeMapperExtension();
+    private static final SimpleTypeMapperImpl MAPPER = new SimpleTypeMapperImpl();
 
     private BeanUtil() {
     }

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMDataBinding.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMDataBinding.java Wed May  2 11:15:41 2007
@@ -22,14 +22,14 @@
 import org.w3c.dom.Node;
 
 import org.apache.tuscany.databinding.WrapperHandler;
-import org.apache.tuscany.databinding.extension.DataBindingExtension;
+import org.apache.tuscany.databinding.impl.BaseDataBinding;
 
 /**
  * DOM DataBinding
  *
  * @version $Rev$ $Date$
  */
-public class DOMDataBinding extends DataBindingExtension {
+public class DOMDataBinding extends BaseDataBinding {
     public static final String NAME = Node.class.getName();
     public static final String[] ALIASES = new String[] {"dom"};
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMWrapperHandler.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMWrapperHandler.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/DOMWrapperHandler.java Wed May  2 11:15:41 2007
@@ -28,7 +28,7 @@
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
 import org.apache.tuscany.databinding.WrapperHandler;
-import org.apache.tuscany.databinding.extension.DOMHelper;
+import org.apache.tuscany.databinding.impl.DOMHelper;
 import org.apache.tuscany.interfacedef.util.ElementInfo;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2Node.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2Node.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2Node.java Wed May  2 11:15:41 2007
@@ -25,14 +25,14 @@
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 import org.xml.sax.InputSource;
 
 /**
  * Push DOM InputSource to Node
  */
-public class InputSource2Node extends TransformerExtension<InputSource, Node> implements
+public class InputSource2Node extends BaseTransformer<InputSource, Node> implements
     PullTransformer<InputSource, Node> {
     private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2SAX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2SAX.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2SAX.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputSource2SAX.java Wed May  2 11:15:41 2007
@@ -21,7 +21,7 @@
 import org.apache.tuscany.databinding.PushTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
@@ -30,7 +30,7 @@
 /**
  * Push InputSource to SAX
  */
-public class InputSource2SAX extends TransformerExtension<InputSource, ContentHandler> implements
+public class InputSource2SAX extends BaseTransformer<InputSource, ContentHandler> implements
     PushTransformer<InputSource, ContentHandler> {
 
     public void transform(InputSource source, ContentHandler target, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2Node.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2Node.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2Node.java Wed May  2 11:15:41 2007
@@ -27,14 +27,14 @@
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 import org.xml.sax.InputSource;
 
 /**
  * Push DOM InputSource to Node
  */
-public class InputStream2Node extends TransformerExtension<InputStream, Node> implements
+public class InputStream2Node extends BaseTransformer<InputStream, Node> implements
     PullTransformer<InputStream, Node> {
     private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2SAX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2SAX.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2SAX.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/InputStream2SAX.java Wed May  2 11:15:41 2007
@@ -23,7 +23,7 @@
 import org.apache.tuscany.databinding.PushTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
@@ -32,7 +32,7 @@
 /**
  * Push InputStream to SAX
  */
-public class InputStream2SAX extends TransformerExtension<InputStream, ContentHandler> implements
+public class InputStream2SAX extends BaseTransformer<InputStream, ContentHandler> implements
     PushTransformer<InputStream, ContentHandler> {
     public void transform(InputStream source, ContentHandler target, TransformationContext context) {
         try {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2OutputStream.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2OutputStream.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2OutputStream.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2OutputStream.java Wed May  2 11:15:41 2007
@@ -28,13 +28,13 @@
 import org.apache.tuscany.databinding.PushTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 
 /**
  * Push DOM Node to OutputStream
  */
-public class Node2OutputStream extends TransformerExtension<Node, OutputStream> implements
+public class Node2OutputStream extends BaseTransformer<Node, OutputStream> implements
     PushTransformer<Node, OutputStream> {
     private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java Wed May  2 11:15:41 2007
@@ -23,13 +23,13 @@
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 
 /**
  * Transform DOM Node to XML String
  */
-public class Node2String extends TransformerExtension<Node, String> implements PullTransformer<Node, String> {
+public class Node2String extends BaseTransformer<Node, String> implements PullTransformer<Node, String> {
     private static final Node2Writer TRANSFORMER = new Node2Writer();
 
     public String transform(Node source, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2Writer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2Writer.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2Writer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2Writer.java Wed May  2 11:15:41 2007
@@ -28,13 +28,13 @@
 import org.apache.tuscany.databinding.PushTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 
 /**
  * Push DOM Node to Writer
  */
-public class Node2Writer extends TransformerExtension<Node, Writer> implements PushTransformer<Node, Writer> {
+public class Node2Writer extends BaseTransformer<Node, Writer> implements PushTransformer<Node, Writer> {
     private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 
     public void transform(Node source, Writer writer, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java Wed May  2 11:15:41 2007
@@ -23,13 +23,13 @@
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 
 /**
  * Transform DOM Node to XML XMLStreamReader
  */
-public class Node2XMLStreamReader extends TransformerExtension<Node, XMLStreamReader> implements
+public class Node2XMLStreamReader extends BaseTransformer<Node, XMLStreamReader> implements
     PullTransformer<Node, XMLStreamReader> {
 
     public XMLStreamReader transform(Node source, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2Node.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2Node.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2Node.java Wed May  2 11:15:41 2007
@@ -27,13 +27,13 @@
 import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 
 /**
  * Push DOM Reader to Node
  */
-public class Reader2Node extends TransformerExtension<Reader, Node> implements PullTransformer<Reader, Node> {
+public class Reader2Node extends BaseTransformer<Reader, Node> implements PullTransformer<Reader, Node> {
     private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 
     public Node transform(Reader source, TransformationContext context) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2SAX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2SAX.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2SAX.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Reader2SAX.java Wed May  2 11:15:41 2007
@@ -23,14 +23,14 @@
 import org.apache.tuscany.databinding.PushTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 
 /**
  * Transform XML string to SAX
  */
-public class Reader2SAX extends TransformerExtension<Reader, ContentHandler> implements
+public class Reader2SAX extends BaseTransformer<Reader, ContentHandler> implements
     PushTransformer<Reader, ContentHandler> {
     public void transform(Reader source, ContentHandler target, TransformationContext context) {
         try {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java Wed May  2 11:15:41 2007
@@ -22,7 +22,7 @@
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.tuscany.databinding.extension.DOMHelper;
+import org.apache.tuscany.databinding.impl.DOMHelper;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java Wed May  2 11:15:41 2007
@@ -21,11 +21,11 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.apache.tuscany.databinding.DataPipe;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 import org.w3c.dom.Node;
 import org.xml.sax.ContentHandler;
 
-public class SAX2DOMPipe extends TransformerExtension<ContentHandler, Node> implements
+public class SAX2DOMPipe extends BaseTransformer<ContentHandler, Node> implements
     DataPipe<ContentHandler, Node> {
     private SAX2DOM pipe;
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Source2ResultTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Source2ResultTransformer.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Source2ResultTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/Source2ResultTransformer.java Wed May  2 11:15:41 2007
@@ -25,12 +25,12 @@
 import org.apache.tuscany.databinding.PushTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.extension.TransformerExtension;
+import org.apache.tuscany.databinding.impl.BaseTransformer;
 
 /**
  * Transform TrAX Source to Result
  */
-public class Source2ResultTransformer extends TransformerExtension<Source, Result> implements
+public class Source2ResultTransformer extends BaseTransformer<Source, Result> implements
     PushTransformer<Source, Result> {
     private static final TransformerFactory FACTORY = TransformerFactory.newInstance();
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/StAXDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/StAXDataBinding.java?view=diff&rev=534580&r1=534579&r2=534580
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/StAXDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/databinding/xml/StAXDataBinding.java Wed May  2 11:15:41 2007
@@ -23,7 +23,7 @@
 
 import javax.xml.stream.XMLStreamReader;
 
-import org.apache.tuscany.databinding.extension.DataBindingExtension;
+import org.apache.tuscany.databinding.impl.BaseDataBinding;
 import org.apache.tuscany.interfacedef.DataType;
 import org.apache.tuscany.interfacedef.util.XMLType;
 
@@ -32,7 +32,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public class StAXDataBinding extends DataBindingExtension {
+public class StAXDataBinding extends BaseDataBinding {
     public static final String NAME = XMLStreamReader.class.getName();
     public static final String[] ALIASES = new String[] {"stax"};
 



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org