You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/03/05 21:16:07 UTC
svn commit: r634014 - in
/incubator/tuscany/java/sca/modules/workspace-admin/src/main:
java/org/apache/tuscany/sca/workspace/admin/
java/org/apache/tuscany/sca/workspace/admin/impl/ resources/
Author: jsdelfino
Date: Wed Mar 5 12:15:58 2008
New Revision: 634014
URL: http://svn.apache.org/viewvc?rev=634014&view=rev
Log:
Added a service to return feeds for installable packages. Fixed composite titles.
Added:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java (with props)
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java (with props)
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java (with props)
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/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/Admin.composite
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html
Added: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java?rev=634014&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java Wed Mar 5 12:15:58 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 package collection service.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface LocalPackageCollection extends Collection<String, Item>{
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/LocalPackageCollection.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java?rev=634014&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java Wed Mar 5 12:15:58 2008
@@ -0,0 +1,34 @@
+/*
+ * 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;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The package collection service interface.
+ *
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface PackageCollection extends Collection<String, Item>{
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/PackageCollection.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=634014&r1=634013&r2=634014&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 Mar 5 12:15:58 2008
@@ -115,12 +115,12 @@
List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
for (Composite composite: compositeCollection.getIncludes()) {
Entry<String, Item> entry = new Entry<String, Item>();
- QName qname = composite.getName();
String contributionURI = composite.getURI();
+ QName qname = composite.getName();
String key = key(contributionURI, qname);
entry.setKey(key);
Item item = new Item();
- item.setTitle(key);
+ item.setTitle(title(contributionURI, qname));
item.setLink(compositeLink(contributionURI, qname));
entry.setData(item);
entries.add(entry);
@@ -136,7 +136,7 @@
for (Composite composite: compositeCollection.getIncludes()) {
if (contributionURI.equals(composite.getURI()) && qname.equals(composite.getName())) {
Item item = new Item();
- item.setTitle(key);
+ item.setTitle(title(contributionURI, qname));
item.setLink(compositeLink(composite.getURI(), qname));
return item;
}
@@ -206,12 +206,7 @@
}
public Entry<String, Item>[] query(String queryString) {
- if (queryString.startsWith("uris=true")) {
- //FIXME Invoke the Composite processing code from workspace-impl
- return getAll();
- } else {
- throw new UnsupportedOperationException();
- }
+ throw new UnsupportedOperationException();
}
/**
@@ -282,4 +277,14 @@
private static String key(String uri, QName qname) {
return "composite:" + uri + ';' + qname.getNamespaceURI() + ';' + qname.getLocalPart();
}
+
+ /**
+ * Returns a composite title expressed as contributionURI - namespace;localpart.
+ * @param qname
+ * @return
+ */
+ private static String title(String uri, QName qname) {
+ return uri + " - " + qname.getNamespaceURI() + ';' + qname.getLocalPart();
+ }
+
}
Modified: 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=634014&r1=634013&r2=634014&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java Wed Mar 5 12:15:58 2008
@@ -178,10 +178,12 @@
// Create entries for the deployable composites
for (Composite deployable: contribution.getDeployables()) {
Entry<String, Item> entry = new Entry<String, Item>();
- String key = key(contribution.getURI(), deployable.getName());
+ String contributionURI = contribution.getURI();
+ QName qname = deployable.getName();
+ String key = key(contributionURI, qname);
entry.setKey(key);
Item item = new Item();
- item.setTitle(key);
+ item.setTitle(title(contributionURI, qname));
item.setLink(deployableLink(contribution.getLocation(), deployable.getURI()));
entry.setData(item);
entries.add(entry);
@@ -207,7 +209,7 @@
// Return an item describing the deployable composite
Item item = new Item();
- item.setTitle(key);
+ item.setTitle(title(contributionURI, qname));
item.setLink(deployableLink(contribution.getLocation(), deployable.getURI()));
return item;
}
@@ -250,10 +252,11 @@
// Create entries for the deployable composites
for (Composite deployable: contribution.getDeployables()) {
Entry<String, Item> entry = new Entry<String, Item>();
- String key = key(contributionURI, deployable.getName());
+ QName qname = deployable.getName();
+ String key = key(contributionURI, qname);
entry.setKey(key);
Item item = new Item();
- item.setTitle(key);
+ item.setTitle(title(contributionURI, qname));
item.setLink(deployableLink(contribution.getLocation(), deployable.getURI()));
entry.setData(item);
entries.add(entry);
@@ -272,6 +275,9 @@
// Get the request path
String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8");
String key = path.startsWith("/")? path.substring(1) : path;
+
+ // Expecting a key in the form:
+ // composite:contributionURI;namespace;localName
// Get the specified contribution info
String contributionURI = uri(key);
@@ -412,6 +418,15 @@
*/
private static String key(String uri, QName qname) {
return "composite:" + uri + ';' + qname.getNamespaceURI() + ';' + qname.getLocalPart();
+ }
+
+ /**
+ * Returns a composite title expressed as contributionURI - namespace;localpart.
+ * @param qname
+ * @return
+ */
+ private static String title(String uri, QName qname) {
+ return uri + " - " + qname.getNamespaceURI() + ';' + qname.getLocalPart();
}
/**
Added: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java?rev=634014&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java Wed Mar 5 12:15:58 2008
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.workspace.admin.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.implementation.data.collection.Entry;
+import org.apache.tuscany.sca.implementation.data.collection.Item;
+import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+import org.apache.tuscany.sca.workspace.admin.LocalContributionCollection;
+import org.apache.tuscany.sca.workspace.admin.LocalPackageCollection;
+import org.apache.tuscany.sca.workspace.admin.PackageCollection;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Implementation of a package collection service.
+ *
+ * @version $Rev$ $Date$
+ */
+@Scope("COMPOSITE")
+@Service(interfaces={PackageCollection.class, LocalPackageCollection.class})
+public class PackageCollectionImpl implements PackageCollection, LocalPackageCollection {
+
+ @Reference
+ public LocalContributionCollection contributionCollection;
+
+ /**
+ * Initialize the component.
+ */
+ @Init
+ public void initialize() {
+ }
+
+ public Entry<String, Item>[] getAll() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Item get(String key) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public String post(String key, Item item) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void put(String key, Item item) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void delete(String key) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public Entry<String, Item>[] query(String queryString) {
+ if (queryString.startsWith("deployable=")) {
+
+ // Expecting a key in the form:
+ // composite:contributionURI;namespace;localName
+ String key = queryString.substring(11);
+ String contributionURI = uri(key);
+ QName qname = qname(key);
+
+ // Return a collection containing the following entries:
+ // the resolved version of the specified composite
+ // the required contributions
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+
+ // Add the resolved composite entry
+ Entry<String, Item> compositeEntry = new Entry<String, Item>();
+ Item compositeItem = new Item();
+ compositeItem.setTitle(title(contributionURI, qname));
+ compositeItem.setLink("/resolved/composite/" + key);
+ compositeEntry.setKey(key);
+ compositeEntry.setData(compositeItem);
+ entries.add(compositeEntry);
+
+ // Get the collection of required contributions
+ Entry<String, Item>[] contributionEntries = contributionCollection.query("requiredBy=" + contributionURI);
+ for (Entry<String, Item> entry: contributionEntries) {
+ entries.add(entry);
+ }
+
+ return entries.toArray(new Entry[entries.size()]);
+
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ /**
+ * Extracts a qname from a key expressed as contributionURI;namespace;localpart.
+ * @param key
+ * @return
+ */
+ private static QName qname(String key) {
+ int i = key.indexOf(';');
+ key = key.substring(i + 1);
+ i = key.indexOf(';');
+ return new QName(key.substring(0, i), key.substring(i + 1));
+ }
+
+ /**
+ * Extracts a contribution uri from a key expressed as contributionURI;namespace;localpart.
+ * @param key
+ * @return
+ */
+ private static String uri(String key) {
+ int i = key.indexOf(';');
+ return key.substring("composite:".length(), i);
+ }
+
+ /**
+ * Returns a composite title expressed as contributionURI - namespace;localpart.
+ * @param qname
+ * @return
+ */
+ private static String title(String uri, QName qname) {
+ return uri + " - " + qname.getNamespaceURI() + ';' + qname.getLocalPart();
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/PackageCollectionImpl.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=634014&r1=634013&r2=634014&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 Mar 5 12:15:58 2008
@@ -122,4 +122,12 @@
<reference name="deployableCompositeCollection" target="DeployableCompositeCollectionComponent/LocalCompositeCollection"/>
</component>
+ <component name="PackageCollectionComponent">
+ <implementation.java class="org.apache.tuscany.sca.workspace.admin.impl.PackageCollectionImpl"/>
+ <service name="PackageCollection">
+ <t:binding.atom uri="http://localhost:9990/package"/>
+ </service>
+ <reference name="contributionCollection" target="ContributionCollectionComponent/LocalContributionCollection"/>
+ </component>
+
</composite>
Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html?rev=634014&r1=634013&r2=634014&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html Wed Mar 5 12:15:58 2008
@@ -32,6 +32,16 @@
cloudComposite.get("", getCompositesResponse);
}
+ function contributionURI(id) {
+ var i = id.indexOf(';');
+ return id.substring(10, i);
+ }
+
+ function compositeName(id) {
+ var i = id.indexOf(';');
+ return id.substring(i + 1);
+ }
+
function getCompositesResponse(feed) {
if (feed != null) {
var entries = feed.getElementsByTagName("entry");
@@ -40,9 +50,12 @@
for (var i=0; i<entries.length; i++) {
var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
var location = entries[i].getElementsByTagName("link")[0].getAttribute("href");
+ var uri = contributionURI(id);
+ var qname = compositeName(id);
+
composites += '<tr valign="bottom">'
composites += '<td><input name="composites" type="checkbox" value="' + id + '">' +
- '<a href=\"' + location + '\">' + id + '</a></td>';
+ '<a href=\"' + location + '\">' + uri + ' - ' + qname + '</a></td>';
composites += '</tr>';
}
composites += '</table>';
Modified: incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html?rev=634014&r1=634013&r2=634014&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html Wed Mar 5 12:15:58 2008
@@ -18,7 +18,7 @@
-->
<html>
<head>
-<title>SCA Domain - Included Composites</title>
+<title>SCA Domain - Deployed Composites</title>
<script type="text/javascript" src="composite.js"></script>
<script type="text/javascript" src="utils.js"></script>
@@ -32,18 +32,32 @@
domainComposite.get("", getCompositesResponse);
}
+ function contributionURI(id) {
+ var i = id.indexOf(';');
+ return id.substring(10, i);
+ }
+
+ function compositeName(id) {
+ var i = id.indexOf(';');
+ return id.substring(i + 1);
+ }
+
function getCompositesResponse(feed) {
if (feed != null) {
var entries = feed.getElementsByTagName("entry");
var composites = "";
composites += '<table border="0">';
+ compositeIDs = new Array();
for (var i=0; i<entries.length; i++) {
var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
var location = entries[i].getElementsByTagName("link")[0].getAttribute("href");
+ var uri = contributionURI(id);
+ var qname = compositeName(id);
+
composites += '<tr valign="bottom">'
composites += '<td><input name="composites" type="checkbox" value="' + id + '">' +
- '<a href=\"' + location + '\">' + id + '</a></td>';
- composites += '<td> <a href=\"/resolved/composite/' + id + '\">resolved</a></td>';
+ '<a href=\"' + location + '\">' + uri + ' - ' + qname + '</a></td>';
+ composites += '<td> <a href=\"/package/?deployable=' + id + '\">installable package</a></td>';
composites += '</tr>';
}
composites += '</table>';
@@ -92,7 +106,7 @@
<div id="domainComposite">
<p style="font-size:150%">
- <b>SCA Domain</b><br><br><b>Included Composites</b> <a href="/composite/"><img src="icons/feed-icon.png" border="0"></a>
+ <b>SCA Domain</b><br><br><b>Deployed Composites</b> <a href="/composite/"><img src="icons/feed-icon.png" border="0"></a>
</p>
<form name="domainCompositeForm">
<div id="composites" ></div>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org