You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/03/09 01:09:29 UTC

svn commit: r635118 - in /incubator/tuscany/java/sca/modules/workspace-admin: ./ src/main/java/org/apache/tuscany/sca/workspace/admin/ src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ src/main/java/org/apache/tuscany/sca/workspace/admin/launc...

Author: jsdelfino
Date: Sat Mar  8 16:09:21 2008
New Revision: 635118

URL: http://svn.apache.org/viewvc?rev=635118&view=rev
Log:
Minor cleanup, adjusted some names for consistency. Added some missing dependencies. Made the admin components stateless to allow multiple admins and IDEs to work off the same files without having to restart.

Added:
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCollectionImpl.java
      - copied, changed from r634808, incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java
      - copied, changed from r634808, incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java   (with props)
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java   (with props)
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/CompositeCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionFileCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalCompositeCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileServiceImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/AdminLauncher.java
Modified:
    incubator/tuscany/java/sca/modules/workspace-admin/pom.xml
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
    incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
    incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java

Modified: incubator/tuscany/java/sca/modules/workspace-admin/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/pom.xml?rev=635118&r1=635117&r2=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/pom.xml Sat Mar  8 16:09:21 2008
@@ -92,85 +92,72 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-implementation-java</artifactId>
-            <version>1.2-incubating-SNAPSHOT</version>
-        </dependency> 
-        
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-implementation-java-xml</artifactId>
-            <version>1.2-incubating-SNAPSHOT</version>
-            <scope>runtime</scope>
-        </dependency>         
-        
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-implementation-java-runtime</artifactId>
+            <artifactId>tuscany-host-tomcat</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-feed-atom</artifactId>
+            <artifactId>tuscany-contribution-xml</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
-            <scope>runtime</scope>
         </dependency>
-
+        
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-implementation-widget</artifactId>
+            <artifactId>tuscany-contribution-java</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-host-tomcat</artifactId>
+            <artifactId>tuscany-contribution-namespace</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
-
+        
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-contribution-xml</artifactId>
+            <artifactId>tuscany-contribution-resource</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
+            <scope>runtime</scope>
         </dependency>
         
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-contribution-java</artifactId>
+            <artifactId>tuscany-implementation-java-runtime</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-contribution-namespace</artifactId>
+            <artifactId>tuscany-implementation-widget</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
-        
+
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-ws</artifactId>
+            <artifactId>tuscany-binding-feed-atom</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
-        </dependency> 
-        
+        </dependency>
+
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-ws-axis2</artifactId>
+            <artifactId>tuscany-binding-jsonrpc</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
-        </dependency>  
-        
+        </dependency>
+
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-ws-xml</artifactId>
+            <artifactId>tuscany-binding-ws-axis2</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
-        </dependency>          
+        </dependency>
 
     </dependencies>
 </project>

Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java?rev=635118&r1=635117&r2=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java Sat Mar  8 16:09:21 2008
@@ -24,17 +24,14 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.namespace.QName;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
@@ -45,13 +42,12 @@
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 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.ItemCollection;
+import org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
 import org.apache.tuscany.sca.policy.PolicyFactory;
-import org.apache.tuscany.sca.workspace.admin.CompositeCollection;
-import org.apache.tuscany.sca.workspace.admin.LocalCompositeCollection;
 import org.apache.xml.serialize.OutputFormat;
 import org.apache.xml.serialize.XMLSerializer;
 import org.osoa.sca.ServiceRuntimeException;
@@ -68,17 +64,17 @@
  * @version $Rev: 632617 $ $Date: 2008-03-01 08:24:33 -0800 (Sat, 01 Mar 2008) $
  */
 @Scope("COMPOSITE")
-@Service(interfaces={CompositeCollection.class,LocalCompositeCollection.class})
-public class CompositeCollectionImpl implements CompositeCollection, LocalCompositeCollection {
+@Service(interfaces={ItemCollection.class,LocalItemCollection.class})
+public class CompositeCollectionImpl implements ItemCollection, LocalItemCollection {
     
     @Property
     public String compositeFileName;
     
     @Reference
-    public LocalCompositeCollection deployableCompositeCollection;
+    public LocalItemCollection deployableCompositeCollection;
 
+    private ModelFactoryExtensionPoint modelFactories;
     private AssemblyFactory assemblyFactory;
-    private Composite compositeCollection;
     private CompositeProcessor compositeProcessor;
     private XMLOutputFactory outputFactory;
     
@@ -86,33 +82,49 @@
      * Initialize the component.
      */
     @Init
-    public void initialize() throws IOException, ContributionReadException, XMLStreamException, ParserConfigurationException {
+    public void initialize() {
         
         // Create factories
-        ModelFactoryExtensionPoint modelFactories = new DefaultModelFactoryExtensionPoint();
+        modelFactories = new DefaultModelFactoryExtensionPoint();
         assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
         outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
         outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
         
-        // Read domain.composite
+        // Create composite processor
         ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
         PolicyFactory policyFactory = modelFactories.getFactory(PolicyFactory.class);
         compositeProcessor = new CompositeProcessor(contributionFactory, assemblyFactory, policyFactory, null);
+    }
+    
+    /**
+     * Reads the domain composite.
+     * 
+     * @return the domain composite
+     * @throws ServiceRuntimeException
+     */
+    private Composite readCompositeCollection() throws ServiceRuntimeException {
+        Composite compositeCollection;
         File file = new File(compositeFileName);
         if (file.exists()) {
             XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
-            FileInputStream is = new FileInputStream(file);
-            XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
-            compositeCollection = compositeProcessor.read(reader);
+            try {
+                FileInputStream is = new FileInputStream(file);
+                XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+                compositeCollection = compositeProcessor.read(reader);
+            } catch (Exception e) {
+                throw new ServiceRuntimeException(e);
+            }
         } else {
             compositeCollection = assemblyFactory.createComposite();
             compositeCollection.setName(new QName(Constants.SCA10_TUSCANY_NS, compositeFileName));
         }
+        return compositeCollection;
     }
     
     public Entry<String, Item>[] getAll() {
         // Return all the composites in the domain composite
         List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+        Composite compositeCollection = readCompositeCollection();
         for (Composite composite: compositeCollection.getIncludes()) {
             Entry<String, Item> entry = new Entry<String, Item>();
             String contributionURI = composite.getURI();
@@ -131,6 +143,7 @@
         QName qname = qname(key);
 
         // Returns the composite with the given name key
+        Composite compositeCollection = readCompositeCollection();
         for (Composite composite: compositeCollection.getIncludes()) {
             if (contributionURI.equals(composite.getURI()) && qname.equals(composite.getName())) {
                 Item item = compositeItem(composite.getURI(), qname);
@@ -145,6 +158,7 @@
         QName qname = qname(key);
         
         // Adds a new composite to the domain composite
+        Composite compositeCollection = readCompositeCollection();
         Composite composite = assemblyFactory.createComposite();
         composite.setName(qname);
         composite.setURI(contributionURI);
@@ -152,7 +166,7 @@
         compositeCollection.getIncludes().add(composite);
         
         // Write the domain composite
-        write();
+        writeCompositeCollection(compositeCollection);
         
         return key;
     }
@@ -162,6 +176,7 @@
         QName qname = qname(key);
         
         // Update a composite already in the domain composite
+        Composite compositeCollection = readCompositeCollection();
         Composite newComposite = assemblyFactory.createComposite();
         newComposite.setName(qname);
         newComposite.setURI(contributionURI);
@@ -173,7 +188,7 @@
                 composites.set(i, newComposite);
                 
                 // Write the domain composite
-                write();
+                writeCompositeCollection(compositeCollection);
                 
                 return;
             }
@@ -186,6 +201,7 @@
         QName qname = qname(key);
         
         // Delete a composite from the domain composite
+        Composite compositeCollection = readCompositeCollection();
         List<Composite> composites = compositeCollection.getIncludes();
         for (int i = 0, n = composites.size(); i < n; i++) {
             Composite composite = composites.get(i);
@@ -193,8 +209,7 @@
                 composites.remove(i);
 
                 // Write the domain composite
-                write();
-                
+                writeCompositeCollection(compositeCollection);
                 return;
             }
         }
@@ -206,9 +221,11 @@
     }
     
     /**
-     * Write the domain composite back to disk
+     * Write the domain composite back to disk.
+     * 
+     * @param compositeCollection
      */
-    private void write() {
+    private void writeCompositeCollection(Composite compositeCollection) {
         try {
             // First write to a byte stream
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -226,7 +243,6 @@
             FileOutputStream os = new FileOutputStream(new File(compositeFileName));
             XMLSerializer serializer = new XMLSerializer(os, format);
             serializer.serialize(document);
-            
         } catch (Exception e) {
             throw new ServiceRuntimeException(e);
         }

Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java?rev=635118&r1=635117&r2=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java Sat Mar  8 16:09:21 2008
@@ -61,11 +61,11 @@
 import org.apache.tuscany.sca.contribution.xml.ContributionMetadataProcessor;
 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.ItemCollection;
+import org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
 import org.apache.tuscany.sca.workspace.Workspace;
 import org.apache.tuscany.sca.workspace.WorkspaceFactory;
-import org.apache.tuscany.sca.workspace.admin.ContributionCollection;
-import org.apache.tuscany.sca.workspace.admin.LocalContributionCollection;
 import org.apache.tuscany.sca.workspace.dependency.impl.ContributionDependencyAnalyzer;
 import org.apache.tuscany.sca.workspace.processor.impl.ContributionInfoProcessor;
 import org.apache.tuscany.sca.workspace.xml.WorkspaceProcessor;
@@ -84,8 +84,8 @@
  * @version $Rev$ $Date$
  */
 @Scope("COMPOSITE")
-@Service(interfaces={ContributionCollection.class, LocalContributionCollection.class})
-public class ContributionCollectionImpl implements ContributionCollection, LocalContributionCollection {
+@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
+public class ContributionCollectionImpl implements ItemCollection, LocalItemCollection {
 
     @Property
     public String workspaceFileName;
@@ -93,10 +93,10 @@
     private ContributionFactory contributionFactory;
     private AssemblyFactory assemblyFactory;
     private WorkspaceFactory workspaceFactory;
-    private Workspace workspace;
     private StAXArtifactProcessor<Object> staxProcessor;
     private URLArtifactProcessor<Object> urlProcessor;
     private URLArtifactProcessor<Contribution> contributionInfoProcessor;
+    private XMLInputFactory inputFactory;
     private XMLOutputFactory outputFactory;
     
     /**
@@ -117,7 +117,7 @@
         ModelResolverExtensionPoint modelResolvers = new DefaultModelResolverExtensionPoint();
 
         // Create artifact processors
-        XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
+        inputFactory = modelFactories.getFactory(XMLInputFactory.class);
         StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(modelFactories);
         staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
         staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory, staxProcessor));
@@ -131,22 +131,13 @@
         // Create contribution info processor
         contributionInfoProcessor = new ContributionInfoProcessor(modelFactories, modelResolvers, urlProcessor);
 
-        // Read workspace.xml
-        File file = new File(workspaceFileName);
-        if (file.exists()) {
-            FileInputStream is = new FileInputStream(file);
-            XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
-            reader.nextTag();
-            workspace = (Workspace)staxProcessor.read(reader);
-        } else {
-            workspace = workspaceFactory.createWorkspace();
-        }
     }
     
     public Entry<String, Item>[] getAll() {
 
         // Return all the contributions
         List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+        Workspace workspace = readWorkspace();
         for (Contribution contribution: workspace.getContributions()) {
             entries.add(entry(contribution));
         }
@@ -156,6 +147,7 @@
     public Item get(String key) throws NotFoundException {
 
         // Returns the contribution with the given URI key
+        Workspace workspace = readWorkspace();
         for (Contribution contribution: workspace.getContributions()) {
             if (key.equals(contribution.getURI())) {
                 Item item = new Item();
@@ -170,13 +162,14 @@
     public String post(String key, Item item) {
         
         // Adds a new contribution to the workspace
+        Workspace workspace = readWorkspace();
         Contribution contribution = contributionFactory.createContribution();
         contribution.setURI(key);
         contribution.setLocation(item.getLink());
         workspace.getContributions().add(contribution);
         
         // Write the workspace
-        writeWorkspace();
+        writeWorkspace(workspace);
         
         return key;
     }
@@ -184,6 +177,7 @@
     public void put(String key, Item item) throws NotFoundException {
         
         // Update a contribution already in the workspace
+        Workspace workspace = readWorkspace();
         Contribution newContribution = contributionFactory.createContribution();
         newContribution.setURI(key);
         newContribution.setLocation(item.getLink());
@@ -193,8 +187,7 @@
                 contributions.set(i, newContribution);
                 
                 // Write the workspace
-                writeWorkspace();
-                
+                writeWorkspace(workspace);
                 return;
             }
         }
@@ -204,13 +197,14 @@
     public void delete(String key) throws NotFoundException {
         
         // Delete a contribution from the workspace
+        Workspace workspace = readWorkspace();
         List<Contribution> contributions = workspace.getContributions();
         for (int i = 0, n = contributions.size(); i < n; i++) {
             if (contributions.get(i).getURI().equals(key)) {
                 contributions.remove(i);
 
                 // Write the workspace
-                writeWorkspace();
+                writeWorkspace(workspace);
                 
                 return;
             }
@@ -225,6 +219,7 @@
             List<Entry<String, Item>> entries = new ArrayList<Entry<String,Item>>();
             
             // Read the metadata for all the contributions into a temporary workspace
+            Workspace workspace = readWorkspace();
             Workspace dependencyWorkspace = workspaceFactory.createWorkspace();
             try {
                 for (Contribution c: workspace.getContributions()) {
@@ -300,9 +295,34 @@
     }
     
     /**
+     * Read the workspace.
+     * 
+     * @return
+     */
+    private Workspace readWorkspace() {
+        Workspace workspace;
+        File file = new File(workspaceFileName);
+        if (file.exists()) {
+            try {
+                FileInputStream is = new FileInputStream(file);
+                XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+                reader.nextTag();
+                workspace = (Workspace)staxProcessor.read(reader);
+            } catch (Exception e) {
+                throw new ServiceRuntimeException(e);
+            }
+        } else {
+            workspace = workspaceFactory.createWorkspace();
+        }
+        return workspace;
+    }
+    
+    /**
      * Write the workspace back to disk
+     * 
+     * @param workspace
      */
-    private void writeWorkspace() {
+    private void writeWorkspace(Workspace workspace) {
         try {
             // First write to a byte stream
             ByteArrayOutputStream bos = new ByteArrayOutputStream();

Copied: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCollectionImpl.java (from r634808, incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCollectionImpl.java?p2=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCollectionImpl.java&p1=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java&r1=634808&r2=635118&rev=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCollectionImpl.java Sat Mar  8 16:09:21 2008
@@ -62,7 +62,6 @@
 import org.apache.tuscany.sca.contribution.Artifact;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.Import;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
@@ -70,7 +69,6 @@
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
@@ -86,6 +84,8 @@
 import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
 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.ItemCollection;
+import org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
 import org.apache.tuscany.sca.implementation.node.NodeImplementation;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
@@ -93,9 +93,6 @@
 import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.workspace.admin.CompositeCollection;
-import org.apache.tuscany.sca.workspace.admin.LocalCompositeCollection;
-import org.apache.tuscany.sca.workspace.admin.LocalContributionCollection;
 import org.apache.tuscany.sca.workspace.processor.impl.ContributionContentProcessor;
 import org.apache.xml.serialize.OutputFormat;
 import org.apache.xml.serialize.XMLSerializer;
@@ -112,19 +109,20 @@
  * @version $Rev$ $Date$
  */
 @Scope("COMPOSITE")
-@Service(interfaces={CompositeCollection.class, LocalCompositeCollection.class, Servlet.class})
-public class DeployableCompositeCollectionImpl extends HttpServlet implements CompositeCollection, LocalCompositeCollection {
+@Service(interfaces={ItemCollection.class, LocalItemCollection.class, Servlet.class})
+public class DeployableCollectionImpl extends HttpServlet implements ItemCollection, LocalItemCollection {
     private static final long serialVersionUID = -8809641932774129151L;
-    private final static Logger logger = Logger.getLogger(DeployableCompositeCollectionImpl.class.getName());    
+    
+    private final static Logger logger = Logger.getLogger(DeployableCollectionImpl.class.getName());    
 
     @Reference
-    public LocalContributionCollection contributionCollection;
+    public LocalItemCollection contributionCollection;
     
     @Reference 
-    public LocalCompositeCollection domainCompositeCollection;
+    public LocalItemCollection domainCompositeCollection;
     
     @Reference 
-    public LocalCompositeCollection cloudCollection;    
+    public LocalItemCollection cloudCollection;    
 
     private ModelFactoryExtensionPoint modelFactories;
     private ModelResolverExtensionPoint modelResolvers;
@@ -133,7 +131,7 @@
     private StAXArtifactProcessor<Composite> compositeProcessor;
     private XMLOutputFactory outputFactory;
     private CompositeBuilder compositeBuilder;
-    private CompositeConfigurationBuilderImpl compositeConfiguationBuilder;
+    private CompositeConfigurationBuilderImpl compositeConfigurationBuilder;
     private List<ContributionListener> contributionListeners;
     
     /**
@@ -199,7 +197,7 @@
             compositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory,
                                                         contractMapper, domainPolicySets, monitor);
             
-            compositeConfiguationBuilder = new CompositeConfigurationBuilderImpl(assemblyFactory, 
+            compositeConfigurationBuilder = new CompositeConfigurationBuilderImpl(assemblyFactory, 
                                                                                  scaBindingFactory, 
                                                                                  intentAttachPointTypeFactory,
                                                                                  contractMapper,
@@ -429,7 +427,7 @@
             }
            
             try {
-                compositeConfiguationBuilder.calculateBindingURIs(defaultBindings, composite, null);
+                compositeConfigurationBuilder.calculateBindingURIs(defaultBindings, composite, null);
             } catch (CompositeBuilderException e) {
                 throw new ServletException(e);
             }

Copied: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java (from r634808, incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileCollectionImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java?p2=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java&p1=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileCollectionImpl.java&r1=634808&r2=635118&rev=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java Sat Mar  8 16:09:21 2008
@@ -26,8 +26,8 @@
 
 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.ItemCollection;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
-import org.apache.tuscany.sca.workspace.admin.ContributionFileCollection;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Scope;
@@ -39,39 +39,36 @@
  * @version $Rev$ $Date$
  */
 @Scope("COMPOSITE")
-@Service(ContributionFileCollection.class)
-public class ContributionFileCollectionImpl implements ContributionFileCollection {
+@Service(ItemCollection.class)
+public class FileCollectionImpl implements ItemCollection {
     
     @Property
     public String directoryName;
 
-    private File files;
-    
     /**
      * Initialize the component.
      */
     @Init
     public void initialize() throws IOException {
-        files = new File(directoryName);
-        if (!files.exists()) {
-            files.mkdirs();
-        }
     }
     
     public Entry<String, Item>[] getAll() {
         // Return all the contributions
         List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
-        for (File file: files.listFiles()) {
-            if (file.getName().startsWith(".")) {
-                continue;
+        File directory = new File(directoryName);
+        if (directory.exists()) {
+            for (File file: directory.listFiles()) {
+                if (file.getName().startsWith(".")) {
+                    continue;
+                }
+                Entry<String, Item> entry = new Entry<String, Item>();
+                entry.setKey(file.getName());
+                Item item = new Item();
+                item.setTitle(file.getName());
+                item.setLink("/files/" + file.getName());
+                entry.setData(item);
+                entries.add(entry);
             }
-            Entry<String, Item> entry = new Entry<String, Item>();
-            entry.setKey(file.getName());
-            Item item = new Item();
-            item.setTitle(file.getName());
-            item.setLink("/files/" + file.getName());
-            entry.setData(item);
-            entries.add(entry);
         }
         return entries.toArray(new Entry[entries.size()]);
     }
@@ -89,7 +86,8 @@
     }
 
     public void delete(String key) throws NotFoundException {
-        File file = new File(files, key);
+        File directory = new File(directoryName);
+        File file = new File(directory, key);
         if (file.exists()) {
             file.delete();
         } else {
@@ -100,5 +98,4 @@
     public Entry<String, Item>[] query(String queryString) {
         throw new UnsupportedOperationException();
     }
-
 }

Added: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java?rev=635118&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java Sat Mar  8 16:09:21 2008
@@ -0,0 +1,146 @@
+/*
+ * 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.admin.impl;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URLConnection;
+import java.net.URLDecoder;
+import java.util.List;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Implementation of a servlet component supporting file upload/download.
+ *
+ * @version $Rev$ $Date$
+ */
+@Scope("COMPOSITE")
+@Service(Servlet.class)
+public class FileServiceImpl extends HttpServlet {
+    private static final long serialVersionUID = -4560385595481971616L;
+    
+    @Property
+    public String directoryName;
+    
+    private ServletFileUpload upload;
+    
+    /**
+     * Initialize the component.
+     */
+    @Init
+    public void initialize() throws IOException {
+        upload = new ServletFileUpload(new DiskFileItemFactory());
+    }
+    
+    @Override
+    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+        // Upload contributions
+        try {
+            for (FileItem item: (List<FileItem>)upload.parseRequest(request)) {
+                if (!item.isFormField()) {
+                    File directory = new File(directoryName);
+                    if (!directory.exists()) {
+                        directory.mkdirs();
+                    }
+                    item.write(new File(directory, item.getName()));
+                }
+            }
+            response.sendRedirect("/ui/files");
+        }
+        catch (Exception e) {
+            throw new IOException(e.toString());
+        }
+    }
+    
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        
+        // Download a contribution file
+        String requestURI = URLDecoder.decode(request.getRequestURI(), "UTF-8");
+        String path = requestURI.substring(request.getServletPath().length());
+        if (path.startsWith("/")) {
+            path = path.substring(1);
+        }
+        try {
+            URI uri = URI.create(path);
+            
+            // Default to file protocol
+            if (uri.getScheme() == null) {
+                File directory = new File(directoryName);
+                uri = new File(directory, path).toURI();
+            }
+            
+            // Support the following syntaxes
+            // foo.jar!/file.txt
+            // directory!/file.txt
+            // directory/!/file.txt
+            String str = uri.toString();
+            int e = str.indexOf("!/"); 
+            if (e != -1) {
+                int s = str.lastIndexOf('/', e - 2) +1;
+                if (str.substring(s, e).contains(".")) {
+                    str = "jar:" + str;
+                } else {
+                    str = str.substring(0, e) + str.substring(e + 1);
+                }
+                uri = URI.create(str);
+            }
+            
+            // Read the file and write to response 
+            URLConnection connection = uri.toURL().openConnection();
+            connection.setUseCaches(false);
+            connection.connect();
+            InputStream is = connection.getInputStream();
+            ServletOutputStream os = response.getOutputStream();
+            byte[] buffer = new byte[4096];
+            for (;;) {
+                int n = is.read(buffer);
+                if (n < 0) {
+                    break;
+                }
+                os.write(buffer, 0, n);
+            }
+            is.close();
+            os.flush();
+            
+      } catch (FileNotFoundException e) {
+          response.sendError(HttpServletResponse.SC_NOT_FOUND);
+      }
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java?rev=635118&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java Sat Mar  8 16:09:21 2008
@@ -0,0 +1,144 @@
+/*
+ * 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.admin.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+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.ItemCollection;
+import org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
+import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Implementation of a package collection service. 
+ *
+ * @version $Rev$ $Date$
+ */
+@Scope("COMPOSITE")
+@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
+public class ImageCollectionImpl implements ItemCollection, LocalItemCollection {
+
+    @Reference
+    public LocalItemCollection contributionCollection;
+    
+    /**
+     * Initialize the component.
+     */
+    @Init
+    public void initialize() {
+    }
+    
+    public Entry<String, Item>[] getAll() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Item get(String key) throws NotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public String post(String key, Item item) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void put(String key, Item item) throws NotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void delete(String key) throws NotFoundException {
+        throw new UnsupportedOperationException();
+    }
+    
+    public Entry<String, Item>[] query(String queryString) {
+        if (queryString.startsWith("composite=")) {
+
+            // Expecting a key in the form:
+            // composite:contributionURI;namespace;localName
+            int e = queryString.indexOf('=');
+            String key = queryString.substring(e + 1);
+            String contributionURI = uri(key);
+            QName qname = qname(key);
+            
+            // Return a collection containing the following entries:
+            // the resolved version of the specified composite
+            // the required contributions
+            List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+            
+            // Add the resolved composite entry
+            Entry<String, Item> compositeEntry = new Entry<String, Item>();
+            Item compositeItem = new Item();
+            compositeItem.setTitle(title(contributionURI, qname));
+            compositeItem.setLink("/resolved/composite/" + key);
+            compositeEntry.setKey(key);
+            compositeEntry.setData(compositeItem);
+            entries.add(compositeEntry);
+            
+            // Get the collection of required contributions
+            Entry<String, Item>[] contributionEntries = contributionCollection.query("alldependencies=" + contributionURI);
+            for (Entry<String, Item> entry: contributionEntries) {
+                entries.add(entry);
+            }
+
+            return entries.toArray(new Entry[entries.size()]);
+            
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+    
+    /**
+     * Extracts a qname from a key expressed as contributionURI;namespace;localpart.
+     * @param key
+     * @return
+     */
+    private static QName qname(String key) {
+        int i = key.indexOf(';');
+        key = key.substring(i + 1);
+        i = key.indexOf(';');
+        return new QName(key.substring(0, i), key.substring(i + 1));
+    }
+    
+    /**
+     * Extracts a contribution uri from a key expressed as contributionURI;namespace;localpart.
+     * @param key
+     * @return
+     */
+    private static String uri(String key) {
+        int i = key.indexOf(';');
+        return key.substring("composite:".length(), i);
+    }
+    
+    /**
+     * Returns a composite title expressed as contributionURI - namespace;localpart.
+     * @param qname
+     * @return
+     */
+    private static String title(String uri, QName qname) {
+        return uri + " - " + qname.getNamespaceURI() + ';' + qname.getLocalPart();
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ImageCollectionImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java?rev=635118&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java Sat Mar  8 16:09:21 2008
@@ -0,0 +1,45 @@
+/*
+ * 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.admin.launch;
+
+import java.io.IOException;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * Simple launcher for the SCA domain administration application. 
+ *
+ * @version $Rev$ $Date$
+ */
+public class LaunchDomainAdmin {
+    
+    public static void main(String[] args) {
+        System.out.println("Apache Tuscany SCA Domain administration starting...");
+        
+        SCADomain.newInstance("Admin.composite");
+        
+        System.out.println("SCA Domain administration started.");
+        System.out.println("Press enter to shutdown.");
+        try {
+            System.in.read();
+        } catch (IOException e) {}
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launch/LaunchDomainAdmin.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite?rev=635118&r1=635117&r2=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite Sat Mar  8 16:09:21 2008
@@ -34,7 +34,7 @@
         <service name="Widget">
         	<t:binding.http uri="http://localhost:9990/ui/workspace"/>
         </service>
-		 <reference name="workspace" target="ContributionCollectionComponent/ContributionCollection">
+		 <reference name="workspace" target="ContributionCollectionComponent/ItemCollection">
 		 	<t:binding.atom/>
 		 </reference>
     </component>
@@ -44,7 +44,7 @@
         <service name="Widget">
         	<t:binding.http uri="http://localhost:9990/ui/files"/>
         </service>
-		 <reference name="files" target="ContributionFileCollectionComponent">
+		 <reference name="files" target="FileCollectionComponent">
 		 	<t:binding.atom/>
 		 </reference>
     </component>
@@ -54,7 +54,7 @@
         <service name="Widget">
         	<t:binding.http uri="http://localhost:9990/ui/composite"/>
         </service>
-		 <reference name="domainComposite" target="DomainCompositeCollectionComponent/CompositeCollection">
+		 <reference name="domainComposite" target="DomainCompositeCollectionComponent/ItemCollection">
 		 	<t:binding.atom/>
 		 </reference>
     </component>
@@ -64,7 +64,7 @@
         <service name="Widget">
         	<t:binding.http uri="http://localhost:9990/ui/cloud"/>
         </service>
-		 <reference name="cloudComposite" target="CloudCollectionComponent/CompositeCollection">
+		 <reference name="cloudComposite" target="CloudCollectionComponent/ItemCollection">
 		 	<t:binding.atom/>
 		 </reference>
     </component>
@@ -72,21 +72,21 @@
     <component name="ContributionCollectionComponent">
         <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.ContributionCollectionImpl"/>             
         <property name="workspaceFileName">workspace.xml</property>             
-   		<service name="ContributionCollection">
+   		<service name="ItemCollection">
    	 		<t:binding.atom uri="http://localhost:9990/workspace"/>
    		</service>
     </component>
 
-    <component name="ContributionFileCollectionComponent">
-        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.ContributionFileCollectionImpl"/>             
+    <component name="FileCollectionComponent">
+        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.FileCollectionImpl"/>             
         <property name="directoryName">contributions</property>             
-   		<service name="ContributionFileCollection">
+   		<service name="ItemCollection">
    	 		<t:binding.atom uri="http://localhost:9990/feed/files"/>
    		</service>
     </component>
 
-    <component name="ContributionFileServiceComponent">
-        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.ContributionFileServiceImpl"/>
+    <component name="FileServiceComponent">
+        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.FileServiceImpl"/>
         <property name="directoryName">contributions</property>             
    		<service name="Servlet">
    	 		<t:binding.http uri="http://localhost:9990/files"/>
@@ -96,40 +96,40 @@
     <component name="DomainCompositeCollectionComponent">
         <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.CompositeCollectionImpl"/>
         <property name="compositeFileName">domain.composite</property>
-   		<service name="CompositeCollection">
+   		<service name="ItemCollection">
    	 		<t:binding.atom uri="http://localhost:9990/composite"/>
    		</service>
-        <reference name="deployableCompositeCollection" target="DeployableCompositeCollectionComponent/LocalCompositeCollection"/>
+        <reference name="deployableCompositeCollection" target="DeployableCollectionComponent/LocalItemCollection"/>
     </component>
 
-    <component name="DeployableCompositeCollectionComponent">
-        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.DeployableCompositeCollectionImpl"/>
-   		<service name="CompositeCollection">
+    <component name="DeployableCollectionComponent">
+        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.DeployableCollectionImpl"/>
+   		<service name="ItemCollection">
    	 		<t:binding.atom uri="http://localhost:9990/deployable"/>
    		</service>
    		<service name="Servlet">
    	 		<t:binding.http uri="http://localhost:9990/resolved/composite/"/>
    		</service>
-   		<reference name="contributionCollection" target="ContributionCollectionComponent/LocalContributionCollection"/>
-   		<reference name="domainCompositeCollection" target="DomainCompositeCollectionComponent/LocalCompositeCollection"/>
-   		<reference name="cloudCollection" target="CloudCollectionComponent/LocalCompositeCollection"/>
+   		<reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
+   		<reference name="domainCompositeCollection" target="DomainCompositeCollectionComponent/LocalItemCollection"/>
+   		<reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
     </component>
 
     <component name="CloudCollectionComponent">
         <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.CompositeCollectionImpl"/>
         <property name="compositeFileName">cloud.composite</property>
-   		<service name="CompositeCollection">
+   		<service name="ItemCollection">
    	 		<t:binding.atom uri="http://localhost:9990/cloud"/>
    		</service>
-        <reference name="deployableCompositeCollection" target="DeployableCompositeCollectionComponent/LocalCompositeCollection"/>
+        <reference name="deployableCompositeCollection" target="DeployableCollectionComponent/LocalItemCollection"/>
     </component>
 
-    <component name="PackageCollectionComponent">
-        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.PackageCollectionImpl"/>
-   		<service name="PackageCollection">
+    <component name="ImageCollectionComponent">
+        <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.ImageCollectionImpl"/>
+   		<service name="ItemCollection">
    	 		<t:binding.atom uri="http://localhost:9990/package"/>
    		</service>
-   		<reference name="contributionCollection" target="ContributionCollectionComponent/LocalContributionCollection"/>
+   		<reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
     </component>
 
 </composite>

Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java?rev=635118&r1=635117&r2=635118&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java Sat Mar  8 16:09:21 2008
@@ -39,7 +39,7 @@
 public class AdminTestCase extends TestCase {
     
     private ContributionCollectionImpl contributionCollection;
-    private DeployableCompositeCollectionImpl deployableCollection;
+    private DeployableCollectionImpl deployableCollection;
     
     private final static String WORKSPACE_XML =
         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -61,7 +61,7 @@
         // Create a workspace collection component
         contributionCollection = new ContributionCollectionImpl();
         contributionCollection.workspaceFileName = url.getFile();
-        deployableCollection = new DeployableCompositeCollectionImpl();
+        deployableCollection = new DeployableCollectionImpl();
         deployableCollection.contributionCollection = contributionCollection;
         contributionCollection.initialize();
         deployableCollection.initialize();



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