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 2009/08/07 00:32:42 UTC

svn commit: r801826 - in /tuscany/java/sca/modules/common-xml: ./ src/main/java/org/apache/tuscany/sca/common/xml/dom/ src/main/java/org/apache/tuscany/sca/common/xml/stax/ src/test/java/org/apache/tuscany/sca/common/xml/stax/

Author: rfeng
Date: Thu Aug  6 22:32:41 2009
New Revision: 801826

URL: http://svn.apache.org/viewvc?rev=801826&view=rev
Log:
Adding common-xml into modules as the base to hold XML related utilities 
It can also serve as the module that defines XML related dependencies based on the JDK levels

Added:
    tuscany/java/sca/modules/common-xml/
      - copied from r801818, tuscany/java/sca-contrib/modules/common-xml/
Modified:
    tuscany/java/sca/modules/common-xml/pom.xml
    tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java
    tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/SAX2DOMAdapter.java
    tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/stax/StAXHelper.java
    tuscany/java/sca/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/stax/StAXHelperTestCase.java

Modified: tuscany/java/sca/modules/common-xml/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/common-xml/pom.xml?rev=801826&r1=801818&r2=801826&view=diff
==============================================================================
--- tuscany/java/sca/modules/common-xml/pom.xml (original)
+++ tuscany/java/sca/modules/common-xml/pom.xml Thu Aug  6 22:32:41 2009
@@ -34,25 +34,6 @@
             <artifactId>tuscany-extensibility</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>
-        
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-stax-api_1.0_spec</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-                
-        <dependency>
-            <groupId>org.codehaus.woodstox</groupId>
-            <artifactId>wstx-asl</artifactId>
-            <version>3.2.4</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>stax</groupId>
-                    <artifactId>stax-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
 
         <dependency>
             <groupId>xmlunit</groupId>
@@ -63,4 +44,55 @@
 
     </dependencies>
 
+    <profiles>
+        <profile>
+            <id>jdk15</id>
+            <activation>
+                <jdk>1.5</jdk>
+            </activation>
+
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.geronimo.specs</groupId>
+                    <artifactId>geronimo-stax-api_1.0_spec</artifactId>
+                    <version>1.0.1</version>
+                </dependency>
+
+                <dependency>
+                    <groupId>org.codehaus.woodstox</groupId>
+                    <artifactId>wstx-asl</artifactId>
+                    <version>3.2.4</version>
+                    <scope>runtime</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>stax</groupId>
+                            <artifactId>stax-api</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+
+                <dependency>
+                    <groupId>javax.xml.bind</groupId>
+                    <artifactId>jaxb-api</artifactId>
+                    <version>2.1</version>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>javax.xml.stream</groupId>
+                            <artifactId>stax-api</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+
+                <dependency>
+                    <groupId>com.sun.xml.bind</groupId>
+                    <artifactId>jaxb-impl</artifactId>
+                    <version>2.1.12</version>
+                    <scope>runtime</scope>
+                </dependency>
+
+            </dependencies>
+
+        </profile>
+    </profiles>
+
 </project>

Modified: tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java?rev=801826&r1=801818&r2=801826&view=diff
==============================================================================
--- tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java (original)
+++ tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java Thu Aug  6 22:32:41 2009
@@ -23,6 +23,8 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -35,27 +37,24 @@
  * @version $Rev$ $Date$
  */
 public final class DOMHelper {
-    private static DocumentBuilderFactory FACTORY;
+    private DocumentBuilderFactory documentBuilderFactory;
 
-    private DOMHelper() {
+    public DOMHelper(ExtensionPointRegistry registry) {
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        documentBuilderFactory = factories.getFactory(DocumentBuilderFactory.class);
+        documentBuilderFactory.setNamespaceAware(true);
     }
 
-    public static Document newDocument() throws ParserConfigurationException {
+    public Document newDocument() {
         return newDocumentBuilder().newDocument();
-    }
 
-    public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
-        init();
-        return FACTORY.newDocumentBuilder();
     }
 
-    /**
-     * 
-     */
-    private static synchronized void init() {
-        if (FACTORY == null) {
-            FACTORY = DocumentBuilderFactory.newInstance();
-            FACTORY.setNamespaceAware(true);
+    public DocumentBuilder newDocumentBuilder() {
+        try {
+            return documentBuilderFactory.newDocumentBuilder();
+        } catch (ParserConfigurationException e) {
+            throw new IllegalArgumentException(e);
         }
     }
 
@@ -64,9 +63,6 @@
         if (ns == null) {
             ns = "";
         }
-        // node.getLocalName() will return null if it is created using DOM Level
-        // 1 method
-        // such as createElement()
         return new QName(ns, node.getNodeName());
     }
 

Modified: tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/SAX2DOMAdapter.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/SAX2DOMAdapter.java?rev=801826&r1=801818&r2=801826&view=diff
==============================================================================
--- tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/SAX2DOMAdapter.java (original)
+++ tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/SAX2DOMAdapter.java Thu Aug  6 22:32:41 2009
@@ -22,6 +22,8 @@
 
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -58,8 +60,10 @@
 
     private Node lastSibling;
 
-    public SAX2DOMAdapter() throws ParserConfigurationException {
-        this.document = DOMHelper.newDocument();
+    public SAX2DOMAdapter(ExtensionPointRegistry registry) {
+        UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
+        DOMHelper domHelper = utilities.getUtility(DOMHelper.class);
+        this.document = domHelper.newDocument();
         this.root = document;
     }
 
@@ -69,9 +73,6 @@
             this.document = (Document)root;
         } else if (root != null) {
             this.document = root.getOwnerDocument();
-        } else {
-            this.document = DOMHelper.newDocument();
-            this.root = document;
         }
 
         this.nextSibling = nextSibling;

Modified: tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/stax/StAXHelper.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/stax/StAXHelper.java?rev=801826&r1=801818&r2=801826&view=diff
==============================================================================
--- tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/stax/StAXHelper.java (original)
+++ tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/stax/StAXHelper.java Thu Aug  6 22:32:41 2009
@@ -30,55 +30,99 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.Result;
 import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMResult;
 
-
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
 
 public final class StAXHelper {
-    private static final XMLInputFactory INPUT_FACTORY = XMLInputFactory.newInstance();
-    private static final XMLOutputFactory OUTPUT_FACTORY = XMLOutputFactory.newInstance();
+    private final XMLInputFactory inputFactory;
+    private final XMLOutputFactory outputFactory;
+    private final DOMHelper domHelper;
+
+    public StAXHelper(ExtensionPointRegistry registry) {
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        factories.getFactory(XMLInputFactory.class);
+        inputFactory = factories.getFactory(XMLInputFactory.class);
+        outputFactory = factories.getFactory(XMLOutputFactory.class);
+        UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
+        domHelper = utilities.getUtility(DOMHelper.class);
+    }
 
-    private StAXHelper() {
+    public XMLStreamReader createXMLStreamReader(InputStream inputStream) throws XMLStreamException {
+        return inputFactory.createXMLStreamReader(inputStream);
     }
 
-    public static XMLStreamReader createXMLStreamReader(InputStream inputStream) throws XMLStreamException {
-        return INPUT_FACTORY.createXMLStreamReader(inputStream);
+    public XMLStreamReader createXMLStreamReader(Reader reader) throws XMLStreamException {
+        return inputFactory.createXMLStreamReader(reader);
     }
 
-    public static XMLStreamReader createXMLStreamReader(Reader reader) throws XMLStreamException {
-        return INPUT_FACTORY.createXMLStreamReader(reader);
+    public XMLStreamReader createXMLStreamReader(Source source) throws XMLStreamException {
+        return inputFactory.createXMLStreamReader(source);
     }
 
-    public static XMLStreamReader createXMLStreamReader(Source source) throws XMLStreamException {
-        return INPUT_FACTORY.createXMLStreamReader(source);
+    /*
+    public XMLStreamReader createXMLStreamReader(Node node) throws XMLStreamException {
+        // DOMSource is not supported by the XMLInputFactory from JDK 6
+        DOMSource source = new DOMSource(node);
+        return createXMLStreamReader(source);
     }
+    */
 
-    public static XMLStreamReader createXMLStreamReader(String string) throws XMLStreamException {
+    public XMLStreamReader createXMLStreamReader(String string) throws XMLStreamException {
         StringReader reader = new StringReader(string);
         return createXMLStreamReader(reader);
     }
 
-    public static String save(XMLStreamReader reader) throws XMLStreamException {
+    public String saveAsString(XMLStreamReader reader) throws XMLStreamException {
         StringWriter writer = new StringWriter();
         save(reader, writer);
         return writer.toString();
     }
 
-    public static void save(XMLStreamReader reader, OutputStream outputStream) throws XMLStreamException {
+    public void save(XMLStreamReader reader, OutputStream outputStream) throws XMLStreamException {
+        XMLStreamSerializer serializer = new XMLStreamSerializer();
+        XMLStreamWriter streamWriter = createXMLStreamWriter(outputStream);
+        serializer.serialize(reader, streamWriter);
+        streamWriter.flush();
+    }
+
+    public XMLStreamWriter createXMLStreamWriter(OutputStream outputStream) throws XMLStreamException {
+        return outputFactory.createXMLStreamWriter(outputStream);
+    }
+
+    public void save(XMLStreamReader reader, Writer writer) throws XMLStreamException {
         XMLStreamSerializer serializer = new XMLStreamSerializer();
-        XMLStreamWriter streamWriter = OUTPUT_FACTORY.createXMLStreamWriter(outputStream);
+        XMLStreamWriter streamWriter = createXMLStreamWriter(writer);
         serializer.serialize(reader, streamWriter);
         streamWriter.flush();
     }
 
-    public static void save(XMLStreamReader reader, Writer writer) throws XMLStreamException {
+    public XMLStreamWriter createXMLStreamWriter(Writer writer) throws XMLStreamException {
+        return outputFactory.createXMLStreamWriter(writer);
+    }
+
+    public Node saveAsNode(XMLStreamReader reader) throws XMLStreamException {
         XMLStreamSerializer serializer = new XMLStreamSerializer();
-        XMLStreamWriter streamWriter = OUTPUT_FACTORY.createXMLStreamWriter(writer);
+        Document document = domHelper.newDocument();
+        DOMResult result = new DOMResult(document);
+        XMLStreamWriter streamWriter = createXMLStreamWriter(result);
         serializer.serialize(reader, streamWriter);
         streamWriter.flush();
+        return result.getNode();
+    }
+
+    public XMLStreamWriter createXMLStreamWriter(Result result) throws XMLStreamException {
+        return outputFactory.createXMLStreamWriter(result);
     }
 
-    public static void save(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+    public void save(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
         XMLStreamSerializer serializer = new XMLStreamSerializer();
         serializer.serialize(reader, writer);
         writer.flush();

Modified: tuscany/java/sca/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/stax/StAXHelperTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/stax/StAXHelperTestCase.java?rev=801826&r1=801818&r2=801826&view=diff
==============================================================================
--- tuscany/java/sca/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/stax/StAXHelperTestCase.java (original)
+++ tuscany/java/sca/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/stax/StAXHelperTestCase.java Thu Aug  6 22:32:41 2009
@@ -23,8 +23,10 @@
 
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.custommonkey.xmlunit.XMLAssert;
 import org.junit.Test;
+import org.w3c.dom.Node;
 
 /**
  * Test Case for StAXHelper
@@ -33,17 +35,22 @@
  */
 public class StAXHelperTestCase {
     private static final String XML =
-        "<a:foo xmlns:a='http://a' name='foo'><bar name='bar'>" 
-            + "<doo a:name='doo' xmlns:a='http://doo'/>"
+        "<a:foo xmlns:a='http://a' name='foo'><bar name='bar'>" + "<doo a:name='doo' xmlns:a='http://doo'/>"
             + "</bar></a:foo>";
 
     @Test
     public void testHelper() throws Exception {
-        XMLStreamReader reader = StAXHelper.createXMLStreamReader(XML);
-        String xml = StAXHelper.save(reader);
+        StAXHelper helper = new StAXHelper(new DefaultExtensionPointRegistry());
+        XMLStreamReader reader = helper.createXMLStreamReader(XML);
+        String xml = helper.saveAsString(reader);
         XMLAssert.assertXMLEqual(XML, xml);
-        reader = StAXHelper.createXMLStreamReader(xml);
+        reader = helper.createXMLStreamReader(xml);
         assertNotNull(reader);
+
+        Node node = helper.saveAsNode(reader);
+        // reader = helper.createXMLStreamReader(node);
+        assertNotNull(node.getFirstChild());
+
     }
 
 }