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>&nbsp;&nbsp;&nbsp;<a href=\"/resolved/composite/' + id + '\">resolved</a></td>';
+											'<a href=\"' + location + '\">' + uri + ' - ' + qname + '</a></td>';
+				composites += '<td>&nbsp;&nbsp;&nbsp;<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>&nbsp;<a href="/composite/"><img src="icons/feed-icon.png" border="0"></a>
+  <b>SCA Domain</b><br><br><b>Deployed Composites</b>&nbsp;<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