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/04/23 04:31:21 UTC

svn commit: r650730 - in /incubator/tuscany/java/sca/samples: ./ domain-management/ domain-management/src/ domain-management/src/main/ domain-management/src/main/java/ domain-management/src/main/java/manager/ domain-management/src/main/java/manager/fix...

Author: jsdelfino
Date: Tue Apr 22 19:31:18 2008
New Revision: 650730

URL: http://svn.apache.org/viewvc?rev=650730&view=rev
Log:
Adding a sample to show how to use the Tuscany models to implement some domain management tasks. This is just the first three tasks, am working on more tasks to illustrate the various aspects of working with the models, validating, wiring etc.

Added:
    incubator/tuscany/java/sca/samples/domain-management/   (with props)
    incubator/tuscany/java/sca/samples/domain-management/README   (with props)
    incubator/tuscany/java/sca/samples/domain-management/pom.xml   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/
    incubator/tuscany/java/sca/samples/domain-management/src/main/
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/
    incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/main/resources/
    incubator/tuscany/java/sca/samples/domain-management/src/test/
    incubator/tuscany/java/sca/samples/domain-management/src/test/java/
    incubator/tuscany/java/sca/samples/domain-management/src/test/java/manager/
    incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/
    incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml   (with props)
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/
    incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/store.composite   (with props)
Modified:
    incubator/tuscany/java/sca/samples/pom.xml

Propchange: incubator/tuscany/java/sca/samples/domain-management/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Apr 22 19:31:18 2008
@@ -0,0 +1,16 @@
+target
+work
+dojo
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Added: incubator/tuscany/java/sca/samples/domain-management/README
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/README?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/README (added)
+++ incubator/tuscany/java/sca/samples/domain-management/README Tue Apr 22 19:31:18 2008
@@ -0,0 +1,8 @@
+Domain Management Sample Tasks
+==============================
+This sample implements the following sample domain management tasks:
+- list deployables in a contribution
+- list contribution dependencies
+- fuse includes in a composite
+- add deployables to a domain composite and wire them
+

Propchange: incubator/tuscany/java/sca/samples/domain-management/README
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/java/sca/samples/domain-management/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/pom.xml?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/pom.xml (added)
+++ incubator/tuscany/java/sca/samples/domain-management/pom.xml Tue Apr 22 19:31:18 2008
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.    
+-->
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.tuscany.sca</groupId>
+        <artifactId>tuscany-sca</artifactId>
+        <version>2.0-incubating-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+    <artifactId>sample-domain-management</artifactId>
+    <name>Apache Tuscany SCA Sample Domain Management Tasks</name>
+
+    <repositories>
+       <repository>
+          <id>apache.incubator</id>
+          <url>http://people.apache.org/repo/m2-incubating-repository</url>
+       </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-assembly</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-assembly-xml</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-xml</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-workspace</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-workspace-xml</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-workspace-impl</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-node</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-node-xml</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-extensibility</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>        
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-monitor</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+        </dependency>        
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-monitor-logging</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>        
+
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>2.8.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-java</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-namespace</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-resource</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-atom</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-java-xml</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-interface-java-xml</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-data-api</artifactId>
+            <version>2.0-incubating-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.2</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+       	<finalName>${artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>assets</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/test/resources/assembly/assets.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <finalName>${artifactId}</finalName>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>store</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/test/resources/assembly/store.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <finalName>${artifactId}</finalName>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: incubator/tuscany/java/sca/samples/domain-management/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,194 @@
+/*
+ * 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 manager;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+
+import manager.fixme.ContributionImportFixerHack;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.xml.ComponentTypeDocumentProcessor;
+import org.apache.tuscany.sca.assembly.xml.ComponentTypeProcessor;
+import org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor;
+import org.apache.tuscany.sca.assembly.xml.CompositeProcessor;
+import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeDocumentProcessor;
+import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeProcessor;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+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.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.xml.ContributionGeneratedMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataProcessor;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ModuleActivator;
+import org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.apache.tuscany.sca.workspace.Workspace;
+import org.apache.tuscany.sca.workspace.WorkspaceFactory;
+import org.apache.tuscany.sca.workspace.processor.impl.ContributionContentProcessor;
+
+/**
+ * Sample ListComponents task
+ *
+ * @version $Rev$ $Date$
+ */
+public class ListComponents {
+    
+    private static URLArtifactProcessor<Contribution> contributionContentProcessor;
+    private static ModelResolverExtensionPoint modelResolvers;
+    private static ModelFactoryExtensionPoint modelFactories;
+    private static WorkspaceFactory workspaceFactory;
+    
+    //FIXME remove later
+    private static ContributionImportFixerHack importFixer;
+
+    private static void init() {
+        
+        // Create extension point registry 
+        ExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
+        
+        // Initialize the Tuscany module activators
+        ModuleActivatorExtensionPoint moduleActivators = extensionPoints.getExtensionPoint(ModuleActivatorExtensionPoint.class);
+        for (ModuleActivator activator: moduleActivators.getModuleActivators()) {
+            activator.start(extensionPoints);
+        }
+
+        // Get XML input/output factories
+        modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
+        XMLOutputFactory outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+        
+        // Get contribution, workspace, assembly and policy model factories
+        ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
+        workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class); 
+        AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+        PolicyFactory policyFactory = modelFactories.getFactory(PolicyFactory.class);
+        
+        // Create XML and document artifact processors
+        StAXArtifactProcessorExtensionPoint xmlProcessorExtensions = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        StAXArtifactProcessor<Object> xmlProcessor = new ExtensibleStAXArtifactProcessor(xmlProcessorExtensions, inputFactory, outputFactory);
+        URLArtifactProcessorExtensionPoint docProcessorExtensions = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+        URLArtifactProcessor<Object> urlExtensionProcessor = new ExtensibleURLArtifactProcessor(docProcessorExtensions);
+        
+        // Create and register XML artifact processor extensions for sca-contribution XML and
+        // SCDL <composite>, <componentType> and <constrainingType>
+        xmlProcessorExtensions.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory, xmlProcessor));
+        xmlProcessorExtensions.addArtifactProcessor(new CompositeProcessor(contributionFactory, assemblyFactory, policyFactory, xmlProcessor));
+        xmlProcessorExtensions.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, xmlProcessor));
+        xmlProcessorExtensions.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, xmlProcessor));
+        
+        // Create and register document processor extensions for sca-contribution.xml, 
+        // sca-contribution-generated.xml, .composite, .componentType and
+        // .constrainingType documents 
+        docProcessorExtensions.addArtifactProcessor(new ContributionMetadataDocumentProcessor(xmlProcessor, inputFactory));
+        docProcessorExtensions.addArtifactProcessor(new ContributionGeneratedMetadataDocumentProcessor(xmlProcessor, inputFactory));
+        docProcessorExtensions.addArtifactProcessor(new CompositeDocumentProcessor(xmlProcessor, inputFactory, null));
+        docProcessorExtensions.addArtifactProcessor(new ComponentTypeDocumentProcessor(xmlProcessor, inputFactory));
+        docProcessorExtensions.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(xmlProcessor, inputFactory));
+        
+        // Create contribution content processor
+        modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
+        contributionContentProcessor = new ContributionContentProcessor(modelFactories, modelResolvers, urlExtensionProcessor);
+        
+        //FIXME remove later
+        importFixer = new ContributionImportFixerHack(extensionPoints);
+        
+    }
+    
+
+    public static void main(String[] args) throws Exception {
+        init();
+
+        // Create workspace model
+        Workspace workspace = workspaceFactory.createWorkspace();
+
+        // Read the contribution info for the sample assets contribution
+        URI assetsURI = URI.create("store");
+        URL assetsURL = new File("./target/sample-domain-management-store.jar").toURI().toURL();
+        Contribution assetsContribution = (Contribution)contributionContentProcessor.read(null, assetsURI, assetsURL);
+        workspace.getContributions().add(assetsContribution);
+
+        // Read the contribution info for the sample contribution
+        URI storeURI = URI.create("store");
+        URL storeURL = new File("./target/sample-domain-management-store.jar").toURI().toURL();
+        Contribution storeContribution = (Contribution)contributionContentProcessor.read(null, storeURI, storeURL);
+        workspace.getContributions().add(storeContribution);
+        
+        //FIXME remove later
+        importFixer.fixContributionImports(workspace.getContributions());
+        
+        // Resolve the contributions
+        for (Contribution contribution: workspace.getContributions()) {
+            ModelResolver modelResolver = new ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
+            contributionContentProcessor.resolve(contribution, modelResolver);
+        }
+        
+        // List the components declared in the deployables found in the
+        // contribution, their services, bindings, interfaces, and implementations
+        for (Composite deployable: storeContribution.getDeployables()) {
+            System.out.println("Deployable: " + deployable.getName());
+            for (Component component: deployable.getComponents()) {
+                System.out.println("  component: " + component.getName());
+                for (ComponentService componentService: component.getServices()) {
+                    System.out.println("    componentService: " + componentService.getName());
+                    for (Binding binding: componentService.getBindings()) {
+                        System.out.println("      binding: " + binding.getClass() + " - " + binding.getURI());
+                    }
+                }
+                // Assume Java implementation and interface here as this is what we are
+                // using in the sample
+                Implementation implementation = component.getImplementation();
+                System.out.println("    implementation: " + implementation);
+                for (Service service: implementation.getServices()) {
+                    System.out.println("      service: " + service.getName());
+                    InterfaceContract contract = service.getInterfaceContract();
+                    System.out.println("        interface: " + contract.getInterface());
+                }
+            }
+            
+            // Write the composite out
+            
+        }
+        
+    }
+
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListComponents.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,133 @@
+/*
+ * 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 manager;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+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.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.xml.ContributionGeneratedMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataProcessor;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.MonitorFactory;
+import org.apache.tuscany.sca.workspace.Workspace;
+import org.apache.tuscany.sca.workspace.WorkspaceFactory;
+import org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder;
+import org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl;
+import org.apache.tuscany.sca.workspace.processor.impl.ContributionInfoProcessor;
+
+/**
+ * Sample ListDependencies task
+ *
+ * @version $Rev$ $Date$
+ */
+public class ListDependencies {
+    
+    private static URLArtifactProcessor<Contribution> contributionInfoProcessor;
+    private static WorkspaceFactory workspaceFactory;
+    private static Monitor monitor;
+
+    private static void init() throws Exception {
+        
+        // Create extension point registry 
+        ExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
+        
+        // Get XML input/output factories
+        ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
+        XMLOutputFactory outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+        
+        // Get contribution, workspace and assembly model factories
+        ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
+        workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class); 
+        AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+        
+        // Create XML and document artifact processors
+        StAXArtifactProcessorExtensionPoint xmlProcessorExtensions = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        StAXArtifactProcessor<Object> xmlProcessor = new ExtensibleStAXArtifactProcessor(xmlProcessorExtensions, inputFactory, outputFactory);
+        URLArtifactProcessorExtensionPoint docProcessorExtensions = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+        URLArtifactProcessor<Object> docProcessor = new ExtensibleURLArtifactProcessor(docProcessorExtensions);
+        
+        // Create and register XML artifact processor extension for sca-contribution XML
+        xmlProcessorExtensions.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory, xmlProcessor));
+
+        // Create and register document processors for sca-contribution.xml and
+        // sca-contribution-generated.xml documents
+        docProcessorExtensions.addArtifactProcessor(new ContributionMetadataDocumentProcessor(xmlProcessor, inputFactory));
+        docProcessorExtensions.addArtifactProcessor(new ContributionGeneratedMetadataDocumentProcessor(xmlProcessor, inputFactory));
+        
+        // Create contribution info processor
+        ModelResolverExtensionPoint modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
+        contributionInfoProcessor = new ContributionInfoProcessor(modelFactories, modelResolvers, docProcessor);
+
+        // Create a monitor
+        UtilityExtensionPoint services = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
+        MonitorFactory monitorFactory = services.getService(MonitorFactory.class);
+        monitor = monitorFactory.createMonitor();
+    }
+    
+
+    public static void main(String[] args) throws Exception {
+        init();
+        
+        // Create workspace model
+        Workspace workspace = workspaceFactory.createWorkspace();
+
+        // Read the contribution info for the sample contribution
+        URI storeURI = URI.create("store");
+        URL storeURL = new File("./target/sample-domain-management-store.jar").toURI().toURL();
+        Contribution storeContribution = (Contribution)contributionInfoProcessor.read(null, storeURI, storeURL);
+        workspace.getContributions().add(storeContribution);
+        
+        // Read the contribution info for the assets contribution
+        URI assetsURI = URI.create("assets");
+        URL assetsURL = new File("./target/sample-domain-management-assets.jar").toURI().toURL();
+        Contribution assetsContribution = (Contribution)contributionInfoProcessor.read(null, assetsURI, assetsURL);
+        workspace.getContributions().add(assetsContribution);
+        
+        // List the contribution dependencies
+        ContributionDependencyBuilder analyzer = new ContributionDependencyBuilderImpl(monitor);
+        for (Contribution contribution: workspace.getContributions()) {
+            System.out.println("Contribution: " + contribution.getURI());
+            for (Contribution dependency: analyzer.buildContributionDependencies(workspace, contribution)) {
+                System.out.println("  dependency: " + dependency.getURI());
+            }
+        }
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDependencies.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,106 @@
+/*
+ * 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 manager;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+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.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.xml.ContributionGeneratedMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.xml.ContributionMetadataProcessor;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.workspace.processor.impl.ContributionInfoProcessor;
+
+/**
+ * Sample ListDeployables task
+ *
+ * @version $Rev$ $Date$
+ */
+public class ListDeployables {
+    
+    private static URLArtifactProcessor<Contribution> contributionInfoProcessor;
+
+    private static void init() {
+        
+        // Create extension point registry 
+        ExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
+        
+        // Get XML input/output factories
+        ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
+        XMLOutputFactory outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+        
+        // Get contribution and assembly model factories
+        ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
+        AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+        
+        // Create XML and document artifact processors
+        StAXArtifactProcessorExtensionPoint xmlProcessorExtensions = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        StAXArtifactProcessor<Object> xmlProcessor = new ExtensibleStAXArtifactProcessor(xmlProcessorExtensions, inputFactory, outputFactory);
+        URLArtifactProcessorExtensionPoint docProcessorExtensions = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+        URLArtifactProcessor<Object> docProcessor = new ExtensibleURLArtifactProcessor(docProcessorExtensions);
+        
+        // Create and register XML artifact processor extension for sca-contribution XML
+        xmlProcessorExtensions.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory, xmlProcessor));
+
+        // Create and register document processor extensions for sca-contribution.xml and
+        // sca-contribution-generated.xml documents
+        docProcessorExtensions.addArtifactProcessor(new ContributionMetadataDocumentProcessor(xmlProcessor, inputFactory));
+        docProcessorExtensions.addArtifactProcessor(new ContributionGeneratedMetadataDocumentProcessor(xmlProcessor, inputFactory));
+        
+        // Create contribution info processor
+        ModelResolverExtensionPoint modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
+        contributionInfoProcessor = new ContributionInfoProcessor(modelFactories, modelResolvers, docProcessor);
+    }
+    
+
+    public static void main(String[] args) throws Exception {
+        init();
+
+        // Read the contribution info for the sample contribution
+        URI uri = URI.create("store");
+        URL url = new File("./target/sample-domain-management-store.jar").toURI().toURL();
+        Contribution contribution = (Contribution)contributionInfoProcessor.read(null, uri, url);
+        
+        // List the deployables in the contribution
+        for (Composite deployable: contribution.getDeployables()) {
+            System.out.println("Deployable: " + deployable.getName());
+        }
+        
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/ListDeployables.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,77 @@
+/*
+ * 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 manager.fixme;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+import java.util.List;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionListener;
+import org.apache.tuscany.sca.contribution.service.ContributionListenerExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionRepository;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+
+/**
+ * FIXME Remove this later
+ * 
+ * A hack to help fixup contribution imports.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ContributionImportFixerHack {
+    
+    private class DummyRepository implements ContributionRepository {
+        private List<Contribution> contributions;
+
+        private DummyRepository(List<Contribution> contributions) {
+            this.contributions = contributions;
+        }
+        
+        public void addContribution(Contribution contribution) {}
+        public URL find(String contribution) { return null; }
+        public Contribution getContribution(String uri) { return null; }
+        public List<Contribution> getContributions() { return contributions; }
+        public URI getDomain() { return null; }
+        public List<String> list() { return null; }
+        public void remove(String contribution) {}
+        public void removeContribution(Contribution contribution) {}
+        public URL store(String contribution, URL sourceURL, InputStream contributionStream) throws IOException { return null; }
+        public URL store(String contribution, URL sourceURL) throws IOException { return null;}
+        public void updateContribution(Contribution contribution) {}
+    }
+    
+    private ContributionListenerExtensionPoint listeners;
+    
+    public ContributionImportFixerHack(ExtensionPointRegistry extensionPoints) {
+        listeners = extensionPoints.getExtensionPoint(ContributionListenerExtensionPoint.class);
+    }
+
+    public void fixContributionImports(List<Contribution> contributions) {
+        ContributionRepository dummyRepository = new DummyRepository(contributions);
+        for (Contribution contribution: contributions) {
+            for (ContributionListener listener: listeners.getContributionListeners()) {
+                listener.contributionAdded(dummyRepository, contribution);
+            }
+        }
+    }
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/main/java/manager/fixme/ContributionImportFixerHack.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,28 @@
+/*
+ * 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 services;
+
+import org.apache.tuscany.sca.implementation.data.collection.Collection;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Cart extends Collection<String, Item> {
+
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Cart.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,66 @@
+/*
+ * 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 services;
+
+
+public class Item {
+    private String name;
+    private String price;
+    private String origin;
+    
+    public Item() {
+    }
+    
+    public Item(String name, String price, String origin) {
+        this.name = name;
+        this.price = price;
+        this.origin = origin;
+    }
+    
+    public Item(String name, String price) {
+        this.name = name;
+        this.price = price;
+    }
+    
+    public String getName() {
+        return name;
+    }
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    public String getPrice() {
+        return price;
+    }
+    
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getOrigin() {
+        return origin;
+    }
+
+    public void setOrigin(String origin) {
+        this.origin = origin;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/Item.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java Tue Apr 22 19:31:18 2008
@@ -0,0 +1,100 @@
+/*
+ * 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 services;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.tuscany.sca.implementation.data.collection.Entry;
+import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+
+@Scope("COMPOSITE")
+public class ShoppingCartImpl implements Cart {
+    
+    private Map<String, Item> cart;
+    
+    @Init
+    protected void init() {
+        cart = new HashMap<String, Item>();
+    }
+
+    public Entry<String, Item>[] getAll() {
+        Entry<String, Item>[] entries = new Entry[cart.size()];
+        int i = 0;
+        for (Map.Entry<String, Item> e: cart.entrySet()) {
+            entries[i++] = new Entry<String, Item>(e.getKey(), e.getValue());
+        }
+        return entries;
+    }
+
+    public Item get(String key) throws NotFoundException {
+        Item item = cart.get(key);
+        if (item == null) {
+            throw new NotFoundException(key);
+        } else {
+            return item;
+        }
+    }
+
+    public String post(String key, Item item) {
+        if (key == null) {
+            key ="cart-" + UUID.randomUUID().toString();
+        }
+        cart.put(key, item);
+        return key;
+    }
+
+    public void put(String key, Item item) throws NotFoundException {
+        if (!cart.containsKey(key)) {
+            throw new NotFoundException(key);
+        }
+        cart.put(key, item);
+    }
+    
+    public void delete(String key) throws NotFoundException {
+        if (key == null || key.equals("")) {
+            cart.clear();
+        } else {
+            Item item = cart.remove(key);
+            if (item == null)
+                throw new NotFoundException(key);
+        }
+    }
+
+    public Entry<String, Item>[] query(String queryString) {
+        List<Entry<String, Item>> entries = new ArrayList<Entry<String,Item>>();
+        if (queryString.startsWith("name=")) {
+            String name = queryString.substring(5);
+            for (Map.Entry<String, Item> e: cart.entrySet()) {
+                Item item = e.getValue();
+                if (item.getName().equals(name)) {
+                    entries.add(new Entry<String, Item>(e.getKey(), e.getValue()));
+                }
+            }
+        }
+        return entries.toArray(new Entry[entries.size()]);
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/java/services/ShoppingCartImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml Tue Apr 22 19:31:18 2008
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.
+-->
+<assembly>
+    <id>assets</id>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <formats>
+        <format>jar</format>
+    </formats>
+
+    <fileSets>
+        <fileSet>
+            <directory>target/test-classes/assets</directory>
+            <outputDirectory>/</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>target/test-classes/services</directory>
+            <outputDirectory>/services</outputDirectory>
+        </fileSet>
+    </fileSets>
+        
+</assembly>

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/assets.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml Tue Apr 22 19:31:18 2008
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.
+-->
+<assembly>
+    <id>store</id>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <formats>
+        <format>jar</format>
+    </formats>
+
+    <fileSets>
+        <fileSet>
+            <directory>target/test-classes/store</directory>
+            <outputDirectory>/</outputDirectory>
+        </fileSet>
+    </fileSets>
+        
+</assembly>

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assembly/store.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml Tue Apr 22 19:31:18 2008
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.    
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+   <export.java package="services"/>
+   <export.java package="services.market"/>
+   <export.java package="services.merger"/>
+   <export.java package="services.db"/>
+   <export.java package="services.map"/>
+   <export.resource uri="uiservices/store.html"/>
+</contribution>
\ No newline at end of file

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/assets/META-INF/sca-contribution.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/store.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/store.composite?rev=650730&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/store.composite (added)
+++ incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/store.composite Tue Apr 22 19:31:18 2008
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<composite	xmlns="http://www.osoa.org/xmlns/sca/1.0"
+		xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+		targetNamespace="http://store"
+		name="store">
+		
+	<component name="ShoppingCart">
+		<implementation.java class="services.ShoppingCartImpl"/>
+		<service name="Cart">
+			<t:binding.atom uri="/ShoppingCart/Cart"/>
+		</service>    	
+	</component>
+    
+</composite>

Propchange: incubator/tuscany/java/sca/samples/domain-management/src/test/resources/store/store.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/samples/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/pom.xml?rev=650730&r1=650729&r2=650730&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/pom.xml (original)
+++ incubator/tuscany/java/sca/samples/pom.xml Tue Apr 22 19:31:18 2008
@@ -62,6 +62,7 @@
                 <module>chat-webapp</module>
                 <module>databinding-echo</module>
                 <!--module>domain-webapp</module-->
+                <module>domain-management</module>
                 <module>feed-aggregator</module>
                 <module>feed-aggregator-webapp</module>
                 <module>helloworld-bpel</module>