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