Author: jsdelfino
Date: Sat Mar 1 08:24:33 2008
New Revision: 632617
URL: http://svn.apache.org/viewvc?rev=632617&view=rev
Log:
Some cleanup and refactoring, and added a service to find deployable composites
in contributions.
Added:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionCollection.java
- copied, changed from r632540,
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/WorkspaceCollection.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
(with props)
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
- copied, changed from r632540,
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/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
(with props)
Removed:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/WorkspaceCollection.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
Copied:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionCollection.java
(from r632540,
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/WorkspaceCollection.java)
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionCollection.java?p2=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionCollection.java&p1=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/WorkspaceCollection.java&r1=632540&r2=632617&rev=632617&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/WorkspaceCollection.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/ContributionCollection.java
Sat Mar 1 08:24:33 2008
@@ -24,11 +24,11 @@
import org.osoa.sca.annotations.Remotable;
/**
- * The contribution workspace service interface.
+ * The contribution collection service interface.
*
* @version $Rev$ $Date$
*/
@Remotable
-public interface WorkspaceCollection extends Collection<String, Item>{
+public interface ContributionCollection extends Collection<String, Item>{
}
Added:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java?rev=632617&view=auto
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
(added)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
Sat Mar 1 08:24:33 2008
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+import org.apache.tuscany.sca.implementation.data.collection.Collection;
+import org.apache.tuscany.sca.implementation.data.collection.Item;
+
+/**
+ * A local interface for the contribution collection service interface.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface LocalContributionCollection extends Collection<String, Item>{
+
+}
Propchange:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalContributionCollection.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=632617&r1=632616&r2=632617&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeCollectionImpl.java
Sat Mar 1 08:24:33 2008
@@ -46,7 +46,6 @@
import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
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;
@@ -59,7 +58,6 @@
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.
@@ -76,7 +74,6 @@
private Composite compositeCollection;
private CompositeProcessor compositeProcessor;
private XMLOutputFactory outputFactory;
- private DocumentBuilder documentBuilder;
/**
* Initialize the workspace administration component.
@@ -88,7 +85,6 @@
ModelFactoryExtensionPoint modelFactories = new
DefaultModelFactoryExtensionPoint();
assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
// Read domain.composite
ContributionFactory contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
@@ -208,6 +204,7 @@
compositeProcessor.write(compositeCollection, writer);
// Parse again to pretty format the document
+ DocumentBuilder documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = documentBuilder.parse(new
ByteArrayInputStream(bos.toByteArray()));
OutputFormat format = new OutputFormat();
format.setIndenting(true);
@@ -218,13 +215,7 @@
XMLSerializer serializer = new XMLSerializer(os, format);
serializer.serialize(document);
- } catch (IOException e) {
- throw new ServiceRuntimeException(e);
- } catch (ContributionWriteException e) {
- throw new ServiceRuntimeException(e);
- } catch (XMLStreamException e) {
- throw new ServiceRuntimeException(e);
- } catch (SAXException e) {
+ } catch (Exception e) {
throw new ServiceRuntimeException(e);
}
}
Copied:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
(from r632540,
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/ContributionCollectionImpl.java?p2=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java&p1=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/WorkspaceCollectionImpl.java&r1=632540&r2=632617&rev=632617&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/ContributionCollectionImpl.java
Sat Mar 1 08:24:33 2008
@@ -23,7 +23,6 @@
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.MalformedURLException;
@@ -55,8 +54,9 @@
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.DefaultModelResolverExtensionPoint;
+import
org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
import
org.apache.tuscany.sca.contribution.xml.ContributionGeneratedMetadataDocumentProcessor;
import
org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
import org.apache.tuscany.sca.contribution.xml.ContributionMetadataProcessor;
@@ -65,7 +65,8 @@
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.admin.ContributionCollection;
+import org.apache.tuscany.sca.workspace.admin.LocalContributionCollection;
import
org.apache.tuscany.sca.workspace.dependency.impl.ContributionDependencyAnalyzer;
import
org.apache.tuscany.sca.workspace.processor.impl.ContributionInfoProcessor;
import org.apache.tuscany.sca.workspace.xml.WorkspaceProcessor;
@@ -75,15 +76,17 @@
import org.osoa.sca.annotations.Init;
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
import org.w3c.dom.Document;
/**
- * Implementation of a contribution workspace service component.
+ * Implementation of a contribution collection service component.
*
* @version $Rev$ $Date$
*/
@Scope("COMPOSITE")
-public class WorkspaceCollectionImpl implements WorkspaceCollection {
[EMAIL PROTECTED](interfaces={ContributionCollection.class,
LocalContributionCollection.class})
+public class ContributionCollectionImpl implements ContributionCollection,
LocalContributionCollection {
@Property
public String workspaceFileName;
@@ -109,6 +112,9 @@
contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
+
+ // Create model resolvers
+ ModelResolverExtensionPoint modelResolvers = new
DefaultModelResolverExtensionPoint();
// Create artifact processors
XMLInputFactory inputFactory =
modelFactories.getFactory(XMLInputFactory.class);
@@ -122,8 +128,8 @@
urlProcessors.addArtifactProcessor(new
ContributionMetadataDocumentProcessor(staxProcessor, inputFactory));
urlProcessors.addArtifactProcessor(new
ContributionGeneratedMetadataDocumentProcessor(staxProcessor, inputFactory));
- // Create workspace and contribution artifact processors
- contributionInfoProcessor = new
ContributionInfoProcessor(contributionFactory, urlProcessor);
+ // Create contribution info processor
+ contributionInfoProcessor = new
ContributionInfoProcessor(modelFactories, modelResolvers, urlProcessor);
// Read workspace.xml
File file = new File(workspaceFileName);
@@ -220,21 +226,15 @@
// 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 = url(c.getLocation());
- } catch (MalformedURLException e) {
- throw new ServiceRuntimeException();
- }
- Contribution contribution;
- try {
- contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
- } catch (ContributionReadException e) {
- throw new ServiceRuntimeException(e);
+ try {
+ for (Contribution c: workspace.getContributions()) {
+ URI uri = URI.create(c.getURI());
+ URL url = url(c.getLocation());
+ Contribution contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
+ dependencyWorkspace.getContributions().add(contribution);
}
- dependencyWorkspace.getContributions().add(contribution);
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
}
// Calculate the contribution dependencies
@@ -261,6 +261,12 @@
}
}
+ /**
+ * Returns a URL from a location string.
+ * @param location
+ * @return
+ * @throws MalformedURLException
+ */
private URL url(String location) throws MalformedURLException {
URI uri = URI.create(location);
if (uri.getScheme() == null) {
@@ -308,14 +314,8 @@
XMLSerializer serializer = new XMLSerializer(os, format);
serializer.serialize(document);
- } catch (FileNotFoundException e) {
- throw new ServiceRuntimeException(e);
- } catch (ContributionWriteException e) {
- throw new ServiceRuntimeException(e);
- } catch (XMLStreamException e) {
- throw new ServiceRuntimeException(e);
} catch (Exception e) {
- e.printStackTrace();
+ throw new ServiceRuntimeException(e);
}
}
}
Added:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java?rev=632617&view=auto
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
(added)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
Sat Mar 1 08:24:33 2008
@@ -0,0 +1,248 @@
+/*
+ * 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.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+
+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.DefaultModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import
org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
+import
org.apache.tuscany.sca.contribution.processor.DefaultURLArtifactProcessorExtensionPoint;
+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.DefaultModelResolverExtensionPoint;
+import
org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+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.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.admin.CompositeCollection;
+import org.apache.tuscany.sca.workspace.admin.LocalContributionCollection;
+import
org.apache.tuscany.sca.workspace.processor.impl.ContributionInfoProcessor;
+import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * Implementation of a deployable composite collection service.
+ *
+ * @version $Rev$ $Date$
+ */
[EMAIL PROTECTED]("COMPOSITE")
+public class DeployableCompositeCollectionImpl implements CompositeCollection {
+
+ @Reference
+ public LocalContributionCollection contributionCollection;
+
+ private AssemblyFactory assemblyFactory;
+ private URLArtifactProcessor<Contribution> contributionInfoProcessor;
+
+ /**
+ * Initialize the workspace administration component.
+ */
+ @Init
+ public void init() throws IOException, ContributionReadException,
XMLStreamException, ParserConfigurationException {
+
+ // Create factories
+ ModelFactoryExtensionPoint modelFactories = new
DefaultModelFactoryExtensionPoint();
+ assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+ XMLInputFactory inputFactory =
modelFactories.getFactory(XMLInputFactory.class);
+ XMLOutputFactory outputFactory =
modelFactories.getFactory(XMLOutputFactory.class);
+ ContributionFactory contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
+
+ // Create model resolvers
+ ModelResolverExtensionPoint modelResolvers = new
DefaultModelResolverExtensionPoint();
+
+ // Create artifact processors
+ StAXArtifactProcessorExtensionPoint staxProcessors = new
DefaultStAXArtifactProcessorExtensionPoint(modelFactories);
+ StAXArtifactProcessor<Object> staxProcessor = new
ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
+ staxProcessors.addArtifactProcessor(new
ContributionMetadataProcessor(assemblyFactory, contributionFactory,
staxProcessor));
+
+ URLArtifactProcessorExtensionPoint urlProcessors = new
DefaultURLArtifactProcessorExtensionPoint(modelFactories);
+ URLArtifactProcessor<Object> urlProcessor = new
ExtensibleURLArtifactProcessor(urlProcessors);
+ urlProcessors.addArtifactProcessor(new
ContributionMetadataDocumentProcessor(staxProcessor, inputFactory));
+ urlProcessors.addArtifactProcessor(new
ContributionGeneratedMetadataDocumentProcessor(staxProcessor, inputFactory));
+
+ // Create contribution info processor
+ contributionInfoProcessor = new
ContributionInfoProcessor(modelFactories, modelResolvers, urlProcessor);
+
+ }
+
+ public Entry<String, Item>[] getAll() {
+ // Return all the deployable composites in the contributions
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String,
Item>>();
+
+ // Get the list of contributions in the workspace
+ Entry<String, Item>[] contributionEntries =
contributionCollection.getAll();
+
+ // Read contribution metadata
+ for (Entry<String, Item> contributionEntry: contributionEntries) {
+ Contribution contribution;
+ try {
+ URI uri = URI.create(contributionEntry.getKey());
+ URL url = url(contributionEntry.getData().getLink());
+ contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+
+ // Create entries for the deployable composites
+ for (Composite deployable: contribution.getDeployables()) {
+ Entry<String, Item> entry = new Entry<String, Item>();
+ entry.setKey(name(deployable.getName()));
+ Item item = new Item();
+ item.setTitle(name(deployable.getName()));
+ item.setLink("/workspace/" + contribution.getURI());
+ entry.setData(item);
+ entries.add(entry);
+ }
+
+ }
+ return entries.toArray(new Entry[entries.size()]);
+ }
+
+ public Item get(String key) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public String post(String key, Item item) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void put(String key, Item item) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void delete(String key) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public Entry<String, Item>[] query(String queryString) {
+ if (queryString.startsWith("contribution=")) {
+
+ // Return all the deployable composites in the specified
+ // contribution
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String,
Item>>();
+
+ // Get the specified contribution info
+ String key = queryString.substring(13);
+ Item contributionItem;
+ try {
+ contributionItem = contributionCollection.get(key);
+ } catch (NotFoundException e) {
+ return null;
+ }
+
+ Contribution contribution;
+ try {
+ URI uri = URI.create(key);
+ URL url = url(contributionItem.getLink());
+ contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+
+ // Create entries for the deployable composites
+ for (Composite deployable: contribution.getDeployables()) {
+ Entry<String, Item> entry = new Entry<String, Item>();
+ entry.setKey(name(deployable.getName()));
+ Item item = new Item();
+ item.setTitle(name(deployable.getName()));
+ item.setLink("/workspace/" + deployable.getURI());
+ entry.setData(item);
+ entries.add(entry);
+ }
+
+ return entries.toArray(new Entry[entries.size()]);
+
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ /**
+ * Returns a qname object from its expression as namespace#localpart.
+ * @param name
+ * @return
+ */
+ private static QName qname(String name) {
+ int i = name.indexOf('}');
+ if (i != -1) {
+ return new QName(name.substring(1, i), name.substring(i + 1));
+ } else {
+ return new QName(name);
+ }
+ }
+
+ /**
+ * Returns a qname expressed as namespace#localpart.
+ * @param qname
+ * @return
+ */
+ private static String name(QName qname) {
+ String ns = qname.getNamespaceURI();
+ if (ns != null) {
+ return '{' + ns + '}' + qname.getLocalPart();
+ } else {
+ return qname.getLocalPart();
+ }
+ }
+
+ /**
+ * Returns a URL from a location string.
+ * @param location
+ * @return
+ * @throws MalformedURLException
+ */
+ private URL url(String location) throws MalformedURLException {
+ URI uri = URI.create(location);
+ if (uri.getScheme() == null) {
+ File file = new File(location);
+ return file.toURI().toURL();
+ } else {
+ return uri.toURL();
+ }
+ }
+
+}
Propchange:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite?rev=632617&r1=632616&r2=632617&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
Sat Mar 1 08:24:33 2008
@@ -22,12 +22,12 @@
targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0"
name="Admin">
- <component name="WorkspaceUI">
+ <component name="ContributionUI">
<t:implementation.widget location="workspace.html"/>
<service name="Widget">
<t:binding.http uri="http://localhost:9990/ui/workspace"/>
</service>
- <reference name="workspace"
target="WorkspaceCollectionComponent">
+ <reference name="workspace"
target="ContributionCollectionComponent/ContributionCollection">
<t:binding.atom/>
</reference>
</component>
@@ -62,10 +62,10 @@
</reference>
</component>
- <component name="WorkspaceCollectionComponent">
- <implementation.java
class="org.apache.tuscany.sca.workspace.admin.impl.WorkspaceCollectionImpl"/>
+ <component name="ContributionCollectionComponent">
+ <implementation.java
class="org.apache.tuscany.sca.workspace.admin.impl.ContributionCollectionImpl"/>
<property name="workspaceFileName">workspace.xml</property>
- <service name="WorkspaceCollection">
+ <service name="ContributionCollection">
<t:binding.atom uri="http://localhost:9990/workspace"/>
</service>
</component>
@@ -92,6 +92,14 @@
<service name="CompositeCollection">
<t:binding.atom uri="http://localhost:9990/composite"/>
</service>
+ </component>
+
+ <component name="DeployableCompositeCollectionComponent">
+ <implementation.java
class="org.apache.tuscany.sca.workspace.admin.impl.DeployableCompositeCollectionImpl"/>
+ <service name="CompositeCollection">
+ <t:binding.atom uri="http://localhost:9990/deployable"/>
+ </service>
+ <reference name="contributionCollection"
target="ContributionCollectionComponent/LocalContributionCollection"/>
</component>
<component name="CloudCollectionComponent">
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java?rev=632617&r1=632616&r2=632617&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
Sat Mar 1 08:24:33 2008
@@ -38,7 +38,7 @@
*/
public class AdminTestCase extends TestCase {
- private WorkspaceCollectionImpl workspaceCollection;
+ private ContributionCollectionImpl workspaceCollection;
private final static String WORKSPACE_XML =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -58,7 +58,7 @@
writer.flush();
// Create a workspace collection component
- workspaceCollection = new WorkspaceCollectionImpl();
+ workspaceCollection = new ContributionCollectionImpl();
workspaceCollection.workspaceFileName = url.getFile();
workspaceCollection.init();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]