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$
+ */
[EMAIL PROTECTED]
+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$
+ */
[EMAIL PROTECTED]("COMPOSITE")
[EMAIL PROTECTED](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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to