You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/03/17 06:56:54 UTC

svn commit: r519244 [5/5] - in /incubator/tuscany/java/sca/services/databinding/databinding-framework: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/tuscany/ src/main/java/org/apache/tuscany/data...

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformerRegistry.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformerRegistry.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformerRegistry.java Fri Mar 16 22:56:48 2007
@@ -26,7 +26,7 @@
 public interface TransformerRegistry {
     /**
      * Register a transformer
-     *
+     * 
      * @param sourceDataBinding
      * @param targetDataBinding
      * @param weight
@@ -39,35 +39,37 @@
 
     /**
      * Register a transformer
-     *
+     * 
      * @param transformer
      */
     void registerTransformer(Transformer transformer);
 
     /**
      * Unregister a transformer
-     *
+     * 
      * @param sourceDataBinding
      * @param targetDataBinding
-     * @return true if sucessfully unregistered
+     * @return
      */
     boolean unregisterTransformer(String sourceDataBinding, String targetDataBinding);
 
     /**
-     * Get the direct Transformer which can transform data from source type to result type
-     *
+     * Get the direct Transformer which can transform data from source type to
+     * result type
+     * 
      * @param sourceDataBinding
      * @param targetDataBinding
-     * @return the transformer
+     * @return
      */
     Transformer getTransformer(String sourceDataBinding, String targetDataBinding);
 
     /**
-     * Get the a chain of Transformers which can transform data from source type to result type
-     *
+     * Get the a chain of Transformers which can transform data from source type
+     * to result type
+     * 
      * @param sourceDataBinding
      * @param targetDataBinding
-     * @return the list of transformers
+     * @return
      */
     List<Transformer> getTransformerChain(String sourceDataBinding, String targetDataBinding);
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/WrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/WrapperHandler.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/WrapperHandler.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/WrapperHandler.java Fri Mar 16 22:56:48 2007
@@ -19,6 +19,8 @@
 
 package org.apache.tuscany.spi.databinding;
 
+import java.util.List;
+
 import org.apache.tuscany.spi.model.ElementInfo;
 
 /**
@@ -45,12 +47,9 @@
     void setChild(T wrapper, int i, ElementInfo childElement, Object value);
 
     /**
-     * Get child element from the wrapper
-     * 
-     * @param wrapper The wrapper
-     * @param i The index
-     * @param element The XSD element
-     * @return The value of the child
+     * Get a list of child elements from the wrapper
+     * @param wrapper
+     * @return child elements under the wrapper
      */
-    Object getChild(T wrapper, int i, ElementInfo element);
+    List getChildren(T wrapper);
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtension.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtension.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtension.java Fri Mar 16 22:56:48 2007
@@ -18,31 +18,25 @@
  */
 package org.apache.tuscany.spi.databinding.extension;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamClass;
-import java.io.OutputStream;
-import java.io.Serializable;
-
-import org.osoa.sca.annotations.EagerInit;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
 
 import org.apache.tuscany.spi.databinding.DataBinding;
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
+import org.apache.tuscany.spi.databinding.ExceptionHandler;
 import org.apache.tuscany.spi.databinding.SimpleTypeMapper;
 import org.apache.tuscany.spi.databinding.WrapperHandler;
 import org.apache.tuscany.spi.model.DataType;
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
 
 /**
  * Base Implementation of DataBinding
- *
+ * 
  * @version $Rev$ $Date$
  */
 @Service(DataBinding.class)
@@ -55,26 +49,43 @@
     protected Class<?> baseType;
 
     protected String name;
+    protected String[] aliases; 
 
     /**
-     * Create a databinding with the base java type whose name will be used as the name of the databinding
-     *
-     * @param baseType The base java class or interface representing the databinding, for example, org.w3c.dom.Node
+     * Create a databinding with the base java type whose name will be used as
+     * the name of the databinding
+     * 
+     * @param baseType The base java class or interface representing the
+     *            databinding, for example, org.w3c.dom.Node
      */
     protected DataBindingExtension(Class<?> baseType) {
-        this(baseType.getName(), baseType);
+        this(baseType.getName(), null, baseType);
     }
 
     /**
      * Create a databinding with the name and base java type
-     *
-     * @param name     The name of the databinding
-     * @param baseType The base java class or interface representing the databinding, for example, org.w3c.dom.Node
+     * 
+     * @param name The name of the databinding
+     * @param baseType The base java class or interface representing the
+     *            databinding, for example, org.w3c.dom.Node
      */
     protected DataBindingExtension(String name, Class<?> baseType) {
+        this(name, null, baseType);
+    }
+    
+    /**
+     * Create a databinding with the name and base java type
+     * 
+     * @param name The name of the databinding
+     * @param aliases The aliases of the databinding
+     * @param baseType The base java class or interface representing the
+     *            databinding, for example, org.w3c.dom.Node
+     */
+    protected DataBindingExtension(String name, String[] aliases, Class<?> baseType) {
         this.name = name;
         this.baseType = baseType;
-    }
+        this.aliases = aliases;
+    }    
 
     @Reference
     public void setDataBindingRegistry(DataBindingRegistry registry) {
@@ -86,22 +97,43 @@
         registry.register(this);
     }
 
-    public DataType introspect(Class<?> javaType) {
-        if (baseType == null || javaType == null) {
-            return null;
+    @SuppressWarnings("unchecked")
+    public boolean introspect(DataType type, Annotation[] annotations) {
+        assert type != null;
+        Type physical = type.getPhysical();
+        if (physical instanceof ParameterizedType) {
+            physical = ((ParameterizedType)physical).getRawType();
+        }
+        if (physical instanceof Class) {
+            Class cls = (Class)physical;
+            if (baseType != null && baseType.isAssignableFrom(cls)) {
+                type.setDataBinding(getName());
+                type.setLogical(baseType);
+                return true;
+            }
         }
-        if (baseType.isAssignableFrom(javaType)) {
-            return new DataType<Class>(name, javaType, baseType);
-        } else {
-            return null;
+        return false;
+    }
+    
+    protected static org.apache.tuscany.api.annotation.DataType getDataTypeAnnotation(Annotation[] annotations) {
+        for (Annotation a : annotations) {
+            if (a.annotationType() == org.apache.tuscany.api.annotation.DataType.class) {
+                return (org.apache.tuscany.api.annotation.DataType) a;
+            }
         }
+        return null;
     }
 
     public DataType introspect(Object value) {
         if (value == null) {
             return null;
         } else {
-            return introspect(value.getClass());
+            DataType<Class> dataType = new DataType<Class>(value.getClass(), value.getClass());
+            if (introspect(dataType, null)) {
+                return dataType;
+            } else {
+                return null;
+            }
         }
     }
 
@@ -116,64 +148,20 @@
         return null;
     }
 
-    public Object copy(Object arg) {
-        if (arg == null) {
-            return null;
-        }
-        final Class clazz = arg.getClass();
-        if (String.class == clazz || clazz.isPrimitive() || Number.class.isAssignableFrom(clazz)
-            || Boolean.class.isAssignableFrom(clazz) || Character.class.isAssignableFrom(clazz)
-            || Byte.class.isAssignableFrom(clazz)) {
-            // Immutable classes
-            return arg;
-        }
-        try {
-            if (arg instanceof Serializable) {
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
-                ObjectOutputStream oos = getObjectOutputStream(bos);
-                oos.writeObject(arg);
-                oos.close();
-                bos.close();
-
-                ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-                ObjectInputStream ois = getObjectInputStream(bis, clazz.getClassLoader());
-                Object objectCopy = ois.readObject();
-                ois.close();
-                bis.close();
-                return objectCopy;
-            } else {
-                //return arg;
-                throw new IllegalArgumentException(
-                    "Pass-by-value is not supported for the given object");
-            }
-        } catch (Exception e) {
-            throw new IllegalArgumentException(
-                "Pass-by-value is not supported for the given object", e);
-        }
+    public ExceptionHandler getExceptionHandler() {
+        return null;
     }
 
-    protected ObjectOutputStream getObjectOutputStream(OutputStream os) throws IOException {
-        return new ObjectOutputStream(os);
-    }
-
-    protected ObjectInputStream getObjectInputStream(InputStream is, final ClassLoader cl)
-        throws IOException {
-        ObjectInputStream ois = new ObjectInputStream(is) {
-            @Override
-            protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
-                try {
-                    return Class.forName(desc.getName(), false, cl);
-                } catch (ClassNotFoundException e) {
-                    return super.resolveClass(desc);
-                }
-            }
-
-        };
-        return ois;
+    public Object copy(Object object) {
+        return object;
     }
 
     public SimpleTypeMapper getSimpleTypeMapper() {
         return new SimpleTypeMapperExtension();
+    }
+
+    public String[] getAliases() {
+        return aliases;
     }
 
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/Java2SimpleTypeTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/Java2SimpleTypeTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/Java2SimpleTypeTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/Java2SimpleTypeTransformer.java Fri Mar 16 22:56:48 2007
@@ -18,11 +18,12 @@
  */
 package org.apache.tuscany.spi.databinding.extension;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.spi.databinding.PullTransformer;
 import org.apache.tuscany.spi.databinding.SimpleTypeMapper;
 import org.apache.tuscany.spi.databinding.TransformationContext;
-import org.apache.tuscany.spi.model.ElementInfo;
-import org.apache.tuscany.spi.model.TypeInfo;
+import org.apache.tuscany.spi.model.XMLType;
 
 /**
  * Transformer to convert data from a simple java object to a databinding's representation
@@ -41,11 +42,9 @@
     }
 
     public T transform(Object source, TransformationContext context) {
-        ElementInfo element =
-                (ElementInfo) context.getTargetDataType().getMetadata(ElementInfo.class.getName());
-        TypeInfo simpleType = (TypeInfo) element.getType();
-        String text = mapper.toXMLLiteral(simpleType, source, context);
-        return createElement(element, text, context);
+        XMLType xmlType = (XMLType) context.getTargetDataType().getLogical();
+        String text = mapper.toXMLLiteral(xmlType.getTypeName(), source, context);
+        return createElement(xmlType.getElementName(), text, context);
     }
 
     public Class getSourceType() {
@@ -56,6 +55,6 @@
         return 10000;
     }
 
-    protected abstract T createElement(ElementInfo element, String literal, TransformationContext context);
+    protected abstract T createElement(QName element, String literal, TransformationContext context);
 
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleType2JavaTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleType2JavaTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleType2JavaTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleType2JavaTransformer.java Fri Mar 16 22:56:48 2007
@@ -21,13 +21,11 @@
 import org.apache.tuscany.spi.databinding.PullTransformer;
 import org.apache.tuscany.spi.databinding.SimpleTypeMapper;
 import org.apache.tuscany.spi.databinding.TransformationContext;
-import org.apache.tuscany.spi.model.ElementInfo;
-import org.apache.tuscany.spi.model.TypeInfo;
+import org.apache.tuscany.spi.model.XMLType;
 
 /**
- * Transformer to convert data from a databinding's representation of simple types to Java Objects
- *
- * @version $Rev$ $Date$
+ * Transformer to convert data from a databinding's representation of simple
+ * types to Java Objects
  */
 public abstract class SimpleType2JavaTransformer<T> extends TransformerExtension<T, Object> implements
     PullTransformer<T, Object> {
@@ -43,14 +41,8 @@
     }
 
     public Object transform(T source, TransformationContext context) {
-        TypeInfo simpleType = (TypeInfo) context.getSourceDataType().getMetadata(TypeInfo.class.getName());
-        if (simpleType == null) {
-            ElementInfo element =
-                (ElementInfo) context.getSourceDataType().getMetadata(ElementInfo.class.getName());
-            simpleType = element.getType();
-        }
-
-        return mapper.toJavaObject(simpleType, getText(source), context);
+        XMLType xmlType = (XMLType) context.getSourceDataType().getLogical();
+        return mapper.toJavaObject(xmlType.getTypeName(), getText(source), context);
     }
 
     public Class getTargetType() {
@@ -64,8 +56,7 @@
 
     /**
      * Get the string value from the source
-     *
-     * @param source the source to return the string from
+     * @param source
      * @return A string
      */
     protected abstract String getText(T source);

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java Fri Mar 16 22:56:48 2007
@@ -36,11 +36,6 @@
 
 public class SimpleTypeMapperExtension extends XSDDataTypeConverter implements SimpleTypeMapper {
 
-    public static final int BASE64_ENCODING = 1;
-    public static final int HEXBIN_ENCODING = 2;
-
-    public static final String SET = "set";
-
     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";
@@ -218,7 +213,6 @@
         XML2JAVA.put("NOTATION", javax.xml.namespace.QName.class);
     }
 
-    private int byteEncoding = BASE64_ENCODING;
     private DatatypeFactory factory;
 
     public SimpleTypeMapperExtension() {
@@ -230,19 +224,19 @@
         }
     }
 
-    public Class getJavaType(TypeInfo xmlType) {
-        TypeInfo baseType = xmlType;
-        while (baseType.getBaseType() != null) {
-            baseType = baseType.getBaseType();
+    public Class getJavaType(QName xmlType) {
+        if (URI_2001_SCHEMA_XSD.equals(xmlType.getNamespaceURI())) {
+            return XML2JAVA.get(xmlType.getLocalPart());
+        } else {
+            return null;
         }
-        return XML2JAVA.get(baseType.getQName().getLocalPart());
     }
 
     public TypeInfo getXMLType(Class javaType) {
         return XSD_SIMPLE_TYPES.get(JAVA2XML.get(javaType));
     }
 
-    public Object toJavaObject(TypeInfo simpleType, String literal, TransformationContext context) {
+    public Object toJavaObject(QName simpleType, String literal, TransformationContext context) {
         /**
          * <ul>
          * <li>xsd:string --- java.lang.String
@@ -278,15 +272,8 @@
             return null;
         }
         String value = literal.trim();
-        if (!simpleType.isSimpleType()) {
-            throw new IllegalArgumentException("Complex type is not supported for simple java databinding.");
-        }
-        TypeInfo baseType = simpleType;
-        while (baseType.getBaseType() != null) {
-            baseType = (TypeInfo)baseType.getBaseType();
-        }
 
-        QName type = baseType.getQName();
+        QName type = simpleType;
         if (type.equals(XSD_STRING)) {
             return parseString(value);
         } else if (type.equals(XSD_INT)) {
@@ -364,7 +351,7 @@
         return factory.newXMLGregorianCalendar(calendar);
     }
 
-    public String toXMLLiteral(TypeInfo simpleType, Object obj, TransformationContext context) {
+    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());
@@ -380,17 +367,12 @@
             return ((XMLGregorianCalendar)obj).toXMLFormat();
         } else if (obj instanceof byte[]) {
             if (simpleType != null) {
-                if (simpleType.getQName().equals(XSD_BASE64)) {
-                    byteEncoding = BASE64_ENCODING;
-                } else if (simpleType.getQName().equals(XSD_HEXBIN)) {
-                    byteEncoding = BASE64_ENCODING;
+                if (simpleType.equals(XSD_BASE64)) {
+                    return printBase64Binary((byte[])obj);
+                } else if (simpleType.equals(XSD_HEXBIN)) {
+                    return printHexBinary((byte[])obj);
                 }
             }
-            if (byteEncoding == BASE64_ENCODING) {
-                return printBase64Binary((byte[])obj);
-            } else if (byteEncoding == HEXBIN_ENCODING) {
-                return printHexBinary((byte[])obj);
-            }
         } else if (obj instanceof QName) {
             NamespaceContext namespaceContext =
                 (NamespaceContext)((context != null) ? context.getMetadata().get(NamespaceContext.class) : null);
@@ -400,16 +382,11 @@
     }
 
     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;
-    }
-
-    public int getByteEncoding() {
-        return byteEncoding;
-    }
-
-    public void setByteEncoding(int byteEncoding) {
-        this.byteEncoding = byteEncoding;
     }
 
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/TransformerExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/TransformerExtension.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/TransformerExtension.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/TransformerExtension.java Fri Mar 16 22:56:48 2007
@@ -18,14 +18,13 @@
  */
 package org.apache.tuscany.spi.databinding.extension;
 
+import org.apache.tuscany.spi.databinding.Transformer;
+import org.apache.tuscany.spi.databinding.TransformerRegistry;
 import org.osoa.sca.annotations.EagerInit;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Reference;
 import org.osoa.sca.annotations.Scope;
 import org.osoa.sca.annotations.Service;
-
-import org.apache.tuscany.spi.databinding.Transformer;
-import org.apache.tuscany.spi.databinding.TransformerRegistry;
 
 /**
  * Base Implementation of Transformer which provides the registration to the transformer registry

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/core/databinding.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/core/databinding.scdl?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/core/databinding.scdl (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/core/databinding.scdl Fri Mar 16 22:56:48 2007
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.    
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+    name="org.apache.tuscany.core.DataBinding">
+
+    <component name="databinding.wirePostProcessor" initLevel="50">
+        <system:implementation.system class="org.apache.tuscany.core.databinding.wire.DataBindingWirePostProcessor" />
+    </component>
+
+    <component name="databinding.javaInterfaceProcessor">
+        <system:implementation.system class="org.apache.tuscany.core.databinding.processor.DataBindingJavaInterfaceProcessor" />
+    </component>
+
+    <!-- [rfeng] HACK: Make sure the passByValue interceptor is added before the databinding interceptor -->
+    <!-- 
+        <component name="databinding.passByValueWirePostProcessor" initLevel="80">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.PassByValueWirePostProcessor" />
+        </component>
+    -->
+
+    <!-- DataBinding registry -->
+    <component name="databinding.registry">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.DataBindingRegistryImpl" />
+    </component>
+
+    <!-- DataBinding registry -->
+    <component name="databinding.mediator">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.MediatorImpl" />
+    </component>
+
+    <!-- Transformer registry -->
+    <component name="databinding.transformerRegistry" initLevel="90">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.TransformerRegistryImpl" />
+    </component>
+
+    <component name="dataType.loader">
+        <system:implementation.system class="org.apache.tuscany.core.databinding.loader.DataTypeLoader" />
+    </component>
+
+    <component name="databinding.dom">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.DOMDataBinding" />
+    </component>
+
+    <component name="databinding.xmlString">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.XMLStringDataBinding" />
+    </component>
+
+    <!-- Group databindings -->
+    <component name="databinding.group.xml">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.XMLGroupDataBinding" />
+    </component>
+
+    <!-- Comment out the stax databinding as it's covered in the databinding.group.xml -->
+    <!-- 
+        <component name="databinding.stax">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.StAXDataBinding" />
+        </component>
+    -->
+    <component name="databinding.javabeans">
+        <system:implementation.system class="org.apache.tuscany.databinding.javabeans.JavaBeansDataBinding" />
+    </component>
+
+    <!-- Transformers -->
+
+    <component name="transformer.Input2InputTransformer">
+        <system:implementation.system class="org.apache.tuscany.core.databinding.transformers.Input2InputTransformer" />
+    </component>
+
+    <component name="transformer.Exception2ExceptionTransformer">
+        <system:implementation.system class="org.apache.tuscany.core.databinding.transformers.Exception2ExceptionTransformer" />
+    </component>
+
+    <component name="transformer.Output2OutputTransformer">
+        <system:implementation.system class="org.apache.tuscany.core.databinding.transformers.Output2OutputTransformer" />
+    </component>
+
+    <component name="transformer.Group2GroupTransformer">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.Group2GroupTransformer" />
+    </component>
+
+    <component name="transformer.InputSource2Node">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.InputSource2Node" />
+    </component>
+
+    <component name="transformer.InputSource2SAX">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.InputSource2SAX" />
+    </component>
+
+    <component name="transformer.InputStream2Node">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.InputStream2Node" />
+    </component>
+
+    <component name="transformer.InputStream2SAX">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.InputStream2SAX" />
+    </component>
+
+    <component name="transformer.DOMNode2JavaBean">
+        <system:implementation.system class="org.apache.tuscany.databinding.javabeans.DOMNode2JavaBeanTransformer" />
+    </component>
+
+    <component name="transformer.Node2OutputStream">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Node2OutputStream" />
+    </component>
+
+    <component name="transformer.Node2String">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Node2String" />
+    </component>
+
+    <component name="transformer.Node2Writer">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Node2Writer" />
+    </component>
+
+    <component name="transformer.Node2XMLStreamReader">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Node2XMLStreamReader" />
+    </component>
+
+    <component name="transformer.JavaBean2DOMNode">
+        <system:implementation.system class="org.apache.tuscany.databinding.javabeans.JavaBean2DOMNodeTransformer" />
+    </component>
+
+    <component name="transformer.Reader2Node">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Reader2Node" />
+    </component>
+
+    <component name="transformer.Reader2SAX">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Reader2SAX" />
+    </component>
+
+    <component name="transformer.SAX2DOMPipe">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.SAX2DOMPipe" />
+    </component>
+
+    <component name="transformer.Source2ResultTransformer">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Source2ResultTransformer" />
+    </component>
+
+    <component name="transformer.StreamDataPipe">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.StreamDataPipe" />
+    </component>
+
+    <component name="transformer.String2Node">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.String2Node" />
+    </component>
+
+    <component name="transformer.String2SAX">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.String2SAX" />
+    </component>
+
+    <component name="transformer.String2XMLStreamReader">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.String2XMLStreamReader" />
+    </component>
+
+    <component name="transformer.Writer2ReaderDataPipe">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.Writer2ReaderDataPipe" />
+    </component>
+
+    <component name="transformer.XMLStreamReader2Node">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.XMLStreamReader2Node" />
+    </component>
+
+    <component name="transformer.XMLStreamReader2SAX">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.XMLStreamReader2SAX" />
+    </component>
+
+    <component name="transformer.XMLStreamReader2String">
+        <system:implementation.system class="org.apache.tuscany.databinding.xml.XMLStreamReader2String" />
+    </component>
+</composite>
\ No newline at end of file

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,15 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
 
+import java.lang.annotation.Annotation;
+
 import javax.xml.stream.XMLStreamReader;
 
-import junit.framework.Assert;
 import junit.framework.TestCase;
 
 import org.apache.tuscany.spi.databinding.DataBinding;
@@ -47,41 +48,51 @@
         registry = new DataBindingRegistryImpl();
     }
 
+    @SuppressWarnings("unchecked")
     public void testRegistry() {
         DataBinding db1 = createMock(DataBinding.class);
+        expect(db1.getAliases()).andReturn(new String[] {"db1"}).anyTimes();
         expect(db1.getName()).andReturn(ContentHandler.class.getName()).anyTimes();
         DataType<Class> dataType1 = new DataType<Class>(ContentHandler.class, ContentHandler.class);
-        expect(db1.introspect(ContentHandler.class)).andReturn(dataType1);
-        expect(db1.introspect((Class)EasyMock.anyObject())).andReturn(null).anyTimes();
+        expect(db1.introspect(dataType1, null)).andReturn(true);
+        expect(db1.introspect(EasyMock.not(EasyMock.same(dataType1)), (Annotation[])EasyMock.isNull()))
+            .andReturn(false).anyTimes();
         replay(db1);
 
         registry.register(db1);
 
         DataBinding db2 = createMock(DataBinding.class);
+        expect(db2.getAliases()).andReturn(new String[] {"db2"}).anyTimes();
         expect(db2.getName()).andReturn(XMLStreamReader.class.getName()).anyTimes();
         DataType<Class> dataType2 = new DataType<Class>(XMLStreamReader.class, XMLStreamReader.class);
-        expect(db2.introspect(XMLStreamReader.class)).andReturn(dataType2);
-        expect(db2.introspect((Class)EasyMock.anyObject())).andReturn(null).anyTimes();
+        expect(db2.introspect(dataType2, null)).andReturn(true);
+        expect(db2.introspect(EasyMock.not(EasyMock.same(dataType2)), (Annotation[])EasyMock.isNull()))
+            .andReturn(false).anyTimes();
         replay(db2);
 
         registry.register(db2);
 
+        // Lookup by name
         String name = db1.getName();
         DataBinding db3 = registry.getDataBinding(name);
-        Assert.assertTrue(db1 == db3);
+        assertSame(db1, db3);
 
-        DataType<?> dt = registry.introspectType(ContentHandler.class);
-        Assert.assertEquals(dataType1, dt);
-        Assert.assertTrue(dt.getDataBinding().equalsIgnoreCase(name));
+        // Look up by alias
+        DataBinding db5 = registry.getDataBinding("db1");
+        assertSame(db1, db5);
+        
+        DataType dt = new DataType(ContentHandler.class, null);
+        registry.introspectType(dt, null);
+        assertEquals(dataType1.getLogical(), ContentHandler.class);
+        assertTrue(dt.getDataBinding().equalsIgnoreCase("java.lang.Object"));
 
         registry.unregister(name);
         DataBinding db4 = registry.getDataBinding(name);
-        Assert.assertNull(db4);
-        
-       
-        dt = registry.introspectType(ContentHandler.class);
-        Assert.assertNotNull(dt);
-        Assert.assertEquals("java.lang.Object", dt.getDataBinding());
+        assertNull(db4);
+
+        dt = new DataType(null, String.class, null);
+        registry.introspectType(dt, null);
+        assertEquals("java.lang.Object", dt.getDataBinding());
     }
 
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,14 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.lang.reflect.Method;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.api.annotation.DataContext;
 import org.apache.tuscany.api.annotation.DataType;
 
 public class DataBindingTestCase extends TestCase {
@@ -32,18 +31,15 @@
         Class<Test> testClass = Test.class;
         DataType d = testClass.getAnnotation(DataType.class);
         Assert.assertEquals(d.name(), "sdo");
-        Assert.assertEquals(d.context().length, 0);
 
         Method method = testClass.getMethod("test", new Class[] {Object.class});
         DataType d2 = method.getAnnotation(DataType.class);
         Assert.assertEquals(d2.name(), "jaxb");
-        Assert.assertEquals(d2.context()[0].key(), "contextPath");
-        Assert.assertEquals(d2.context()[0].value(), "com.example.ipo.jaxb");
     }
 
     @DataType(name = "sdo")
     private static interface Test {
-        @DataType(name = "jaxb", context = {@DataContext(key = "contextPath", value = "com.example.ipo.jaxb")})
+        @DataType(name = "jaxb")
         Object test(Object object);
     }
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DirectedGraphTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DirectedGraphTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DirectedGraphTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DirectedGraphTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,15 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.util.List;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.core.databinding.impl.DirectedGraph.Edge;
-import org.apache.tuscany.core.databinding.impl.DirectedGraph.Vertex;
+import org.apache.tuscany.databinding.impl.DirectedGraph;
+import org.apache.tuscany.databinding.impl.DirectedGraph.Edge;
+import org.apache.tuscany.databinding.impl.DirectedGraph.Vertex;
 
 public class DirectedGraphTestCase extends TestCase {
     private DirectedGraph<String, Object> graph;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/MediatorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/MediatorImplTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/MediatorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/MediatorImplTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.io.StringWriter;
 import java.io.Writer;
@@ -24,10 +24,14 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.core.databinding.xml.Node2String;
-import org.apache.tuscany.core.databinding.xml.Node2Writer;
-import org.apache.tuscany.core.databinding.xml.SAX2DOMPipe;
-import org.apache.tuscany.core.databinding.xml.String2SAX;
+import org.apache.tuscany.databinding.impl.DataBindingRegistryImpl;
+import org.apache.tuscany.databinding.impl.MediatorImpl;
+import org.apache.tuscany.databinding.impl.TransformationContextImpl;
+import org.apache.tuscany.databinding.impl.TransformerRegistryImpl;
+import org.apache.tuscany.databinding.xml.Node2String;
+import org.apache.tuscany.databinding.xml.Node2Writer;
+import org.apache.tuscany.databinding.xml.SAX2DOMPipe;
+import org.apache.tuscany.databinding.xml.String2SAX;
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.databinding.TransformerRegistry;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/TransformerRegistryImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/TransformerRegistryImplTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/TransformerRegistryImplTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/TransformerRegistryImplTestCase.java Fri Mar 16 22:56:48 2007
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
@@ -28,6 +28,7 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
+import org.apache.tuscany.databinding.impl.TransformerRegistryImpl;
 import org.apache.tuscany.spi.databinding.Transformer;
 import org.apache.tuscany.spi.databinding.TransformerRegistry;
 

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformerTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformerTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformerTestCase.java Fri Mar 16 22:56:48 2007
@@ -17,27 +17,29 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import java.io.StringReader;
 import java.io.StringWriter;
+
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
+import junit.framework.TestCase;
 
+import org.apache.tuscany.databinding.javabeans.DOMNode2JavaBeanTransformer;
+import org.apache.tuscany.databinding.javabeans.JavaBean2DOMNodeTransformer;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.databinding.extension.DOMHelper;
-import org.apache.tuscany.spi.model.ElementInfo;
-import org.apache.tuscany.spi.model.TypeInfo;
 import org.apache.tuscany.spi.model.DataType;
-
-import junit.framework.TestCase;
+import org.apache.tuscany.spi.model.TypeInfo;
+import org.apache.tuscany.spi.model.XMLType;
 import org.easymock.EasyMock;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
 
 /**
  * Testcase to test the XMLTypeMapperExtension which is the back bone for all transformations supported by the JavaBeans
@@ -46,7 +48,15 @@
  * @version $Rev$ $Date$
  */
 public class DOMNode2JavaBeanTransformerTestCase extends TestCase {
-    private DOMNode2JavaBeanTransformer dom2JavaTransformer = new DOMNode2JavaBeanTransformer();
+
+   private DOMNode2JavaBeanTransformer dom2JavaTransformer = new DOMNode2JavaBeanTransformer();
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
 
     public void testFieldSettings() throws Exception {
         String samplePropertyXML =
@@ -65,12 +75,12 @@
         TypeInfo typeInfo = new TypeInfo(null, false, null);
 
         TransformationContext context = EasyMock.createMock(TransformationContext.class);
-        DataType<Class> targetDataType = new DataType<Class>(null, SamplePropertyBean.class);
+        DataType<Class> targetDataType = new DataType<Class>(SamplePropertyBean.class, SamplePropertyBean.class);
         EasyMock.expect(context.getTargetDataType()).andReturn(targetDataType).anyTimes();
 
-        DataType<Class> sourceDataType = new DataType<Class>(null, null);
-        ElementInfo eleInfo = new ElementInfo(null, typeInfo);
-        sourceDataType.setMetadata(ElementInfo.class.getName(), eleInfo);
+        DataType<XMLType> sourceDataType = new DataType<XMLType>(null, new XMLType(typeInfo));
+        // ElementInfo eleInfo = new ElementInfo(null, typeInfo);
+        // sourceDataType.setMetadata(ElementInfo.class.getName(), eleInfo);
         EasyMock.expect(context.getSourceDataType()).andReturn(sourceDataType).anyTimes();
         EasyMock.replay(context);
 
@@ -113,14 +123,12 @@
 
     }
 
-    protected void setUp() throws Exception {
-        super.setUp();
-    }
 
-    private static class SamplePropertyBean {
-        public boolean[] boolArray;
+    public static class SamplePropertyBean {
+
         private float floatNumber = 50;
         private SamplePropertyBean innerProperty;
+        public boolean[] boolArray;
         private double doubleNumber = 75;
         private int integerNumber = 25;
         private String[] stringArray;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformerTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformerTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformerTestCase.java Fri Mar 16 22:56:48 2007
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import java.io.StringWriter;
 import javax.xml.transform.TransformerFactory;
@@ -26,6 +26,7 @@
 
 import org.w3c.dom.Node;
 
+import org.apache.tuscany.databinding.javabeans.JavaBean2DOMNodeTransformer;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.model.DataType;
 
@@ -61,6 +62,7 @@
         StringWriter sw = new StringWriter();
         transformer.transform(new DOMSource(aNode), new StreamResult(sw));
 
+        System.out.println(sw.toString());
         assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><int_collection><int>10</int><int>20</int>"
             + "<int>30</int><int>40</int></int_collection>",
             sw.toString());

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DOM2StAXTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DOM2StAXTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DOM2StAXTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DOM2StAXTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,13 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.xml;
+package org.apache.tuscany.databinding.xml;
 
 import javax.xml.stream.XMLStreamReader;
 
-import junit.framework.Assert;
 import junit.framework.TestCase;
 
+import org.apache.tuscany.databinding.xml.Node2XMLStreamReader;
+import org.apache.tuscany.databinding.xml.String2Node;
+import org.apache.tuscany.databinding.xml.XMLStreamReader2String;
 import org.w3c.dom.Node;
 
 public class DOM2StAXTestCase extends TestCase {
@@ -56,6 +58,10 @@
             + "  </items>"
             + "</ipo:purchaseOrder>";
 
+    private static final String CRAZY_XML =
+        "<p:e1 xmlns=\"http://ns0\" xmlns:p=\"http://p1\">" 
+        + "<p:e2 xmlns:p=\"http://p2\"/><e3/><e4 xmlns=\"\">E4</e4></p:e1>";
+
     /**
      * @see junit.framework.TestCase#setUp()
      */
@@ -70,7 +76,17 @@
         XMLStreamReader reader = t2.transform(node, null);
         XMLStreamReader2String t3 = new XMLStreamReader2String();
         String xml = t3.transform(reader, null);
-        Assert.assertTrue(xml != null && xml.indexOf("<shipDate>1999-12-05</shipDate>") != -1);
+        assertTrue(xml != null && xml.indexOf("<shipDate>1999-12-05</shipDate>") != -1);
     }
 
+    public void testTransformation2() {
+        String2Node t1 = new String2Node();
+        Node node = t1.transform(CRAZY_XML, null);
+        Node2XMLStreamReader t2 = new Node2XMLStreamReader();
+        XMLStreamReader reader = t2.transform(node, null);
+        XMLStreamReader2String t3 = new XMLStreamReader2String();
+        String xml = t3.transform(reader, null);
+        System.out.println(xml);
+        assertTrue(xml.contains("<p:e2 xmlns:p=\"http://p2\""));
+    }
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DataPipeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DataPipeTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DataPipeTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DataPipeTestCase.java Fri Mar 16 22:56:48 2007
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.xml;
+package org.apache.tuscany.databinding.xml;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,7 +28,10 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.core.databinding.impl.PipedTransformer;
+import org.apache.tuscany.databinding.impl.PipedTransformer;
+import org.apache.tuscany.databinding.xml.Node2Writer;
+import org.apache.tuscany.databinding.xml.StreamDataPipe;
+import org.apache.tuscany.databinding.xml.Writer2ReaderDataPipe;
 import org.apache.tuscany.spi.databinding.extension.DOMHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java Fri Mar 16 22:56:48 2007
@@ -0,0 +1,134 @@
+/*
+ * 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.xml;
+
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.databinding.javabeans.JavaBean2XMLStreamReader;
+import org.apache.tuscany.databinding.xml.XMLStreamReader2String;
+
+public class JavaBean2XMLStreamReaderTestCase extends TestCase {
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    public void testTransformation() {
+        JavaBean2XMLStreamReader t2 = new JavaBean2XMLStreamReader();
+        MyBean bean = new MyBean();
+        bean.str = "ABC";
+        bean.i = 1;
+        bean.arr = new long[] {1, 2, 3};
+        bean.bean = new AnotherBean();
+        bean.bean.setName("Name");
+        XMLStreamReader reader = t2.transform(bean, null);
+        XMLStreamReader2String t3 = new XMLStreamReader2String();
+        String xml = t3.transform(reader, null);
+        assertTrue(xml.contains("<JavaBean2XMLStreamReaderTestCase$MyBean>" 
+                     + "<arr>1</arr><arr>2</arr><arr>3</arr><bean><name>Name</name></bean>"
+                     + "<i>1</i><str>ABC</str></JavaBean2XMLStreamReaderTestCase$MyBean>"));
+    }
+
+    private static class MyBean {
+        private String str;
+        private int i;
+        private long arr[];
+        private AnotherBean bean;
+
+        /**
+         * @return the arr
+         */
+        public long[] getArr() {
+            return arr;
+        }
+
+        /**
+         * @param arr the arr to set
+         */
+        public void setArr(long[] arr) {
+            this.arr = arr;
+        }
+
+        /**
+         * @return the i
+         */
+        public int getI() {
+            return i;
+        }
+
+        /**
+         * @param i the i to set
+         */
+        public void setI(int i) {
+            this.i = i;
+        }
+
+        /**
+         * @return the str
+         */
+        public String getStr() {
+            return str;
+        }
+
+        /**
+         * @param str the str to set
+         */
+        public void setStr(String str) {
+            this.str = str;
+        }
+
+        /**
+         * @return the bean
+         */
+        public AnotherBean getBean() {
+            return bean;
+        }
+
+        /**
+         * @param bean the bean to set
+         */
+        public void setBean(AnotherBean bean) {
+            this.bean = bean;
+        }
+
+    }
+
+    private static class AnotherBean {
+        private String name;
+
+        /**
+         * @return the name
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * @param name the name to set
+         */
+        public void setName(String name) {
+            this.name = name;
+        }
+    }
+
+}

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/Node2StringTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/Node2StringTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/Node2StringTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/Node2StringTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,10 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.xml;
+package org.apache.tuscany.databinding.xml;
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.databinding.xml.Node2String;
 import org.apache.tuscany.spi.databinding.extension.DOMHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/PushTransformationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/PushTransformationTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/PushTransformationTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/PushTransformationTestCase.java Fri Mar 16 22:56:48 2007
@@ -16,14 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.xml;
+package org.apache.tuscany.databinding.xml;
 
 import javax.xml.stream.XMLStreamReader;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.core.databinding.impl.PipedTransformer;
+import org.apache.tuscany.databinding.impl.PipedTransformer;
+import org.apache.tuscany.databinding.xml.Node2String;
+import org.apache.tuscany.databinding.xml.SAX2DOMPipe;
+import org.apache.tuscany.databinding.xml.String2XMLStreamReader;
+import org.apache.tuscany.databinding.xml.XMLStreamReader2SAX;
 import org.w3c.dom.Node;
 import org.xml.sax.ContentHandler;
 

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/StAXHelperTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/StAXHelperTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/StAXHelperTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/StAXHelperTestCase.java Fri Mar 16 22:56:48 2007
@@ -17,9 +17,11 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.xml;
+package org.apache.tuscany.databinding.xml;
 
 import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.databinding.xml.StAXHelper;
 
 import junit.framework.TestCase;
 

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/TraxTransformerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/TraxTransformerTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/TraxTransformerTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/TraxTransformerTestCase.java Fri Mar 16 22:56:48 2007
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.xml;
+package org.apache.tuscany.databinding.xml;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -30,6 +30,13 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.databinding.xml.InputSource2Node;
+import org.apache.tuscany.databinding.xml.InputSource2SAX;
+import org.apache.tuscany.databinding.xml.InputStream2Node;
+import org.apache.tuscany.databinding.xml.InputStream2SAX;
+import org.apache.tuscany.databinding.xml.Node2OutputStream;
+import org.apache.tuscany.databinding.xml.Node2Writer;
+import org.apache.tuscany.databinding.xml.Reader2Node;
 import org.w3c.dom.Node;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtensionTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtensionTestCase.java Fri Mar 16 22:56:48 2007
@@ -22,6 +22,7 @@
 import junit.framework.TestCase;
 
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
+import org.apache.tuscany.spi.model.DataType;
 import org.easymock.EasyMock;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -38,11 +39,14 @@
         super.setUp();
     }
 
+    @SuppressWarnings("unchecked")
     public void testExtension() {
         DataBinding1 binding1 = new DataBinding1(Node.class);
         assertEquals(Node.class.getName(), binding1.getName());
-        assertNotNull(binding1.introspect(Element.class));
-        assertNull(binding1.introspect(String.class));
+        DataType dt1 = new DataType(Element.class, null);
+        assertTrue(binding1.introspect(dt1, null));
+        DataType dt2 = new DataType(String.class, null);
+        assertFalse(binding1.introspect(dt2, null));
         assertNull(binding1.getWrapperHandler());
         
         DataBindingRegistry registry = EasyMock.createMock(DataBindingRegistry.class);

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtensionTestCase.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtensionTestCase.java Fri Mar 16 22:56:48 2007
@@ -28,7 +28,6 @@
 
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.model.TypeInfo;
-
 import org.easymock.EasyMock;
 
 /**
@@ -49,18 +48,6 @@
         SAMPLE_VALUES.put("duration", new String[] {"P8M3DT7H33M2S", "P5Y2M10DT15H"});
         SAMPLE_VALUES.put("float", new String[] {"3.1415292", "INF", "NaN"});
         SAMPLE_VALUES.put("gDay", "---11");
-        /*
-         * The value space of xsd:gMonth is the period of one calendar month recurring 
-         * each calendar year (such as the month of April). Its lexical space should 
-         * follow the ISO 8601 syntax for such periods (i.e., -- MM) with an optional 
-         * time zone.
-         * Tip: There's a typo in the W3C XML Schema Recommendation, in which the format 
-         * is defined as -- MM -- --. Even though an erratum should be published to 
-         * bring the W3C XML Schema inline with ISO 8601, most current schema processors 
-         * expect the (bogus) -- MM -- -- format.
-         * 
-         * The test might be broken in JDK 1.6
-         */
         SAMPLE_VALUES.put("gMonth", "--02--");
         SAMPLE_VALUES.put("gMonthDay", "--02-14");
         SAMPLE_VALUES.put("gYear", "1999");
@@ -109,15 +96,15 @@
             Object value = SAMPLE_VALUES.get(name);
             if (value instanceof String[]) {
                 for (String s : (String[])value) {
-                    Object obj = extension.toJavaObject(simpleType, s, context);
-                    String str = extension.toXMLLiteral(simpleType, obj, context);
+                    Object obj = extension.toJavaObject(simpleType.getQName(), s, context);
+                    String str = extension.toXMLLiteral(simpleType.getQName(), obj, context);
                     assertNotNull(str);
                     // assertTrue("[" + name + "] " + s + " " + str,
                     // str.contains((String) s));
                 }
             } else if (value instanceof String) {
-                Object obj = extension.toJavaObject(simpleType, (String)value, context);
-                String str = extension.toXMLLiteral(simpleType, obj, context);
+                Object obj = extension.toJavaObject(simpleType.getQName(), (String)value, context);
+                String str = extension.toXMLLiteral(simpleType.getQName(), obj, context);
                 assertNotNull(str);
                 // assertTrue("[" + name + "] " + value + " " + str,
                 // str.contains((String) value));

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd Fri Mar 16 22:56:48 2007
@@ -0,0 +1,136 @@
+<!--
+ * 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.
+-->
+<schema targetNamespace="http://www.example.com/IPO"
+	xmlns="http://www.w3.org/2001/XMLSchema"
+	xmlns:ipo="http://www.example.com/IPO">
+
+	<annotation>
+		<documentation xml:lang="en">
+			International Purchase order schema for Example.com
+			Copyright 2000 Example.com. All rights reserved.
+		</documentation>
+	</annotation>
+
+
+	<element name="purchaseOrder" type="ipo:PurchaseOrderType" />
+
+	<element name="comment" type="string" />
+
+	<complexType name="PurchaseOrderType">
+		<sequence>
+			<element name="shipTo" type="ipo:Address" />
+			<element name="billTo" type="ipo:Address" />
+			<element ref="ipo:comment" minOccurs="0" />
+			<element name="items" type="ipo:Items" />
+		</sequence>
+		<attribute name="orderDate" type="date" />
+	</complexType>
+
+	<complexType name="Items">
+		<sequence>
+			<element name="item" minOccurs="0" maxOccurs="unbounded">
+				<complexType>
+					<sequence>
+						<element name="productName" type="string" />
+						<element name="quantity">
+							<simpleType>
+								<restriction base="positiveInteger">
+									<maxExclusive value="100" />
+								</restriction>
+							</simpleType>
+						</element>
+						<element name="USPrice" type="decimal" />
+						<element ref="ipo:comment" minOccurs="0" />
+						<element name="shipDate" type="date"
+							minOccurs="0" />
+					</sequence>
+					<attribute name="partNum" type="ipo:SKU"
+						use="required" />
+				</complexType>
+			</element>
+		</sequence>
+	</complexType>
+
+	<simpleType name="SKU">
+		<restriction base="string">
+			<pattern value="\d{3}-[A-Z]{2}" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="Address">
+		<sequence>
+			<element name="name" type="string" />
+			<element name="street" type="string" />
+			<element name="city" type="string" />
+		</sequence>
+	</complexType>
+
+	<complexType name="USAddress">
+		<complexContent>
+			<extension base="ipo:Address">
+				<sequence>
+					<element name="state" type="ipo:USState" />
+					<element name="zip" type="positiveInteger" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="UKAddress">
+		<complexContent>
+			<extension base="ipo:Address">
+				<sequence>
+					<element name="postcode" type="ipo:UKPostcode" />
+				</sequence>
+				<attribute name="exportCode" type="positiveInteger"
+					fixed="1" />
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<!-- other Address derivations for more countries -->
+
+	<simpleType name="USState">
+		<restriction base="string">
+			<enumeration value="AK" />
+			<enumeration value="AL" />
+			<enumeration value="AR" />
+			<enumeration value="CA" />
+			<enumeration value="PA" />
+			<!-- and so on ... -->
+		</restriction>
+	</simpleType>
+
+	<simpleType name="Postcode">
+		<restriction base="string">
+			<length value="7" fixed="true" />
+		</restriction>
+	</simpleType>
+
+
+	<simpleType name="UKPostcode">
+		<restriction base="ipo:Postcode">
+			<pattern value="[A-Z]{2}\d\s\d[A-Z]{2}" />
+		</restriction>
+	</simpleType>
+
+
+
+</schema>
+

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/order.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/order.wsdl?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/order.wsdl (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/order.wsdl Fri Mar 16 22:56:48 2007
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<!--
+ * 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.
+-->
+<definitions name="StockQuote" targetNamespace="http://example.com/order.wsdl" xmlns:tns="http://example.com/order.wsdl"
+    xmlns:xsd1="http://example.com/order.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+    <types>
+        <schema targetNamespace="http://example.com/order.xsd" xmlns="http://www.w3.org/2001/XMLSchema"
+            xmlns:ipo="http://www.example.com/IPO">
+            <import namespace="http://www.example.com/IPO" schemaLocation="ipo.xsd"/>
+            <element name="checkOrderStatus">
+                <complexType>
+                    <sequence>
+                        <element name="customerId" type="string" />
+                        <element name="order" type="ipo:PurchaseOrderType" />
+                        <element name="flag" type="int" />
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="checkOrderStatusResponse">
+                <complexType>
+                    <sequence>
+                        <element name="status" type="string" />
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="note" type="string" />
+        </schema>
+    </types>
+
+    <message name="CheckOrderStatusInput1">
+        <part name="body" element="xsd1:checkOrderStatus" />
+    </message>
+
+    <message name="CheckOrderStatusOutput1">
+        <part name="body" element="xsd1:checkOrderStatusResponse" />
+    </message>
+
+    <message name="CheckOrderStatusInput2">
+        <part name="p1" element="xsd1:checkOrderStatus" />
+        <part name="p2" element="xsd1:note" />
+    </message>
+
+    <message name="CheckOrderStatusOutput2">
+        <part name="p1" element="xsd1:checkOrderStatusResponse" />
+    </message>
+
+    <portType name="OrderPortType">
+        <operation name="checkOrderStatus">
+            <input message="tns:CheckOrderStatusInput1" />
+            <output message="tns:CheckOrderStatusOutput1" />
+        </operation>
+        <operation name="checkOrderStatus2">
+            <input message="tns:CheckOrderStatusInput2" />
+            <output message="tns:CheckOrderStatusOutput2" />
+        </operation>
+    </portType>
+
+</definitions>
\ No newline at end of file

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml Fri Mar 16 22:56:48 2007
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<f:foo xmlns:f="http://foo" name="foo">
+    <b:bar xmlns:b="http://bar">bar</b:bar>
+</f:foo>    
\ No newline at end of file

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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