Author: jsdelfino
Date: Sun Mar 16 10:59:33 2008
New Revision: 637620
URL: http://svn.apache.org/viewvc?rev=637620&view=rev
Log:
Factor common functions in a single class. Multiple bug fixes in the admin
components, fixed creation of cloud directory, only consider node composites
included in cloud.composite, delete node composite files in delete method.
Fixed name of file server directory. Minor UI fixes.
Added:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/AdminCommons.java
(with props)
Modified:
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/ContributionCollectionImpl.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/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionImpl.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/impl/AdminCommons.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/AdminCommons.java?rev=637620&view=auto
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/AdminCommons.java
(added)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/AdminCommons.java
Sun Mar 16 10:59:33 2008
@@ -0,0 +1,125 @@
+/*
+ * 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.io.File;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Common functions and constants used by the admin components.
+ *
+ * @version $Rev$ $Date$
+ */
+public final class AdminCommons {
+
+ static final String DEPLOYMENT_CONTRIBUTION_URI =
"http://tuscany.apache.org/xmlns/sca/1.0/cloud";
+
+ /**
+ * Extracts a qname from a key expressed as
contributionURI;namespace;localpart.
+ * @param key
+ * @return
+ */
+ 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
+ */
+ static String compositeTitle(String uri, QName qname) {
+ if (uri.equals(DEPLOYMENT_CONTRIBUTION_URI)) {
+ return qname.getLocalPart();
+ } else {
+ return uri + " - " + qname.getNamespaceURI() + ";" +
qname.getLocalPart();
+ }
+ }
+
+ /**
+ * Extracts a contribution uri from a key expressed as
contributionURI;namespace;localpart.
+ * @param key
+ * @return
+ */
+ static String contributionURI(String key) {
+ int i = key.indexOf(';');
+ return key.substring("composite:".length(), i);
+ }
+
+ /**
+ * Returns a composite key expressed as
contributionURI;namespace;localpart.
+ * @param qname
+ * @return
+ */
+ static String compositeKey(String uri, QName qname) {
+ return "composite:" + uri + ';' + qname.getNamespaceURI() + ';' +
qname.getLocalPart();
+ }
+
+ /**
+ * Returns a link to the source of a composite
+ * @param contributionURI
+ * @param qname
+ * @return
+ */
+ static String compositeSourceLink(String contributionURI, QName qname) {
+ return "/composite-source/" + compositeKey(contributionURI, qname);
+ }
+
+ /**
+ * Returns a composite title expressed as contributionURI -
namespace;localpart.
+ * @param qname
+ * @return
+ */
+ static String compositeSimpleTitle(String uri, QName qname) {
+ if (uri.equals(AdminCommons.DEPLOYMENT_CONTRIBUTION_URI)) {
+ return qname.getLocalPart();
+ } else {
+ return qname.getNamespaceURI() + ";" + qname.getLocalPart();
+ }
+ }
+
+ /**
+ * Returns a URL from a location string.
+ * @param location
+ * @return
+ * @throws MalformedURLException
+ */
+ static URL locationURL(String location) throws MalformedURLException {
+ URI uri = URI.create(location);
+ String scheme = uri.getScheme();
+ if (scheme == null) {
+ File file = new File(location);
+ return file.toURI().toURL();
+ } else if (scheme.equals("file")) {
+ File file = new File(location.substring(5));
+ return file.toURI().toURL();
+ } else {
+ return uri.toURL();
+ }
+ }
+
+}
Propchange:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/AdminCommons.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/AdminCommons.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=637620&r1=637619&r2=637620&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 10:59:33 2008
@@ -19,6 +19,10 @@
package org.apache.tuscany.sca.workspace.admin.impl;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeQName;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeTitle;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.contributionURI;
+
import java.util.ArrayList;
import java.util.List;
@@ -80,8 +84,8 @@
// composite:contributionURI;namespace;localName
int e = queryString.indexOf('=');
String key = queryString.substring(e + 1);
- String contributionURI = uri(key);
- QName qname = qname(key);
+ String contributionURI = contributionURI(key);
+ QName qname = compositeQName(key);
// Return a collection containing the following entries:
// the resolved version of the specified composite
@@ -91,7 +95,7 @@
// Add the resolved composite entry
Entry<String, Item> compositeEntry = new Entry<String, Item>();
Item compositeItem = new Item();
- compositeItem.setTitle(title(contributionURI, qname));
+ compositeItem.setTitle(compositeTitle(contributionURI, qname));
compositeItem.setLink("/composite-resolved/" + key);
compositeEntry.setKey(key);
compositeEntry.setData(compositeItem);
@@ -108,37 +112,6 @@
} 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();
}
}
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java?rev=637620&r1=637619&r2=637620&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
Sun Mar 16 10:59:33 2008
@@ -19,13 +19,17 @@
package org.apache.tuscany.sca.workspace.admin.impl;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.DEPLOYMENT_CONTRIBUTION_URI;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeSimpleTitle;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeSourceLink;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.locationURL;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLDecoder;
@@ -48,7 +52,6 @@
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionFactory;
import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
@@ -101,8 +104,6 @@
@Property
public String deploymentContributionDirectory;
- private static final String deploymentContributionURI =
Constants.SCA10_TUSCANY_NS + "/cloud";
-
private ContributionFactory contributionFactory;
private AssemblyFactory assemblyFactory;
private WorkspaceFactory workspaceFactory;
@@ -156,7 +157,7 @@
Workspace workspace = readContributions(readWorkspace());
for (Contribution contribution: workspace.getContributions()) {
- if (contribution.getURI().equals(deploymentContributionURI)) {
+ if (contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
continue;
}
entries.add(entry(workspace, contribution));
@@ -293,26 +294,6 @@
}
/**
- * Returns a URL from a location string.
- * @param location
- * @return
- * @throws MalformedURLException
- */
- private static URL url(String location) throws MalformedURLException {
- URI uri = URI.create(location);
- String scheme = uri.getScheme();
- if (scheme == null) {
- File file = new File(location);
- return file.toURI().toURL();
- } else if (scheme.equals("file")) {
- File file = new File(location.substring(5));
- return file.toURI().toURL();
- } else {
- return uri.toURL();
- }
- }
-
- /**
* Returns an entry representing a contribution
* @param contribution
* @return
@@ -345,7 +326,7 @@
sb.append("Dependencies: <span id=\"dependencies\">");
for (int i = 0, n = dependencies.size(); i < n ; i++) {
if (i > 0) {
- sb.append("  ");
+ sb.append(" ");
}
Contribution dependency = dependencies.get(i);
if (dependency != contribution) {
@@ -362,11 +343,11 @@
sb.append("Deployables: <span id=\"deployables\">");
for (int i = 0, n = deployables.size(); i < n ; i++) {
if (i > 0) {
- sb.append("  ");
+ sb.append(" ");
}
Composite deployable = deployables.get(i);
QName qname = deployable.getName();
- sb.append("<a href=\""+ compositeSourceLink(contributionURI,
qname) +"\">" + compositeTitle(contributionURI, qname) + "</a>");
+ sb.append("<a href=\""+ compositeSourceLink(contributionURI,
qname) +"\">" + compositeSimpleTitle(contributionURI, qname) + "</a>");
}
sb.append("</span><br>");
}
@@ -387,38 +368,6 @@
}
/**
- * Returns a composite title expressed as contributionURI -
namespace;localpart.
- * @param qname
- * @return
- */
- private static String compositeTitle(String uri, QName qname) {
- if (uri.equals(deploymentContributionURI)) {
- return qname.getLocalPart();
- } else {
- return qname.getNamespaceURI() + ";" + qname.getLocalPart();
- }
- }
-
- /**
- * Returns a link to the source of a composite
- * @param contributionURI
- * @param qname
- * @return
- */
- private static String compositeSourceLink(String contributionURI, QName
qname) {
- return "/composite-source/" + compositeKey(contributionURI, qname);
- }
-
- /**
- * Returns a composite key expressed as
contributionURI;namespace;localpart.
- * @param qname
- * @return
- */
- private static String compositeKey(String uri, QName qname) {
- return "composite:" + uri + ';' + qname.getNamespaceURI() + ';' +
qname.getLocalPart();
- }
-
- /**
* Returns a title for the given contribution
*
* @param contributionURI
@@ -455,13 +404,13 @@
// SCA nodes declared in the cloud
Contribution cloudContribution = null;
for (Contribution contribution: workspace.getContributions()) {
- if (contribution.getURI().equals(deploymentContributionURI)) {
+ if (contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
cloudContribution = contribution;
}
}
if (cloudContribution == null) {
Contribution contribution =
contributionFactory.createContribution();
- contribution.setURI(deploymentContributionURI);
+ contribution.setURI(DEPLOYMENT_CONTRIBUTION_URI);
File cloudDirectory = new File(deploymentContributionDirectory);
contribution.setLocation(cloudDirectory.toURI().toString());
workspace.getContributions().add(contribution);
@@ -509,7 +458,7 @@
try {
for (Contribution c: workspace.getContributions()) {
URI uri = URI.create(c.getURI());
- URL url = url(c.getLocation());
+ URL url = locationURL(c.getLocation());
Contribution contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
dependencyWorkspace.getContributions().add(contribution);
}
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=637620&r1=637619&r2=637620&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 10:59:33 2008
@@ -19,6 +19,14 @@
package org.apache.tuscany.sca.workspace.admin.impl;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.DEPLOYMENT_CONTRIBUTION_URI;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeKey;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeQName;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeSourceLink;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeTitle;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.contributionURI;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.locationURL;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -110,8 +118,6 @@
private final static Logger logger =
Logger.getLogger(DeployableCompositeCollectionImpl.class.getName());
- private static final String deploymentContributionURI =
Constants.SCA10_TUSCANY_NS + "/cloud";
-
@Reference
public LocalItemCollection contributionCollection;
@@ -227,7 +233,7 @@
public Item get(String key) throws NotFoundException {
// Get the specified contribution info
- String contributionURI = uri(key);
+ String contributionURI = contributionURI(key);
Item contributionItem = contributionCollection.get(contributionURI);
// Read the contribution
@@ -239,7 +245,7 @@
}
// Find the specified deployable composite
- QName qname = qname(key);
+ QName qname = compositeQName(key);
for (Composite deployable: contribution.getDeployables()) {
if (qname.equals(deployable.getName())) {
@@ -311,7 +317,7 @@
String key = path.startsWith("/")? path.substring(1) : path;
// Extract the composite qname from the key
- QName qname = qname(key);
+ QName qname = compositeQName(key);
// Somewhere to store the composite we expect to write out at the end
Composite compositeImage = null;
@@ -329,7 +335,7 @@
for (Entry<String, Item> domainEntry: domainEntries) {
// Load the required contributions
- String contributionURI = uri(domainEntry.getKey());
+ String contributionURI = contributionURI(domainEntry.getKey());
Contribution contribution = contributionMap.get(contributionURI);
if (contribution == null) {
@@ -354,13 +360,13 @@
}
if (contribution == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ response.sendError(HttpServletResponse.SC_NOT_FOUND,
contributionURI);
return;
}
// Find the specified deployable composite in the contribution
Composite deployable = null;
- QName qn = qname(domainEntry.getKey());
+ QName qn = compositeQName(domainEntry.getKey());
for (Composite d: contribution.getDeployables()) {
if (qn.equals(d.getName())) {
deployable = d;
@@ -380,6 +386,12 @@
compositeImage = deployable;
}
}
+
+ // Composite not found
+ if (compositeImage == null) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
+ return;
+ }
// Get the clouds composite
Composite cloudsComposite;
@@ -395,7 +407,7 @@
for (int i = 0, n =domainIncludes.size(); i < n; i++) {
Composite composite = domainIncludes.get(i);
QName compositeName = composite.getName();
- String contributionURI = uri(domainEntries[i].getKey());
+ String contributionURI =
contributionURI(domainEntries[i].getKey());
// find the node that will run this composite and the default
// bindings that it configures
@@ -451,6 +463,7 @@
compositeProcessor.write(compositeImage, writer);
} catch (Exception e) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
e.toString());
+ return;
}
}
@@ -463,8 +476,8 @@
private Composite cloud() throws NotFoundException {
// Create a new composite for the clouds
- Composite clouds = assemblyFactory.createComposite();
- clouds.setName(new QName(Constants.SCA10_TUSCANY_NS, "cloud"));
+ Composite cloudComposite = assemblyFactory.createComposite();
+ cloudComposite.setName(new QName(Constants.SCA10_TUSCANY_NS, "cloud"));
// Get the collection of cloud composites
Entry<String, Item>[] cloudEntries = cloudCollection.getAll();
@@ -472,10 +485,12 @@
// Load the cloud composites
List<Contribution> loadedContributions = new ArrayList<Contribution>();
Map<String, Contribution> contributionMap = new HashMap<String,
Contribution>();
- for (int i=0; i < cloudEntries.length; i++) {
+ for (Entry<String, Item> cloudEntry: cloudEntries) {
+ String key = cloudEntry.getKey();
+ String contributionURI = contributionURI(key);
+ QName qname = compositeQName(key);
- // load the contribution
- String contributionURI = uri(cloudEntries[i].getKey());
+ // Load the contribution
Contribution contribution = contributionMap.get(contributionURI);
if (contribution == null) {
Item contributionItem =
contributionCollection.get(contributionURI);
@@ -494,12 +509,14 @@
for (Artifact artifact : contribution.getArtifacts()) {
if (artifact.getModel() instanceof Composite) {
Composite composite = (Composite)artifact.getModel();
- clouds.getIncludes().add(composite);
+ if (composite.getName().equals(qname)) {
+ cloudComposite.getIncludes().add(composite);
+ }
}
}
}
- return clouds;
+ return cloudComposite;
}
/**
@@ -514,7 +531,7 @@
private Contribution contribution(List<Contribution> contributions, String
contributionURI, String contributionLocation) throws ContributionReadException {
try {
URI uri = URI.create(contributionURI);
- URL location = url(contributionLocation);
+ URL location = locationURL(contributionLocation);
Contribution contribution =
(Contribution)contributionContentProcessor.read(null, uri, location);
// FIXME simplify this later
@@ -527,9 +544,9 @@
ModelResolver modelResolver = new
ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
contributionContentProcessor.resolve(contribution, modelResolver);
- // Special processing for the cloud contribution, make all the
- // composites deployable
- if (contribution.getURI().equals(deploymentContributionURI)) {
+ // Special processing for the cloud contribution, mark all its
+ // composites as deployable
+ if (contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
for (Artifact artifact: contribution.getArtifacts()) {
if (artifact.getModel() instanceof Composite) {
contribution.getDeployables().add((Composite)artifact.getModel());
@@ -592,16 +609,6 @@
}
/**
- * Returns a link to the source of a composite
- * @param contributionURI
- * @param qname
- * @return
- */
- private static String sourceLink(String contributionURI, QName qname) {
- return "/composite-source/" + key(contributionURI, qname);
- }
-
- /**
* Returns the list of components in a composite.
*
* @param composite
@@ -609,11 +616,17 @@
*/
private static String components(Composite composite) {
StringBuffer sb = new StringBuffer();
- for (Component component: composite.getComponents()) {
- if (sb.length() != 0) {
- sb.append(" ");
+ List<Component> components = composite.getComponents();
+ if (!components.isEmpty()) {
+ sb.append("Components: <span id=\"components\">");
+ for (int i = 0, n = components.size(); i < n; i++) {
+ Component component = components.get(i);
+ if (i != 0) {
+ sb.append(" ");
+ }
+ sb.append(component.getName());
}
- sb.append(component.getName());
+ sb.append("</span>");
}
return sb.toString();
}
@@ -631,7 +644,7 @@
Composite deployable = nodeImplementation.getComposite();
String contributionURI = deployable.getURI();
QName qname = deployable.getName();
- String key = key(contributionURI, qname);
+ String key = compositeKey(contributionURI, qname);
return "/composite-source/" + key;
}
}
@@ -647,7 +660,7 @@
*/
private static Entry<String, Item> entry(Contribution contribution,
Composite deployable) {
Entry<String, Item> entry = new Entry<String, Item>();
- entry.setKey(key(contribution.getURI(), deployable.getName()));
+ entry.setKey(AdminCommons.compositeKey(contribution.getURI(),
deployable.getName()));
entry.setData(item(contribution, deployable));
return entry;
}
@@ -665,76 +678,12 @@
QName qname = deployable.getName();
String deployableURI = deployable.getURI();
Item item = new Item();
- item.setTitle(title(contributionURI, qname));
+ item.setTitle(compositeTitle(contributionURI, qname));
item.setContents(components(deployable));
- item.setLink(sourceLink(contributionURI, qname));
+ item.setLink(compositeSourceLink(contributionURI, qname));
item.setAlternate(alternateLink(contributionLocation, deployableURI));
item.setRelated(relatedLink(deployable));
return item;
- }
-
- /**
- * 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 key expressed as
contributionURI;namespace;localpart.
- * @param qname
- * @return
- */
- 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) {
- if (uri.equals(deploymentContributionURI)) {
- return qname.getLocalPart();
- } else {
- return uri + " - " + qname.getNamespaceURI() + ";" +
qname.getLocalPart();
- }
- }
-
- /**
- * Returns a URL from a location string.
- * @param location
- * @return
- * @throws MalformedURLException
- */
- private static URL url(String location) throws MalformedURLException {
- URI uri = URI.create(location);
- String scheme = uri.getScheme();
- if (scheme == null) {
- File file = new File(location);
- return file.toURI().toURL();
- } else if (scheme.equals("file")) {
- File file = new File(location.substring(5));
- return file.toURI().toURL();
- } else {
- return uri.toURL();
- }
}
/**
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java?rev=637620&r1=637619&r2=637620&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
Sun Mar 16 10:59:33 2008
@@ -19,15 +19,20 @@
package org.apache.tuscany.sca.workspace.admin.impl;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.DEPLOYMENT_CONTRIBUTION_URI;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeKey;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeQName;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.contributionURI;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeTitle;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeSourceLink;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URL;
@@ -84,8 +89,6 @@
public class DeployedCompositeCollectionImpl extends HttpServlet implements
ItemCollection, LocalItemCollection {
private static final long serialVersionUID = -3477992129462720901L;
- private static final String deploymentContributionURI =
Constants.SCA10_TUSCANY_NS + "/cloud";
-
@Property
public String compositeFile;
@@ -130,13 +133,15 @@
for (Composite composite: compositeCollection.getIncludes()) {
String contributionURI = composite.getURI();
QName qname = composite.getName();
- String key = key(contributionURI, qname);
+ String key = compositeKey(contributionURI, qname);
Item item;
try {
item = deployableCollection.get(key);
} catch (NotFoundException e) {
item = new Item();
- item.setContents("<span style=\"color: red\">Problem:
Composite not found</span>");
+ item.setTitle(compositeTitle(contributionURI, qname));
+ item.setLink(compositeSourceLink(contributionURI, qname));
+ item.setContents("<span id=\"problem\" style=\"color:
red\">Problem: Composite not found</span>");
}
Entry<String, Item> entry = new Entry<String, Item>();
entry.setKey(key);
@@ -203,8 +208,8 @@
}
public String post(String key, Item item) {
- String contributionURI = uri(key);
- QName qname = qname(key);
+ String contributionURI = contributionURI(key);
+ QName qname = compositeQName(key);
// Adds a new composite to the domain composite
Composite compositeCollection = readCompositeCollection();
@@ -218,7 +223,11 @@
// under the deployment composites directory, if that directory is
// configured on this component
if (deploymentContributionDirectory != null && item.getContents() !=
null) {
- File file = new File(deploymentContributionDirectory,
qname.getLocalPart() + ".composite");
+ File directory = new File(deploymentContributionDirectory);
+ if (!directory.exists()) {
+ directory.mkdirs();
+ }
+ File file = new File(directory, qname.getLocalPart() +
".composite");
try {
Writer w = new OutputStreamWriter(new FileOutputStream(file));
w.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
@@ -236,8 +245,8 @@
}
public void put(String key, Item item) throws NotFoundException {
- String contributionURI = uri(key);
- QName qname = qname(key);
+ String contributionURI = contributionURI(key);
+ QName qname = compositeQName(key);
// Update a composite already in the domain composite
Composite compositeCollection = readCompositeCollection();
@@ -261,30 +270,36 @@
}
public void delete(String key) throws NotFoundException {
- String contributionURI = uri(key);
- QName qname = qname(key);
+ String contributionURI = contributionURI(key);
+ QName qname = compositeQName(key);
// Delete a composite from the composite collection
Composite compositeCollection = readCompositeCollection();
List<Composite> composites = compositeCollection.getIncludes();
+ Composite deleted = null;
for (int i = 0, n = composites.size(); i < n; i++) {
Composite composite = composites.get(i);
if (contributionURI.equals(composite.getURI()) &&
qname.equals(composite.getName())) {
composites.remove(i);
-
- if (deploymentContributionDirectory != null &&
contributionURI.equals(deploymentContributionURI)) {
- File file = new File(deploymentContributionDirectory,
qname.getLocalPart() + ".composite");
- if (file.exists()) {
- file.delete();
- }
- }
+ deleted = composite;
// Write the domain composite
writeCompositeCollection(compositeCollection);
- return;
+ break;
}
}
- throw new NotFoundException(key);
+
+ // Delete the file too if it is in the deployment contribution
directory
+ if (deploymentContributionDirectory != null &&
contributionURI.equals(DEPLOYMENT_CONTRIBUTION_URI)) {
+ File file = new File(deploymentContributionDirectory,
qname.getLocalPart() + ".composite");
+ if (file.exists()) {
+ file.delete();
+ }
+ }
+
+ if (deleted == null) {
+ throw new NotFoundException(key);
+ }
}
public Entry<String, Item>[] query(String queryString) {
@@ -348,37 +363,6 @@
} catch (Exception e) {
throw new ServiceRuntimeException(e);
}
- }
-
- /**
- * 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 key expressed as
contributionURI;namespace;localpart.
- * @param qname
- * @return
- */
- private static String key(String uri, QName qname) {
- return "composite:" + uri + ';' + qname.getNamespaceURI() + ';' +
qname.getLocalPart();
}
}
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java?rev=637620&r1=637619&r2=637620&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileCollectionImpl.java
Sun Mar 16 10:59:33 2008
@@ -53,7 +53,7 @@
}
public Entry<String, Item>[] getAll() {
- // Return all the contributions
+ // Return all the files
List<Entry<String, Item>> entries = new ArrayList<Entry<String,
Item>>();
File directory = new File(directoryName);
if (directory.exists()) {
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java?rev=637620&r1=637619&r2=637620&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/FileServiceImpl.java
Sun Mar 16 10:59:33 2008
@@ -69,7 +69,7 @@
@Override
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws IOException {
- // Upload contributions
+ // Upload files
try {
for (FileItem item: (List<FileItem>)upload.parseRequest(request)) {
if (!item.isFormField()) {
@@ -92,7 +92,7 @@
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
- // Download a contribution file
+ // Download a file
String requestURI = URLDecoder.decode(request.getRequestURI(),
"UTF-8");
String path = requestURI.substring(request.getServletPath().length());
if (path.startsWith("/")) {
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionImpl.java?rev=637620&r1=637619&r2=637620&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionImpl.java
Sun Mar 16 10:59:33 2008
@@ -19,6 +19,10 @@
package org.apache.tuscany.sca.workspace.admin.impl;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeQName;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.compositeTitle;
+import static
org.apache.tuscany.sca.workspace.admin.impl.AdminCommons.contributionURI;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -26,8 +30,6 @@
import java.util.List;
import java.util.Properties;
-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;
@@ -36,7 +38,6 @@
import org.apache.tuscany.sca.node.launch.SCANode2Launcher;
import org.osoa.sca.ServiceRuntimeException;
import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
import org.osoa.sca.annotations.Scope;
import org.osoa.sca.annotations.Service;
@@ -71,7 +72,7 @@
public Item get(String key) throws NotFoundException {
// Return the specified VM
- SCANodeVM vm = getVM(key);
+ SCANodeVM vm = vm(key);
if (vm == null) {
throw new NotFoundException();
}
@@ -82,7 +83,7 @@
public String post(String key, Item item) {
// Start a new VM and add it to the collection
- SCANodeVM vm = getVM(key);
+ SCANodeVM vm = vm(key);
if (vm != null) {
return key;
}
@@ -105,7 +106,7 @@
public void delete(String key) throws NotFoundException {
// Stop a VM and remove it from the collection
- SCANodeVM vm = getVM(key);
+ SCANodeVM vm = vm(key);
if (vm != null) {
try {
vm.stop();
@@ -142,7 +143,7 @@
* @param key
* @return
*/
- private SCANodeVM getVM(String key) {
+ private SCANodeVM vm(String key) {
for (SCANodeVM vm: nodeVMs) {
if (key.equals(vm.getComposite())) {
return vm;
@@ -173,43 +174,12 @@
private static Item item(SCANodeVM vm) {
Item item = new Item();
String key = vm.getComposite();
- item.setTitle(title(uri(key), qname(key)));
+ item.setTitle(compositeTitle(contributionURI(key),
compositeQName(key)));
item.setLink("/composite-image?composite=" + vm.getComposite());
- item.setContents("<span style=\"white-space: nowrap; font-size:
small\">" + vm.getLog().toString() + "</span>");
+ item.setContents("<span id=\"log\" style=\"white-space: nowrap;
font-size: small\">" + vm.getLog().toString() + "</span>");
return item;
}
- /**
- * 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();
- }
-
/**
* Represent a child Java VM running an SCA node.
*/
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=637620&r1=637619&r2=637620&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
Sun Mar 16 10:59:33 2008
@@ -94,7 +94,7 @@
<component name="FileServiceComponent">
<implementation.java
class="org.apache.tuscany.sca.workspace.admin.impl.FileServiceImpl"/>
- <property name="directoryName">contributions</property>
+ <property name="directoryName">files</property>
<service name="Servlet">
<t:binding.http uri="http://localhost:9990/files"/>
</service>
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=637620&r1=637619&r2=637620&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 10:59:33 2008
@@ -84,18 +84,27 @@
}
compositeIds[i] = compositeId;
- var content =
entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
- var name = compositeLocalName(nodeId);
+ var content = "";
+ if
(entries[i].getElementsByTagName("content")[0].firstChild != null) {
+ content =
entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+ }
+ var bs = content.indexOf('<span
id="components">');
+ if (bs != -1) {
+ var es = content.indexOf('</span>',
bs);
+ nodeName = content.substring(bs, es +
7);
+ }
+
+ var nodeName = compositeLocalName(nodeId);
composites += '<tr>'
- if (content.indexOf('<span ') != -1) {
+ if (content.indexOf('<span id="problem"') !=
-1) {
composites += '<td><input
name="composites" type="checkbox" value="' + nodeId + '">' +
-
'<a href=\"' + nodeLink + '\">' + name + '</a></td>';
+
'<a href=\"' + nodeLink + '\">' + nodeName + '</a></td>';
composites += '<td>' + content +
'</td>';
composites += '<td>' + uri + '</td>';
} else {
composites += '<td><input
name="composites" type="checkbox" value="' + nodeId + '">' +
-
'<a href=\"' + nodeLink + '\">' + content + '</a></td>';
+
'<a href=\"' + nodeLink + '\">' + nodeName + '</a></td>';
composites += '<td><a href=\"' +
compositeLink + '\">' + qname + '</a></td>';
composites += '<td><a
href="/contribution/' + uri + '">' + uri + '</a></td>';
}
@@ -130,7 +139,7 @@
var contributionURI =
document.newCompositeForm.contributionURI.value;
var id = 'composite:' +
'http://tuscany.apache.org/xmlns/sca/1.0/cloud' + ';' +
- 'http://tuscany.apache.org/xmlns/sca/1.0/cloud' + ';' +
+ 'cloud:/' + ';' +
nodeName;
var entry = '<entry xmlns="http://www.w3.org/2005/Atom">\n' +
@@ -138,7 +147,7 @@
'<content type="text/xml"\n>\n' +
'<composite
xmlns="http://www.osoa.org/xmlns/sca/1.0"\n' +
'
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"\n' +
- '
targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0/cloud"\n' +
+ ' targetNamespace="cloud:/"\n' +
' xmlns:c="' + compositeNamespace + '"\n'
+
' name="' + nodeName + '">\n' +
'\n' +
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=637620&r1=637619&r2=637620&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
Sun Mar 16 10:59:33 2008
@@ -54,9 +54,25 @@
for (var i=0; i<entries.length; i++) {
var id =
entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
var link =
entries[i].getElementsByTagName("link")[0].getAttribute("href");
- var components =
entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
var uri = contributionURI(id);
var qname = compositeName(id);
+
+ var content = "";
+ if
(entries[i].getElementsByTagName("content")[0].firstChild != null) {
+ content =
entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+ }
+ var components = '';
+ var bs = content.indexOf('<span
id="components">');
+ if (bs != -1) {
+ var es = content.indexOf('</span>',
bs);
+ components = content.substring(bs, es +
7);
+ } else {
+ bs = content.indexOf('<span
id="problem"');
+ if (bs != -1) {
+ var es =
content.indexOf('</span>', bs);
+ components =
content.substring(bs, es + 7);
+ }
+ }
composites += '<tr>'
composites += '<td><input name="composites"
type="checkbox" value="' + id + '">';
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]