Author: jsdelfino
Date: Sun Mar 16 23:11:48 2008
New Revision: 637734

URL: http://svn.apache.org/viewvc?rev=637734&view=rev
Log:
Support simpler URIs in the form http://localhost:9990/node-image/nodeName for 
node configuration images.

Modified:
    
incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeProcessCollectionImpl.java
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeImageCollectionImpl.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/DomainAdmin.composite
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html

Modified: 
incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeProcessCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeProcessCollectionImpl.java?rev=637734&r1=637733&r2=637734&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeProcessCollectionImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeProcessCollectionImpl.java
 Sun Mar 16 23:11:48 2008
@@ -27,8 +27,6 @@
 import java.util.Properties;
 import java.util.logging.Logger;
 
-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.ItemCollection;
@@ -120,13 +118,13 @@
     }
     
     public Entry<String, Item>[] query(String queryString) {
-        if (queryString.startsWith("composite=")) {
+        if (queryString.startsWith("node=")) {
             
             // Return the log for the specified VM
             String key = queryString.substring(queryString.indexOf('=') + 1);
             List<Entry<String, Item>> entries = new ArrayList<Entry<String, 
Item>>();
             for (SCANodeVM vm: nodeVMs) {
-                if (vm.getComposite().equals(key)) {
+                if (vm.getNodeName().equals(key)) {
                     entries.add(entry(vm));
                 }
             }
@@ -145,7 +143,7 @@
      */
     private SCANodeVM vm(String key) {
         for (SCANodeVM vm: nodeVMs) {
-            if (key.equals(vm.getComposite())) {
+            if (key.equals(vm.getNodeName())) {
                 return vm;
             }
         }
@@ -160,7 +158,7 @@
      */
     private static Entry<String, Item> entry(SCANodeVM vm) {
         Entry<String, Item> entry = new Entry<String, Item>();
-        entry.setKey(vm.getComposite());
+        entry.setKey(vm.getNodeName());
         entry.setData(item(vm));
         return entry;
     }
@@ -173,9 +171,9 @@
      */
     private static Item item(SCANodeVM vm) {
         Item item = new Item();
-        String key = vm.getComposite();
-        item.setTitle(compositeTitle(contributionURI(key), 
compositeQName(key)));
-        item.setLink("/composite-image?composite=" + vm.getComposite());
+        String key = vm.getNodeName();
+        item.setTitle(title(key));
+        item.setLink("/node-image/" + vm.getNodeName());
         item.setContents("<span id=\"log\" style=\"white-space: nowrap; 
font-size: small\">" + vm.getLog().toString() + "</span>");
         return item;
     }
@@ -184,15 +182,15 @@
      * Represent a child Java VM running an SCA node.
      */
     private static class SCANodeVM {
-        private String composite;
+        private String nodeName;
         private StringBuffer log;
         private Process process;
         private Thread monitor;
         private int status;
         
-        SCANodeVM(String composite) {
+        SCANodeVM(String nodeName) {
             log = new StringBuffer();
-            this.composite =composite;
+            this.nodeName =nodeName;
         }
         
         /**
@@ -205,7 +203,7 @@
             String java = props.getProperty("java.home") + "/bin/java";
             String cp = props.getProperty("java.class.path");
             String main = NodeImplementationLauncher.class.getName();
-            String url = "http://localhost:9990/composite-image?composite="; + 
composite;
+            String url = "http://localhost:9990/node-image/"; + nodeName;
             final String[] command = new String[]{ java, "-cp", cp, main , 
url};
             
             // Start the VM
@@ -241,8 +239,8 @@
          * Returns the composite used to start this VM.
          * @return
          */
-        String getComposite() {
-            return composite;
+        String getNodeName() {
+            return nodeName;
         }
         
         /**
@@ -283,34 +281,13 @@
     }
     
     /**
-     * Extracts a qname from a key expressed as 
contributionURI;namespace;localpart.
-     * @param key
-     * @return
-     */
-    private static QName compositeQName(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));
-    }
-
-    /**
-     * Returns a composite title expressed as contributionURI - 
namespace;localpart.
-     * @param qname
-     * @return
-     */
-    private static String compositeTitle(String uri, QName qname) {
-        return uri + " - " + qname.getNamespaceURI() + ";" + 
qname.getLocalPart();
-    }
-
-    /**
-     * Extracts a contribution uri from a key expressed as 
contributionURI;namespace;localpart.
+     * Returns a node title.
+     * 
      * @param key
      * @return
      */
-    private static String contributionURI(String key) {
-        int i = key.indexOf(';');
-        return key.substring("composite:".length(), i);
+    private static String title(String key) {
+        return key;
     }
 
 }

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeImageCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeImageCollectionImpl.java?rev=637734&r1=637733&r2=637734&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeImageCollectionImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/CompositeImageCollectionImpl.java
 Sun Mar 16 23:11:48 2008
@@ -19,21 +19,32 @@
 
 package org.apache.tuscany.sca.workspace.admin.impl;
 
+import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeKey;
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeQName;
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeTitle;
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.contributionURI;
 
+import java.io.IOException;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Logger;
 
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
 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.ItemCollection;
 import 
org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+import org.apache.tuscany.sca.implementation.node.NodeImplementation;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Reference;
 import org.osoa.sca.annotations.Scope;
@@ -45,14 +56,18 @@
  * @version $Rev$ $Date$
  */
 @Scope("COMPOSITE")
[EMAIL PROTECTED](interfaces={ItemCollection.class, LocalItemCollection.class})
-public class CompositeImageCollectionImpl implements ItemCollection, 
LocalItemCollection {
[EMAIL PROTECTED](interfaces={ItemCollection.class, LocalItemCollection.class, 
Servlet.class})
+public class CompositeImageCollectionImpl extends HttpServlet implements 
ItemCollection, LocalItemCollection, Servlet {
+    private static final long serialVersionUID = 1L;
 
     private final static Logger logger = 
Logger.getLogger(CompositeImageCollectionImpl.class.getName());    
 
     @Reference
     public LocalItemCollection contributionCollection;
     
+    @Reference
+    public LocalItemCollection cloudCollection;
+    
     /**
      * Initialize the component.
      */
@@ -117,4 +132,39 @@
         }
     }
 
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
+        
+        // Get the request path
+        String path = 
URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()),
 "UTF-8");
+        String key = path.startsWith("/")? path.substring(1) : path;
+        
+        // The key contains a node name, redirect 
+        // to the corresponding composite image
+            
+        // Get the collection of cloud composites
+        Entry<String, Item>[] cloudEntries = cloudCollection.getAll();
+
+        // Find the specified node
+        for (Entry<String, Item> cloudEntry: cloudEntries) {
+            QName qname = compositeQName(cloudEntry.getKey());
+            if (qname.getLocalPart().equals(key)) {
+                
+                // Found the specified node
+                String related = cloudEntry.getData().getRelated();
+                int i = related.indexOf("composite:");
+                if (i != -1) {
+                    
+                    // Redirect to its composite image
+                    String compositeImage = "/composite-image/?composite=" + 
related.substring(i);
+                    response.sendRedirect(compositeImage);
+                    return;
+                }
+            }
+        }
+        
+        // Node not found
+        response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
+        return;
+    }
 }

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=637734&r1=637733&r2=637734&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
 Sun Mar 16 23:11:48 2008
@@ -308,14 +308,14 @@
     @Override
     protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
         
-        // Expect a key in the form
-        // composite:contributionURI;namespace;localName
-        // and return the corresponding resolved composite
-        
         // Get the request path
         String path = 
URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()),
 "UTF-8");
         String key = path.startsWith("/")? path.substring(1) : path;
         
+        // Expect a key in the form
+        // composite:contributionURI;namespace;localName
+        // and return the corresponding resolved composite
+        
         // Extract the composite qname from the key
         QName qname = compositeQName(key);
         
@@ -465,7 +465,6 @@
             response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 
e.toString());
             return;
         }
-               
     }
 
     /**

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite?rev=637734&r1=637733&r2=637734&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite
 Sun Mar 16 23:11:48 2008
@@ -143,7 +143,11 @@
                <service name="ItemCollection">
                        <t:binding.atom 
uri="http://localhost:9990/composite-image"; title="Composite Images"/>
                </service>
+               <service name="Servlet">
+                       <t:binding.http uri="http://localhost:9990/node-image"/>
+               </service>
                <reference name="contributionCollection" 
target="ContributionCollectionComponent/LocalItemCollection"/>
+               <reference name="cloudCollection" 
target="CloudCollectionComponent/LocalItemCollection"/>
     </component>
 
     <component name="NodeProcessCollectionComponent">

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=637734&r1=637733&r2=637734&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
 Sun Mar 16 23:11:48 2008
@@ -51,10 +51,10 @@
        return name.substring(i + 1);
        }
        
-       var compositeIds;
+       var nodeNames;
        
        function getCompositesResponse(feed) {
-               compositeIds = new Array();      
+               nodeNames = new Array();      
                if (feed != null) {
                        var entries = feed.getElementsByTagName("entry");
                        var composites = "";
@@ -82,7 +82,6 @@
                                          qname = compositeName(compositeId);
                                        }
                                }
-                               compositeIds[i] = compositeId;
 
                                var content = "";
                                if 
(entries[i].getElementsByTagName("content")[0].firstChild != null) {
@@ -95,6 +94,7 @@
                                }
 
                                var nodeName = compositeLocalName(nodeId);
+                               nodeNames[i] = nodeName;
                                
                                composites += '<tr>'
                                if (content.indexOf('<span id="problem"') != 
-1) {
@@ -108,8 +108,8 @@
                                        composites += '<td><a href=\"' + 
compositeLink + '\">' + qname + '</a></td>';
                                        composites += '<td><a 
href="/contribution/' + uri + '">' + uri + '</a></td>';
                                }
-                               composites += '<td><a 
href="/composite-image/?composite=' + compositeId + '"><img 
src="icons/feed-icon.png" border="0"></a></td>';
-                               composites += '<td><a 
href="/process/?composite=' + compositeId + '"><img src="icons/feed-icon.png" 
border="0"></a></td>';
+                               composites += '<td><a href="/node-image/' + 
nodeName + '"><img src="icons/feed-icon.png" border="0"></a></td>';
+                               composites += '<td><a href="/process/?node=' + 
nodeName + '"><img src="icons/feed-icon.png" border="0"></a></td>';
                                composites += '</tr>';
                        }
                        composites += '</table>';
@@ -179,7 +179,7 @@
                var composites  = array(document.cloudCompositeForm.composites);
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
-                           var id = compositeIds[i];
+                           var id = nodeNames[i];
                            
                                var entry = '<entry 
xmlns="http://www.w3.org/2005/Atom";>' +
                '<id>' + id + '</id>' +
@@ -201,7 +201,7 @@
                var composites  = array(document.cloudCompositeForm.composites);
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
-                           var id = compositeIds[i];
+                           var id = nodeNames[i];
                                processCollection.del(id, 
stopCompositeResponse);
                        }
                }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to