Author: antelder
Date: Fri Apr 24 06:34:46 2009
New Revision: 768168

URL: http://svn.apache.org/viewvc?rev=768168&view=rev
Log:
Merge workspace xml processor into model module

Added:
    
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/
    
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceDocumentProcessor.java
    
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceProcessor.java
    
tuscany/java/sca/modules/workspace/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
    
tuscany/java/sca/modules/workspace/src/main/resources/workspace-xml-validation-messages.properties
    tuscany/java/sca/modules/workspace/src/test/
    tuscany/java/sca/modules/workspace/src/test/java/
    tuscany/java/sca/modules/workspace/src/test/java/org/
    tuscany/java/sca/modules/workspace/src/test/java/org/apache/
    tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/
    tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/
    
tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/
    
tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/xml/
    
tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/xml/ContributionWorkspaceProcessorTestCase.java
    tuscany/java/sca/modules/workspace/src/test/resources/
Removed:
    tuscany/java/sca/modules/workspace-xml/
Modified:
    tuscany/java/sca/modules/pom.xml
    tuscany/java/sca/modules/workspace-impl/pom.xml
    tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF

Modified: tuscany/java/sca/modules/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/pom.xml?rev=768168&r1=768167&r2=768168&view=diff
==============================================================================
--- tuscany/java/sca/modules/pom.xml (original)
+++ tuscany/java/sca/modules/pom.xml Fri Apr 24 06:34:46 2009
@@ -97,7 +97,6 @@
         <module>stripes</module>
         <module>workspace</module>
         <module>workspace-impl</module>
-        <module>workspace-xml</module>
         <module>xsd</module>
         <!-- OSGi RFC 119 -->
         <module>contribution-osgi</module>

Modified: tuscany/java/sca/modules/workspace-impl/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace-impl/pom.xml?rev=768168&r1=768167&r2=768168&view=diff
==============================================================================
--- tuscany/java/sca/modules/workspace-impl/pom.xml (original)
+++ tuscany/java/sca/modules/workspace-impl/pom.xml Fri Apr 24 06:34:46 2009
@@ -43,12 +43,6 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-workspace-xml</artifactId>
-            <version>2.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-contribution-xml</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>

Modified: tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF?rev=768168&r1=768167&r2=768168&view=diff
==============================================================================
--- tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF (original)
+++ tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF Fri Apr 24 06:34:46 
2009
@@ -14,9 +14,12 @@
 Bundle-ManifestVersion: 2
 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
 Bundle-Description: Apache Tuscany SCA Domain Workspace Model
-Import-Package: org.apache.tuscany.sca.assembly;version="2.0.0",
+Import-Package: javax.xml.namespace,
+ javax.xml.stream,
+ org.apache.tuscany.sca.assembly;version="2.0.0",
  org.apache.tuscany.sca.assembly.impl;version="2.0.0",
  org.apache.tuscany.sca.contribution;version="2.0.0",
+ org.apache.tuscany.sca.contribution.processor;version="2.0.0",
  org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",
  org.apache.tuscany.sca.extensibility;version="2.0.0",

Added: 
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceDocumentProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceDocumentProcessor.java?rev=768168&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceDocumentProcessor.java
 (added)
+++ 
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceDocumentProcessor.java
 Fri Apr 24 06:34:46 2009
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.workspace.xml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import 
org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.Problem;
+import org.apache.tuscany.sca.monitor.Problem.Severity;
+import org.apache.tuscany.sca.workspace.Workspace;
+
+/**
+ * A contribution workspace document processor.
+ * 
+ * @version $Rev: 709339 $ $Date: 2008-10-31 04:01:44 +0000 (Fri, 31 Oct 2008) 
$
+ */
+public class WorkspaceDocumentProcessor implements 
URLArtifactProcessor<Workspace> {
+    private XMLInputFactory inputFactory;
+    private StAXArtifactProcessor<Object> staxProcessor;
+    private Monitor monitor;
+    
+    /**
+     * Constructs a new componentType processor.
+     * @param factory
+     * @param policyFactory
+     * @param registry
+     */
+    public WorkspaceDocumentProcessor(StAXArtifactProcessor<Object> 
staxProcessor, 
+                                         XMLInputFactory inputFactory,
+                                         Monitor monitor) {
+        this.staxProcessor = staxProcessor;
+        this.inputFactory = inputFactory;
+        this.monitor = monitor;
+    }
+    
+    /**
+     * Report a exception.
+     * 
+     * @param problems
+     * @param message
+     * @param model
+     */
+     private void error(String message, Object model, Exception ex) {
+        if (monitor != null) {
+                Problem problem = 
monitor.createProblem(this.getClass().getName(), 
"workspace-xml-validation-messages", Severity.ERROR, model, message, ex);
+            monitor.problem(problem);
+        }        
+     }
+    
+    public Workspace read(URL contributionURL, URI uri, URL url) throws 
ContributionReadException {
+        InputStream urlStream = null;
+        try {
+            
+            // Create a stream reader
+            URLConnection connection = url.openConnection();
+            connection.setUseCaches(false);
+            urlStream = connection.getInputStream();
+            XMLStreamReader reader = 
inputFactory.createXMLStreamReader(url.toString(), urlStream);
+            reader.nextTag();
+            
+            // Read the workspace model 
+            Workspace workspace = (Workspace)staxProcessor.read(reader);
+            if (workspace != null) {
+                workspace.setURI(uri.toString());
+            }
+
+            return workspace;
+            
+        } catch (XMLStreamException e) {
+               ContributionReadException ce = new ContributionReadException(e);
+               error("ContributionReadException", inputFactory, ce);
+            throw ce;
+        } catch (IOException e) {
+               ContributionReadException ce = new ContributionReadException(e);
+               error("ContributionReadException", staxProcessor, ce);
+            throw ce;
+        } finally {
+            try {
+                if (urlStream != null) {
+                    urlStream.close();
+                    urlStream = null;
+                }
+            } catch (IOException ioe) {
+                //ignore
+            }
+        }
+    }
+    
+    public void resolve(Workspace workspace, ModelResolver resolver) throws 
ContributionResolveException {
+        staxProcessor.resolve(workspace, resolver);
+    }
+    
+    public String getArtifactType() {
+        return ".workspace";
+    }
+    
+    public Class<Workspace> getModelType() {
+        return Workspace.class;
+    }
+}

Added: 
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceProcessor.java?rev=768168&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceProcessor.java
 (added)
+++ 
tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/xml/WorkspaceProcessor.java
 Fri Apr 24 06:34:46 2009
@@ -0,0 +1,167 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.workspace.xml;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import 
org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
+import 
org.apache.tuscany.sca.contribution.processor.ContributionWriteException;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.workspace.Workspace;
+import org.apache.tuscany.sca.workspace.WorkspaceFactory;
+
+/**
+ * A contribution workspace processor.
+ * 
+ * @version $Rev: 750323 $ $Date: 2009-03-05 05:52:01 +0000 (Thu, 05 Mar 2009) 
$
+ */
+public class WorkspaceProcessor extends BaseStAXArtifactProcessor implements 
StAXArtifactProcessor<Workspace> {
+    
+    private static final String SCA10_TUSCANY_NS = 
"http://tuscany.apache.org/xmlns/sca/1.1";;
+    private static final QName WORKSPACE_QNAME = new QName(SCA10_TUSCANY_NS, 
"workspace");
+    private static final QName CONTRIBUTION_QNAME = new 
QName(SCA10_TUSCANY_NS, "contribution");
+    private static final String URI = "uri";
+    private static final String LOCATION = "location";
+    
+    private WorkspaceFactory workspaceFactory;
+    private ContributionFactory contributionFactory;
+    
+    /**
+     * Constructs a new contribution workspace processor.
+     * 
+     * @param contributionFactory
+     * @param extensionProcessor
+     */
+    public WorkspaceProcessor(WorkspaceFactory workspaceFactory, 
ContributionFactory contributionFactory, StAXArtifactProcessor<Object> 
extensionProcessor) {
+        this.workspaceFactory = workspaceFactory;
+        this.contributionFactory = contributionFactory;
+    }
+
+    /**
+     * Constructs a new contribution workspace processor.
+     * 
+     * @param modelFactories
+     * @param extensionProcessor
+     */
+    public WorkspaceProcessor(FactoryExtensionPoint modelFactories, 
StAXArtifactProcessor<Object> extensionProcessor, Monitor monitor) {
+        this.workspaceFactory = 
modelFactories.getFactory(WorkspaceFactory.class);
+        this.contributionFactory = 
modelFactories.getFactory(ContributionFactory.class);
+    }
+    
+    public Workspace read(XMLStreamReader reader) throws 
ContributionReadException, XMLStreamException {
+        
+        Workspace workspace = null;
+        Contribution contribution = null;
+        
+        // Read the workspace document
+        while (reader.hasNext()) {
+            int event = reader.getEventType();
+            switch (event) {
+                case START_ELEMENT:
+                    QName name = reader.getName();
+
+                    if (WORKSPACE_QNAME.equals(name)) {
+
+                        // Read a <workspace>
+                        workspace = workspaceFactory.createWorkspace();
+                        workspace.setUnresolved(true);
+
+                    } else if (CONTRIBUTION_QNAME.equals(name)) {
+
+                        // Read a <contribution>
+                        contribution = 
contributionFactory.createContribution();
+                        contribution.setURI(getString(reader, URI));
+                        contribution.setLocation(getString(reader, LOCATION));
+                        contribution.setUnresolved(true);
+                        workspace.getContributions().add(contribution);
+                    }
+                    break;
+
+                case END_ELEMENT:
+                    name = reader.getName();
+
+                    // Clear current state when reading reaching end element
+                    if (CONTRIBUTION_QNAME.equals(name)) {
+                        contribution = null;
+                    }
+                    break;
+            }
+            
+            // Read the next element
+            if (reader.hasNext()) {
+                reader.next();
+            }
+        }
+        return workspace;
+    }
+    
+    public void write(Workspace workspace, XMLStreamWriter writer) throws 
ContributionWriteException, XMLStreamException {
+        
+        // Write <workspace> element
+        writeStartDocument(writer, WORKSPACE_QNAME);
+
+        // Write <contribution> elements
+        for (Contribution contribution: workspace.getContributions()) {
+            writeStart(writer, CONTRIBUTION_QNAME,
+                           new XAttr(URI, contribution.getURI()), new 
XAttr(LOCATION, contribution.getLocation()));
+            writeEnd(writer);
+        }
+
+        writeEndDocument(writer);
+    }
+    
+    public void resolve(Workspace workspace, ModelResolver resolver) throws 
ContributionResolveException {
+        
+        // Resolve the contributions referenced by the workspace
+        List<Contribution> contributions = workspace.getContributions();
+        for (int i = 0, n = contributions.size(); i < n; i++) {
+            Contribution contribution = contributions.get(i);
+            Contribution resolved = resolver.resolveModel(Contribution.class, 
contribution);
+            if (resolved != contribution) {
+                contributions.set(i, resolved);
+            }
+        }
+        
+        workspace.setUnresolved(false);
+    }
+    
+    public QName getArtifactType() {
+        return WORKSPACE_QNAME;
+    }
+    
+    public Class<Workspace> getModelType() {
+        return Workspace.class;
+    }
+}

Added: 
tuscany/java/sca/modules/workspace/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor?rev=768168&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/workspace/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
 (added)
+++ 
tuscany/java/sca/modules/workspace/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
 Fri Apr 24 06:34:46 2009
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License. 
+
+# Implementation class for the artifact processor extension
+org.apache.tuscany.sca.workspace.xml.WorkspaceProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#workspace,model=org.apache.tuscany.sca.workspace.Workspace

Added: 
tuscany/java/sca/modules/workspace/src/main/resources/workspace-xml-validation-messages.properties
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/src/main/resources/workspace-xml-validation-messages.properties?rev=768168&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/workspace/src/main/resources/workspace-xml-validation-messages.properties
 (added)
+++ 
tuscany/java/sca/modules/workspace/src/main/resources/workspace-xml-validation-messages.properties
 Fri Apr 24 06:34:46 2009
@@ -0,0 +1,22 @@
+#
+#
+#    Licensed to the Apache Software Foundation (ASF) under one
+#    or more contributor license agreements. See the NOTICE file
+#    distributed with this work for additional information
+#    regarding copyright ownership. The ASF licenses this file
+#    to you under the Apache License, Version 2.0 (the
+#    "License"); you may not use this file except in compliance
+#    with the License. You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing,
+#    software distributed under the License is distributed on an
+#    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#    KIND, either express or implied. See the License for the
+#    specific language governing permissions and limitations
+#    under the License.
+#
+#
+ContributionReadException = ContributionReadException occured due to :
+ContributionResolveException = ContributionResolveException occured due to :
\ No newline at end of file

Added: 
tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/xml/ContributionWorkspaceProcessorTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/xml/ContributionWorkspaceProcessorTestCase.java?rev=768168&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/xml/ContributionWorkspaceProcessorTestCase.java
 (added)
+++ 
tuscany/java/sca/modules/workspace/src/test/java/org/apache/tuscany/sca/workspace/xml/ContributionWorkspaceProcessorTestCase.java
 Fri Apr 24 06:34:46 2009
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.workspace.xml;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.StringReader;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import 
org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
+import 
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.workspace.Workspace;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Test the workspace processor.
+ * 
+ * @version $Rev: 750323 $ $Date: 2009-03-05 05:52:01 +0000 (Thu, 05 Mar 2009) 
$
+ */
+
+public class ContributionWorkspaceProcessorTestCase {
+
+    private static final String VALID_XML =
+        "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + "<workspace 
xmlns=\"http://tuscany.apache.org/xmlns/sca/1.1\";>"
+            + "<contribution uri=\"uri1\" location=\"location1\"/>"
+            + "<contribution uri=\"uri2\" location=\"location2\"/>"
+            + "</workspace>";
+
+    private static final String INVALID_XML =
+        "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + "<workspace 
xmlns=\"http://tuscany.apache.org/xmlns/sca/1.1\";>"
+            + "<contribution uri=\"uri1\" location=\"location1\"/>"
+            + "<contribution uri=\"uri2\" location=\"location2\"/>"
+            + "</contribution>"
+            + "</workspace>";
+
+    private static XMLInputFactory inputFactory;
+    private static StAXArtifactProcessor<Object> staxProcessor;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        DefaultExtensionPointRegistry extensionPoints = new 
DefaultExtensionPointRegistry();
+        inputFactory = XMLInputFactory.newInstance();
+        StAXArtifactProcessorExtensionPoint staxProcessors =
+            new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints);
+        staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, 
inputFactory, null, null);
+    }
+
+    @Test
+    public void testRead() throws Exception {
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(new 
StringReader(VALID_XML));
+        Workspace workspace = (Workspace)staxProcessor.read(reader);
+        assertNotNull(workspace);
+        assertEquals(2, workspace.getContributions().size());
+        assertEquals("uri2", workspace.getContributions().get(1).getURI());
+        assertEquals("location2", 
workspace.getContributions().get(1).getLocation());
+    }
+
+    @Test
+    public void testReadInvalid() throws Exception {
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(new 
StringReader(INVALID_XML));
+        try {
+            staxProcessor.read(reader);
+            fail("InvalidException should have been thrown");
+        } catch (XMLStreamException e) {
+            assertTrue(true);
+        }
+    }
+}


Reply via email to