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/17 07:11:49 UTC

svn commit: r637734 - in /incubator/tuscany/java/sca/modules: implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/ workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ workspace-admin/src/...

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")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class CompositeImageCollectionImpl implements ItemCollection, LocalItemCollection {
+@Service(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: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org