Author: jsdelfino
Date: Wed Feb 27 19:06:49 2008
New Revision: 631822

URL: http://svn.apache.org/viewvc?rev=631822&view=rev
Log:
Start to integrate the reading of contribution metadata.

Modified:
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java?rev=631822&r1=631821&r2=631822&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java
 Wed Feb 27 19:06:49 2008
@@ -40,13 +40,17 @@
 
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.DefaultContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import 
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
+import 
org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.implementation.data.collection.Entry;
 import org.apache.tuscany.sca.implementation.data.collection.Item;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
-import org.apache.tuscany.sca.workspace.DefaultWorkspaceFactory;
 import org.apache.tuscany.sca.workspace.Workspace;
 import org.apache.tuscany.sca.workspace.WorkspaceFactory;
 import org.apache.tuscany.sca.workspace.admin.WorkspaceCollection;
@@ -71,7 +75,8 @@
     private Workspace workspace;
     private WorkspaceProcessor workspaceProcessor;
     private XMLOutputFactory outputFactory;
-    private DocumentBuilder documentBuilder;
+    private XMLInputFactory inputFactory;
+    private ContributionMetadataDocumentProcessor 
contributionMetadataProcessor; 
     
     /**
      * Initialize the workspace administration component.
@@ -79,15 +84,26 @@
     @Init
     public void init() throws IOException, ContributionReadException, 
XMLStreamException, ParserConfigurationException {
         
+        // Create Tuscany extension point registry
+        ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
+
+        // Get extension points
+        ModelFactoryExtensionPoint factories = 
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        StAXArtifactProcessorExtensionPoint staxProcessors = 
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        
         // Create factories
-        contributionFactory = new DefaultContributionFactory();
-        workspaceFactory = new DefaultWorkspaceFactory();
-        outputFactory = XMLOutputFactory.newInstance();
+        contributionFactory = factories.getFactory(ContributionFactory.class);
+        workspaceFactory = factories.getFactory(WorkspaceFactory.class);
+        inputFactory = factories.getFactory(XMLInputFactory.class);
+        outputFactory = factories.getFactory(XMLOutputFactory.class);
         outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, 
Boolean.TRUE);
-        documentBuilder = 
DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        
-        // Read workspace.xml
+
+        // Create artifact processors
         workspaceProcessor = new WorkspaceProcessor(workspaceFactory, 
contributionFactory, null);
+        ExtensibleStAXArtifactProcessor staxProcessor = new 
ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
+        contributionMetadataProcessor = new 
ContributionMetadataDocumentProcessor(staxProcessor, inputFactory);
+
+        // Read workspace.xml
         File file = new File("workspace.xml");
         if (file.exists()) {
             XMLInputFactory inputFactory = XMLInputFactory.newInstance();
@@ -100,6 +116,7 @@
     }
     
     public Entry<String, Item>[] getAll() {
+
         // Return all the contributions
         List<Entry<String, Item>> entries = new ArrayList<Entry<String, 
Item>>();
         for (Contribution contribution: workspace.getContributions()) {
@@ -137,7 +154,7 @@
         workspace.getContributions().add(contribution);
         
         // Write the workspace
-        write();
+        writeWorkspace();
         
         return key;
     }
@@ -154,7 +171,7 @@
                 contributions.set(i, newContribution);
                 
                 // Write the workspace
-                write();
+                writeWorkspace();
                 
                 return;
             }
@@ -171,7 +188,7 @@
                 contributions.remove(i);
 
                 // Write the workspace
-                write();
+                writeWorkspace();
                 
                 return;
             }
@@ -181,8 +198,10 @@
 
     public Entry<String, Item>[] query(String queryString) {
         if (queryString.startsWith("importedBy=")) {
-            //FIXME Invoke the ContributionDependency code from workspace-impl
-            return getAll();
+            
+            // Read the contribution metadata documents
+            return null;
+            
         } else {
             throw new UnsupportedOperationException();
         }
@@ -191,7 +210,7 @@
     /**
      * Write the workspace back to disk
      */
-    private void write() {
+    private void writeWorkspace() {
         try {
             // First write to a byte stream
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -199,6 +218,7 @@
             workspaceProcessor.write(workspace, writer);
             
             // Parse again to pretty format the document
+            DocumentBuilder documentBuilder = 
DocumentBuilderFactory.newInstance().newDocumentBuilder();
             Document document = documentBuilder.parse(new 
ByteArrayInputStream(bos.toByteArray()));
             OutputFormat format = new OutputFormat();
             format.setIndenting(true);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to