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/02/28 06:43:14 UTC
svn commit: r631858 - in
/incubator/tuscany/java/sca/modules/workspace-admin: ./
src/main/java/org/apache/tuscany/sca/workspace/admin/impl/
src/main/resources/ src/test/java/org/ src/test/java/org/apache/
src/test/java/org/apache/tuscany/ src/test/java...
Author: jsdelfino
Date: Wed Feb 27 21:43:13 2008
New Revision: 631858
URL: http://svn.apache.org/viewvc?rev=631858&view=rev
Log:
Changed components to be more configurable. Added a test case. Integrated call to contribution dependency analyzer.
Added:
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java (with props)
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml (with props)
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml (with props)
incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml (with props)
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/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/WorkspaceCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
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=631858&r1=631857&r2=631858&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/pom.xml Wed Feb 27 21:43:13 2008
@@ -110,7 +110,6 @@
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-contribution-xml</artifactId>
<version>1.2-incubating-SNAPSHOT</version>
- <scope>runtime</scope>
</dependency>
<dependency>
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=631858&r1=631857&r2=631858&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 Wed Feb 27 21:43:13 2008
@@ -23,9 +23,9 @@
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.net.URI;
import java.util.ArrayList;
import java.util.List;
@@ -62,6 +62,7 @@
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Scope;
import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
/**
* Implementation of a composite collection service.
@@ -72,7 +73,7 @@
public class CompositeCollectionImpl implements CompositeCollection {
@Property
- public String compositeCollectionName;
+ public String compositeFileName;
private AssemblyFactory assemblyFactory;
private ContributionFactory contributionFactory;
@@ -99,7 +100,7 @@
// Read domain.composite
compositeProcessor = new CompositeProcessor(contributionFactory, assemblyFactory, policyFactory, contractMapper, null);
- File file = new File(compositeCollectionName + ".composite");
+ File file = new File(URI.create(compositeFileName));
if (file.exists()) {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
FileInputStream is = new FileInputStream(file);
@@ -107,7 +108,7 @@
compositeCollection = compositeProcessor.read(reader);
} else {
compositeCollection = assemblyFactory.createComposite();
- compositeCollection.setName(new QName(Constants.SCA10_TUSCANY_NS, compositeCollectionName));
+ compositeCollection.setName(new QName(Constants.SCA10_TUSCANY_NS, compositeFileName));
}
}
@@ -219,18 +220,18 @@
format.setIndent(2);
// Write to domain.composite
- FileOutputStream os = new FileOutputStream(compositeCollectionName + ".composite");
+ FileOutputStream os = new FileOutputStream(new File(URI.create(compositeFileName)));
XMLSerializer serializer = new XMLSerializer(os, format);
serializer.serialize(document);
- } catch (FileNotFoundException e) {
+ } catch (IOException e) {
throw new ServiceRuntimeException(e);
} catch (ContributionWriteException e) {
throw new ServiceRuntimeException(e);
} catch (XMLStreamException e) {
throw new ServiceRuntimeException(e);
- } catch (Exception e) {
- e.printStackTrace();
+ } catch (SAXException e) {
+ throw new ServiceRuntimeException(e);
}
}
Modified: 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/ContributionFileCollectionImpl.java?rev=631858&r1=631857&r2=631858&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/ContributionFileCollectionImpl.java Wed Feb 27 21:43:13 2008
@@ -29,6 +29,7 @@
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;
/**
@@ -38,6 +39,9 @@
*/
@Scope("COMPOSITE")
public class ContributionFileCollectionImpl implements ContributionFileCollection {
+
+ @Property
+ public String directoryName;
private File files;
@@ -46,7 +50,7 @@
*/
@Init
public void init() throws IOException {
- files = new File("contributions");
+ files = new File(directoryName);
if (!files.exists()) {
files.mkdirs();
}
Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileServiceImpl.java?rev=631858&r1=631857&r2=631858&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionFileServiceImpl.java Wed Feb 27 21:43:13 2008
@@ -23,6 +23,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.net.URI;
import java.util.List;
import javax.servlet.ServletException;
@@ -35,6 +36,7 @@
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;
/**
@@ -46,6 +48,9 @@
public class ContributionFileServiceImpl extends HttpServlet {
private static final long serialVersionUID = -4560385595481971616L;
+ @Property
+ public String directoryName;
+
private ServletFileUpload upload;
private File files;
@@ -56,7 +61,7 @@
public void initialize() throws IOException {
upload = new ServletFileUpload(new DiskFileItemFactory());
- files = new File("contributions");
+ files = new File(URI.create(directoryName));
if (!files.exists()) {
files.mkdirs();
}
Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java?rev=631858&r1=631857&r2=631858&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java Wed Feb 27 21:43:13 2008
@@ -26,8 +26,12 @@
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -38,27 +42,32 @@
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+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.DefaultModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
import org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
-import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.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.NotFoundException;
import org.apache.tuscany.sca.workspace.Workspace;
import org.apache.tuscany.sca.workspace.WorkspaceFactory;
import org.apache.tuscany.sca.workspace.admin.WorkspaceCollection;
+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;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.osoa.sca.ServiceRuntimeException;
import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Scope;
import org.w3c.dom.Document;
@@ -70,13 +79,17 @@
@Scope("COMPOSITE")
public class WorkspaceCollectionImpl implements WorkspaceCollection {
+ @Property
+ public String workspaceFileName;
+
private ContributionFactory contributionFactory;
+ private AssemblyFactory assemblyFactory;
private WorkspaceFactory workspaceFactory;
private Workspace workspace;
private WorkspaceProcessor workspaceProcessor;
private XMLOutputFactory outputFactory;
private XMLInputFactory inputFactory;
- private ContributionMetadataDocumentProcessor contributionMetadataProcessor;
+ private ContributionInfoProcessor contributionProcessor;
/**
* Initialize the workspace administration component.
@@ -84,27 +97,28 @@
@Init
public void init() throws IOException, ContributionReadException, XMLStreamException, ParserConfigurationException {
- // Create Tuscany extension point registry
- ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
-
- // Get extension points
- ModelFactoryExtensionPoint factories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
- StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ // Create extension points
+ ModelFactoryExtensionPoint factories = new DefaultModelFactoryExtensionPoint();
+ StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(factories);
+ inputFactory = factories.getFactory(XMLInputFactory.class);
+ outputFactory = factories.getFactory(XMLOutputFactory.class);
+ outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
+ ExtensibleStAXArtifactProcessor extensionProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
// Create factories
contributionFactory = factories.getFactory(ContributionFactory.class);
+ assemblyFactory = factories.getFactory(AssemblyFactory.class);
workspaceFactory = factories.getFactory(WorkspaceFactory.class);
- inputFactory = factories.getFactory(XMLInputFactory.class);
- outputFactory = factories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
- // Create artifact processors
- workspaceProcessor = new WorkspaceProcessor(workspaceFactory, contributionFactory, null);
- ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
- contributionMetadataProcessor = new ContributionMetadataDocumentProcessor(staxProcessor, inputFactory);
+ // Create workspace and contribution artifact processors
+ workspaceProcessor = new WorkspaceProcessor(workspaceFactory, contributionFactory, extensionProcessor);
+ ContributionMetadataProcessor metadataProcessor = new ContributionMetadataProcessor(assemblyFactory, contributionFactory, extensionProcessor);
+ ContributionMetadataDocumentProcessor metadataDocumentProcessor = new ContributionMetadataDocumentProcessor(metadataProcessor, inputFactory);
+ contributionProcessor = new ContributionInfoProcessor(contributionFactory, metadataDocumentProcessor);
// Read workspace.xml
- File file = new File("workspace.xml");
+ URI uri = URI.create(workspaceFileName);
+ File file = new File(uri);
if (file.exists()) {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
FileInputStream is = new FileInputStream(file);
@@ -120,13 +134,7 @@
// Return all the contributions
List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
for (Contribution contribution: workspace.getContributions()) {
- Entry<String, Item> entry = new Entry<String, Item>();
- entry.setKey(contribution.getURI());
- Item item = new Item();
- item.setTitle(contribution.getURI());
- item.setLink(contribution.getLocation());
- entry.setData(item);
- entries.add(entry);
+ entries.add(entry(contribution));
}
return entries.toArray(new Entry[entries.size()]);
}
@@ -199,13 +207,64 @@
public Entry<String, Item>[] query(String queryString) {
if (queryString.startsWith("importedBy=")) {
- // Read the contribution metadata documents
- return null;
+ // Return the collection of dependencies of the specified contribution
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String,Item>>();
+
+ // Read the contribution metadata into a temporary workspace
+ Workspace dependencyWorkspace = workspaceFactory.createWorkspace();
+ for (Contribution c: workspace.getContributions()) {
+ URI uri = URI.create(c.getURI());
+ URL url;
+ try {
+ url = new URL(c.getLocation());
+ } catch (MalformedURLException e) {
+ throw new ServiceRuntimeException();
+ }
+ Contribution contribution;
+ try {
+ contribution = contributionProcessor.read(null, uri, url);
+ } catch (ContributionReadException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ dependencyWorkspace.getContributions().add(contribution);
+ }
+
+ // Calculate the contribution dependencies
+ String key = queryString.substring(11);
+ for (Contribution contribution: workspace.getContributions()) {
+ if (key.equals(contribution.getURI())) {
+
+ ContributionDependencyAnalyzer analyzer = new ContributionDependencyAnalyzer();
+ Set<Contribution> dependencies = analyzer.calculateContributionDependencies(dependencyWorkspace, contribution);
+
+ // Build the collection of dependencies
+ for (Contribution dependency: dependencies) {
+ entries.add(entry(dependency));
+ }
+ }
+ }
+
+ return entries.toArray(new Entry[entries.size()]);
} else {
throw new UnsupportedOperationException();
}
}
+
+ /**
+ * Returns an entry representing a contribution
+ * @param contribution
+ * @return
+ */
+ private static Entry<String, Item> entry(Contribution contribution) {
+ Entry<String, Item> entry = new Entry<String, Item>();
+ entry.setKey(contribution.getURI());
+ Item item = new Item();
+ item.setTitle(contribution.getURI());
+ item.setLink(contribution.getLocation());
+ entry.setData(item);
+ return entry;
+ }
/**
* Write the workspace back to disk
@@ -225,7 +284,8 @@
format.setIndent(2);
// Write to workspace.xml
- FileOutputStream os = new FileOutputStream("workspace.xml");
+ URI uri = URI.create(workspaceFileName);
+ FileOutputStream os = new FileOutputStream(new File(uri));
XMLSerializer serializer = new XMLSerializer(os, format);
serializer.serialize(document);
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=631858&r1=631857&r2=631858&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 Wed Feb 27 21:43:13 2008
@@ -64,6 +64,7 @@
<component name="WorkspaceCollectionComponent">
<implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.WorkspaceCollectionImpl"/>
+ <property name="workspaceFileName">workspace</property>
<service name="WorkspaceCollection">
<t:binding.atom uri="http://localhost:9990/workspace"/>
</service>
@@ -71,13 +72,15 @@
<component name="ContributionFileCollectionComponent">
<implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.ContributionFileCollectionImpl"/>
+ <property name="directoryName">contributions</property>
<service name="ContributionFileCollection">
<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"/>
+ <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.ContributionFileServiceImpl"/>
+ <property name="directoryName">contributions</property>
<service name="ContributionFileServiceImpl">
<t:binding.http uri="http://localhost:9990/files"/>
</service>
@@ -85,7 +88,7 @@
<component name="DomainCompositeCollectionComponent">
<implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.CompositeCollectionImpl"/>
- <property name="compositeCollectionName">domain</property>
+ <property name="compositeFileName">domain</property>
<service name="CompositeCollection">
<t:binding.atom uri="http://localhost:9990/composite"/>
</service>
@@ -93,7 +96,7 @@
<component name="CloudCollectionComponent">
<implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.CompositeCollectionImpl"/>
- <property name="compositeCollectionName">cloud</property>
+ <property name="compositeFileName">cloud</property>
<service name="CompositeCollection">
<t:binding.atom uri="http://localhost:9990/cloud"/>
</service>
Added: 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=631858&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java Wed Feb 27 21:43:13 2008
@@ -0,0 +1,91 @@
+/*
+ * 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.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.implementation.data.collection.Entry;
+import org.apache.tuscany.sca.implementation.data.collection.Item;
+import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+
+/**
+ * Test case for the workspace admin services.
+ *
+ * @version $Rev$ $Date$
+ */
+public class AdminTestCase extends TestCase {
+
+ private WorkspaceCollectionImpl workspaceCollection;
+
+ private final static String WORKSPACE_XML =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<workspace xmlns=\"http://tuscany.apache.org/xmlns/sca/1.0\" " +
+ "xmlns:ns1=\"http://tuscany.apache.org/xmlns/sca/1.0\">\n" +
+ "</workspace>";
+
+ @Override
+ protected void setUp() throws Exception {
+ ClassLoader cl = getClass().getClassLoader();
+
+ // Make sure we start with a clean workspace.xml file
+ URL url = cl.getResource("workspace.xml");
+ FileOutputStream os = new FileOutputStream(new File(url.toURI()));
+ Writer writer = new OutputStreamWriter(os);
+ writer.write(WORKSPACE_XML);
+ writer.flush();
+
+ // Create a workspace collection component
+ workspaceCollection = new WorkspaceCollectionImpl();
+ workspaceCollection.workspaceFileName = url.toString();
+ workspaceCollection.init();
+
+ // Populate the workspace with test data
+ Item item = new Item();
+ item.setLink(cl.getResource("contributions/store").toString());
+ workspaceCollection.post("store", item);
+ item.setLink(cl.getResource("contributions/assets").toString());
+ workspaceCollection.post("assets", item);
+ }
+
+ public void testGetAll() {
+ Entry<String, Item>[] entries = workspaceCollection.getAll();
+ assertEquals(2, entries.length);
+ assertEquals(entries[0].getKey(), "store");
+ }
+
+ public void testGet() throws NotFoundException {
+ Item item = workspaceCollection.get("assets");
+ assertTrue(item.getLink().endsWith("contributions/assets"));
+ }
+
+ public void testQuery() {
+ Entry<String, Item>[] entries = workspaceCollection.query("importedBy=store");
+ for (Entry<String, Item> entry: entries) {
+ System.out.println(entry.getKey());
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml?rev=631858&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml Wed Feb 27 21:43:13 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"
+ targetNamespace="http://assets">
+ <export.java package="services"/>
+ <export.java package="services.merger"/>
+ <export.java package="services.db"/>
+ <import.java package="org.apache.tuscany.sca.implementation.data.collection"/>
+ <import.java package="org.apache.derby.*"/>
+</contribution>
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/assets/META-INF/sca-contribution.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml?rev=631858&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml Wed Feb 27 21:43:13 2008
@@ -0,0 +1,25 @@
+<?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"
+ targetNamespace="http://store"
+ xmlns:s="http://store">
+ <deployable composite="s:store"/>
+ <import.java package="services"/>
+</contribution>
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/contributions/store/META-INF/sca-contribution.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml?rev=631858&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml Wed Feb 27 21:43:13 2008
@@ -0,0 +1,21 @@
+<?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.
+-->
+<workspace xmlns="http://tuscany.apache.org/xmlns/sca/1.0" xmlns:ns1="http://tuscany.apache.org/xmlns/sca/1.0">
+</workspace>
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/test/resources/workspace.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org