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 2006/08/17 07:43:00 UTC

svn commit: r432155 [2/3] - in /incubator/tuscany/java/sca/databinding/databinding-framework: ./ src/main/java/org/apache/tuscany/databinding/ src/main/java/org/apache/tuscany/databinding/annotation/ src/main/java/org/apache/tuscany/databinding/extensi...

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/Source2ResultTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/Source2ResultTransformer.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/Source2ResultTransformer.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/Source2ResultTransformer.java Wed Aug 16 22:42:57 2006
@@ -25,12 +25,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;
 
 /**
  * Transform TrAX Source to Result
  * 
  */
-public class Source2ResultTransformer implements PushTransformer<Source, Result> {
+public class Source2ResultTransformer extends TransformerExtension<Source, Result> implements PushTransformer<Source, Result> {
     private static final TransformerFactory factory = TransformerFactory.newInstance();
 
     public void transform(Source source, Result result, TransformationContext context) {
@@ -42,11 +43,11 @@
         }
     }
 
-    public Class<Source> getSourceType() {
+    public Class getSourceType() {
         return Source.class;
     }
 
-    public Class<Result> getTargetType() {
+    public Class getTargetType() {
         return Result.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/String2SAX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/String2SAX.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/String2SAX.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/trax/String2SAX.java Wed Aug 16 22:42:57 2006
@@ -23,6 +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.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 
@@ -30,7 +31,7 @@
  * Transform XML string to SAX
  * 
  */
-public class String2SAX implements PushTransformer<String, ContentHandler> {
+public class String2SAX extends TransformerExtension<String, ContentHandler> implements PushTransformer<String, ContentHandler> {
     /*
      * private static final TransformerFactory factory = TransformerFactory.newInstance();
      * 
@@ -48,11 +49,11 @@
         }
     }
 
-    public Class<String> getSourceType() {
+    public Class getSourceType() {
         return String.class;
     }
 
-    public Class<ContentHandler> getTargetType() {
+    public Class getTargetType() {
         return ContentHandler.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/DirectedGraph.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/DirectedGraph.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/DirectedGraph.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/DirectedGraph.java Wed Aug 16 22:42:57 2006
@@ -209,12 +209,13 @@
     }
 
     /**
-     * Get the shortes path from the source vertex to the target vertex using Dijkstra's algorithm. If 
-     * there's no path, null will be returned. If the source is the same as the target, it returns a 
-     * path with empty edges with weight 0.
-     *  
-     * @param sourceValue The value identifies the source
-     * @param targetValue The value identifies the target
+     * Get the shortes path from the source vertex to the target vertex using Dijkstra's algorithm. If there's no path, null will be returned. If the
+     * source is the same as the target, it returns a path with empty edges with weight 0.
+     * 
+     * @param sourceValue
+     *            The value identifies the source
+     * @param targetValue
+     *            The value identifies the target
      * @return The shortest path
      */
     public Path getShortestPath(V sourceValue, V targetValue) {
@@ -320,5 +321,13 @@
 
     public Map<V, Vertex> getVertices() {
         return vertices;
+    }
+
+    public void addGraph(DirectedGraph<V, E> otherGraph) {
+        for (Vertex v : otherGraph.vertices.values()) {
+            for (Edge e : v.outEdges.values()) {
+                addEdge(e.sourceVertex.value, e.targetVertex.value, e.value, e.weight);
+            }
+        }
     }
 }

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/PipedTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/PipedTransformer.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/PipedTransformer.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/PipedTransformer.java Wed Aug 16 22:42:57 2006
@@ -49,12 +49,12 @@
         return pipe.getResult();
     }
 
-    public Class<S> getSourceType() {
-        return pusher.getSourceType();
+    public String getSourceBinding() {
+        return pusher.getSourceBinding();
     }
 
-    public Class<R> getTargetType() {
-        return pipe.getTargetType();
+    public String getTargetBinding() {
+        return pipe.getTargetBinding();
     }
 
     public int getWeight() {

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/StreamDataPipe.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/StreamDataPipe.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/StreamDataPipe.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/StreamDataPipe.java Wed Aug 16 22:42:57 2006
@@ -24,8 +24,9 @@
 import java.io.OutputStream;
 
 import org.apache.tuscany.databinding.DataPipe;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 
-public class StreamDataPipe implements DataPipe<OutputStream, InputStream> {
+public class StreamDataPipe extends TransformerExtension<OutputStream, InputStream> implements DataPipe<OutputStream, InputStream> {
 
     private ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
@@ -33,7 +34,7 @@
         return new ByteArrayInputStream(outputStream.toByteArray());
     }
 
-    public Class<InputStream> getTargetType() {
+    public Class getTargetType() {
         return InputStream.class;
     }
 
@@ -45,7 +46,7 @@
         return outputStream;
     }
 
-    public Class<OutputStream> getSourceType() {
+    public Class getSourceType() {
         return OutputStream.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/Writer2ReaderDataPipe.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/Writer2ReaderDataPipe.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/Writer2ReaderDataPipe.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/util/Writer2ReaderDataPipe.java Wed Aug 16 22:42:57 2006
@@ -24,8 +24,9 @@
 import java.io.Writer;
 
 import org.apache.tuscany.databinding.DataPipe;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 
-public class Writer2ReaderDataPipe implements DataPipe<Writer, Reader> {
+public class Writer2ReaderDataPipe extends TransformerExtension<Writer, Reader> implements DataPipe<Writer, Reader> {
 
     private StringWriter writer = new StringWriter();
 
@@ -33,7 +34,7 @@
         return new StringReader(writer.toString());
     }
 
-    public Class<Reader> getTargetType() {
+    public Class getTargetType() {
         return Reader.class;
     }
 
@@ -45,7 +46,7 @@
         return writer;
     }
 
-    public Class<Writer> getSourceType() {
+    public Class getSourceType() {
         return Writer.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMBinding.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMBinding.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMBinding.java Wed Aug 16 22:42:57 2006
@@ -18,31 +18,14 @@
  */
 package org.apache.tuscany.databinding.xml;
 
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-
 import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+import org.w3c.dom.Node;
 
-public class DOMBinding implements DataBinding {
-
-    public static final String NAME = "DOM";
-
-    public Result createResult(Class resultType) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public Source createSource(Object source, Class sourceType) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public boolean isSink() {
-        return false;
-    }
+public class DOMBinding extends DataBindingExtension implements DataBinding {
 
-    public String getName() {
-        return NAME;
+    public DOMBinding() {
+        super(Node.class, false);
     }
 
 }

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMHelper.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMHelper.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMHelper.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,49 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+
+/**
+ * Helper for DOM
+ */
+public class DOMHelper {
+    private final static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+    static {
+        factory.setNamespaceAware(true);
+    }
+
+    private DOMHelper() {
+    }
+
+    public static Document newDocument() throws ParserConfigurationException {
+        DocumentBuilder builder = newDocumentBuilder();
+        Document document = builder.newDocument();
+        return document;
+    }
+
+    public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
+        DocumentBuilder builder = factory.newDocumentBuilder();
+        return builder;
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputStreamBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputStreamBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputStreamBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputStreamBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 java.io.InputStream;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class InputStreamBinding extends DataBindingExtension implements DataBinding {
+
+    public InputStreamBinding() {
+        super(InputStream.class);
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java Wed Aug 16 22:42:57 2006
@@ -18,11 +18,10 @@
  */
 package org.apache.tuscany.databinding.xml;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-
+import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.PullTransformer;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 import org.w3c.dom.Node;
 import org.w3c.dom.ls.DOMImplementationLS;
 import org.w3c.dom.ls.LSSerializer;
@@ -31,11 +30,11 @@
  * Transform DOM Node to XML String
  *
  */
-public class Node2String implements PullTransformer<Node, String> {
+public class Node2String extends TransformerExtension<Node, String> implements PullTransformer<Node, String> {
 
     public String transform(Node source, TransformationContext context) {
         try {
-            DOMImplementationLS impl = (DOMImplementationLS) DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
+            DOMImplementationLS impl = (DOMImplementationLS) DOMHelper.newDocumentBuilder().getDOMImplementation();
             LSSerializer serializer = impl.createLSSerializer();
             return serializer.writeToString(source);
         } catch (Exception e) {
@@ -43,11 +42,11 @@
         }
     }
 
-    public Class<Node> getSourceType() {
+    public Class getSourceType() {
         return Node.class;
     }
 
-    public Class<String> getTargetType() {
+    public Class getTargetType() {
         return String.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java Wed Aug 16 22:42:57 2006
@@ -24,6 +24,7 @@
 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.w3c.dom.Node;
 
 import com.ctc.wstx.api.ReaderConfig;
@@ -33,7 +34,7 @@
  * Transform DOM Node to XML XMLStreamReader
  * 
  */
-public class Node2XMLStreamReader implements PullTransformer<Node, XMLStreamReader> {
+public class Node2XMLStreamReader extends TransformerExtension<Node, XMLStreamReader> implements PullTransformer<Node, XMLStreamReader> {
 
     public XMLStreamReader transform(Node source, TransformationContext context) {
         try {
@@ -46,11 +47,11 @@
         }
     }
 
-    public Class<Node> getSourceType() {
+    public Class getSourceType() {
         return Node.class;
     }
 
-    public Class<XMLStreamReader> getTargetType() {
+    public Class getTargetType() {
         return XMLStreamReader.class;
     }
 

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/OutputStreamBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/OutputStreamBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/OutputStreamBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/OutputStreamBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 java.io.OutputStream;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class OutputStreamBinding extends DataBindingExtension implements DataBinding {
+
+    public OutputStreamBinding() {
+        super(OutputStream.class, true);
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,241 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed 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 java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.ProcessingInstruction;
+import org.w3c.dom.Text;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+
+/**
+ * @author G. Todd Miller
+ */
+public class SAX2DOM implements ContentHandler, LexicalHandler {
+    public static final String EMPTYSTRING = "";
+    public static final String XML_PREFIX = "xml";
+    public static final String XMLNS_PREFIX = "xmlns";
+    public static final String XMLNS_STRING = "xmlns:";
+    public static final String XMLNS_URI = "http://www.w3.org/2000/xmlns/";
+    
+
+    private Node _root = null;
+
+    private Document _document = null;
+
+    private Node _nextSibling = null;
+
+    private Stack<Node> _nodeStk = new Stack<Node>();
+
+    private List<String> _namespaceDecls = null;
+
+    private Node _lastSibling = null;
+
+    public SAX2DOM() throws ParserConfigurationException {
+        _document = DOMHelper.newDocument();
+        _root = _document;
+    }
+
+    public SAX2DOM(Node root, Node nextSibling) throws ParserConfigurationException {
+        _root = root;
+        if (root instanceof Document) {
+            _document = (Document) root;
+        } else if (root != null) {
+            _document = root.getOwnerDocument();
+        } else {
+            _document = DOMHelper.newDocument();
+            _root = _document;
+        }
+
+        _nextSibling = nextSibling;
+    }
+
+    public SAX2DOM(Node root) throws ParserConfigurationException {
+        this(root, null);
+    }
+
+    public Node getDOM() {
+        return _root;
+    }
+
+    public void characters(char[] ch, int start, int length) {
+        final Node last = (Node) _nodeStk.peek();
+
+        // No text nodes can be children of root (DOM006 exception)
+        if (last != _document) {
+            final String text = new String(ch, start, length);
+            if (_lastSibling != null && _lastSibling.getNodeType() == Node.TEXT_NODE) {
+                ((Text) _lastSibling).appendData(text);
+            } else if (last == _root && _nextSibling != null) {
+                _lastSibling = last.insertBefore(_document.createTextNode(text), _nextSibling);
+            } else {
+                _lastSibling = last.appendChild(_document.createTextNode(text));
+            }
+
+        }
+    }
+
+    public void startDocument() {
+        _nodeStk.push(_root);
+    }
+
+    public void endDocument() {
+        _nodeStk.pop();
+    }
+
+    public void startElement(String namespace, String localName, String qName, Attributes attrs) {
+        final Element tmp = (Element) _document.createElementNS(namespace, qName);
+
+        // Add namespace declarations first
+        if (_namespaceDecls != null) {
+            final int nDecls = _namespaceDecls.size();
+            for (int i = 0; i < nDecls; i++) {
+                final String prefix = (String) _namespaceDecls.get(i++);
+
+                if (prefix == null || prefix.equals(EMPTYSTRING)) {
+                    tmp.setAttributeNS(XMLNS_URI, XMLNS_PREFIX, (String) _namespaceDecls.get(i));
+                } else {
+                    tmp.setAttributeNS(XMLNS_URI, XMLNS_STRING + prefix, (String) _namespaceDecls.get(i));
+                }
+            }
+            _namespaceDecls.clear();
+        }
+
+        // Add attributes to element
+        final int nattrs = attrs.getLength();
+        for (int i = 0; i < nattrs; i++) {
+            if (attrs.getLocalName(i) == null) {
+                tmp.setAttribute(attrs.getQName(i), attrs.getValue(i));
+            } else {
+                tmp.setAttributeNS(attrs.getURI(i), attrs.getQName(i), attrs.getValue(i));
+            }
+        }
+
+        // Append this new node onto current stack node
+        Node last = (Node) _nodeStk.peek();
+
+        // If the SAX2DOM is created with a non-null next sibling node,
+        // insert the result nodes before the next sibling under the root.
+        if (last == _root && _nextSibling != null)
+            last.insertBefore(tmp, _nextSibling);
+        else
+            last.appendChild(tmp);
+
+        // Push this node onto stack
+        _nodeStk.push(tmp);
+        _lastSibling = null;
+    }
+
+    public void endElement(String namespace, String localName, String qName) {
+        _nodeStk.pop();
+        _lastSibling = null;
+    }
+
+    public void startPrefixMapping(String prefix, String uri) {
+        if (_namespaceDecls == null) {
+            _namespaceDecls = new ArrayList<String>(2);
+        }
+        _namespaceDecls.add(prefix);
+        _namespaceDecls.add(uri);
+    }
+
+    public void endPrefixMapping(String prefix) {
+        // do nothing
+    }
+
+    /**
+     * This class is only used internally so this method should never be called.
+     */
+    public void ignorableWhitespace(char[] ch, int start, int length) {
+    }
+
+    /**
+     * adds processing instruction node to DOM.
+     */
+    public void processingInstruction(String target, String data) {
+        final Node last = (Node) _nodeStk.peek();
+        ProcessingInstruction pi = _document.createProcessingInstruction(target, data);
+        if (pi != null) {
+            if (last == _root && _nextSibling != null)
+                last.insertBefore(pi, _nextSibling);
+            else
+                last.appendChild(pi);
+
+            _lastSibling = pi;
+        }
+    }
+
+    /**
+     * This class is only used internally so this method should never be called.
+     */
+    public void setDocumentLocator(Locator locator) {
+    }
+
+    /**
+     * This class is only used internally so this method should never be called.
+     */
+    public void skippedEntity(String name) {
+    }
+
+    /**
+     * Lexical Handler method to create comment node in DOM tree.
+     */
+    public void comment(char[] ch, int start, int length) {
+        final Node last = (Node) _nodeStk.peek();
+        Comment comment = _document.createComment(new String(ch, start, length));
+        if (comment != null) {
+            if (last == _root && _nextSibling != null)
+                last.insertBefore(comment, _nextSibling);
+            else
+                last.appendChild(comment);
+
+            _lastSibling = comment;
+        }
+    }
+
+    // Lexical Handler methods- not implemented
+    public void startCDATA() {
+    }
+
+    public void endCDATA() {
+    }
+
+    public void startEntity(java.lang.String name) {
+    }
+
+    public void endDTD() {
+    }
+
+    public void endEntity(String name) {
+    }
+
+    public void startDTD(String name, String publicId, String systemId) throws SAXException {
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java Wed Aug 16 22:42:57 2006
@@ -21,13 +21,13 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.apache.tuscany.databinding.DataPipe;
-import org.apache.xalan.xsltc.trax.SAX2DOM;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 import org.w3c.dom.Node;
 import org.xml.sax.ContentHandler;
 
-public class SAX2DOMPipe implements DataPipe<ContentHandler, Node> {
+public class SAX2DOMPipe extends TransformerExtension<ContentHandler, Node> implements DataPipe<ContentHandler, Node> {
     private SAX2DOM pipe;
-    
+
     /**
      * 
      */
@@ -44,7 +44,7 @@
         return pipe.getDOM();
     }
 
-    public Class<Node> getTargetType() {
+    public Class getTargetType() {
         return Node.class;
     }
 
@@ -52,7 +52,7 @@
         return pipe;
     }
 
-    public Class<ContentHandler> getSourceType() {
+    public Class getSourceType() {
         return ContentHandler.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXBinding.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXBinding.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXBinding.java Wed Aug 16 22:42:57 2006
@@ -18,41 +18,13 @@
  */
 package org.apache.tuscany.databinding.xml;
 
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-
 import org.apache.tuscany.databinding.DataBinding;
-import org.xml.sax.ContentHandler;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
 import org.xml.sax.InputSource;
 
-public class SAXBinding implements DataBinding {
-    public static final String NAME = "SAX";
-
-    private ContentHandler contentHandler;
-
-    public Result createResult(Class resultType) {
-        return new SAXResult(contentHandler);
-    }
-
-    public Source createSource(Object source, Class sourceType) {
-        if (source instanceof InputSource)
-            return new SAXSource((InputSource) source);
-        else
-            throw new IllegalArgumentException();
-    }
-
-    public boolean isSink() {
-        return true;
-    }
-
-    public String getName() {
-        return NAME;
-    }
-
-    public void setContentHandler(ContentHandler contentHandler) {
-        this.contentHandler = contentHandler;
+public class SAXBinding extends DataBindingExtension implements DataBinding {
+    public SAXBinding() {
+        super(InputSource.class);
     }
 
 }

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXContentHandlerBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXContentHandlerBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXContentHandlerBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAXContentHandlerBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,29 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+import org.xml.sax.ContentHandler;
+
+public class SAXContentHandlerBinding extends DataBindingExtension implements DataBinding {
+    public SAXContentHandlerBinding() {
+        super(ContentHandler.class, true);
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXBinding.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXBinding.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXBinding.java Wed Aug 16 22:42:57 2006
@@ -18,32 +18,15 @@
  */
 package org.apache.tuscany.databinding.xml;
 
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
+import javax.xml.stream.XMLStreamReader;
 
 import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
 
-public class StAXBinding implements DataBinding {
-    public static final String NAME = "StAX";
+public class StAXBinding extends DataBindingExtension implements DataBinding {
 
-    public Result createResult(Class resultType) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public Source createSource(Object source, Class sourceType) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public boolean isSink() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    public String getName() {
-        // TODO Auto-generated method stub
-        return NAME;
+    public StAXBinding() {
+        super(XMLStreamReader.class);
     }
 
 }

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXHelper.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXHelper.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXHelper.java Wed Aug 16 22:42:57 2006
@@ -39,41 +39,44 @@
      * The XMLStreamSerializer pulls events from the XMLStreamReader and dumps into the XMLStreamWriter
      */
     public static class XMLStreamSerializer implements XMLStreamConstants {
-    
+
         private static int namespaceSuffix = 0;
-    
         public static final String NAMESPACE_PREFIX = "ns";
-    
+
         /*
-         * The behavior of the serializer is such that it returns when it encounters the starting element for the second time. The depth variable tracks
-         * the depth of the serilizer and tells it when to return. Note that it is assumed that this serialization starts on an Element.
-         */
-    
+        * The behavior of the serializer is such that it returns when it encounters the
+        * starting element for the second time. The depth variable tracks the depth of the
+        * serilizer and tells it when to return.
+        * Note that it is assumed that this serialization starts on an Element.
+        */
+
         /**
          * Field depth
          */
         private int depth = 0;
-    
+
         /**
          * Method serialize.
-         * 
+         *
          * @param node
          * @param writer
          * @throws XMLStreamException
          */
-        public void serialize(XMLStreamReader node, XMLStreamWriter writer) throws XMLStreamException {
+        public void serialize(XMLStreamReader node, XMLStreamWriter writer)
+                throws XMLStreamException {
             serializeNode(node, writer);
         }
-    
+
         /**
          * Method serializeNode.
-         * 
+         *
          * @param reader
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeNode(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
-            // TODO We get the StAXWriter at this point and uses it hereafter assuming that this is the only entry point to this class.
+        protected void serializeNode(XMLStreamReader reader, XMLStreamWriter writer)
+                throws XMLStreamException {
+            //TODO We get the StAXWriter at this point and uses it hereafter assuming that this is the only entry point to this class.
             // If there can be other classes calling methodes of this we might need to change methode signatures to OMOutputer
             while (reader.hasNext()) {
                 int event = reader.next();
@@ -91,15 +94,14 @@
                 } else if (event == END_ELEMENT) {
                     serializeEndElement(writer);
                     depth--;
-                } else if (event == START_DOCUMENT) {
-                    depth++; // if a start document is found then increment the depth
+                }else if (event == START_DOCUMENT) {
+                    depth++; //if a start document is found then increment the depth
                 } else if (event == END_DOCUMENT) {
-                    if (depth != 0)
-                        depth--; // for the end document - reduce the depth
+                    if (depth!=0) depth--;  //for the end document - reduce the depth
                     try {
                         serializeEndElement(writer);
                     } catch (Exception e) {
-                        // TODO: log exceptions
+                        //TODO: log exceptions
                     }
                 }
                 if (depth == 0) {
@@ -107,13 +109,15 @@
                 }
             }
         }
-    
+
         /**
          * @param reader
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeElement(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+        protected void serializeElement(XMLStreamReader reader,
+                                        XMLStreamWriter writer)
+                throws XMLStreamException {
             String prefix = reader.getPrefix();
             String nameSpaceName = reader.getNamespaceURI();
             if (nameSpaceName != null) {
@@ -122,11 +126,13 @@
                     writer.writeStartElement(nameSpaceName, reader.getLocalName());
                 } else {
                     if (prefix != null) {
-                        writer.writeStartElement(prefix, reader.getLocalName(), nameSpaceName);
+                        writer.writeStartElement(prefix, reader.getLocalName(),
+                                nameSpaceName);
                         writer.writeNamespace(prefix, nameSpaceName);
                         writer.setPrefix(prefix, nameSpaceName);
                     } else {
-                        writer.writeStartElement(nameSpaceName, reader.getLocalName());
+                        writer.writeStartElement(nameSpaceName,
+                                reader.getLocalName());
                         writer.writeDefaultNamespace(nameSpaceName);
                         writer.setDefaultNamespace(nameSpaceName);
                     }
@@ -134,134 +140,161 @@
             } else {
                 writer.writeStartElement(reader.getLocalName());
             }
-    
+
+
             // add the namespaces
             int count = reader.getNamespaceCount();
             String namespacePrefix;
             for (int i = 0; i < count; i++) {
                 namespacePrefix = reader.getNamespacePrefix(i);
-                if (namespacePrefix != null && namespacePrefix.length() == 0)
+                if(namespacePrefix != null && namespacePrefix.length()==0)
                     continue;
-    
-                serializeNamespace(namespacePrefix, reader.getNamespaceURI(i), writer);
+
+                serializeNamespace(namespacePrefix,
+                        reader.getNamespaceURI(i), writer);
             }
-    
+
             // add attributes
             serializeAttributes(reader, writer);
-    
+
         }
-    
+
         /**
          * Method serializeEndElement.
-         * 
+         *
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeEndElement(XMLStreamWriter writer) throws XMLStreamException {
+        protected void serializeEndElement(XMLStreamWriter writer)
+                throws XMLStreamException {
             writer.writeEndElement();
         }
-    
+
         /**
          * @param reader
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeText(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+        protected void serializeText(XMLStreamReader reader,
+                                     XMLStreamWriter writer)
+                throws XMLStreamException {
             writer.writeCharacters(reader.getText());
         }
-    
+
         /**
          * Method serializeCData.
-         * 
+         *
          * @param reader
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeCData(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+        protected void serializeCData(XMLStreamReader reader,
+                                      XMLStreamWriter writer)
+                throws XMLStreamException {
             writer.writeCData(reader.getText());
         }
-    
+
         /**
          * Method serializeComment.
-         * 
+         *
          * @param reader
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeComment(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+        protected void serializeComment(XMLStreamReader reader,
+                                        XMLStreamWriter writer)
+                throws XMLStreamException {
             writer.writeComment(reader.getText());
         }
-    
+
         /**
          * @param reader
          * @param writer
          * @throws XMLStreamException
          */
-        protected void serializeAttributes(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+        protected void serializeAttributes(XMLStreamReader reader,
+                                           XMLStreamWriter writer)
+                throws XMLStreamException {
             int count = reader.getAttributeCount();
             String prefix = null;
             String namespaceName = null;
-            String writerPrefix = null;
+            String writerPrefix=null;
             for (int i = 0; i < count; i++) {
                 prefix = reader.getAttributePrefix(i);
                 namespaceName = reader.getAttributeNamespace(i);
-                if (namespaceName != null)
-                    writerPrefix = writer.getNamespaceContext().getPrefix(namespaceName);
-    
-                if (!"".equals(namespaceName)) {
-                    // prefix has already being declared but this particular attrib has a
-                    // no prefix attached. So use the prefix provided by the writer
-                    if (writerPrefix != null && (prefix == null || prefix.equals(""))) {
-                        writer.writeAttribute(writerPrefix, namespaceName, reader.getAttributeLocalName(i), reader.getAttributeValue(i));
-    
-                        // writer prefix is available but different from the current
-                        // prefix of the attrib. We should be decalring the new prefix
-                        // as a namespace declaration
-                    } else if (prefix != null && !"".equals(prefix) && !prefix.equals(writerPrefix)) {
-                        writer.writeNamespace(prefix, namespaceName);
-                        writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader.getAttributeValue(i));
-    
-                        // prefix is null (or empty), but the namespace name is valid! it has not
-                        // being written previously also. So we need to generate a prefix
-                        // here
-                    } else {
+                /*
+                   Due to parser implementations returning null as the namespace URI
+                  (for the empty namespace) we need to make sure that we deal with
+                  a namespace name that is not null. The best way to work around this
+                  issue is to set the namespace uri to "" if it is null
+                */
+                if (namespaceName==null) namespaceName="";
+
+                writerPrefix =writer.getNamespaceContext().getPrefix(namespaceName);
+
+                if (!"".equals(namespaceName)){
+                    //prefix has already being declared but this particular attrib has a
+                    //no prefix attached. So use the prefix provided by the writer
+                    if (writerPrefix!=null && (prefix==null || prefix.equals(""))){
+                        writer.writeAttribute(writerPrefix, namespaceName,
+                                reader.getAttributeLocalName(i),
+                                reader.getAttributeValue(i));
+
+                        //writer prefix is available but different from the current
+                        //prefix of the attrib. We should be decalring the new prefix
+                        //as a namespace declaration
+                    }else if (prefix!=null && !"".equals(prefix)&& !prefix.equals(writerPrefix)){
+                        writer.writeNamespace(prefix,namespaceName);
+                        writer.writeAttribute(prefix, namespaceName,
+                                reader.getAttributeLocalName(i),
+                                reader.getAttributeValue(i));
+
+                        //prefix is null (or empty), but the namespace name is valid! it has not
+                        //being written previously also. So we need to generate a prefix
+                        //here
+                    }else{
                         prefix = generateUniquePrefix(writer.getNamespaceContext());
-                        writer.writeNamespace(prefix, namespaceName);
-                        writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+                        writer.writeNamespace(prefix,namespaceName);
+                        writer.writeAttribute(prefix, namespaceName,
+                                reader.getAttributeLocalName(i),
+                                reader.getAttributeValue(i));
                     }
-                } else {
-                    // empty namespace is equal to no namespace!
-                    writer.writeAttribute(reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+                }else{
+                    //empty namespace is equal to no namespace!
+                    writer.writeAttribute(reader.getAttributeLocalName(i),
+                            reader.getAttributeValue(i));
                 }
-    
+
+
             }
         }
-    
+
         /**
-         * Generates a unique namespace prefix that is not in the scope of the NamespaceContext
-         * 
+         * Generates a unique namespace prefix that is not in the
+         * scope of the NamespaceContext
          * @param nsCtxt
          * @return string
          */
-        private String generateUniquePrefix(NamespaceContext nsCtxt) {
+        private String generateUniquePrefix(NamespaceContext nsCtxt){
             String prefix = NAMESPACE_PREFIX + namespaceSuffix++;
-            // null should be returned if the prefix is not bound!
-            while (nsCtxt.getNamespaceURI(prefix) != null) {
+            //null should be returned if the prefix is not bound!
+            while(nsCtxt.getNamespaceURI(prefix)!=null){
                 prefix = NAMESPACE_PREFIX + namespaceSuffix++;
             }
-    
+
             return prefix;
         }
-    
         /**
          * Method serializeNamespace.
-         * 
          * @param prefix
          * @param URI
          * @param writer
          * @throws XMLStreamException
          */
-        private void serializeNamespace(String prefix, String URI, XMLStreamWriter writer) throws XMLStreamException {
+        private void serializeNamespace(String prefix,
+                                        String URI,
+                                        XMLStreamWriter writer)
+                throws XMLStreamException {
             String prefix1 = writer.getPrefix(URI);
             if (prefix1 == null) {
                 writer.writeNamespace(prefix, URI);

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StreamBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StreamBinding.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StreamBinding.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StreamBinding.java Wed Aug 16 22:42:57 2006
@@ -18,41 +18,15 @@
  */
 package org.apache.tuscany.databinding.xml;
 
-import java.io.InputStream;
 import java.io.Reader;
 
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
 import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
 
-public class StreamBinding implements DataBinding {
-    public static final String NAME = "STREAM";
-
-    public static enum Type {
-        STREAM, READER, STRING
-    }
-
-    public Result createResult(Class resultType) {
-        return new StreamResult();
-    }
-
-    public Source createSource(Object source, Class sourceType) {
-        if (source instanceof InputStream)
-            return new StreamSource((InputStream) source);
-        else if (source instanceof Reader)
-            return new StreamSource((Reader) source);
-        return null;
-    }
-
-    public boolean isSink() {
-        return false;
-    }
+public class StreamBinding extends DataBindingExtension implements DataBinding {
 
-    public String getName() {
-        return NAME;
+    public StreamBinding() {
+        super(Reader.class);
     }
 
 }

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2Node.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2Node.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2Node.java Wed Aug 16 22:42:57 2006
@@ -21,19 +21,19 @@
 import java.io.StringReader;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.apache.tuscany.databinding.PullTransformer;
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
-import org.apache.tuscany.databinding.PullTransformer;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 import org.w3c.dom.Node;
 import org.xml.sax.InputSource;
 
-public class String2Node implements PullTransformer<String, Node> {
+public class String2Node extends TransformerExtension<String, Node> implements PullTransformer<String, Node> {
 
     public Node transform(String source, TransformationContext context) {
         try {
-            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+            DocumentBuilder builder = DOMHelper.newDocumentBuilder();
             InputSource inputSource = new InputSource(new StringReader(source));
             return builder.parse(inputSource);
         } catch (Exception e) {
@@ -41,11 +41,11 @@
         }
     }
 
-    public Class<String> getSourceType() {
+    public Class getSourceType() {
         return String.class;
     }
 
-    public Class<Node> getTargetType() {
+    public Class getTargetType() {
         return Node.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2XMLStreamReader.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2XMLStreamReader.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2XMLStreamReader.java Wed Aug 16 22:42:57 2006
@@ -24,8 +24,9 @@
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
 import org.apache.tuscany.databinding.PullTransformer;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 
-public class String2XMLStreamReader implements PullTransformer<String, XMLStreamReader> {
+public class String2XMLStreamReader extends TransformerExtension<String, XMLStreamReader> implements PullTransformer<String, XMLStreamReader> {
 
     public XMLStreamReader transform(String source, TransformationContext context) {
         try {
@@ -35,11 +36,11 @@
         }
     }
 
-    public Class<String> getSourceType() {
+    public Class getSourceType() {
         return String.class;
     }
 
-    public Class<XMLStreamReader> getTargetType() {
+    public Class getTargetType() {
         return XMLStreamReader.class;
     }
 

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/WriterBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/WriterBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/WriterBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/WriterBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 java.io.Writer;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class WriterBinding extends DataBindingExtension implements DataBinding {
+
+    public WriterBinding() {
+        super(Writer.class);
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventReaderBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventReaderBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventReaderBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventReaderBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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.XMLEventReader;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class XMLEventReaderBinding extends DataBindingExtension implements DataBinding {
+
+    public XMLEventReaderBinding() {
+        super(XMLEventReader.class);
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventWriterBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventWriterBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventWriterBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLEventWriterBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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.XMLEventWriter;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class XMLEventWriterBinding extends DataBindingExtension implements DataBinding {
+
+    public XMLEventWriterBinding() {
+        super(XMLEventWriter.class, true);
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2Node.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2Node.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2Node.java Wed Aug 16 22:42:57 2006
@@ -19,39 +19,35 @@
 package org.apache.tuscany.databinding.xml;
 
 import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.dom.DOMResult;
 
 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.w3c.dom.Node;
 
-import com.ctc.wstx.api.WriterConfig;
-import com.ctc.wstx.dom.DOMWrappingWriter;
-
 /**
  * Transform DOM Node to XML XMLStreamReader
  * 
  */
-public class XMLStreamReader2Node implements PullTransformer<XMLStreamReader, Node> {
-
+public class XMLStreamReader2Node extends TransformerExtension<XMLStreamReader, Node> implements PullTransformer<XMLStreamReader, Node> {
+    private SAX2DOMPipe pipe = new SAX2DOMPipe();
+    private XMLStreamReader2SAX stax2sax = new XMLStreamReader2SAX();
+    
     public Node transform(XMLStreamReader source, TransformationContext context) {
         try {
-            DOMResult result = new DOMResult();
-            WriterConfig config = WriterConfig.createFullDefaults();
-            DOMWrappingWriter wrappingWriter = DOMWrappingWriter.createFrom(config, result);
-            StAXHelper.save(source, wrappingWriter);
-            return result.getNode();
+            stax2sax.transform(source, pipe.getSink(), context);
+            return pipe.getResult();
         } catch (Exception e) {
             throw new TransformationException(e);
         }
     }
 
-    public Class<XMLStreamReader> getSourceType() {
+    public Class getSourceType() {
         return XMLStreamReader.class;
     }
 
-    public Class<Node> getTargetType() {
+    public Class getTargetType() {
         return Node.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2SAX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2SAX.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2SAX.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2SAX.java Wed Aug 16 22:42:57 2006
@@ -23,24 +23,25 @@
 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.xml.sax.ContentHandler;
 
 /**
  *
  */
-public class XMLStreamReader2SAX implements PushTransformer<XMLStreamReader, ContentHandler> {
+public class XMLStreamReader2SAX extends TransformerExtension<XMLStreamReader, ContentHandler> implements PushTransformer<XMLStreamReader, ContentHandler> {
 
     /**
      * @see org.apache.tuscany.databinding.PushTransformer#getSourceType()
      */
-    public Class<ContentHandler> getTargetType() {
+    public Class getTargetType() {
         return ContentHandler.class;
     }
 
     /**
      * @see org.apache.tuscany.databinding.PushTransformer#getSourceType()
      */
-    public Class<XMLStreamReader> getSourceType() {
+    public Class getSourceType() {
         return XMLStreamReader.class;
     }
 

Modified: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2String.java?rev=432155&r1=432154&r2=432155&view=diff
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2String.java (original)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2String.java Wed Aug 16 22:42:57 2006
@@ -24,8 +24,9 @@
 import org.apache.tuscany.databinding.TransformationContext;
 import org.apache.tuscany.databinding.TransformationException;
 import org.apache.tuscany.databinding.PullTransformer;
+import org.apache.tuscany.databinding.extension.TransformerExtension;
 
-public class XMLStreamReader2String implements PullTransformer<XMLStreamReader, String> {
+public class XMLStreamReader2String extends TransformerExtension<XMLStreamReader, String> implements PullTransformer<XMLStreamReader, String> {
 
     public String transform(XMLStreamReader source, TransformationContext context) {
         try {
@@ -35,11 +36,11 @@
         }
     }
 
-    public Class<XMLStreamReader> getSourceType() {
+    public Class getSourceType() {
         return XMLStreamReader.class;
     }
 
-    public Class<String> getTargetType() {
+    public Class getTargetType() {
         return String.class;
     }
 

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReaderBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReaderBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReaderBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReaderBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class XMLStreamReaderBinding extends DataBindingExtension implements DataBinding {
+
+    public XMLStreamReaderBinding() {
+        super(XMLStreamReader.class);
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamWriterBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamWriterBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamWriterBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamWriterBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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.XMLStreamWriter;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class XMLStreamWriterBinding extends DataBindingExtension implements DataBinding {
+
+    public XMLStreamWriterBinding() {
+        super(XMLStreamWriter.class, true);
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStringBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStringBinding.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStringBinding.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStringBinding.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,29 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.extension.DataBindingExtension;
+
+public class XMLStringBinding extends DataBindingExtension implements DataBinding {
+
+    public XMLStringBinding() {
+        super(String.class, false);
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl Wed Aug 16 22:42:57 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    *  Copyright (c) 2006 The Apache Software Foundation or its licensors, as applicable.
+    *
+    *  Licensed 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.launcher.DataBinding">
+
+    <!-- DataBinding registry -->
+    <component name="dataBindingRegistry">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.DataBindingRegistryImpl" />
+    </component>
+
+    <!-- Transformer registry -->
+    <component name="transformerRegistry">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.TransformerRegistryImpl" />
+    </component>
+
+    <!-- Transformer registry -->
+    <component name="dataBindingLoader">
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.DataBindingDefinitionLoader" />
+    </component>
+
+</composite>
\ No newline at end of file

Added: incubator/tuscany/java/sca/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java?rev=432155&view=auto
==============================================================================
--- incubator/tuscany/java/sca/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java (added)
+++ incubator/tuscany/java/sca/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java Wed Aug 16 22:42:57 2006
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as applicable
+ *
+ *  Licensed 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 junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.databinding.DataBinding;
+import org.apache.tuscany.databinding.DataBindingRegistry;
+import org.apache.tuscany.databinding.xml.SAXContentHandlerBinding;
+import org.apache.tuscany.databinding.xml.XMLStreamReaderBinding;
+import org.xml.sax.ContentHandler;
+
+/**
+ * 
+ */
+public class DataBindingRegistryImplTestCase extends TestCase {
+    private DataBindingRegistry registry;
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+        registry = new DataBindingRegistryImpl();
+    }
+
+    public void testRegistry() {
+        DataBinding db1 = new SAXContentHandlerBinding();
+        String name = db1.getName();
+        registry.register(db1);
+        registry.register(new XMLStreamReaderBinding());
+        DataBinding db2 = registry.getDataBinding(name);
+        Assert.assertTrue(db1 == db2);
+
+        DataBinding dt = registry.introspectType(ContentHandler.class);
+        Assert.assertEquals(db1, dt);
+        Assert.assertTrue(dt.getName().equalsIgnoreCase(name));
+
+        registry.unregister(name);
+        DataBinding db3 = registry.getDataBinding(name);
+        Assert.assertNull(db3);
+
+        dt = registry.introspectType(ContentHandler.class);
+        Assert.assertNull(dt);
+
+    }
+
+}

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

Propchange: incubator/tuscany/java/sca/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java
------------------------------------------------------------------------------
    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