summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.4/modules/domain-manager/src/main
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-11 23:08:29 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-11 23:08:29 +0000
commit725006d4c47e63986ac042ade23a4d193298b1fe (patch)
treeecb2465ddee739a48032ac5c7fa0311e4d90f309 /branches/sca-java-1.4/modules/domain-manager/src/main
parent61c9466ff91ca40f4b1ebbe670d7848e521131d7 (diff)
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835131 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.4/modules/domain-manager/src/main')
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationCollectionImpl.java127
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java518
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeGeneratorServiceImpl.java255
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java656
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionServiceImpl.java77
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java403
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeServiceImpl.java128
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java378
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfiguration.java53
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfigurationImpl.java85
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java296
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileCollectionImpl.java136
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.java153
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeConfigurationServiceImpl.java96
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java251
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/QuickStartServiceImpl.java236
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/launcher/DomainManagerLauncherBootstrap.java95
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/DomainManager.composite281
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud-gadget.html408
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud.html68
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite-gadget.html277
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite.html66
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/files-gadget.html124
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/files.html64
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/home-gadget.html45
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/home.html65
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/icons/feed-icon.pngbin818 -> 0 bytes
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/manager.css104
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/toolbar-gadget.html47
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/utils.js246
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace-gadget.html232
-rw-r--r--branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace.html65
32 files changed, 0 insertions, 6035 deletions
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationCollectionImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationCollectionImpl.java
deleted file mode 100644
index 0e25068f5f..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationCollectionImpl.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeTitle;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.contributionURI;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.ItemCollection;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a component that returns composite configuration collections.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class CompositeConfigurationCollectionImpl implements ItemCollection, LocalItemCollection {
-
- private static final Logger logger = Logger.getLogger(CompositeConfigurationCollectionImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public LocalItemCollection cloudCollection;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() {
- }
-
- public Entry<String, Item>[] getAll() {
- throw new UnsupportedOperationException();
- }
-
- public Item get(String key) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public String post(String key, Item item) {
- throw new UnsupportedOperationException();
- }
-
- public void put(String key, Item item) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public void delete(String key) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public Entry<String, Item>[] query(String queryString) {
- logger.fine("query " + queryString);
-
- if (queryString.startsWith("composite=")) {
-
- // Expecting a key in the form:
- // composite:contributionURI;namespace;localName
- int e = queryString.indexOf('=');
- String key = queryString.substring(e + 1);
- String contributionURI = contributionURI(key);
- QName qname = compositeQName(key);
-
- // Return a collection containing the following entries:
- // the resolved version of the specified composite
- // the required contributions
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
-
- // Add the resolved composite entry
- Entry<String, Item> compositeEntry = new Entry<String, Item>();
- Item compositeItem = new Item();
- compositeItem.setTitle(compositeTitle(contributionURI, qname));
- compositeItem.setLink("/composite-resolved/" + key);
- compositeEntry.setKey(key);
- compositeEntry.setData(compositeItem);
- entries.add(compositeEntry);
-
- // Get the collection of required contributions
- Entry<String, Item>[] contributionEntries = contributionCollection.query("alldependencies=" + contributionURI);
- for (Entry<String, Item> entry: contributionEntries) {
- Item item = entry.getData();
- item.setContents(null);
- entries.add(entry);
- }
-
- return entries.toArray(new Entry[entries.size()]);
-
- } else {
- throw new UnsupportedOperationException();
- }
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java
deleted file mode 100644
index 09bb05cf87..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.contributionURI;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.locationURL;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-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 javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.transform.TransformerFactory;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl;
-import org.apache.tuscany.sca.assembly.builder.impl.CompositeIncludeBuilderImpl;
-import org.apache.tuscany.sca.assembly.xml.Constants;
-import org.apache.tuscany.sca.contribution.Artifact;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.apache.tuscany.sca.implementation.node.NodeImplementation;
-import org.apache.tuscany.sca.implementation.node.builder.impl.NodeCompositeBuilderImpl;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
-import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
-import org.apache.tuscany.sca.workspace.Workspace;
-import org.apache.tuscany.sca.workspace.WorkspaceFactory;
-import org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder;
-import org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl;
-import org.apache.tuscany.sca.workspace.processor.impl.ContributionContentProcessor;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a service that returns a fully configured composite.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(Servlet.class)
-public class CompositeConfigurationServiceImpl extends HttpServlet implements Servlet {
- private static final long serialVersionUID = -8809641932774129152L;
-
- private static final Logger logger = Logger.getLogger(CompositeConfigurationServiceImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public LocalItemCollection domainCompositeCollection;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- @Reference
- public LocalItemCollection cloudCollection;
-
- private ModelFactoryExtensionPoint modelFactories;
- private ModelResolverExtensionPoint modelResolvers;
- private AssemblyFactory assemblyFactory;
- private WorkspaceFactory workspaceFactory;
- private URLArtifactProcessor<Contribution> contributionProcessor;
- private StAXArtifactProcessorExtensionPoint staxProcessors;
- private StAXArtifactProcessor<Composite> compositeProcessor;
- private XMLOutputFactory outputFactory;
- private ContributionDependencyBuilder contributionDependencyBuilder;
- private CompositeBuilder compositeBuilder;
- private CompositeBuilder compositeIncludeBuilder;
- private CompositeBuilder nodeConfigurationBuilder;
- private Monitor monitor;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
-
- // Create a monitor
- UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
-
- // Get model factories
- modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
- XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
- workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
-
- // Get and initialize artifact processors
- staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- compositeProcessor = (StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(Composite.class);
- StAXArtifactProcessor<Object> staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory, monitor);
-
- URLArtifactProcessorExtensionPoint urlProcessors = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- URLArtifactProcessor<Object> urlProcessor = new ExtensibleURLArtifactProcessor(urlProcessors, monitor);
-
- // Create contribution processor
- modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
- contributionProcessor = new ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor, staxProcessor, monitor);
-
- // Create contribution and composite builders
- DocumentBuilderFactory documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
- TransformerFactory transformerFactory = modelFactories.getFactory(TransformerFactory.class);
- contributionDependencyBuilder = new ContributionDependencyBuilderImpl(monitor);
- SCABindingFactory scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
- IntentAttachPointTypeFactory intentAttachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
- InterfaceContractMapper contractMapper = utilities.getUtility(InterfaceContractMapper.class);
- compositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, documentBuilderFactory, transformerFactory, contractMapper, monitor);
- compositeIncludeBuilder = new CompositeIncludeBuilderImpl(monitor);
- nodeConfigurationBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory, documentBuilderFactory, transformerFactory, contractMapper, null, monitor);
- }
-
- @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;
- if (path.startsWith("/")) {
- if (path.length() > 1) {
- key = path.substring(1);
- } else {
- key ="";
- }
- } else {
- key =path;
- }
- logger.fine("get " + key);
-
- // Expect a key in the form composite:contributionURI;namespace;localName or
- // a path in the form componentName/componentName/...
- // and return the corresponding resolved composite
- String requestedContributionURI = null;
- QName requestedCompositeName = null;
- String[] requestedComponentPath = null;
- if (key.startsWith("composite:")) {
-
- // Extract the composite qname from the key
- requestedContributionURI = contributionURI(key);
- requestedCompositeName = compositeQName(key);
-
- } else if (key.length() != 0) {
-
- // Extract the path to the requested component from the key
- requestedComponentPath = key.split("/");
- }
-
- // Somewhere to store the composite we expect to write out at the end
- Composite requestedComposite = null;
-
- // Create a domain composite model
- Composite domainComposite = assemblyFactory.createComposite();
- domainComposite.setName(new QName(Constants.SCA10_TUSCANY_NS, "domain"));
-
- // Get the domain composite items
- Entry<String, Item>[] domainEntries = domainCompositeCollection.getAll();
-
- // Populate the domain composite
- Workspace workspace = workspaceFactory.createWorkspace();
- workspace.setModelResolver(new ExtensibleModelResolver(workspace, modelResolvers, modelFactories));
-
- Map<String, Contribution> contributionMap = new HashMap<String, Contribution>();
- for (Entry<String, Item> domainEntry: domainEntries) {
-
- // Load the required contributions
- String contributionURI = contributionURI(domainEntry.getKey());
- Contribution contribution = contributionMap.get(contributionURI);
- if (contribution == null) {
-
- // The contribution has not been loaded yet, load it with all its dependencies
- Entry<String, Item>[] entries = contributionCollection.query("alldependencies=" + contributionURI);
- for (Entry<String, Item> entry: entries) {
- Item dependencyItem = entry.getData();
- String dependencyURI = entry.getKey();
-
- if (!contributionMap.containsKey(dependencyURI)) {
-
- // Read the contribution
- Contribution dependency;
- try {
- String dependencyLocation = dependencyItem.getAlternate();
- dependency = contribution(workspace, dependencyURI, dependencyLocation);
- } catch (ContributionReadException e) {
- continue;
- }
- workspace.getContributions().add(dependency);
- contributionMap.put(dependencyURI, dependency);
-
- if (contributionURI.equals(entry.getKey())) {
- contribution = dependency;
- }
- }
- }
- }
-
- if (contribution == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, contributionURI);
- return;
- }
-
- // Find the specified deployable composite in the contribution
- Composite deployable = null;
- QName qn = compositeQName(domainEntry.getKey());
- for (Composite d: contribution.getDeployables()) {
- if (qn.equals(d.getName())) {
- deployable = d;
- break;
- }
- }
- if (deployable == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, qn.toString());
- return;
- }
-
- // add the deployable composite to the domain composite
- domainComposite.getIncludes().add(deployable);
-
- // Fuse includes into the deployable composite
- try {
- compositeIncludeBuilder.build(deployable);
- } catch (CompositeBuilderException e) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
- }
-
- // Store away the requested composite
- if (requestedCompositeName != null) {
- if (requestedContributionURI.equals(contributionURI) && requestedCompositeName.equals(deployable.getName())){
- requestedComposite = deployable;
- }
- }
- }
-
- // The requested composite was not found
- if (requestedCompositeName != null && requestedComposite == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- // Get the clouds composite
- Composite cloudsComposite;
- try {
- cloudsComposite = cloud();
- } catch (NotFoundException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, e.getMessage());
- return;
- }
-
- // configure the endpoints for each composite in the domain
- List<Composite> domainIncludes = domainComposite.getIncludes();
- for (int i = 0, n =domainIncludes.size(); i < n; i++) {
- Composite composite = domainIncludes.get(i);
- QName compositeName = composite.getName();
- String contributionURI = contributionURI(domainEntries[i].getKey());
-
- // find the node that will run this composite and the default
- // bindings that it configures
- Component nodeComponent = null;
- QName nodeCompositeName = null;
- for (Composite cloudComposite : cloudsComposite.getIncludes()) {
- for (Component nc : cloudComposite.getComponents()) {
- NodeImplementation nodeImplementation = (NodeImplementation)nc.getImplementation();
- if (nodeImplementation.getComposite().getName().equals(compositeName) &&
- nodeImplementation.getComposite().getURI().equals(contributionURI)) {
- nodeImplementation.setComposite(composite);
- nodeComponent = nc;
- nodeCompositeName = cloudComposite.getName();
- break;
- }
- }
- }
-
- if (nodeComponent != null) {
- try {
- Composite nodeComposite = assemblyFactory.createComposite();
- nodeComposite.setName(nodeCompositeName);
- nodeComposite.getComponents().add(nodeComponent);
- nodeConfigurationBuilder.build(nodeComposite);
- } catch (CompositeBuilderException e) {
- throw new ServletException(e);
- }
- }
- }
-
- // Build the domain composite
- try {
- compositeBuilder.build(domainComposite);
- } catch (CompositeBuilderException e) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
- return;
- }
-
- // Return the requested composite
- if (requestedComposite != null) {
-
- // Rebuild the requested composite from the domain composite
- // we have to reverse the flattening that went on when the domain
- // composite was built
- List<Component> tempComponentList = new ArrayList<Component>();
- tempComponentList.addAll(requestedComposite.getComponents());
- requestedComposite.getComponents().clear();
- for (Component inputComponent : tempComponentList){
- for (Component deployComponent : domainComposite.getComponents()){
- if (deployComponent.getName().equals(inputComponent.getName())){
- requestedComposite.getComponents().add(deployComponent);
- }
- }
- }
-
- } else if (requestedComponentPath != null) {
-
- // If a component path was specified, walk the path to get to the requested
- // component and the composite that implements it
- Composite nestedComposite = domainComposite;
- for (String componentName: requestedComponentPath) {
- Component component = null;
- for (Component c: nestedComposite.getComponents()) {
- if (componentName.equals(c.getName())) {
- component = c;
- break;
- }
- }
- if (component == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- } else {
- if (component.getImplementation() instanceof Composite) {
- nestedComposite = (Composite)component.getImplementation();
- } else {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
- }
- }
-
- // Return the nested composite
- requestedComposite = nestedComposite;
-
- } else {
-
-
- // Return the whole domain composite
- requestedComposite = domainComposite;
- }
-
- // Write the composite in the requested format
- StAXArtifactProcessor<Composite> processor;
- String queryString = request.getQueryString();
- if (queryString != null && queryString.startsWith("format=")) {
- String format = queryString.substring(7);
- int s = format.indexOf(';');
- QName formatName = new QName(format.substring(0, s), format.substring(s +1));
- processor = (StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(formatName);
- if (processor == null) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, new IllegalArgumentException(queryString).toString());
- return;
- }
- } else {
- processor = compositeProcessor;
- }
- try {
- response.setContentType("text/xml");
- XMLStreamWriter writer = outputFactory.createXMLStreamWriter(response.getOutputStream());
- processor.write(requestedComposite, writer);
- } catch (Exception e) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
- return;
- }
-
-
- }
-
- /**
- * Returns the cloud composite.
- *
- * @return the cloud composite
- */
- private Composite cloud() throws NotFoundException {
-
- // Create a new composite for the clouds
- 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();
-
- // Load the cloud contributions
- Workspace workspace = workspaceFactory.createWorkspace();
- Map<String, Contribution> contributionMap = new HashMap<String, Contribution>();
- for (Entry<String, Item> cloudEntry: cloudEntries) {
- String key = cloudEntry.getKey();
- String contributionURI = contributionURI(key);
-
- // Load the contribution
- Contribution contribution = contributionMap.get(contributionURI);
- if (contribution == null) {
- Item contributionItem = contributionCollection.get(contributionURI);
-
- // Read the contribution
- try {
- contribution = contribution(workspace, contributionURI, contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- continue;
- }
- workspace.getContributions().add(contribution);
- contributionMap.put(contributionURI, contribution);
-
- }
-
- // Include the cloud composite in the clouds composite
- QName qname = compositeQName(key);
- for (Artifact artifact : contribution.getArtifacts()) {
- if (artifact.getModel() instanceof Composite) {
- Composite composite = (Composite)artifact.getModel();
- if (composite.getName().equals(qname)) {
- cloudComposite.getIncludes().add(composite);
- }
- }
- }
- }
-
- return cloudComposite;
- }
-
- /**
- * Returns the contribution with the given URI.
- *
- * @param workspace
- * @param contributionURI
- * @param contributionLocation
- * @return
- * @throws NotFoundException
- */
- private Contribution contribution(Workspace workspace, String contributionURI, String contributionLocation) throws ContributionReadException {
- try {
- URI uri = URI.create(contributionURI);
- URL location = locationURL(contributionLocation);
- Contribution contribution = (Contribution)contributionProcessor.read(null, uri, location);
-
- // Resolve the contribution dependencies
- contributionDependencyBuilder.buildContributionDependencies(contribution, workspace);
-
- contributionProcessor.resolve(contribution, workspace.getModelResolver());
- return contribution;
-
- } catch (ContributionReadException e) {
- throw e;
- } catch (ContributionResolveException e) {
- throw new ContributionReadException(e);
- } catch (MalformedURLException e) {
- throw new ContributionReadException(e);
- }
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeGeneratorServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeGeneratorServiceImpl.java
deleted file mode 100644
index 9e024d2d6b..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeGeneratorServiceImpl.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.contributionURI;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.lastModified;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.locationURL;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.apache.tuscany.sca.domain.manager.impl.CompositeGeneratorServiceImpl.Cache.ContributionCache;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
-import org.apache.tuscany.sca.workspace.processor.impl.ContributionContentProcessor;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a service that generates a composite from a composite model.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={Servlet.class})
-public class CompositeGeneratorServiceImpl extends HttpServlet implements Servlet {
- private static final long serialVersionUID = -6531448326726908269L;
-
- private static final Logger logger = Logger.getLogger(CompositeGeneratorServiceImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private ModelFactoryExtensionPoint modelFactories;
- private ModelResolverExtensionPoint modelResolvers;
- private URLArtifactProcessor<Contribution> contributionProcessor;
- private StAXArtifactProcessor<Composite> compositeProcessor;
- private XMLOutputFactory outputFactory;
-
- /**
- * Cache contribution models.
- */
- static class Cache {
- static class ContributionCache {
- private Contribution contribution;
- private long contributionLastModified;
- }
- private Map<URL, ContributionCache> contributions = new HashMap<URL, ContributionCache>();
- }
-
- private Cache cache = new Cache();
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
-
- // Create a monitor
- UtilityExtensionPoint services = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = services.getUtility(MonitorFactory.class);
- Monitor monitor = monitorFactory.createMonitor();
-
- // Get model factories
- modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
-
- // Get and initialize artifact processors
- StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- compositeProcessor = (StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(Composite.class);
- StAXArtifactProcessor<Object> staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory, monitor);
-
- URLArtifactProcessorExtensionPoint urlProcessors = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- URLArtifactProcessor<Object> urlProcessor = new ExtensibleURLArtifactProcessor(urlProcessors, monitor);
-
- // Create contribution processor
- modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
- contributionProcessor = new ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor, staxProcessor, monitor);
- }
-
- @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 source file
-
- // Get the request path
- String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8");
- String key = path.startsWith("/")? path.substring(1) : path;
- logger.fine("get " + key);
-
- // Get the specified contribution info
- String contributionURI = contributionURI(key);
- Item contributionItem;
- try {
- contributionItem = contributionCollection.get(contributionURI);
- } catch (NotFoundException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- // Read the contribution
- Contribution contribution;
- try {
- contribution = contribution(contributionURI, contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- // Find the specified deployable composite
- QName qname = compositeQName(key);
- Composite composite = null;
- for (Composite deployable: contribution.getDeployables()) {
- if (qname.equals(deployable.getName())) {
- if (!deployable.isUnresolved()) {
- composite = deployable;
- }
- break;
- }
- }
- if (composite == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- // Write the composite
- response.setContentType("text/xml");
- ServletOutputStream os = response.getOutputStream();
- try {
- compositeProcessor.write(composite, outputFactory.createXMLStreamWriter(os));
- } catch (ContributionWriteException e) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
- return;
- } catch (XMLStreamException e) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
- return;
- }
- os.flush();
- }
-
- /**
- * Returns the contribution with the given URI.
- *
- * @param contributionURI
- * @param contributionLocation
- * @return
- * @throws NotFoundException
- */
- private Contribution contribution(String contributionURI, String contributionLocation) throws ContributionReadException {
- try {
- URI uri = URI.create(contributionURI);
- URL location = locationURL(contributionLocation);
-
- // Get contribution from cache
- ContributionCache contributionCache = cache.contributions.get(location);
- long lastModified = lastModified(location);
- if (contributionCache != null) {
- if (contributionCache.contributionLastModified == lastModified) {
- return contributionCache.contribution;
- }
-
- // Reset contribution cache
- cache.contributions.remove(location);
- }
-
- Contribution contribution = (Contribution)contributionProcessor.read(null, uri, location);
-
- contributionProcessor.resolve(contribution, new DefaultModelResolver());
-
- // Cache contribution
- contributionCache = new ContributionCache();
- contributionCache.contribution = contribution;
- contributionCache.contributionLastModified = lastModified;
- cache.contributions.put(location, contributionCache);
-
- return contribution;
-
- } catch (ContributionReadException e) {
- throw e;
- } catch (MalformedURLException e) {
- throw new ContributionReadException(e);
- } catch (IOException e) {
- throw new ContributionReadException(e);
- } catch (ContributionResolveException e) {
- throw new ContributionReadException(e);
- }
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
deleted file mode 100644
index 0b304a0854..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
+++ /dev/null
@@ -1,656 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.DEPLOYMENT_CONTRIBUTION_URI;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeSimpleTitle;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeSourceLink;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.lastModified;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.locationURL;
-
-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.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.DefaultExport;
-import org.apache.tuscany.sca.contribution.DefaultImport;
-import org.apache.tuscany.sca.contribution.Export;
-import org.apache.tuscany.sca.contribution.Import;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.ItemCollection;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.apache.tuscany.sca.domain.manager.impl.ContributionCollectionImpl.Cache.ContributionCache;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.workspace.Workspace;
-import org.apache.tuscany.sca.workspace.WorkspaceFactory;
-import org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder;
-import org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl;
-import org.apache.xml.serialize.OutputFormat;
-import org.apache.xml.serialize.XMLSerializer;
-import org.osoa.sca.ServiceRuntimeException;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Property;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-import org.w3c.dom.Document;
-
-/**
- * Implementation of a contribution collection service component.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class ContributionCollectionImpl implements ItemCollection, LocalItemCollection {
-
- private static final Logger logger = Logger.getLogger(ContributionCollectionImpl.class.getName());
-
- @Property
- public String workspaceFile;
-
- @Property
- public String deploymentContributionDirectory;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private Monitor monitor;
- private ContributionFactory contributionFactory;
- private WorkspaceFactory workspaceFactory;
- private StAXArtifactProcessor<Object> staxProcessor;
- private URLArtifactProcessor<Contribution> contributionProcessor;
- private XMLInputFactory inputFactory;
- private XMLOutputFactory outputFactory;
- private DocumentBuilder documentBuilder;
-
- /**
- * Cache workspace and contribution models.
- */
- static class Cache {
- private Workspace workspace;
- private long workspaceLastModified;
-
- static class ContributionCache {
- private Contribution contribution;
- private long contributionLastModified;
- }
- private Map<URL, ContributionCache> contributions = new HashMap<URL, ContributionCache>();
- }
-
- private Cache cache = new Cache();
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
-
- // Create a validation monitor
- UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
-
- // Create model factories
- ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
- contributionFactory = modelFactories.getFactory(ContributionFactory.class);
- workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
-
- // Create artifact processors
- inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory, monitor);
-
- URLArtifactProcessorExtensionPoint urlProcessors = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
-
- // Create contribution info processor
- contributionProcessor = urlProcessors.getProcessor(".contribution/info");
-
- // Create a document builder (used to pretty print XML)
- documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- }
-
- public Entry<String, Item>[] getAll() {
- logger.fine("getAll");
-
- // Return all the contributions
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
- Workspace workspace = readContributions(readWorkspace());
-
- for (Contribution contribution: workspace.getContributions()) {
- if (contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
- continue;
- }
- entries.add(entry(workspace, contribution));
- }
- return entries.toArray(new Entry[entries.size()]);
- }
-
- public Item get(String key) throws NotFoundException {
- logger.fine("get " + key);
-
- // Returns the contribution with the given URI key
- Workspace workspace = readContributions(readWorkspace());
- for (Contribution contribution: workspace.getContributions()) {
- if (key.equals(contribution.getURI())) {
- return item(workspace, contribution);
- }
- }
- throw new NotFoundException(key);
- }
-
- public String post(String key, Item item) {
- logger.fine("post " + key);
-
- // Adds a new contribution to the workspace
- Workspace workspace = readWorkspace();
- Contribution contribution = contributionFactory.createContribution();
- contribution.setURI(key);
- try {
- contribution.setLocation(locationURL(item.getLink()).toString());
- } catch (MalformedURLException e) {
- throw new ServiceRuntimeException(e);
- }
- workspace.getContributions().add(contribution);
-
- // Write the workspace
- writeWorkspace(workspace);
-
- return key;
- }
-
- public void put(String key, Item item) throws NotFoundException {
-
- // Update a contribution already in the workspace
- Workspace workspace = readWorkspace();
- Contribution newContribution = contributionFactory.createContribution();
- newContribution.setURI(key);
- try {
- newContribution.setLocation(locationURL(item.getLink()).toString());
- } catch (MalformedURLException e) {
- throw new ServiceRuntimeException(e);
- }
- List<Contribution> contributions = workspace.getContributions();
- for (int i = 0, n = contributions.size(); i < n; i++) {
- if (contributions.get(i).getURI().equals(key)) {
- contributions.set(i, newContribution);
-
- // Write the workspace
- writeWorkspace(workspace);
- return;
- }
- }
- throw new NotFoundException(key);
- }
-
- public void delete(String key) throws NotFoundException {
- logger.fine("delete " + key);
-
- // Delete a contribution from the workspace
- Workspace workspace = readWorkspace();
- List<Contribution> contributions = workspace.getContributions();
- for (int i = 0, n = contributions.size(); i < n; i++) {
- if (contributions.get(i).getURI().equals(key)) {
- contributions.remove(i);
-
- // Write the workspace
- writeWorkspace(workspace);
- return;
- }
- }
- throw new NotFoundException(key);
- }
-
- public Entry<String, Item>[] query(String queryString) {
- logger.fine("query " + queryString);
-
- if (queryString.startsWith("dependencies=") || queryString.startsWith("alldependencies=")) {
-
- // Return the collection of dependencies of the specified contribution
- List<Entry<String, Item>> entries = new ArrayList<Entry<String,Item>>();
-
- // Extract the contribution URI
- int eq = queryString.indexOf('=');
- String key = queryString.substring(eq+1);
-
- // Read the metadata for all the contributions
- Workspace workspace = readContributions(readWorkspace());
-
- // Look for the specified contribution
- for (Contribution contribution: workspace.getContributions()) {
- if (key.equals(contribution.getURI())) {
-
- // Compute the contribution dependencies
- ContributionDependencyBuilder analyzer = new ContributionDependencyBuilderImpl(monitor);
- List<Contribution> dependencies = analyzer.buildContributionDependencies(contribution, workspace);
-
- // Returns entries for the dependencies
- // optionally skip the specified contribution
- boolean allDependencies = queryString.startsWith("alldependencies=");
- for (Contribution dependency: dependencies) {
- if (!allDependencies && dependency == contribution) {
- // Skip the specified contribution
- continue;
- }
- entries.add(entry(workspace, dependency));
- }
- break;
- }
- }
-
- return entries.toArray(new Entry[entries.size()]);
-
- } if (queryString.startsWith("suggestions=true")) {
-
- // Returns a list of contribution suggestions, scan the parent of the workspace
- // directory for potential contribution directories
-
- // For now, recognize project directories that contain .project files
- // Directories containing .classpath files are likely to be Java projects, we parse
- // the .classpath file to determine the Java project output location
- Workspace suggestionWorkspace = workspaceFactory.createWorkspace();
- List<Entry> entries = new ArrayList<Entry>();
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
- File rootLocation = new File(new File(rootDirectory).toURI().normalize());
- for (File project: rootLocation.getParentFile().listFiles()) {
- File dotProject = new File(project, ".project");
- if (!dotProject.exists()) {
- continue;
- }
-
- // We have a potential contribution
- String uri = project.getName();
- File location = project;
-
- // If this is a Java project, parse its .classpath file to determine it's output location
- File dotClasspath = new File(project, ".classpath");
- if (dotClasspath.exists()) {
- try {
- XMLStreamReader reader = inputFactory.createXMLStreamReader(new FileInputStream(dotClasspath));
- reader.nextTag();
- while (reader.hasNext()) {
- int event = reader.getEventType();
- if (event == START_ELEMENT) {
- if ("classpathentry".equals(reader.getName().getLocalPart())) {
- if ("output".equals(reader.getAttributeValue("", "kind"))) {
- location = new File(project, reader.getAttributeValue("", "path"));
- break;
- }
- }
- }
- if (reader.hasNext()) {
- reader.next();
- }
- }
- } catch (FileNotFoundException e) {
- } catch (XMLStreamException e) {
- }
-
- }
-
- // Create a contribution entry, skip the domain root directory and childrens of the
- // domain root directory
- String rootLocationPath = rootLocation.getPath();
- if (rootLocationPath.indexOf('\\') != -1 || rootLocationPath.indexOf(' ') != -1) {
- rootLocationPath = new File(rootLocationPath.replace('\\', '/')).toURI().toString();
- }
- String locationPath = location.getPath();
- if (locationPath.indexOf('\\') != -1 || locationPath.indexOf(' ') != -1) {
- locationPath = new File(locationPath.replace('\\', '/')).toURI().toString();
- }
- if (!locationPath.startsWith(rootLocationPath + "/") && !locationPath.equals(rootLocationPath)) {
- Contribution contribution = contributionFactory.createContribution();
- contribution.setURI(uri);
- contribution.setLocation(locationPath);
- entries.add(entry(suggestionWorkspace, contribution));
- }
- }
-
- return entries.toArray(new Entry[entries.size()]);
-
- } else {
- throw new UnsupportedOperationException();
- }
- }
-
- /**
- * Returns an entry representing a contribution
- * @param contribution
- * @return
- */
- private static Entry<String, Item> entry(Workspace workspace, Contribution contribution) {
- Entry<String, Item> entry = new Entry<String, Item>();
- entry.setKey(contribution.getURI());
- entry.setData(item(workspace, contribution));
- return entry;
- }
-
- /**
- * Returns an item representing a contribution.
- *
- * @param contribution
- * @return
- */
- private static Item item(Workspace workspace, Contribution contribution) {
- String contributionURI = contribution.getURI();
- Item item = new Item();
- item.setTitle(title(contributionURI));
- item.setLink(link(contributionURI));
- item.setAlternate(contribution.getLocation());
-
- // List the contribution dependencies in the item contents
- final List<String> problems = new ArrayList<String>();
- Monitor monitor = new Monitor() {
- public void problem(Problem problem) {
- problems.add(problem.getMessageId() + " " + problem.getProblemObject().toString());
- }
-
- public List<Problem> getProblems() {
- return null;
- }
- };
-
- StringBuffer sb = new StringBuffer();
- ContributionDependencyBuilderImpl analyzer = new ContributionDependencyBuilderImpl(monitor);
- List<Contribution> dependencies = analyzer.buildContributionDependencies(contribution, workspace);
- if (dependencies.size() > 1) {
- sb.append("Dependencies: <span id=\"dependencies\">");
- for (int i = 0, n = dependencies.size(); i < n ; i++) {
- if (i > 0) {
- sb.append(" ");
- }
- Contribution dependency = dependencies.get(i);
- if (dependency != contribution) {
- String dependencyURI = dependency.getURI();
- sb.append("<a href=\""+ link(dependencyURI) +"\">" + title(dependencyURI) + "</a>");
- }
- }
- sb.append("</span><br>");
- }
-
- // List the deployables
- List<Composite> deployables = contribution.getDeployables();
- if (!deployables.isEmpty()) {
- sb.append("Deployables: <span id=\"deployables\">");
- for (int i = 0, n = deployables.size(); i < n ; i++) {
- if (i > 0) {
- sb.append(" ");
- }
- Composite deployable = deployables.get(i);
- QName qname = deployable.getName();
- sb.append("<a href=\""+ compositeSourceLink(contributionURI, qname) +"\">" + compositeSimpleTitle(contributionURI, qname) + "</a>");
- }
- sb.append("</span><br>");
- }
-
- // List the dependency problems
- if (contribution.isUnresolved()) {
- problems.add("Contribution not found");
- }
- if (problems.size() > 0) {
- sb.append("<span id=\"problems\" style=\"color: red\">");
- for (int i = 0, n = problems.size(); i < n ; i++) {
- sb.append("Problem: "+ problems.get(i) + "<br>");
- }
- sb.append("</span>");
- }
-
- // Store in the item contents
- item.setContents(sb.toString());
-
- return item;
- }
-
- /**
- * Returns a link to a contribution.
- * @param contributionURI
- * @return
- */
- private static String link(String contributionURI) {
- return "/contribution/" + contributionURI;
- }
-
- /**
- * Returns a title for the given contribution
- *
- * @param contributionURI
- * @return
- */
- private static String title(String contributionURI) {
- return contributionURI;
- }
-
-
- /**
- * Read the workspace.
- *
- * @return
- */
- private Workspace readWorkspace() {
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- Workspace workspace;
- File file = new File(rootDirectory + "/" + workspaceFile);
- if (file.exists()) {
-
- // Get workspace from cache
- if (cache.workspace != null && file.lastModified() == cache.workspaceLastModified) {
- workspace = cache.workspace;
-
- } else {
-
- try {
- FileInputStream is = new FileInputStream(file);
- XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
- reader.nextTag();
- workspace = (Workspace)staxProcessor.read(reader);
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
-
- // Cache workspace
- cache.workspaceLastModified = file.lastModified();
- cache.workspace = workspace;
- }
-
- } else {
-
- // Create new workspace
- workspace = workspaceFactory.createWorkspace();
-
- // Cache workspace
- cache.workspaceLastModified = 0;
- cache.workspace = workspace;
- }
-
- // Make sure that the workspace contains the cloud contribution
- // The cloud contribution contains the composites describing the
- // SCA nodes declared in the cloud
- Contribution cloudContribution = null;
- for (Contribution contribution: workspace.getContributions()) {
- if (contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
- cloudContribution = contribution;
- }
- }
- if (cloudContribution == null) {
- Contribution contribution = contributionFactory.createContribution();
- contribution.setURI(DEPLOYMENT_CONTRIBUTION_URI);
- File cloudDirectory = new File(rootDirectory + "/" + deploymentContributionDirectory);
- contribution.setLocation(cloudDirectory.toURI().toString());
- workspace.getContributions().add(contribution);
- }
-
- return workspace;
- }
-
- /**
- * Write the workspace back to disk
- *
- * @param workspace
- */
- private void writeWorkspace(Workspace workspace) {
- try {
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- // First write to a byte stream
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos);
- staxProcessor.write(workspace, writer);
-
- // Parse again to pretty format the document
- Document document = documentBuilder.parse(new ByteArrayInputStream(bos.toByteArray()));
- OutputFormat format = new OutputFormat();
- format.setIndenting(true);
- format.setIndent(2);
-
- // Write to workspace.xml
- File file = new File(rootDirectory + "/" + workspaceFile);
- FileOutputStream os = new FileOutputStream(file);
- XMLSerializer serializer = new XMLSerializer(os, format);
- serializer.serialize(document);
- os.close();
-
- // Cache workspace
- cache.workspace = workspace;
- cache.workspaceLastModified = file.lastModified();
-
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
- }
-
- /**
- * Returns a workspace populated with the contribution info read from
- * the contributions.
- *
- * @param workspace
- * @return
- */
- private Workspace readContributions(Workspace workspace) {
-
- Workspace contributions = workspaceFactory.createWorkspace();
- try {
- for (Contribution c: workspace.getContributions()) {
- URI uri = URI.create(c.getURI());
- URL location = locationURL(c.getLocation());
-
- // Get contribution from cache
- ContributionCache contributionCache = cache.contributions.get(location);
- long lastModified = lastModified(location);
- if (contributionCache != null) {
- if (contributionCache.contributionLastModified == lastModified) {
- Contribution contribution = contributionCache.contribution;
- contribution.setUnresolved(false);
- contributions.getContributions().add(contribution);
- continue;
- }
-
- // Reset contribution cache
- cache.contributions.remove(location);
- }
-
- try {
- Contribution contribution = (Contribution)contributionProcessor.read(null, uri, location);
- contribution.setUnresolved(false);
- contributions.getContributions().add(contribution);
-
- // Cache contribution
- contributionCache = new ContributionCache();
- contributionCache.contribution = contribution;
- contributionCache.contributionLastModified = lastModified;
- cache.contributions.put(location, contributionCache);
-
-
- // Make sure that the cloud contribution does not contain
- // default imports/exports as we want to isolate it from application
- // provided contributions
- if (contribution.getURI().equals(DEPLOYMENT_CONTRIBUTION_URI)) {
- for (Iterator<Import> i = contribution.getImports().iterator(); i.hasNext(); ) {
- Import import_ = i.next();
- if (import_ instanceof DefaultImport) {
- i.remove();
- }
- }
- for (Iterator<Export> i = contribution.getExports().iterator(); i.hasNext(); ) {
- Export export = i.next();
- if (export instanceof DefaultExport) {
- i.remove();
- }
- }
- }
-
- } catch (ContributionReadException e) {
- Contribution contribution = contributionFactory.createContribution();
- contribution.setURI(c.getURI());
- contribution.setLocation(c.getLocation());
- contribution.setUnresolved(true);
- contributions.getContributions().add(contribution);
- }
- }
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
- return contributions;
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionServiceImpl.java
deleted file mode 100644
index a4d7680cb0..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionServiceImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import java.io.IOException;
-import java.net.URLDecoder;
-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 org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a contribution collection service component.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={Servlet.class})
-public class ContributionServiceImpl extends HttpServlet implements Servlet {
- private static final long serialVersionUID = -4759297945439322773L;
-
- private static final Logger logger = Logger.getLogger(ContributionServiceImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @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");
-
- // The key is the contribution URI
- String key = path.startsWith("/")? path.substring(1) : path;
- logger.fine("get " + key);
-
- // Get the item describing the composite
- Item item;
- try {
- item = contributionCollection.get(key);
- } catch (NotFoundException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- // Redirect to the actual contribution location
- response.sendRedirect("/files/" + item.getAlternate());
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java
deleted file mode 100644
index e66a8b6684..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeAlternateLink;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeKey;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeSourceLink;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeTitle;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.contributionURI;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.lastModified;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.locationURL;
-
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-
-import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.ComponentService;
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.ItemCollection;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.apache.tuscany.sca.domain.manager.impl.DeployableCompositeCollectionImpl.Cache.ContributionCache;
-import org.apache.tuscany.sca.implementation.node.NodeImplementation;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
-import org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder;
-import org.apache.tuscany.sca.workspace.builder.impl.ContributionDependencyBuilderImpl;
-import org.apache.tuscany.sca.workspace.processor.impl.ContributionContentProcessor;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a deployable composite collection service.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class DeployableCompositeCollectionImpl implements ItemCollection, LocalItemCollection {
-
- private static final Logger logger = Logger.getLogger(DeployableCompositeCollectionImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private ModelFactoryExtensionPoint modelFactories;
- private ModelResolverExtensionPoint modelResolvers;
- private URLArtifactProcessor<Contribution> contributionProcessor;
- private XMLOutputFactory outputFactory;
- private ContributionDependencyBuilder contributionDependencyBuilder;
- private Monitor monitor;
-
- /**
- * Cache contribution models.
- */
- static class Cache {
- static class ContributionCache {
- private Contribution contribution;
- private long contributionLastModified;
- }
- private Map<URL, ContributionCache> contributions = new HashMap<URL, ContributionCache>();
- }
-
- private Cache cache = new Cache();
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
-
- // Create a monitor
- UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
-
- // Get model factories
- modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
-
- // Get and initialize artifact processors
- StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- StAXArtifactProcessor<Object> staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory, monitor);
-
- URLArtifactProcessorExtensionPoint urlProcessors = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- URLArtifactProcessor<Object> urlProcessor = new ExtensibleURLArtifactProcessor(urlProcessors, monitor);
-
- // Create contribution processor
- modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
- contributionProcessor = new ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor, staxProcessor, monitor);
-
- // Create contribution and composite builders
- contributionDependencyBuilder = new ContributionDependencyBuilderImpl(monitor);
- }
-
- public Entry<String, Item>[] getAll() {
- logger.fine("getAll");
-
- // Return all the deployable composites in the contributions
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
-
- // Get the list of contributions in the workspace
- Entry<String, Item>[] contributionEntries = contributionCollection.getAll();
-
- // Read contribution metadata
- for (Entry<String, Item> contributionEntry: contributionEntries) {
- Item contributionItem = contributionEntry.getData();
- Contribution contribution;
- try {
- contribution = contribution(contributionEntry.getKey(), contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- continue;
- }
-
- // Create entries for the deployable composites
- for (Composite deployable: contribution.getDeployables()) {
- entries.add(entry(contribution, deployable));
- }
-
- }
- return entries.toArray(new Entry[entries.size()]);
- }
-
- public Item get(String key) throws NotFoundException {
- logger.fine("get " + key);
-
- // Get the specified contribution info
- String contributionURI = contributionURI(key);
- Item contributionItem = contributionCollection.get(contributionURI);
-
- // Read the contribution
- Contribution contribution;
- try {
- contribution = contribution(contributionURI, contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- throw new NotFoundException(key);
- }
-
- // Find the specified deployable composite
- QName qname = compositeQName(key);
- for (Composite deployable: contribution.getDeployables()) {
- if (qname.equals(deployable.getName())) {
- if (deployable.isUnresolved()) {
- throw new NotFoundException(key);
- }
-
- // Return an item describing the deployable composite
- return item(contribution, deployable);
- }
- }
-
- throw new NotFoundException(key);
- }
-
- public String post(String key, Item item) {
- throw new UnsupportedOperationException();
- }
-
- public void put(String key, Item item) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public void delete(String key) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public Entry<String, Item>[] query(String queryString) {
- logger.fine("query " + queryString);
-
- if (queryString.startsWith("contribution=")) {
-
- // Return all the deployable composites in the specified
- // contribution
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
-
- // Get the specified contribution info
- String contributionURI = queryString.substring(queryString.indexOf('=') + 1);
- Item contributionItem;
- try {
- contributionItem = contributionCollection.get(contributionURI);
- } catch (NotFoundException e) {
- return entries.toArray(new Entry[entries.size()]);
- }
-
- // Read the contribution
- Contribution contribution;
- try {
- contribution = contribution(contributionURI, contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- return entries.toArray(new Entry[entries.size()]);
- }
-
- // Create entries for the deployable composites
- for (Composite deployable: contribution.getDeployables()) {
- entries.add(entry(contribution, deployable));
- }
-
- return entries.toArray(new Entry[entries.size()]);
-
- } else {
- throw new UnsupportedOperationException();
- }
- }
-
- /**
- * Returns the contribution with the given URI.
- *
- * @param contributionURI
- * @param contributionLocation
- * @return
- * @throws NotFoundException
- */
- private Contribution contribution(String contributionURI, String contributionLocation) throws ContributionReadException {
- try {
- URI uri = URI.create(contributionURI);
- URL location = locationURL(contributionLocation);
-
- // Get contribution from cache
- ContributionCache contributionCache = cache.contributions.get(location);
- long lastModified = lastModified(location);
- if (contributionCache != null) {
- if (contributionCache.contributionLastModified == lastModified) {
- return contributionCache.contribution;
- }
-
- // Reset contribution cache
- cache.contributions.remove(location);
- }
-
- Contribution contribution = (Contribution)contributionProcessor.read(null, uri, location);
-
- contributionProcessor.resolve(contribution, new DefaultModelResolver());
-
- // Cache contribution
- contributionCache = new ContributionCache();
- contributionCache.contribution = contribution;
- contributionCache.contributionLastModified = lastModified;
- cache.contributions.put(location, contributionCache);
-
- return contribution;
-
- } catch (ContributionReadException e) {
- throw e;
- } catch (MalformedURLException e) {
- throw new ContributionReadException(e);
- } catch (ContributionResolveException e) {
- throw new ContributionReadException(e);
- } catch (Throwable e) {
- throw new ContributionReadException(e);
- }
- }
-
- /**
- * Returns the entry contents describing a composite.
- *
- * @param composite
- * @return
- */
- private static String content(Composite composite) {
- StringBuffer sb = new StringBuffer();
- List<Component> components = composite.getComponents();
- for (int i = 0, n = components.size(); i < n; i++) {
- Component component = components.get(i);
- if (component.getImplementation() instanceof NodeImplementation) {
- List<ComponentService> services = component.getServices();
- if (!services.isEmpty()) {
- List<Binding> bindings = services.get(0).getBindings();
- if (!bindings.isEmpty()) {
-
- // List node URIs
- sb.append("Node URI: <span id=\"nodeURI\">");
- sb.append(component.getServices().get(0).getBindings().get(0).getURI());
- break;
- }
- }
- } else {
-
- // List component names
- if (sb.length() == 0) {
- sb.append("Components: <span id=\"components\">");
- } else {
- sb.append(" ");
- }
- sb.append(component.getName());
- }
- }
- if (sb.length() != 0) {
- sb.append("</span>");
- }
- return sb.toString();
- }
-
- /**
- * Returns the link to the resource related to a composite.
- *
- * @param composite
- * @return
- */
- private static String relatedLink(Composite composite) {
- for (Component component: composite.getComponents()) {
- if (component.getImplementation() instanceof NodeImplementation) {
- NodeImplementation nodeImplementation = (NodeImplementation)component.getImplementation();
- Composite deployable = nodeImplementation.getComposite();
- String contributionURI = deployable.getURI();
- QName qname = deployable.getName();
- String key = compositeKey(contributionURI, qname);
- return "/composite-source/" + key;
- }
- }
- return null;
- }
-
- /**
- * Returns an entry describing the given deployable.
- *
- * @param contribution
- * @param deployable
- * @return
- */
- private static Entry<String, Item> entry(Contribution contribution, Composite deployable) {
- Entry<String, Item> entry = new Entry<String, Item>();
- entry.setKey(DomainManagerUtil.compositeKey(contribution.getURI(), deployable.getName()));
- entry.setData(item(contribution, deployable));
- return entry;
- }
-
- /**
- * Returns an item describing the given deployable.
- *
- * @param contribution
- * @param deployable
- * @return
- */
- private static Item item(Contribution contribution, Composite deployable) {
- String contributionURI = contribution.getURI();
- String contributionLocation = contribution.getLocation();
- QName qname = deployable.getName();
- String deployableURI = deployable.getURI();
- Item item = new Item();
- item.setTitle(compositeTitle(contributionURI, qname));
- item.setContents(content(deployable));
- item.setLink(compositeSourceLink(contributionURI, qname));
- item.setAlternate(compositeAlternateLink(contributionLocation, deployableURI));
- item.setRelated(relatedLink(deployable));
- return item;
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeServiceImpl.java
deleted file mode 100644
index 14ab9579f4..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeServiceImpl.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLDecoder;
-import java.util.logging.Logger;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a service that returns the source of a deployable composite.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(Servlet.class)
-public class DeployableCompositeServiceImpl extends HttpServlet implements Servlet {
- private static final long serialVersionUID = -3477992129462720902L;
-
- private static final Logger logger = Logger.getLogger(DeployableCompositeServiceImpl.class.getName());
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- @Reference
- public LocalItemCollection deployableCollection;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
- }
-
- @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 source file
-
- // Get the request path
- String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8");
- String key = path.startsWith("/")? path.substring(1) : path;
- logger.fine("get " + key);
-
- // Get the item describing the composite
- Item item;
- try {
- item = deployableCollection.get(key);
- } catch (NotFoundException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- // Redirect if there is no composite file
- String uri = item.getAlternate();
- if (uri == null) {
- response.sendRedirect("/composite-generated/" + key);
- return;
- }
-
- // Read the composite file and write to response
- InputStream is;
- try {
- URLConnection connection = new URL(uri).openConnection();
- connection.setUseCaches(false);
- connection.connect();
- is = connection.getInputStream();
- } catch (FileNotFoundException ex) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-
- response.setContentType("text/xml");
- ServletOutputStream os = response.getOutputStream();
- byte[] buffer = new byte[4096];
- for (;;) {
- int n = is.read(buffer);
- if (n < 0) {
- break;
- }
- os.write(buffer, 0, n);
- }
- is.close();
- os.flush();
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
deleted file mode 100644
index e95a0cc585..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.DEPLOYMENT_CONTRIBUTION_URI;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeKey;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeSourceLink;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeTitle;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.contributionURI;
-
-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.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-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.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.ItemCollection;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.apache.xml.serialize.OutputFormat;
-import org.apache.xml.serialize.XMLSerializer;
-import org.osoa.sca.ServiceRuntimeException;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Property;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-import org.w3c.dom.Document;
-
-/**
- * Implementation of a composite collection service.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class,LocalItemCollection.class})
-public class DeployedCompositeCollectionImpl implements ItemCollection, LocalItemCollection {
- private static final Logger logger = Logger.getLogger(DeployedCompositeCollectionImpl.class.getName());
-
- @Property
- public String compositeFile;
-
- @Property
- public String deploymentContributionDirectory;
-
- @Reference
- public LocalItemCollection deployableCollection;
-
- @Reference(required=false)
- public LocalItemCollection processCollection;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private ModelFactoryExtensionPoint modelFactories;
- private AssemblyFactory assemblyFactory;
- private StAXArtifactProcessor<Composite> compositeProcessor;
- private XMLOutputFactory outputFactory;
- private DocumentBuilder documentBuilder;
-
- /**
- * Cache domain composite model.
- */
- static class Cache {
- private Composite compositeCollection;
- private long compositeCollectionLastModified;
- }
-
- private Cache cache = new Cache();
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- // Create factories
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
- modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
- outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
-
- // Create composite processor
- StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- compositeProcessor = staxProcessors.getProcessor(Composite.class);
-
- // Create a document builder (used to pretty print XML)
- documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- }
-
- public Entry<String, Item>[] getAll() {
- logger.fine("getAll");
-
- // Return all the composites in the domain composite
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
- Composite compositeCollection = readCompositeCollection();
- for (Composite composite: compositeCollection.getIncludes()) {
- String contributionURI = composite.getURI();
- QName qname = composite.getName();
- String key = compositeKey(contributionURI, qname);
- Item item;
- try {
- item = deployableCollection.get(key);
- } catch (NotFoundException e) {
- item = new Item();
- 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);
- entry.setData(item);
- entries.add(entry);
- }
- return entries.toArray(new Entry[entries.size()]);
- }
-
- public Item get(String key) throws NotFoundException {
- logger.fine("get " + key);
-
- String contributionURI = contributionURI(key);
- QName qname = compositeQName(key);
-
- // Look for the specified composite in the domain composite
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
- Composite compositeCollection = readCompositeCollection();
- for (Composite composite: compositeCollection.getIncludes()) {
- if (contributionURI.equals(composite.getURI()) && qname.equals(composite.getName())) {
- return deployableCollection.get(key);
- }
- }
- throw new NotFoundException(key);
- }
-
- public String post(String key, Item item) {
- logger.fine("post " + key);
-
- String contributionURI = contributionURI(key);
- QName qname = compositeQName(key);
-
- // Adds a new composite to the domain composite
- Composite compositeCollection = readCompositeCollection();
- Composite composite = assemblyFactory.createComposite();
- composite.setName(qname);
- composite.setURI(contributionURI);
- composite.setUnresolved(true);
- compositeCollection.getIncludes().add(composite);
-
- // Optionally, write the composite contents in a new composite file
- // under the deployment composites directory, if that directory is
- // configured on this component
- if (deploymentContributionDirectory != null && item.getContents() != null) {
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- File directory = new File(rootDirectory + "/" + 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");
- w.write(item.getContents());
- w.close();
- } catch (IOException e) {
- throw new ServiceRuntimeException(e);
- }
- }
-
- // Write the composite collection
- writeCompositeCollection(compositeCollection);
-
- return key;
- }
-
- public void put(String key, Item item) throws NotFoundException {
- logger.fine("put " + key);
-
- String contributionURI = contributionURI(key);
- QName qname = compositeQName(key);
-
- // Update a composite already in the domain composite
- Composite compositeCollection = readCompositeCollection();
- Composite newComposite = assemblyFactory.createComposite();
- newComposite.setName(qname);
- newComposite.setURI(contributionURI);
- newComposite.setUnresolved(true);
- List<Composite> composites = compositeCollection.getIncludes();
- 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.set(i, newComposite);
-
- // Write the domain composite
- writeCompositeCollection(compositeCollection);
-
- return;
- }
- }
- throw new NotFoundException(key);
- }
-
- public void delete(String key) throws NotFoundException {
- logger.fine("delete " + key);
-
- String contributionURI = contributionURI(key);
- QName qname = compositeQName(key);
-
- // Delete/stop the corresponding process, if any
- try {
- processCollection.delete(qname.getLocalPart());
- } catch (Exception e) {}
-
- // 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);
- deleted = composite;
-
- // Write the domain composite
- writeCompositeCollection(compositeCollection);
- break;
- }
- }
-
- // Delete the file too if it is in the deployment contribution directory
- if (deploymentContributionDirectory != null && contributionURI.equals(DEPLOYMENT_CONTRIBUTION_URI)) {
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- File file = new File(rootDirectory + "/" + deploymentContributionDirectory, qname.getLocalPart() + ".composite");
- if (file.exists()) {
- file.delete();
- }
- }
-
- if (deleted == null) {
- throw new NotFoundException(key);
- }
- }
-
- public Entry<String, Item>[] query(String queryString) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Reads the domain composite.
- *
- * @return the domain composite
- * @throws ServiceRuntimeException
- */
- private Composite readCompositeCollection() throws ServiceRuntimeException {
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- Composite compositeCollection;
- File file = new File(rootDirectory + "/" + compositeFile);
- if (file.exists()) {
-
- // Get composite collection from cache
- if (cache.compositeCollection != null && file.lastModified() == cache.compositeCollectionLastModified) {
- compositeCollection = cache.compositeCollection;
-
- } else {
-
- XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- try {
- FileInputStream is = new FileInputStream(file);
- XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
- compositeCollection = compositeProcessor.read(reader);
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
-
- // Cache composite collection
- cache.compositeCollectionLastModified = file.lastModified();
- cache.compositeCollection = compositeCollection;
- }
-
- } else {
- compositeCollection = assemblyFactory.createComposite();
- String name;
- int d = compositeFile.lastIndexOf('.');
- if (d != -1) {
- name = compositeFile.substring(0, d);
- } else {
- name = compositeFile;
- }
- compositeCollection.setName(new QName(Constants.SCA10_TUSCANY_NS, name));
-
- // Cache composite collection
- cache.compositeCollectionLastModified = 0;
- cache.compositeCollection = compositeCollection;
- }
- return compositeCollection;
- }
-
- /**
- * Write the domain composite back to disk.
- *
- * @param compositeCollection
- */
- private void writeCompositeCollection(Composite compositeCollection) {
- try {
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- // First write to a byte stream
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos);
- compositeProcessor.write(compositeCollection, writer);
-
- // Parse again to pretty format the document
- Document document = documentBuilder.parse(new ByteArrayInputStream(bos.toByteArray()));
- OutputFormat format = new OutputFormat();
- format.setIndenting(true);
- format.setIndent(2);
-
- // Write to domain.composite
- File file = new File(rootDirectory + "/" + compositeFile);
- FileOutputStream os = new FileOutputStream(file);
- XMLSerializer serializer = new XMLSerializer(os, format);
- serializer.serialize(document);
-
- // Cache composite collection
- cache.compositeCollection = compositeCollection;
- cache.compositeCollectionLastModified = file.lastModified();
-
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfiguration.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfiguration.java
deleted file mode 100644
index 1831728f07..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-
-/**
- * Domain manager configuration service interface.
- *
- * @version $Rev$ $Date$
- */
-public interface DomainManagerConfiguration {
-
- /**
- * Sets the domain manager root directory.
- *
- * @param rootDirectory
- */
- void setRootDirectory(String rootDirectory);
-
- /**
- * Returns the domain manager root directory.
- *
- * @return the domain manager root directory
- */
- String getRootDirectory();
-
- /**
- * Returns the extension point registry used in the
- * domain manager.
- *
- * @return
- */
- ExtensionPointRegistry getExtensionPoints();
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfigurationImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfigurationImpl.java
deleted file mode 100644
index a5ce6e12d6..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerConfigurationImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ModuleActivator;
-import org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint;
-import org.osoa.sca.annotations.Destroy;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a domain manager configuration component.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(DomainManagerConfiguration.class)
-public class DomainManagerConfigurationImpl implements DomainManagerConfiguration {
-
- private String rootDirectory = ".";
- private ExtensionPointRegistry extensionPoints;
-
- @Init
- public void initialize() {
-
- // Create extension point registry
- extensionPoints = new DefaultExtensionPointRegistry();
-
- // Initialize module activators
- ModuleActivatorExtensionPoint moduleActivators = extensionPoints.getExtensionPoint(ModuleActivatorExtensionPoint.class);
- for (ModuleActivator activator: moduleActivators.getModuleActivators()) {
- try {
- activator.start(extensionPoints);
- } catch (Exception e) {
- //FIXME fix the module activators that have cross module dependencies
- // and currently fail when the whole runtime is not present
- }
- }
- }
-
- @Destroy
- public void destroy() {
- ModuleActivatorExtensionPoint moduleActivators = extensionPoints.getExtensionPoint(ModuleActivatorExtensionPoint.class);
- for (ModuleActivator activator: moduleActivators.getModuleActivators()) {
- try {
- activator.stop(extensionPoints);
- } catch (Exception e) {
- //FIXME fix the module activators that have cross module dependencies
- // and currently fail when the whole runtime is not present
- }
- }
- }
-
- public String getRootDirectory() {
- return rootDirectory;
- }
-
- public void setRootDirectory(String rootDirectory) {
- this.rootDirectory = rootDirectory;
- }
-
- public ExtensionPointRegistry getExtensionPoints() {
- return extensionPoints;
- }
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java
deleted file mode 100644
index fee1efc37a..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.core.assembly.CompositeActivator;
-import org.apache.tuscany.sca.core.context.ServiceReferenceImpl;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.osoa.sca.ServiceReference;
-import org.osoa.sca.ServiceRuntimeException;
-
-/**
- * Common functions and constants used by the admin components.
- *
- * @version $Rev$ $Date$
- */
-public final class DomainManagerUtil {
-
- static final String DEPLOYMENT_CONTRIBUTION_URI = "http://tuscany.apache.org/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(DomainManagerUtil.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 {
- String scheme = null;
- URI uri = null;
-
- IllegalArgumentException uriException = null;
- try {
- uri = URI.create(location);
- scheme = uri.getScheme();
- }catch (java.lang.IllegalArgumentException e) {
- uriException = e;
- }
-
- 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 if(uri == null){
- throw uriException;
- } else {
- return uri.toURL();
- }
- }
-
- /**
- * Returns a link to a deployable composite.
- *
- * If the containing contribution is a local directory, return the URI of the local composite file
- * inside the contribution.
- *
- * If the containing contribution is a local or remote file, return a URI of the form:
- * jar: contribution URI !/ composite URI.
- *
- * @param contributionLocation
- * @param deployableURI
- * @return
- */
- static String compositeAlternateLink(String contributionLocation, String deployableURI) {
- if (deployableURI == null) {
- return null;
- }
- URI u = URI.create(contributionLocation);
- String uri;
- if ("file".equals(u.getScheme())) {
- String path = u.toString().substring(5);
- File file = new File(path);
- if (file.isDirectory()) {
- if (contributionLocation.endsWith("/")) {
- uri = contributionLocation + deployableURI;
- } else {
- uri = contributionLocation + "/" + deployableURI;
- }
- } else {
- uri = contributionLocation + "!/" + deployableURI;
- }
- } else {
- uri = contributionLocation + "!/" + deployableURI;
- }
- int e = uri.indexOf("!/");
- if (e != -1) {
- int s = uri.lastIndexOf('/', e - 2) +1;
- if (uri.substring(s, e).contains(".")) {
- uri = "jar:" + uri;
- } else {
- uri = uri.substring(0, e) + uri.substring(e + 1);
- }
- }
- return uri;
- }
-
- /**
- * Extract a node URI from an ATOM entry content.
- *
- * @param content
- * @return
- */
- static String nodeURI(String content) {
- if (content != null) {
- int bs = content.indexOf("<span id=\"nodeURI\">");
- if (bs != -1) {
- content = content.substring(bs + 19);
- int es = content.indexOf("</span>");
- if (es != -1) {
- return content.substring(0, es);
- }
- }
- }
- return null;
- }
-
- /**
- * Create a new service reference dynamically.
- *
- * @param <B>
- * @param businessInterface
- * @param binding
- * @param assemblyFactory
- * @param compositeActivator
- * @return
- */
- static <B> ServiceReference<B> dynamicReference(Class<B> businessInterface, Binding binding, AssemblyFactory assemblyFactory, CompositeActivator compositeActivator) {
- try {
-
- Composite composite = assemblyFactory.createComposite();
- composite.setName(new QName("http://tempuri.org", "default"));
- RuntimeComponent component = (RuntimeComponent)assemblyFactory.createComponent();
- component.setName("default");
- component.setURI("default");
- compositeActivator.configureComponentContext(component);
- composite.getComponents().add(component);
- RuntimeComponentReference reference = (RuntimeComponentReference)assemblyFactory.createComponentReference();
- reference.setName("default");
- JavaInterfaceFactory javaInterfaceFactory = compositeActivator.getJavaInterfaceFactory();
- InterfaceContract interfaceContract = javaInterfaceFactory.createJavaInterfaceContract();
- interfaceContract.setInterface(javaInterfaceFactory.createJavaInterface(businessInterface));
- reference.setInterfaceContract(interfaceContract);
- component.getReferences().add(reference);
- reference.setComponent(component);
- reference.getBindings().add(binding);
-
- ProxyFactory proxyFactory = compositeActivator.getProxyFactory();
- return new ServiceReferenceImpl<B>(businessInterface, component, reference, binding, proxyFactory, compositeActivator);
-
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
- }
-
- /**
- * Returns the last modified time of the content at the given URL.
- *
- * @param url
- * @return
- * @throws IOException
- */
- static long lastModified(URL url) throws IOException {
-
- if (url.getProtocol() == null || "file".equals(url.getProtocol())) {
- return lastModified(new File(url.getPath()));
- } else {
- URLConnection connection = url.openConnection();
- long lastModified = connection.getLastModified();
- return lastModified;
- }
- }
-
- /**
- * Returns the last modified time of the given file or directory.
- *
- * @param file
- * @return
- */
- static long lastModified(File file) {
- if (file.isDirectory()) {
- long lastModified = file.lastModified();
-
- for (File child: file.listFiles()) {
- long m = lastModified(child);
- if (m > lastModified) {
- lastModified = m;
- }
- }
- return lastModified;
-
- } else {
- return file.lastModified();
- }
- }
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileCollectionImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileCollectionImpl.java
deleted file mode 100644
index a53250515a..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileCollectionImpl.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Logger;
-
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.ItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Property;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a file collection service component.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(ItemCollection.class)
-public class FileCollectionImpl implements ItemCollection {
-
- private static final Logger logger = Logger.getLogger(FileCollectionImpl.class.getName());
-
- @Property
- public String directoryName;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws IOException {
- }
-
- public Entry<String, Item>[] getAll() {
- logger.fine("getAll");
-
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
-
- // Return all the files
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
- File directory = new File(rootDirectory + "/" + directoryName);
- if (directory.exists()) {
- for (File file: directory.listFiles()) {
- if (file.getName().startsWith(".")) {
- continue;
- }
- entries.add(entry(file.getName()));
- }
- }
- return entries.toArray(new Entry[entries.size()]);
- }
-
- public Item get(String key) throws NotFoundException {
- logger.fine("get " + key);
- return item(key);
- }
-
- public String post(String key, Item item) {
- throw new UnsupportedOperationException();
- }
-
- public void put(String key, Item item) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public void delete(String key) throws NotFoundException {
- logger.fine("delete " + key);
-
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
- File directory = new File(rootDirectory + "/" + directoryName);
- File file = new File(directory, key);
- if (file.exists()) {
- file.delete();
- } else {
- throw new NotFoundException(key);
- }
- }
-
- public Entry<String, Item>[] query(String queryString) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Returns an entry representing a file.
- *
- * @param fileName
- * @return
- */
- private static Entry<String, Item> entry(String fileName) {
- Entry<String, Item> entry = new Entry<String, Item>();
- entry.setKey(fileName);
- entry.setData(item(fileName));
- return entry;
- }
-
- /**
- * Returns an item representing a file.
- *
- * @param fileName
- * @return
- */
- private static Item item(String fileName) {
- Item item = new Item();
- item.setTitle(fileName);
- item.setLink("/files/" + fileName);
- return item;
- }
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.java
deleted file mode 100644
index 2adb623876..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URLConnection;
-import java.net.URLDecoder;
-import java.util.List;
-import java.util.logging.Logger;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Property;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a servlet component supporting file upload/download.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(Servlet.class)
-public class FileServiceImpl extends HttpServlet {
- private static final long serialVersionUID = -4560385595481971616L;
-
- private static final Logger logger = Logger.getLogger(FileServiceImpl.class.getName());
-
- @Property
- public String directoryName;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private ServletFileUpload upload;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws IOException {
- upload = new ServletFileUpload(new DiskFileItemFactory());
- }
-
- @Override
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
-
- // Upload files
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
- try {
- for (FileItem item: (List<FileItem>)upload.parseRequest(request)) {
- if (!item.isFormField()) {
- File directory = new File(rootDirectory + "/" + directoryName);
- if (!directory.exists()) {
- directory.mkdirs();
- }
- logger.fine("post " + item.getName());
- item.write(new File(directory, item.getName()));
- }
- }
-
- // Redirect to the admin page
- response.sendRedirect("/ui/files");
- }
- catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- // Download a file
- String requestURI = URLDecoder.decode(request.getRequestURI(), "UTF-8");
- String path = requestURI.substring(request.getServletPath().length());
- if (path.startsWith("/")) {
- path = path.substring(1);
- }
- logger.fine("get " + path);
-
- try {
-
- // Analyze the given path
- URI uri = URI.create(path);
- String scheme = uri.getScheme();
- if (scheme == null) {
-
- // If no scheme is specified then the path identifies file
- // inside our directory
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
- uri = new File(rootDirectory + "/" + directoryName, path).toURI();
-
- } else if (!scheme.equals("file")) {
-
- // If the scheme does not identify a local file, just redirect to the server
- // hosting the file
- response.sendRedirect(path);
- }
-
- // Read the file and write to response
- URLConnection connection = uri.toURL().openConnection();
- connection.setUseCaches(false);
- connection.connect();
- InputStream is = connection.getInputStream();
- ServletOutputStream os = response.getOutputStream();
- byte[] buffer = new byte[4096];
- for (;;) {
- int n = is.read(buffer);
- if (n < 0) {
- break;
- }
- os.write(buffer, 0, n);
- }
- is.close();
- os.flush();
-
- } catch (FileNotFoundException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- }
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeConfigurationServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeConfigurationServiceImpl.java
deleted file mode 100644
index 06d28b0502..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeConfigurationServiceImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-
-import java.io.IOException;
-import java.net.URLDecoder;
-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.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a service that returns a node configuration.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(Servlet.class)
-public class NodeConfigurationServiceImpl extends HttpServlet implements Servlet {
- private static final long serialVersionUID = 6913769467386954463L;
-
- private static final Logger logger = Logger.getLogger(NodeConfigurationServiceImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public LocalItemCollection cloudCollection;
-
- @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;
- logger.fine("get " + key);
-
- // The key contains a node name, redirect
- // to the corresponding composite config
-
- // 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 config
- String compositeConfiguration = "/composite-config/?composite=" + related.substring(i);
- response.sendRedirect(compositeConfiguration);
- return;
- }
- }
- }
-
- // Node not found
- response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
- return;
- }
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java
deleted file mode 100644
index d68cfa3786..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.nodeURI;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.binding.atom.AtomBindingFactory;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.assembly.CompositeActivator;
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.ItemCollection;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-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;
-
-/**
- * Implementation of a node process collection service.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class NodeProcessCollectionFacadeImpl implements ItemCollection, LocalItemCollection {
-
- private static final Logger logger = Logger.getLogger(NodeProcessCollectionFacadeImpl.class.getName());
-
- @Reference
- public LocalItemCollection cloudCollection;
-
- @Reference
- public ItemCollection processCollection;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private AssemblyFactory assemblyFactory;
- private AtomBindingFactory atomBindingFactory;
- private CompositeActivator compositeActivator;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() {
-
- // Get its composite activator
- //FIXME
- //compositeActivator = runtime.getCompositeActivator();
-
- // Get the model factories
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
- ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
- atomBindingFactory = modelFactories.getFactory(AtomBindingFactory.class);
- }
-
- public Entry<String, Item>[] getAll() {
- logger.fine("getAll");
-
- // Get the collection of nodes
- Entry<String, Item>[] nodeEntries = cloudCollection.getAll();
-
- // Dispatch to the hosts hosting these nodes
- List<Entry<String, Item>> entries = new ArrayList<Entry<String,Item>>();
- for (String host: hosts(nodeEntries)) {
- ItemCollection processCollection = processCollection(host);
- for (Entry<String, Item> remoteEntry: processCollection.getAll()) {
- entries.add(remoteEntry);
- }
- break;
- }
-
- return entries.toArray(new Entry[entries.size()]);
- }
-
- public Item get(String key) throws NotFoundException {
- logger.fine("get " + key);
-
- // Get the host hosting the given node
- String host = host(key);
-
- // Dispatch the request to that host
- ItemCollection processCollection = processCollection(host);
- return processCollection.get(key);
- }
-
- public String post(String key, Item item) {
- logger.fine("post " + key);
-
- // Get the host hosting the given node
- String host;
- try {
- host = host(key);
- } catch (NotFoundException e) {
- throw new ServiceRuntimeException(e);
- }
-
- // Dispatch the request to that host
- ItemCollection processCollection = processCollection(host);
- return processCollection.post(key, item);
- }
-
- public void put(String key, Item item) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public void delete(String key) throws NotFoundException {
- logger.fine("delete " + key);
-
- // Get the host hosting the given node
- String host = host(key);
-
- // Dispatch the request to that host
- ItemCollection processCollection = processCollection(host);
- processCollection.delete(key);
- }
-
- public Entry<String, Item>[] query(String queryString) {
- logger.fine("query " + queryString);
-
- if (queryString.startsWith("node=")) {
- String key = queryString.substring(queryString.indexOf('=') + 1);
-
- // Get the host hosting the given node
- String host;
- try {
- host = host(key);
- } catch (NotFoundException e) {
- return new Entry[0];
- }
-
- // Dispatch the request to that host
- ItemCollection processCollection = processCollection(host);
- return processCollection.query(queryString);
-
- } else {
- throw new UnsupportedOperationException();
- }
- }
-
- private String host(String nodeName) throws NotFoundException {
-
- // Get the entry representing the given node
- Entry<String, Item> nodeEntry = nodeEntry(cloudCollection.getAll(), nodeName);
- if (nodeEntry == null) {
- throw new NotFoundException(nodeName);
- }
-
- // Get the host hosting it
- return host(nodeEntry.getData());
- }
-
- /**
- * Returns the entry representing the given node.
- *
- * @param entries
- * @param name
- * @return
- */
- private static Entry<String, Item> nodeEntry(Entry<String, Item>[] entries, String name) {
- for (Entry<String, Item> entry: entries) {
- QName qname = compositeQName(entry.getKey());
- if (qname.getLocalPart().equals(name)) {
- return entry;
- }
- }
- return null;
- }
-
- /**
- * Returns the lists of hosts hosting the nodes in the given entries.
- *
- * @param entries
- * @return
- */
- private static List<String> hosts(Entry<String, Item>[] entries) {
- List<String> hosts = new ArrayList<String>();
- for (Entry<String, Item> entry: entries) {
- String host = host(entry.getData());
- if (!hosts.contains(host)) {
- hosts.add(host);
- }
- }
- return hosts;
- }
-
- /**
- * Returns the host of the node represented by the given item.
- *
- * @param item
- * @return
- */
- private static String host(Item item) {
- String uri = nodeURI(item.getContents());
- if (uri != null) {
- return URI.create(uri).getHost();
- } else {
- return null;
- }
- }
-
- /**
- * Returns a proxy to the process collection service on the specified
- * host.
- *
- * @param host
- * @return
- */
- private ItemCollection processCollection(String host) {
- return processCollection;
-
-//FIXME
-// AtomBinding binding = atomBindingFactory.createAtomBinding();
-// binding.setURI("http://" + host + ":9990/node/processes");
-// ServiceReference<ItemCollection> reference = dynamicReference(ItemCollection.class, binding, assemblyFactory, compositeActivator);
-// return reference.getService();
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/QuickStartServiceImpl.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/QuickStartServiceImpl.java
deleted file mode 100644
index 23c506446f..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/QuickStartServiceImpl.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * 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.domain.manager.impl;
-
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeKey;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.compositeQName;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.contributionURI;
-import static org.apache.tuscany.sca.domain.manager.impl.DomainManagerUtil.nodeURI;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URLDecoder;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
-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 javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.Item;
-import org.apache.tuscany.sca.data.collection.LocalItemCollection;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
-/**
- * Implementation of a component that provides a quick start path for a
- * composite in a contribution.
- *
- * @version $Rev$ $Date$
- */
-@Scope("COMPOSITE")
-@Service(interfaces={Servlet.class})
-public class QuickStartServiceImpl extends HttpServlet {
- private static final long serialVersionUID = -3477992129462720901L;
-
- private static final Logger logger = Logger.getLogger(QuickStartServiceImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public LocalItemCollection deployableCollection;
-
- @Reference
- public LocalItemCollection domainCompositeCollection;
-
- @Reference
- public LocalItemCollection cloudCollection;
-
- @Reference
- public LocalItemCollection processCollection;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
- }
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- try {
-
- // Get the request path
- String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8");
- if (path.startsWith("/")) {
- path = path.substring(1);
- }
-
- // Get the request parameters
- String contributionURI = request.getParameter("contribution");
- String contributionLocation = request.getParameter("location");
- String compositeURI = request.getParameter("composite");
- String start = request.getParameter("start");
-
- logger.fine("Composite Quick Start.");
- logger.fine("Contribution URI: " + contributionURI);
- logger.fine("Contribution location: " + contributionLocation);
- logger.fine("Composite URI: " + compositeURI);
-
- // Look for the contribution in the workspace
- Entry<String, Item>[] contributionEntries = contributionCollection.getAll();
- Entry<String, Item> contributionEntry = null;
- for (Entry<String, Item> entry: contributionEntries) {
- if (contributionURI.equals(entry.getKey())) {
- contributionEntry = entry;
- break;
- }
- }
-
- // Add the contribution if necessary
- if (contributionEntry == null) {
- Item item = new Item();
- item.setLink(contributionLocation);
- contributionCollection.post(contributionURI, item);
- }
-
- // Look for the specified deployable composite in the contribution
- String compositeKey = null;
- Entry<String, Item>[] deployableEntries = deployableCollection.query("contribution=" + contributionURI);
- for (Entry<String, Item> entry: deployableEntries) {
- Item item = entry.getData();
- if (contributionURI.equals(contributionURI(entry.getKey())) && item.getAlternate().endsWith(compositeURI)) {
- compositeKey = entry.getKey();
- break;
- }
- }
-
- if (compositeKey == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, compositeURI);
- return;
- }
-
- // Look for the deployable composite in the domain composite
- try {
- domainCompositeCollection.get(compositeKey);
- } catch (NotFoundException e) {
-
- // Add the deployable composite to the domain composite
- Item item = new Item();
- domainCompositeCollection.post(compositeKey, item);
- }
-
- // Check if the deployable composite is already assigned a node
- Entry<String, Item>[] nodeEntries = cloudCollection.getAll();
- String nodeName = null;
- for (Entry<String, Item> entry: nodeEntries) {
- Item item = entry.getData();
- String related = item.getRelated();
- if (related != null) {
- int c = related.indexOf("composite:");
- related = related.substring(c);
- if (compositeKey.equals(related)) {
- nodeName = compositeQName(entry.getKey()).getLocalPart();
- }
- }
- }
-
- // Create a new node for the composite if necessary
- if (nodeName == null) {
-
- // Construct node name and key
- QName compositeName = compositeQName(compositeKey);
- nodeName = compositeName.getLocalPart() + "Node";
- String nodeKey = compositeKey("http://tuscany.apache.org/cloud", new QName("http://tuscany.apache.org/cloud", nodeName));
-
- // Find a free node port
- Set<Integer> nodePorts = new HashSet<Integer>();
- for (Entry<String, Item> entry: nodeEntries) {
- Item item = entry.getData();
- String uri = nodeURI(item.getContents());
- if (uri != null) {
- URI u = URI.create(uri);
- int port = u.getPort();
- if (port != -1) {
- nodePorts.add(port);
- }
- }
- }
- String nodeURI = null;
- for (int port = 8100; port<8200; port++) {
- if (!nodePorts.contains(port)) {
- nodeURI = "http://localhost:" + port;
- break;
- }
- }
- if (nodeURI == null) {
- throw new RuntimeException("Couldn't find a free port for new node: " + nodeName);
- }
-
- // Build the entry describing the node
- Item item = new Item();
- String content =
- "<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/cloud\"\n" +
- " xmlns:c=\"" + compositeName.getNamespaceURI() + "\"\n" +
- " name=\"" + nodeName + "\">\n" +
- "\n" +
- " <component name=\"" + nodeName + "\">\n" +
- " <t:implementation.node uri=\"" + contributionURI + "\" composite=\"c:" + compositeName.getLocalPart() + "\"/>\n" +
- " <service name=\"Node\">\n" +
- " <binding.ws uri=\"" + nodeURI + "\"/>\n" +
- " <t:binding.http uri=\"" + nodeURI + "\"/>\n" +
- " <t:binding.jsonrpc uri=\"" + nodeURI + "\"/>\n" +
- " <t:binding.atom uri=\"" + nodeURI + "\"/>\n" +
- " </service>\n" +
- " </component>\n" +
- "</composite>";
- item.setContents(content);
-
- // Create the new node
- cloudCollection.post(nodeKey, item);
- }
-
- // Finally, start the node
- if ("true".equals(start)) {
- processCollection.post(nodeName, new Item());
- }
-
- response.getWriter().print("<html><body>Node <span id=\"node\">" + nodeName + "</span> OK.</body></html>");
-
- } catch (Exception e) {
- logger.log(Level.SEVERE, "Could not start composite", e);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
- }
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/launcher/DomainManagerLauncherBootstrap.java b/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/launcher/DomainManagerLauncherBootstrap.java
deleted file mode 100644
index f96e19ed72..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/launcher/DomainManagerLauncherBootstrap.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.domain.manager.launcher;
-
-import org.apache.tuscany.sca.domain.manager.impl.DomainManagerConfiguration;
-import org.apache.tuscany.sca.node.SCAClient;
-import org.apache.tuscany.sca.node.SCANode;
-import org.apache.tuscany.sca.node.SCANodeFactory;
-
-/**
- * Bootstrap class for the SCA domain manager.
- *
- * @version $Rev$ $Date$
- */
-public class DomainManagerLauncherBootstrap {
- private SCANode node;
-
- /**
- * A node wrappering an instance of a domain manager.
- */
- public static class NodeFacade implements SCANode {
- private ClassLoader threadContextClassLoader;
- private ClassLoader runtimeClassLoader;
- private SCANode node;
- private String rootDirectory;
-
- private NodeFacade(String rootDirectory) {
- this.rootDirectory = rootDirectory;
- runtimeClassLoader = Thread.currentThread().getContextClassLoader();
- }
-
- public void start() {
- threadContextClassLoader = Thread.currentThread().getContextClassLoader();
- boolean started = false;
- try {
- Thread.currentThread().setContextClassLoader(runtimeClassLoader);
- SCANodeFactory factory = SCANodeFactory.newInstance();
- node = factory.createSCANodeFromClassLoader("DomainManager.composite", getClass().getClassLoader());
- node.start();
-
- // Set the domain manager's root directory
- DomainManagerConfiguration domainManagerConfiguration = ((SCAClient) node).getService(DomainManagerConfiguration.class, "DomainManagerConfigurationComponent");
- domainManagerConfiguration.setRootDirectory(rootDirectory);
-
- started = true;
- } finally {
- if (!started) {
- Thread.currentThread().setContextClassLoader(threadContextClassLoader);
- }
- }
- }
-
- public void stop() {
- try {
- Thread.currentThread().setContextClassLoader(runtimeClassLoader);
- node.stop();
- } finally {
- Thread.currentThread().setContextClassLoader(threadContextClassLoader);
- }
- }
- }
-
- /**
- * Constructs a new domain manager bootstrap.
- */
- public DomainManagerLauncherBootstrap(String rootDirectory) throws Exception {
- node = new NodeFacade(rootDirectory);
- }
-
- /**
- * Returns the node representing the domain manager.
- * @return
- */
- public SCANode getNode() {
- return node;
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/DomainManager.composite b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/DomainManager.composite
deleted file mode 100644
index ba57ea45d1..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/DomainManager.composite
+++ /dev/null
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * 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.
--->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
- xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
- targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0"
- name="DomainManager">
-
- <component name="HomePage">
- <t:implementation.widget location="home.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/home"/>
- </service>
- </component>
-
- <component name="HomeGadget">
- <t:implementation.widget location="home-gadget.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/home-gadget"/>
- </service>
- </component>
-
- <component name="WorkspacePage">
- <t:implementation.widget location="workspace.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/workspace"/>
- </service>
- </component>
-
- <component name="WorkspaceGadget">
- <t:implementation.widget location="workspace-gadget.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/workspace-gadget"/>
- </service>
- <reference name="workspace" target="ContributionCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- </component>
-
- <component name="FilesPage">
- <t:implementation.widget location="files.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/files"/>
- </service>
- </component>
-
- <component name="FilesGadget">
- <t:implementation.widget location="files-gadget.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/files-gadget"/>
- </service>
- <reference name="files" target="FileCollectionComponent">
- <t:binding.atom/>
- </reference>
- </component>
-
- <component name="DomainCompositePage">
- <t:implementation.widget location="composite.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/composite"/>
- </service>
- </component>
-
- <component name="DomainCompositeGadget">
- <t:implementation.widget location="composite-gadget.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/composite-gadget"/>
- </service>
- <reference name="domainComposite" target="DomainCompositeCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- <reference name="workspace" target="ContributionCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- </component>
-
- <component name="CloudPage">
- <t:implementation.widget location="cloud.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/cloud"/>
- </service>
- </component>
-
- <component name="CloudGadget">
- <t:implementation.widget location="cloud-gadget.html"/>
- <service name="Widget">
- <t:binding.http uri="http://localhost:9990/ui/cloud-gadget"/>
- </service>
- <reference name="cloudComposite" target="CloudCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- <reference name="domainComposite" target="DomainCompositeCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- <reference name="processCollection" target="NodeProcessCollectionFacadeComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- </component>
-
- <component name="ContributionCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.ContributionCollectionImpl"/>
- <property name="workspaceFile">workspace.xml</property>
- <property name="deploymentContributionDirectory">cloud</property>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/workspace" title="Contributions"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="ContributionServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.ContributionServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/contribution"/>
- </service>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="FileCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.FileCollectionImpl"/>
- <property name="directoryName">files</property>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/feed/files" title="Files"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="FileServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.FileServiceImpl"/>
- <property name="directoryName">files</property>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/files"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="DomainCompositeCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DeployedCompositeCollectionImpl"/>
- <property name="compositeFile">domain.composite</property>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/composite" title="Domain Composite"/>
- </service>
- <reference name="deployableCollection" target="DeployableCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="DeployableCompositeServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DeployableCompositeServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/composite-source"/>
- </service>
- <reference name="deployableCollection" target="DeployableCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="DeployableCompositeCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DeployableCompositeCollectionImpl"/>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/deployable" title="Deployable Composites"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="CompositeGeneratorServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.CompositeGeneratorServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/composite-generated"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="CompositeConfigurationServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.CompositeConfigurationServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/composite-resolved"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- <reference name="domainCompositeCollection" target="DomainCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="CloudCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DeployedCompositeCollectionImpl"/>
- <property name="compositeFile">cloud.composite</property>
- <property name="deploymentContributionDirectory">cloud</property>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/cloud" title="Cloud"/>
- </service>
- <reference name="deployableCollection" target="DeployableCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="processCollection" target="NodeProcessCollectionFacadeComponent/LocalItemCollection"/>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="CloudCompositeServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DeployableCompositeServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/cloud-source"/>
- </service>
- <reference name="deployableCollection" target="DeployableCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- </component>
-
- <component name="CompositeConfigurationCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.CompositeConfigurationCollectionImpl"/>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/composite-config" title="Node Configuration"/>
- </service>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- <reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="NodeConfigurationServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.NodeConfigurationServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/node-config"/>
- </service>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- <reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="QuickStartServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.QuickStartServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/quickstart"/>
- </service>
- <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
- <reference name="deployableCollection" target="DeployableCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="domainCompositeCollection" target="DomainCompositeCollectionComponent/LocalItemCollection"/>
- <reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
- <reference name="processCollection" target="NodeProcessCollectionComponent/LocalItemCollection"/>
- </component>
-
- <component name="NodeProcessCollectionFacadeComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.NodeProcessCollectionFacadeImpl"/>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/processes" title="Log"/>
- </service>
- <reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
- <reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
- <reference name="processCollection" target="NodeProcessCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
- </component>
-
- <component name="NodeProcessCollectionComponent">
- <implementation.java class="org.apache.tuscany.sca.implementation.node.manager.NodeProcessCollectionImpl"/>
- <service name="ItemCollection">
- <t:binding.atom uri="http://localhost:9990/node/processes" title="Log"/>
- </service>
- </component>
-
- <component name="PingServiceComponent">
- <implementation.java class="org.apache.tuscany.sca.implementation.node.manager.PingServiceImpl"/>
- <service name="Servlet">
- <t:binding.http uri="http://localhost:9990/ping"/>
- </service>
- </component>
-
- <component name="DomainManagerConfigurationComponent">
- <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DomainManagerConfigurationImpl"/>
- </component>
-
-</composite>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud-gadget.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud-gadget.html
deleted file mode 100644
index 619df54ede..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud-gadget.html
+++ /dev/null
@@ -1,408 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Cloud</title>
-
-<script type="text/javascript" src="../cloud-gadget/cloud-gadget.js"></script>
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="cloudComposite">
-
- <form id="cloudCompositeForm">
- <div id="composites" ></div>
- <br>
- &gt;<a href="" id="addNodeLink">Add</a>
- &nbsp;<a href="" id="deleteNodeLink">Delete</a>
- &nbsp;&nbsp;
- <a href="" id="startNodeLink">Start</a>
- &nbsp;<a href="" id="stopNodeLink">Stop</a>
- </form>
-
- <div id="newNode" style="visibility: hidden;">
- <form id="newNodeForm">
- <table width="100%">
- <tr><th>Add a Node</th></tr>
- <tr><td>Add a node to the cloud. The node will run the SCA components declared in the specified composite.</td></tr>
- </table>
- <br>
- <table>
- <tr><td>Node name:</td><td><input type="text" name="nodeName" size="50"/></td><td>e.g. YourNode</td></tr>
- <tr><td>Node URI:</td><td><input type="text" name="nodeURI" size="50"/></td></td><td>e.g. http://yourhost:8080</td></tr>
- <tr><td>Composite namespace:</td><td><input type="text" name="compositeNamespace" size="50"/></td></td><td>e.g. http://your/namespace</td></tr>
- <tr><td>Composite name:</td><td><input type="text" name="compositeName" size="50"/></td></td><td>e.g. yourcomposite</td></tr>
- <tr><td>Contribution URI:</td><td><input type="text" name="contributionURI" size="50"/></td></td><td>e.g. yourcontrib, http://yourcontrib</td></tr>
- </table>
- <input id="addNodeButton" type="button" value="Add" />
- </form>
- </div>
-
- </div>
-</body>
-
-<script type="text/javascript">
-
- //@Reference
- var cloudComposite = new Reference("cloudComposite");
-
- //@Reference
- var domainComposite = new Reference("domainComposite");
-
- //@Reference
- var processCollection = new Reference("processCollection");
-
- var gadget = gadget(window, document);
- if (gadget.showStatus == null) {
- gadget.showStatus = true;
- }
- if (gadget.showConfigurations == null) {
- gadget.showConfigurations = true;
- }
-
- var cloudCompositeForm = elementByID(gadget, 'cloudCompositeForm');
- var compositesElement = elementByID(gadget, 'composites');
- var newNodeElement = elementByID(gadget, 'newNode');
- var newNodeForm = elementByID(gadget, 'newNodeForm');
-
- var nodeNames;
- var deployedComposites = new Array();
-
- function getNodes() {
- cloudComposite.get("", getNodesResponse);
- }
-
- function contributionURI(id) {
- var i = id.indexOf(';');
- return id.substring(10, i);
- }
-
- function compositeName(id) {
- var i = id.indexOf(';');
- return id.substring(i + 1);
- }
-
- function compositeLocalName(id) {
- name = compositeName(id);
- var i = name.indexOf(';');
- return name.substring(i + 1);
- }
-
- function getNodesResponse(feed) {
- nodeNames = new Array();
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var composites = "";
- composites += '<table width="100%">';
- composites += '<tr><th>Node</th>';
- if (gadget.showStatus) {
- composites += '<th>Status</th>';
- }
- if (gadget.showComposites) {
- composites += '<th>Composite</th>';
- }
- if (gadget.showContributions) {
- composites += '<th>Contribution</th>';
- }
- if (gadget.showConfigurations) {
- composites += '<th>Node Config</th>';
- }
- composites += '</tr>';
-
- for (var i=0; i<entries.length; i++) {
- var nodeId = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
- var links = entries[i].getElementsByTagName("link");
- var nodeLink = undefined;
- var compositeLink = undefined;
- var compositeId = "composite:undefined;undefined;undefined";
- var uri = '<span style="color: red">unknown</span>';
- var qname = undefined;
- for (var l = 0; l < links.length; l++) {
- var a = links[l].getAttribute('rel');
- if (a == undefined) {
- nodeLink = links[l].getAttribute('href');
- } else if (a == 'related') {
- compositeLink = links[l].getAttribute('href');
- var c = compositeLink.indexOf('composite:');
- compositeId = compositeLink.substring(c);
- uri = contributionURI(compositeId);
- qname = compositeName(compositeId);
- }
- }
-
- var nodeName = compositeLocalName(nodeId);
- nodeNames[i] = nodeName;
-
- var content = "";
- if (entries[i].getElementsByTagName("content")[0].firstChild != null) {
- content = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
- }
-
- composites += '<tr>'
- if (content.indexOf('<span id="problem"') != -1) {
- composites += '<td><input name="composites" type="checkbox" value="' + nodeId + '">' +
- '<a href=\"' + nodeLink + '\">' + nodeName + '</a></td>';
- if (gadget.showStatus) {
- composites += '<td><span id="status_' + nodeName + '">unknown</span></td>';
- }
- if (gadget.showComposites) {
- composites += '<td>' + content + '</td>';
- }
- if (gadget.showContributions) {
- composites += '<td>' + uri + '</td>';
- }
- } else {
- composites += '<td><input name="composites" type="checkbox" value="' + nodeId + '">' +
- '<a href=\"' + nodeLink + '\">' + nodeName + '</a></td>';
- if (gadget.showStatus) {
- composites += '<td><span id="status_' + nodeName + '">unknown</span></td>';
- }
- if (gadget.showComposites) {
- composites += '<td><a href=\"' + compositeLink + '\">' + qname + '</a></td>';
- }
- if (gadget.showContributions) {
- composites += '<td><a href="/contribution/' + uri + '">' + uri + '</a></td>';
- }
- }
- if (gadget.showConfigurations) {
- composites += '<td><a href="/node-config/' + nodeName + '"><img src="icons/feed-icon.png" border="0"></a></td>';
- }
- composites += '</tr>';
- }
- composites += '</table>';
- compositesElement.innerHTML = composites;
-
- processCollection.get("", getProcessesResponse);
- }
- }
-
- function getProcessesResponse(feed) {
- if (feed != null) {
- var nodeStatus = new Array();
-
- var entries = feed.getElementsByTagName("entry");
- for (var i=0; i<entries.length; i++) {
- var nodeName = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
- nodeStatus[nodeName] = 'started';
- }
-
- if (gadget.showStatus) {
- for (var i = 0; i < nodeNames.length; i++) {
- var element = elementByID(gadget, 'status_' + nodeNames[i]);
- var nodeName = nodeNames[i];
- if (nodeStatus[nodeName] == null) {
- element.innerHTML = '<span>stopped</span>';
- } else {
- element.innerHTML = '<span><a style="color: green" href="/processes/?node=' + nodeName + '">started</a></span>';
- }
- }
- }
- }
- }
-
- function deleteNode() {
- var composites = array(cloudCompositeForm.composites);
- for (var i = 0; i < composites.length; i++) {
- if (composites[i].checked) {
- var id = composites[i].value;
- cloudComposite.del(id, deleteNodeResponse);
- }
- }
- return false;
- }
-
- function deleteNodeResponse() {
- getNodes();
- }
-
- function addNode() {
- var nodeName = newNodeForm.nodeName.value;
- var nodeURI = newNodeForm.nodeURI.value;
- var compositeNamespace = newNodeForm.compositeNamespace.value;
- var compositeName = newNodeForm.compositeName.value;
- var contributionURI = newNodeForm.contributionURI.value;
- var id = 'composite:' +
- 'http://tuscany.apache.org/cloud' + ';' +
- 'http://tuscany.apache.org/cloud' + ';' +
- nodeName;
-
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom">\n' +
- '<id>' + id + '</id>\n' +
- '<content type="text/xml">\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/cloud"\n' +
- ' xmlns:c="' + compositeNamespace + '"\n' +
- ' name="' + nodeName + '">\n' +
- '\n' +
- ' <component name="' + nodeName + '">\n' +
- ' <t:implementation.node uri="' + contributionURI + '" composite="c:' + compositeName + '"/>\n' +
- ' <service name="Node">\n' +
- ' <binding.ws uri="' + nodeURI + '"/>\n' +
- ' <t:binding.http uri="' + nodeURI + '"/>\n' +
- ' <t:binding.jsonrpc uri="' + nodeURI + '"/>\n' +
- ' <t:binding.atom uri="' + nodeURI + '"/>\n' +
- ' </service>\n' +
- ' </component>\n' +
- '</composite>' +
- '</content>' +
- '</entry>';
- cloudComposite.post(entry, addNodeResponse);
- }
-
- function addNodeResponse() {
- newNodeForm.nodeName.value = "";
- newNodeForm.nodeURI.value = "";
- newNodeForm.compositeNamespace.value = "";
- newNodeForm.compositeName.value = "";
- newNodeForm.contributionURI.value = "";
- getNodes();
- }
-
- function startNode() {
- var composites = array(cloudCompositeForm.composites);
- for (var i = 0; i < composites.length; i++) {
- if (composites[i].checked) {
- var id = nodeNames[i];
-
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' +
- '<id>' + id + '</id>' +
- '</entry>';
- processCollection.post(entry, startNodeResponse);
- }
- }
- return false;
- }
-
- function startNodeResponse() {
- processCollection.get("", getProcessesResponse);
-
- var composites = array(cloudCompositeForm.composites);
- for (var i = 0; i < composites.length; i++) {
- if (composites[i].checked) {
- composites[i].checked = false;
- }
- }
- }
-
- function stopNode() {
- var composites = array(cloudCompositeForm.composites);
- for (var i = 0; i < composites.length; i++) {
- if (composites[i].checked) {
- var id = nodeNames[i];
- processCollection.del(id, stopNodeResponse);
- }
- }
- return false;
- }
-
- function stopNodeResponse() {
- processCollection.get("", getProcessesResponse);
-
- var composites = array(cloudCompositeForm.composites);
- for (var i = 0; i < composites.length; i++) {
- if (composites[i].checked) {
- composites[i].checked = false;
- }
- }
- }
-
- function getComposites() {
- domainComposite.get("", getCompositesResponse);
- }
-
- function getCompositesResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- for (var i=0; i<entries.length; i++) {
- var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
- deployedComposites[id] = id;
- }
- }
- }
-
- function suggestCompositeNamespaces() {
- var namespaces = new Array();
- for (var uri in deployedComposites) {
- var qname = compositeName(uri);
- var ns = qname.substring(0, qname.indexOf(';'));
- namespaces[ns] = ns;
- }
- return array(namespaces);
- }
-
- function suggestCompositeNames() {
- var inputns = newNodeForm.compositeNamespace.value;
- var names = new Array();
- for (var uri in deployedComposites) {
- var qname = compositeName(uri);
- var sc = qname.indexOf(';');
- var ns = qname.substring(0, sc);
- var name = qname.substring(sc + 1);
- if (ns == inputns || inputns == "") {
- names[name] = name;
- }
- }
- return array(names);
- }
-
- function suggestContributionURIs() {
- var inputns = newNodeForm.compositeNamespace.value;
- var inputname = newNodeForm.compositeName.value;
- var uris = new Array();
- for (var uri in deployedComposites) {
- var qname = compositeName(uri);
- var sc = qname.indexOf(';');
- var ns = qname.substring(0, sc);
- var name = qname.substring(sc + 1);
- if ((ns == inputns || inputns == "") && (name == inputname || inputname == "")) {
- var curi = contributionURI(uri);
- uris[curi] = curi;
- }
- }
- return array(uris);
- }
-
- function toggleNewNode() {
- var visibility = newNodeElement.style.visibility;
- if (visibility == 'hidden') {
- newNodeElement.style.visibility = 'visible';
- } else {
- newNodeElement.style.visibility = 'hidden';
- }
- return false;
- }
-
- elementByID(gadget, 'deleteNodeLink').onclick = deleteNode;
- elementByID(gadget, 'addNodeLink').onclick = toggleNewNode;
- elementByID(gadget, 'startNodeLink').onclick = startNode;
- elementByID(gadget, 'stopNodeLink').onclick = stopNode;
- elementByID(gadget, 'addNodeButton').onclick = addNode;
-
- getNodes();
- getComposites();
- suggest(newNodeForm.compositeNamespace, suggestCompositeNamespaces);
- suggest(newNodeForm.compositeName, suggestCompositeNames);
- suggest(newNodeForm.contributionURI, suggestContributionURIs);
-
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud.html
deleted file mode 100644
index d661d5d38b..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/cloud.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Cloud</title>
-
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="toolbarGadgetDiv"></div>
- <br>
-
- <span class=hd1>
- SCA Domain<br><br>
- Cloud</b>&nbsp;<a href="/cloud/"><img src="icons/feed-icon.png" border="0"></a>
- </span>
- <br>
- Here is the list of SCA nodes configured in your SCA domain cloud.
- <br><br>
-
- <div id="cloudGadgetDiv"></div>
-
- <iframe id="toolbarGadget" src="toolbar-gadget.html"></iframe>
- <iframe id="cloudGadget" src="cloud-gadget.html"></iframe>
-</body>
-
-<script type="text/javascript">
- var toolbarGadgetDiv = elementByID(document, 'toolbarGadgetDiv');
- var cloudGadgetDiv = elementByID(document, 'cloudGadgetDiv');
-
- var toolbarGadget = elementByID(document, 'toolbarGadget');
- var cloudGadget = elementByID(document, 'cloudGadget');
-
- function ongadget(win, doc) {
- if (doc == content(toolbarGadget)) {
- toolbarGadgetDiv.innerHTML = doc.body.innerHTML;
- return toolbarGadgetDiv;
- } else if (doc == content(cloudGadget)) {
- cloudGadgetDiv.innerHTML = doc.body.innerHTML;
- cloudGadgetDiv.showStatus = true;
- cloudGadgetDiv.showComposites = true;
- cloudGadgetDiv.showContributions = true;
- cloudGadgetDiv.showConfigurations = true;
- return cloudGadgetDiv;
- }
- return document;
- }
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite-gadget.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite-gadget.html
deleted file mode 100644
index 82855a410a..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite-gadget.html
+++ /dev/null
@@ -1,277 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Domain Composite</title>
-
-<script type="text/javascript" src="../composite-gadget/composite-gadget.js"></script>
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="domainComposite">
-
- <form id="domainCompositeForm">
- <div id="composites" ></div>
- <br>
- &gt;<a href="" id="addCompositeLink">Add</a>
- &nbsp;<a href="" id="deleteCompositeLink">Delete</a>
- </form>
-
- <div id="newComposite" style="visibility: hidden;">
- <form id="newCompositeForm">
- <table width="100%">
- <tr><th>Add Composite</th></tr>
- <tr><td>Add an SCA composite describing your SCA service components.</td></tr>
- </table>
- <br>
- <table>
- <tr><td>Composite namespace:</td><td><input type="text" name="compositeNamespace" size="50"/></td><td>e.g. http://your/namespace</td></tr>
- <tr><td>Composite name:</td><td><input type="text" name="compositeName" size="50"/></td><td>e.g. yourcomposite</td></tr>
- <tr><td>Contribution URI:</td><td><input type="text" name="contributionURI" size="50"/></td><td>e.g. yourcontrib, http://yourcontrib</td></tr>
- </table>
- <input id="addCompositeButton" type="button" value="Add" />
- </form>
- </div>
-
- </div>
-</body>
-
-<script type="text/javascript">
- //@Reference
- var domainComposite = new Reference("domainComposite");
-
- //@Reference
- var workspace = new Reference("workspace");
-
- var gadget = gadget(window, document);
- if (gadget.showContributions == null) {
- gadget.showContributions = true;
- }
-
- var domainCompositeForm = elementByID(gadget, 'domainCompositeForm');
- var compositesElement = elementByID(gadget, 'composites');
- var newCompositeElement = elementByID(gadget, 'newComposite');
- var newCompositeForm = elementByID(gadget, 'newCompositeForm');
-
- var contributedComposites = new Array();
-
- function getComposites() {
- domainComposite.get("", getCompositesResponse);
- }
-
- function contributionURI(id) {
- var i = id.indexOf(';');
- return id.substring(10, i);
- }
-
- function compositeName(id) {
- var i = id.indexOf(';');
- return id.substring(i + 1);
- }
-
- function getCompositesResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var composites = "";
- composites += '<table width="100%">';
- composites += '<tr><th>Composite</th>';
- if (gadget.showContributions) {
- composites += '<th>Contribution</th>';
- }
- if (gadget.showComponents) {
- composites += '<th>Components</th>';
- }
- composites += '</tr>';
- //'<th>Composite Configuration</th>' +
-
- 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 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 + '">';
- composites += '<a href=\"' + link + '\">' + qname + '</a></td>';
- if (gadget.showContributions) {
- composites += '<td><a href="/contribution/' + uri + '">' + uri + '</a></td>';
- }
- if (gadget.showComponents) {
- composites += '<td class=tdw>' + components + '</td>';
- }
- //composites += '<td><a href="/composite-config/?composite=' + id + '"><img src="icons/feed-icon.png" border="0"></a></td>';
- composites += '</tr>';
- }
- composites += '</table>';
- compositesElement.innerHTML = composites;
- }
- }
-
- function deleteComposite() {
- var composites = array(domainCompositeForm.composites);
- for (var i = 0; i < composites.length; i++) {
- if (composites[i].checked) {
- var id = composites[i].value;
- domainComposite.del(id, deleteCompositeResponse);
- }
- }
- return false;
- }
-
- function deleteCompositeResponse() {
- getComposites();
- }
-
- function addComposite() {
- var id = 'composite:' +
- newCompositeForm.contributionURI.value + ';' +
- newCompositeForm.compositeNamespace.value + ';' +
- newCompositeForm.compositeName.value;
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' +
- '<title>' + id +'</title>' +
- '<id>' + id + '</id>' +
- '</entry>';
- domainComposite.post(entry, addCompositeResponse);
- }
-
- function addCompositeResponse() {
- newCompositeForm.compositeNamespace.value = "";
- newCompositeForm.compositeName.value = "";
- newCompositeForm.contributionURI.value = "";
- getComposites();
- }
-
- function getContributions() {
- workspace.get("", getContributionsResponse);
- }
-
- function getContributionsResponse(feed) {
- if (feed != null) {
- contributedComposites = new Array();
- var entries = feed.getElementsByTagName("entry");
- for (var i=0; i<entries.length; i++) {
- if (entries[i].getElementsByTagName("content")[0].firstChild != null) {
- var content = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
- var bs = content.indexOf('<span id="deployables">');
- if (bs != -1) {
- var es = content.indexOf('</span>', bs);
- content = content.substring(bs, es + 7);
- for (;;) {
- var bc = content.indexOf('composite:');
- if (bc == -1) {
- break;
- }
- var ec = content.indexOf('">', bc);
- if (ec == -1) {
- break;
- }
- var uri = content.substring(bc, ec);
- contributedComposites[uri] = uri;
- content = content.substring(ec +1);
- }
- }
- }
- }
- }
- }
-
- function suggestCompositeNamespaces() {
- var namespaces = new Array();
- for (var uri in contributedComposites) {
- var qname = compositeName(uri);
- var ns = qname.substring(0, qname.indexOf(';'));
- namespaces[ns] = ns;
- }
- return array(namespaces);
- }
-
- function suggestCompositeNames() {
- var inputns = newCompositeForm.compositeNamespace.value;
- var names = new Array();
- for (var uri in contributedComposites) {
- var qname = compositeName(uri);
- var sc = qname.indexOf(';');
- var ns = qname.substring(0, sc);
- var name = qname.substring(sc + 1);
- if (ns == inputns || inputns == "") {
- names[name] = name;
- }
- }
- return array(names);
- }
-
- function suggestContributionURIs() {
- var inputns = newCompositeForm.compositeNamespace.value;
- var inputname = newCompositeForm.compositeName.value;
- var uris = new Array();
- for (var uri in contributedComposites) {
- var qname = compositeName(uri);
- var sc = qname.indexOf(';');
- var ns = qname.substring(0, sc);
- var name = qname.substring(sc + 1);
- if ((ns == inputns || inputns == "") && (name == inputname || inputname == "")) {
- var curi = contributionURI(uri);
- uris[curi] = curi;
- }
- }
- return array(uris);
- }
-
- function toggleNewComposite() {
- var visibility = newCompositeElement.style.visibility;
- if (visibility == 'hidden') {
- newCompositeElement.style.visibility = 'visible';
- } else {
- newCompositeElement.style.visibility = 'hidden';
- }
- return false;
- }
-
- elementByID(gadget, 'deleteCompositeLink').onclick = deleteComposite;
- elementByID(gadget, 'addCompositeLink').onclick = toggleNewComposite;
- elementByID(gadget, 'addCompositeButton').onclick = addComposite;
-
- getComposites();
- getContributions();
- suggest(newCompositeForm.compositeNamespace, suggestCompositeNamespaces);
- suggest(newCompositeForm.compositeName, suggestCompositeNames);
- suggest(newCompositeForm.contributionURI, suggestContributionURIs);
-
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite.html
deleted file mode 100644
index b0631e1d66..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/composite.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Domain Composite</title>
-
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="toolbarGadgetDiv"></div>
- <br>
-
- <span class=hd1>
- SCA Domain<br><br>
- Domain Composite&nbsp;<a href="/composite/"><img src="icons/feed-icon.png" border="0"></a>
- </span>
- <br>
- Here is the list of SCA composites currently included as top-level composites in your SCA domain.
- <br><br>
-
- <div id="compositeGadgetDiv"></div>
-
- <iframe id="toolbarGadget" src="toolbar-gadget.html"></iframe>
- <iframe id="compositeGadget" src="composite-gadget.html"></iframe>
-</body>
-
-<script type="text/javascript">
- var toolbarGadgetDiv = elementByID(document, 'toolbarGadgetDiv');
- var compositeGadgetDiv = elementByID(document, 'compositeGadgetDiv');
-
- var toolbarGadget = elementByID(document, 'toolbarGadget');
- var compositeGadget = elementByID(document, 'compositeGadget');
-
- function ongadget(win, doc) {
- if (doc == content(toolbarGadget)) {
- toolbarGadgetDiv.innerHTML = doc.body.innerHTML;
- return toolbarGadgetDiv;
- } else if (doc == content(compositeGadget)) {
- compositeGadgetDiv.innerHTML = doc.body.innerHTML;
- compositeGadgetDiv.showContributions = true;
- compositeGadgetDiv.showComponents = true;
- return compositeGadgetDiv;
- }
- return document;
- }
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/files-gadget.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/files-gadget.html
deleted file mode 100644
index 83315a1957..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/files-gadget.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Contribution File Server</title>
-
-<script type="text/javascript" src="../files-gadget/files-gadget.js"></script>
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="fileServer">
-
- <form id="filesForm">
- <div id="files" ></div>
- <br>
- &gt;<a href="" id="uploadFileLink">Upload</a>
- &nbsp;<a href="" id="deleteFileLink">Delete</a>
- </form>
-
- <div id="uploadFile" style="visibility: hidden;">
- <form method="post" id="uploadFileForm" enctype='multipart/form-data' action='/files'>
- <table width="100%">
- <tr><th>Upload File</th></tr>
- <tr><td>Upload a file to the server.</td></tr>
- </table>
- <br>
- <table border="0">
- <tr><td>File:</td><td><input type="file" name="file" size="50"/></td></tr>
- </table>
- <br/>
- <input id="uploadFileButton" type="button" value="Upload" />
- </form>
- </div>
-
- </div>
-</body>
-
-<script type="text/javascript">
- //@Reference
- var files = new Reference("files");
-
- var gadget = gadget(window, document);
-
- var filesForm = elementByID(gadget, "filesForm");
- var filesElement = elementByID(gadget, 'files');
- var uploadFileElement = elementByID(gadget, 'uploadFile');
- var uploadFileForm = elementByID(gadget, 'uploadFileForm');
-
- function getFiles() {
- files.get("", getFilesResponse);
- }
-
- function getFilesResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = '<table width="100%"><tr><th>Files</th></tr>';
- for (var i=0; i<entries.length; i++) {
- var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
- var location = entries[i].getElementsByTagName("link")[0].getAttribute("href");
- list += '<tr><td><input name="files" type="checkbox" value="' + id + '">' +
- '<a href=\"' + location + '\">' + id + '</a></td></tr>';
- }
- list += "</table>";
- filesElement.innerHTML = list;
- }
- }
-
- function deleteFile() {
- var list = array(filesForm.files);
- for (var i=0; i < list.length; i++) {
- if (list[i].checked) {
- var id = list[i].value;
- files.del(id, deleteFileResponse);
- }
- }
- return false;
- }
-
- function deleteFileResponse() {
- getFiles();
- }
-
- function uploadFile() {
- uploadFileForm.submit();
- return false;
- }
-
- function toggleUploadFile() {
- var visibility = uploadFileElement.style.visibility;
- if (visibility == 'hidden') {
- uploadFileElement.style.visibility = 'visible';
- } else {
- uploadFileElement.style.visibility = 'hidden';
- }
- return false;
- }
-
- elementByID(gadget, 'deleteFileLink').onclick = deleteFile;
- elementByID(gadget, 'uploadFileLink').onclick = toggleUploadFile;
- elementByID(gadget, 'uploadFileButton').onclick = uploadFile;
-
- getFiles();
-
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/files.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/files.html
deleted file mode 100644
index 37d89e7665..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/files.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Contribution File Server</title>
-
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="toolbarGadgetDiv"></div>
- <br>
-
- <span class=hd1>
- SCA Domain<br><br>
- File Server&nbsp;<a href="/feed/files/"><img src="icons/feed-icon.png" border="0"></a>
- </span>
- <br>
- This is a simple ATOM-based file server useful to share files if you don't have an FTP, SVN or Maven repository.
- <br><br>
-
- <div id="filesGadgetDiv"></div>
-
- <iframe id="toolbarGadget" src="toolbar-gadget.html"></iframe>
- <iframe id="filesGadget" src="files-gadget.html"></iframe>
-</body>
-
-<script type="text/javascript">
- var toolbarGadgetDiv = elementByID(document, 'toolbarGadgetDiv');
- var filesGadgetDiv = elementByID(document, 'filesGadgetDiv');
-
- var toolbarGadget = elementByID(document, 'toolbarGadget');
- var filesGadget = elementByID(document, 'filesGadget');
-
- function ongadget(win, doc) {
- if (doc == content(toolbarGadget)) {
- toolbarGadgetDiv.innerHTML = doc.body.innerHTML;
- return toolbarGadgetDiv;
- } else if (doc == content(filesGadget)) {
- filesGadgetDiv.innerHTML = doc.body.innerHTML;
- return filesGadgetDiv;
- }
- return document;
- }
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/home-gadget.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/home-gadget.html
deleted file mode 100644
index 05e262e4df..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/home-gadget.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Home</title>
-
-<script type="text/javascript" src="../home-gadget/home-gadget.js"></script>
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="home">
-
- <form>
- <table border="0" align="center">
- <tr><td valign="top"><span style="font-size:150%; color: blue">Search:</span></td><td><input type="text" name="search" size="50"/></td></tr>
- <tr><td></td><td align="center"><input type="button" name="search" value="Search" /></td></tr>
- </table>
- </form>
-
- </div>
-</body>
-
-<script type="text/javascript">
- var gadget = gadget(window, document);
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/home.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/home.html
deleted file mode 100644
index aad1856621..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/home.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Home</title>
-
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="toolbarGadgetDiv"></div>
- <br>
-
- <span class=hd1>
- SCA Domain
- </span>
- <br><br><br><br><br><br>
-
- <div id="homeGadgetDiv"></div>
-
- <br><br><br><br><br><br><br>
- <center>This page is under construction, searching the domain is not implemented yet.</center>
-
- <iframe id="toolbarGadget" src="toolbar-gadget.html" style="visibility: hidden;"></iframe>
- <iframe id="homeGadget" src="home-gadget.html" style="visibility: hidden;"></iframe>
-</body>
-
-<script type="text/javascript">
- var toolbarGadgetDiv = elementByID(document, 'toolbarGadgetDiv');
- var homeGadgetDiv = elementByID(document, 'homeGadgetDiv');
-
- var toolbarGadget = elementByID(document, 'toolbarGadget');
- var homeGadget = elementByID(document, 'homeGadget');
-
- function ongadget(win, doc) {
- if (doc == content(toolbarGadget)) {
- toolbarGadgetDiv.innerHTML = doc.body.innerHTML;
- return toolbarGadgetDiv;
- } else if (doc == content(homeGadget)) {
- homeGadgetDiv.innerHTML = doc.body.innerHTML;
- return homeGadgetDiv;
- }
- return document;
- }
-</script>
-
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/icons/feed-icon.png b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/icons/feed-icon.png
deleted file mode 100644
index a59728b2ad..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/icons/feed-icon.png
+++ /dev/null
Binary files differ
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/manager.css b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/manager.css
deleted file mode 100644
index e080ff1d87..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/manager.css
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.
- */
-
-body {
- white-space: nowrap; margin: 2px;
-}
-
-table {
- border: 1px; border-collapse: separate
-}
-
-th {
- font-weight: bold; white-space: nowrap; background-color: #e5ecf9; color: #598edd;
- text-align: left; padding-left: 2px; padding-right: 20px; padding-top: 2px; padding-bottom: 2px; vertical-align: text-top;
- border-top: 1px; border-bottom: 1px; border-left: 0px; border-right: 0px;
- border-style: solid; border-top-color: #a2bae7; border-bottom-color: #d1d3d4
-}
-
-td {
- padding-left: 2px; padding-top: 2px; padding-right: 20px; white-space: nowrap; vertical-align: text-top
-}
-
-iframe {
- visibility: hidden;
-}
-
-input {
- vertical-align: middle
-}
-
-a:link {
- color: blue
-}
-
-a:visited {
- color: blue
-}
-
-.tdw {
- padding-left: 2px; padding-top: 2px; padding-right: 20px; white-space: normal; vertical-align: text-top
-}
-
-.hd1 {
- font-size:150%; font-weight: bold
-}
-
-.tbar {
- margin: 0px;
- padding-top: 0px; padding-left: 0px; padding-right: 0px; padding-bottom: 3px;
- border-bottom: 1px solid #a2bae7
-}
-
-.ltbar {
- padding-left: 0px; padding-top: 0px; padding-right: 20px; white-space: nowrap; vertical-align: top
-}
-
-.rtbar {
- padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: nowrap; vertical-align: top;
- text-align: right
-}
-
-.suggest {
- background-color: #e5ecf9; color: #598edd;
- border-top: 1px; border-bottom: 1px; border-left: 1px; border-right: 1px;
- border-style: solid; border-top-color: #a2bae7; border-bottom-color: #d1d3d4;
- border-left-color: #d1d3d4; border-right-color: #d1d3d4;
- position: absolute;
- overflow: auto; overflow-x: hidden;
- cursor: default;
- padding: 0px; margin: 0px;
-}
-
-suggestTable {
- border: 0px; border-collapse: separate;
- padding-left: 5px; padding-right: 5px; padding-top: 2px; padding-bottom: 2px;
- margin: 0px;
-}
-
-.suggestItem {
- padding-left: 2px; padding-top: 0px; padding-bottom: 0px; padding-right: 2px; white-space: nowrap; vertical-align: text-top;
- background-color: #e5ecf9; color: #598edd;
-}
-
-.suggestHilighted {
- padding-left: 2px; padding-top: 0px; padding-bottom: 0px; padding-right: 2px; white-space: nowrap; vertical-align: text-top;
- background-color: #598edd; color: #e5ecf9;
-}
-
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/toolbar-gadget.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/toolbar-gadget.html
deleted file mode 100644
index c9389affc3..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/toolbar-gadget.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Toolbar</title>
-
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="toolbar"></div>
-</body>
-
-<script type="text/javascript">
- var gadget = gadget(window, document);
-
- var tools = new Array();
- tools[0] = new Tool("Contributions", "../workspace");
- tools[1] = new Tool("Composites", "../composite");
- tools[2] = new Tool("Cloud", "../cloud");
- tools[3] = new Tool("Files", "../files");
-
- var home = new Tool("Home", "../home");
-
- var toolbarDiv = elementByID(gadget, 'toolbar');
- toolbarDiv.innerHTML = toolbar(home, tools);
-
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/utils.js b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/utils.js
deleted file mode 100644
index 77ed807e85..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/utils.js
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * Autocomplete / suggest support for input fields
- *
- * To use it declare a 'suggest' function as follows:
- * function suggestItems() {
- * return new Array('abc', 'def', 'ghi');
- * }
- *
- * then hook it to an input field as follows:
- * suggest(document.yourForm.yourInputField, suggestItems);
- */
-function selectSuggestion(node, value) {
- for (;;) {
- node = node.parentNode;
- if (node.tagName.toLowerCase() == 'div') {
- break;
- }
- }
- node.selectSuggestion(value);
-}
-
-function hilightSuggestion(node, over) {
- if (over) {
- node.className = 'suggestHilighted';
- } else {
- node.className = 'suggestItem';
- }
-}
-
-function suggest(input, suggestFunction) {
-
- input.suggest = suggestFunction;
-
- input.selectSuggestion = function(value) {
- this.hideSuggestDiv();
- this.value = value;
- }
-
- input.hideSuggestDiv = function() {
- if (this.suggestDiv != null) {
- this.suggestDiv.style.visibility = 'hidden';
- }
- }
-
- input.showSuggestDiv = function() {
- if (this.suggestDiv == null) {
- this.suggestDiv = document.createElement('div');
- this.suggestDiv.input = this;
- this.suggestDiv.className = 'suggest';
- input.parentNode.insertBefore(this.suggestDiv, input);
- this.suggestDiv.style.visibility = 'hidden';
- this.suggestDiv.style.zIndex = '99';
-
- this.suggestDiv.selectSuggestion = function(value) {
- this.input.selectSuggestion(value);
- }
- }
-
- var values = this.suggest();
- var items = "";
- for (var i = 0; i < values.length; i++) {
- if (values[i].indexOf(this.value) == -1) {
- continue;
- }
- if (items.length == 0) {
- items += '<table class=suggestTable>';
- }
- items += '<tr><td class="suggestItem" ' +
- 'onmouseover="hilightSuggestion(this, true)" onmouseout="hilightSuggestion(this, false)" ' +
- 'onmousedown="selectSuggestion(this, \'' + values[i] + '\')">' + values[i] + '</td></tr>';
- }
- if (items.length != 0) {
- items += '</table>';
- }
- this.suggestDiv.innerHTML = items;
-
- if (items.length != 0) {
- var node = input;
- var left = 0;
- var top = 0;
- for (;;) {
- left += node.offsetLeft;
- top += node.offsetTop;
- node = node.offsetParent;
- if (node.tagName.toLowerCase() == 'body') {
- break;
- }
- }
- this.suggestDiv.style.left = left;
- this.suggestDiv.style.top = top + input.offsetHeight;
- this.suggestDiv.style.visibility = 'visible';
- } else {
- this.suggestDiv.style.visibility = 'hidden';
- }
- }
-
- input.onkeydown = function(event) {
- this.showSuggestDiv();
- };
-
- input.onkeyup = function(event) {
- this.showSuggestDiv();
- };
-
- input.onmousedown = function(event) {
- this.showSuggestDiv();
- };
-
- input.onblur = function(event) {
- setTimeout(function() { input.hideSuggestDiv(); }, 50);
- };
-}
-
-/**
- * A Toolbar class
- */
-function Tool(name, href) {
- this.name = name;
- this.href = href;
-}
-
-Tool.prototype.print = function() {
- var loc = '' + location;
- if (loc.match(this.href) == null) {
- return '<a href="' + this.href + '" target="_parent">' + this.name + '</a>';
- } else {
- return '<span>' + this.name + '</span>';
- }
-}
-
-/**
- * Initialize the toolbar
- */
-function toolbar(home, tools) {
- var toolbar = '<table width="100%" cellpadding="0" cellspacing="0" class=tbar><tr>' +
- '<td class=ltbar><table border="0" cellspacing="0" cellpadding="0"><tr>';
-
- for (var i = 0; i < tools.length; i++) {
- toolbar = toolbar + '<td class=ltbar>' +tools[i].print() + '</td>'
- }
-
- toolbar = toolbar + '</tr></table></td>' +
- '<td class=rtbar><table border="0" cellpadding="0" cellspacing="0" align="right"><tr>' +
- '<td class=rtbar>' + home.print() + '</td></tr></table></td>' +
- '</tr></table>';
-
- return toolbar;
-}
-
-/**
- * Return an non-sparse array from an array or an object.
- */
-function array(obj) {
- if (obj.length == undefined) {
- var a = new Array();
- a[0] = obj;
- return a;
- }
- else {
- var a = new Array();
- var n = 0;
- for (var i in obj) {
- a[n++] = obj[i];
- }
- return a;
- }
-}
-
-/**
- * Dump a Javascript object to the console
- */
-function dump(o) {
- for (f in o) {
- try {
- console.log(f + '=' + o[f]);
- } catch (e) {}
- }
-}
-
-/**
- * Return the content document of the given window.
- */
-function content(win) {
- if (win.document != 'undefined' && win.document != null) {
- return win.document;
- } else if (win.contentDocument != 'undefined' && win.contentDocument != null) {
- return win.contentDocument;
- } else {
- return null;
- }
-}
-
-/**
- * Returns a child element with the given id.
- */
-function elementByID(node, id) {
- for (var i in node.childNodes) {
- var child = node.childNodes[i];
- if (child.id == id) {
- return child;
- } else {
- child = elementByID(child, id);
- if (child != null) {
- return child;
- }
- }
- }
- return null;
-}
-
-/**
- * Install a gadget.
- */
-function gadget(win, doc) {
- var ongadget = null;
- try {
- if (win.parent.ongadget != null && win.parent.ongadget != 'undefined') {
- ongadget = win.parent.ongadget;
- }
- } catch (e) {
- }
- if (ongadget != null) {
- return ongadget(win, doc);
- } else {
- return doc;
- }
-}
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace-gadget.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace-gadget.html
deleted file mode 100644
index a4589b42e6..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace-gadget.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Contributions</title>
-
-<script type="text/javascript" src="../workspace-gadget/workspace-gadget.js"></script>
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="workspace">
-
- <form id="workspaceForm">
- <div id="contributions" ></div>
- <br>
- &gt;<a href="" id="addContributionLink">Add</a>
- &nbsp;<a href="" id="deleteContributionLink">Delete</a>
- </form>
-
- <div id="newContribution" style="visibility: hidden;">
- <form id="newContributionForm">
- <table width="100%">
- <tr><th>Add Contribution</th></tr>
- <tr><td>Add an SCA contribution containing your application artifacts to the SCA domain.</td></tr>
- </table>
- <br>
- <table>
- <tr><td>Contribution URI:</td><td><input type="text" name="contributionID" size="50"/></td></td><td>e.g. yourcontrib, http://yourcontrib</td></tr>
- <tr><td>Location:</td><td><input type="text" name="contributionLocation" size="50"/></td></td><td>e.g. http://host/yourjar.jar, file:/yourdir, file:/yourjar.jar</td></tr>
- </table>
- <input id="addContributionButton" type="button" value="Add" />
- </form>
- </div>
-
- </div>
-</body>
-
-<script type="text/javascript">
-
- //@Reference
- var workspace = new Reference("workspace");
-
- var gadget = gadget(window, document);
- if (gadget.showDependencies == null) {
- gadget.showDependencies = true;
- }
-
- var workspaceForm = elementByID(gadget, 'workspaceForm');
- var contributionsElement = elementByID(gadget, 'contributions');
- var newContributionElement = elementByID(gadget, 'newContribution');
- var newContributionForm = elementByID(gadget, 'newContributionForm');
-
- var suggestedContributions = new Array();
-
- function getContributions() {
- workspace.get("", getContributionsResponse);
- }
-
- function getContributionsResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var contributions = "";
- contributions += '<table width="100%">';
- contributions += '<tr><th>Contribution</th>';
- if (gadget.showDependencies) {
- contributions += '<th>Dependencies</td>';
- }
- if (gadget.showDeployables) {
- contributions += '<th>Deployable Composites</th>';
- }
- contributions += '</tr>';
- for (var i=0; i<entries.length; i++) {
- var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
- var location = entries[i].getElementsByTagName("link")[0].getAttribute("href");
- var content = '';
- if (entries[i].getElementsByTagName("content")[0].firstChild != null) {
- content = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
- }
-
- contributions += '<tr>';
- contributions += '<td><input name="contributions" type="checkbox" value="' + id + '">' +
- '<a href=\"' + location + '\">' + id + '</a></td>';
-
- var dependencies = '';
- var bs = content.indexOf('<span id="dependencies">');
- if (bs != -1) {
- var es = content.indexOf('</span>', bs);
- dependencies = content.substring(bs, es + 7);
- }
-
- var deployables = '';
- var bs = content.indexOf('<span id="deployables">');
- if (bs != -1) {
- var es = content.indexOf('</span>', bs);
- deployables = content.substring(bs, es + 7);
- }
-
- var problems = "";
- var bs = content.indexOf('<span id="problems" ');
- if (bs != -1) {
- var es = content.indexOf('</span>', bs);
- if (dependencies.length != 0) {
- problems = '<br>';
- }
- problems += content.substring(bs, es + 7);
- }
-
- if (gadget.showDependencies) {
- contributions += '<td class=tdw>' + dependencies + problems + ' </td>';
- }
- if (gadget.showDeployables) {
- contributions += '<td class=tdw>' + deployables + '</td>';
- }
- contributions += '</tr>';
- }
- contributions += '</table>';
- contributionsElement.innerHTML = contributions;
- }
- }
-
- function getSuggestedContributions() {
- workspace.get("?suggestions=true", getSuggestedContributionsResponse);
- }
-
- function getSuggestedContributionsResponse(feed) {
- suggestedContributions = new Array();
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- for (var i=0; i<entries.length; i++) {
- var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
- var location = entries[i].getElementsByTagName("link")[1].getAttribute("href");
- suggestedContributions[i] = id + ':' + location;
- }
- }
- }
-
- function deleteContribution() {
- var contributions = array(workspaceForm.contributions);
- for (var i=0; i < contributions.length; i++) {
- if (contributions[i].checked) {
- var id = contributions[i].value;
- alert("hey " + id);
- workspace.del(id, deleteContributionResponse);
- }
- }
- return false;
- }
-
- function deleteContributionResponse() {
- getContributions();
- }
-
- function addContribution() {
- var id = newContributionForm.contributionID.value;
- var location = newContributionForm.contributionLocation.value;
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' +
- '<title>Contribution - ' + id +'</title>' +
- '<id>' + id + '</id>' +
- '<link href="' + location + '" />' +
- '</entry>';
- workspace.post(entry, addContributionResponse);
- }
-
- function addContributionResponse() {
- newContributionForm.contributionID.value = "";
- newContributionForm.contributionLocation.value = "";
- getContributions();
- }
-
- function suggestContributionIDs() {
- var ids = new Array();
- for (var i=0; i<suggestedContributions.length; i++) {
- var uri = suggestedContributions[i];
- var id = uri.substring(0, uri.indexOf(':'));
- ids[id] = id;
- }
- return array(ids);
- }
-
- function suggestContributionLocations() {
- var locations = new Array();
- for (var i=0; i<suggestedContributions.length; i++) {
- var uri = suggestedContributions[i];
- var id = uri.substring(0, uri.indexOf(':'));
- if (id == newContributionForm.contributionID.value) {
- var location = uri.substring(uri.indexOf(':') +1);
- locations[location] = location;
- }
- }
- return array(locations);
- }
-
- function toggleNewContribution() {
- var visibility = newContributionElement.style.visibility;
- if (visibility == 'hidden') {
- newContributionElement.style.visibility = 'visible';
- } else {
- newContributionElement.style.visibility = 'hidden';
- }
- return false;
- }
-
- elementByID(gadget, 'deleteContributionLink').onclick = deleteContribution;
- elementByID(gadget, 'addContributionLink').onclick = toggleNewContribution;
- elementByID(gadget, 'addContributionButton').onclick = addContribution;
-
- getContributions();
- getSuggestedContributions();
- suggest(newContributionForm.contributionID, suggestContributionIDs);
- suggest(newContributionForm.contributionLocation, suggestContributionLocations);
-
-</script>
-</html>
diff --git a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace.html b/branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace.html
deleted file mode 100644
index 36c02ab1e6..0000000000
--- a/branches/sca-java-1.4/modules/domain-manager/src/main/resources/workspace.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>SCA Domain - Contributions</title>
-
-<script type="text/javascript" src="utils.js"></script>
-
-<link rel="stylesheet" type="text/css" href="manager.css">
-</head>
-
-<body>
- <div id="toolbarGadgetDiv"></div>
- <br>
-
- <span class=hd1>
- SCA Domain<br><br>
- Contributions</b>&nbsp;<a href="/workspace/"><img src="icons/feed-icon.png" border="0"></a> </span>
- <br>
- Here is the list of SCA contributions currently available in your SCA domain.
- <br><br>
-
- <div id="workspaceGadgetDiv"></div>
-
- <iframe id="toolbarGadget" src="toolbar-gadget.html"></iframe>
- <iframe id="workspaceGadget" src="workspace-gadget.html"></iframe>
-</body>
-
-<script type="text/javascript">
- var toolbarGadgetDiv = elementByID(document, 'toolbarGadgetDiv');
- var workspaceGadgetDiv = elementByID(document, 'workspaceGadgetDiv');
-
- var toolbarGadget = elementByID(document, 'toolbarGadget');
- var workspaceGadget = elementByID(document, 'workspaceGadget');
-
- function ongadget(win, doc) {
- if (doc == content(toolbarGadget)) {
- toolbarGadgetDiv.innerHTML = doc.body.innerHTML;
- return toolbarGadgetDiv;
- } else if (doc == content(workspaceGadget)) {
- workspaceGadgetDiv.innerHTML = doc.body.innerHTML;
- workspaceGadgetDiv.showDependencies = true;
- workspaceGadgetDiv.showDeployables = true;
- return workspaceGadgetDiv;
- }
- return document;
- }
-</script>
-</html>