Author: jsdelfino
Date: Sat Mar 15 14:43:08 2008
New Revision: 637484
URL: http://svn.apache.org/viewvc?rev=637484&view=rev
Log:
Cleaned up code that reloaded composites in a DOM. Added code to return the
list of dependencies and deployables in contribution ATOM entries.
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java?rev=637484&r1=637483&r2=637484&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/ContributionCollectionImpl.java
Sat Mar 15 14:43:08 2008
@@ -25,31 +25,29 @@
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
-import java.net.URLConnection;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
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.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.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionFactory;
@@ -65,7 +63,6 @@
import
org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
import
org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
import
org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import
org.apache.tuscany.sca.contribution.xml.ContributionGeneratedMetadataDocumentProcessor;
import
org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
import org.apache.tuscany.sca.contribution.xml.ContributionMetadataProcessor;
@@ -114,12 +111,13 @@
private URLArtifactProcessor<Contribution> contributionInfoProcessor;
private XMLInputFactory inputFactory;
private XMLOutputFactory outputFactory;
+ private DocumentBuilder documentBuilder;
/**
* Initialize the component.
*/
@Init
- public void initialize() throws IOException, ContributionReadException,
XMLStreamException, ParserConfigurationException {
+ public void initialize() throws ParserConfigurationException {
// Create model factories
ModelFactoryExtensionPoint modelFactories = new
DefaultModelFactoryExtensionPoint();
@@ -147,18 +145,21 @@
// Create contribution info processor
contributionInfoProcessor = new
ContributionInfoProcessor(modelFactories, modelResolvers, urlProcessor);
+ // Create a document builder (used to pretty print XML)
+ documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
}
public Entry<String, Item>[] getAll() {
// Return all the contributions
List<Entry<String, Item>> entries = new ArrayList<Entry<String,
Item>>();
- Workspace workspace = readWorkspace();
+ Workspace workspace = readContributions(readWorkspace());
+
for (Contribution contribution: workspace.getContributions()) {
if (contribution.getURI().equals(deploymentContributionURI)) {
continue;
}
- entries.add(entry(contribution));
+ entries.add(entry(workspace, contribution));
}
return entries.toArray(new Entry[entries.size()]);
}
@@ -166,10 +167,10 @@
public Item get(String key) throws NotFoundException {
// Returns the contribution with the given URI key
- Workspace workspace = readWorkspace();
+ Workspace workspace = readContributions(readWorkspace());
for (Contribution contribution: workspace.getContributions()) {
if (key.equals(contribution.getURI())) {
- return item(contribution);
+ return item(workspace, contribution);
}
}
throw new NotFoundException(key);
@@ -194,7 +195,7 @@
}
// Redirect to the actual contribution location
- response.sendRedirect("/files/" + item.getLink());
+ response.sendRedirect("/files/" + item.getAlternate());
}
public String post(String key, Item item) {
@@ -251,33 +252,24 @@
public Entry<String, Item>[] query(String 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>>();
- // Read the metadata for all the contributions into a temporary
workspace
- Workspace workspace = readWorkspace();
- Workspace dependencyWorkspace = workspaceFactory.createWorkspace();
- try {
- for (Contribution c: workspace.getContributions()) {
- URI uri = URI.create(c.getURI());
- URL url = url(c.getLocation());
- Contribution contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
- dependencyWorkspace.getContributions().add(contribution);
- }
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
+ // 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
- int e = queryString.indexOf('=');
- String key = queryString.substring(e+1);
- for (Contribution contribution:
dependencyWorkspace.getContributions()) {
+ for (Contribution contribution: workspace.getContributions()) {
if (key.equals(contribution.getURI())) {
// Compute the contribution dependencies
ContributionDependencyAnalyzer analyzer = new
ContributionDependencyAnalyzer();
- List<Contribution> dependencies =
analyzer.calculateContributionDependencies(dependencyWorkspace, contribution);
+ List<Contribution> dependencies =
analyzer.calculateContributionDependencies(workspace, contribution);
// Returns entries for the dependencies
// optionally skip the specified contribution
@@ -287,7 +279,7 @@
// Skip the specified contribution
continue;
}
- entries.add(entry(dependency));
+ entries.add(entry(workspace, dependency));
}
break;
}
@@ -325,10 +317,10 @@
* @param contribution
* @return
*/
- private static Entry<String, Item> entry(Contribution contribution) {
+ 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(contribution));
+ entry.setData(item(workspace, contribution));
return entry;
}
@@ -338,22 +330,104 @@
* @param contribution
* @return
*/
- private static Item item(Contribution contribution) {
+ private static Item item(Workspace workspace, Contribution contribution) {
+ String contributionURI = contribution.getURI();
Item item = new Item();
- item.setTitle(title(contribution));
- item.setLink(contribution.getLocation());
+ item.setTitle(title(contributionURI));
+ item.setLink(link(contributionURI));
+ item.setAlternate(contribution.getLocation());
+
+ // List the contribution dependencies in the item contents
+ StringBuffer sb = new StringBuffer();
+ ContributionDependencyAnalyzer analyzer = new
ContributionDependencyAnalyzer();
+ List<Contribution> dependencies =
analyzer.calculateContributionDependencies(workspace, contribution);
+ 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) +"\">" + compositeTitle(contributionURI, qname) + "</a>");
+ }
+ sb.append("</span><br>");
+ }
+
+ // Store the two lists 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 composite title expressed as contributionURI -
namespace;localpart.
+ * @param qname
+ * @return
+ */
+ private static String compositeTitle(String uri, QName qname) {
+ if (uri.equals(deploymentContributionURI)) {
+ return qname.getLocalPart();
+ } else {
+ return qname.getNamespaceURI() + ";" + qname.getLocalPart();
+ }
+ }
+
+ /**
+ * Returns a link to the source of a composite
+ * @param contributionURI
+ * @param qname
+ * @return
+ */
+ private static String compositeSourceLink(String contributionURI, QName
qname) {
+ return "/composite-source/" + compositeKey(contributionURI, qname);
+ }
+
+ /**
+ * Returns a composite key expressed as
contributionURI;namespace;localpart.
+ * @param qname
+ * @return
+ */
+ private static String compositeKey(String uri, QName qname) {
+ return "composite:" + uri + ';' + qname.getNamespaceURI() + ';' +
qname.getLocalPart();
+ }
+
+ /**
* Returns a title for the given contribution
*
- * @param contribution
+ * @param contributionURI
* @return
*/
- private static String title(Contribution contribution) {
- return contribution.getURI();
+ private static String title(String contributionURI) {
+ return contributionURI;
}
+
/**
* Read the workspace.
@@ -408,7 +482,6 @@
staxProcessor.write(workspace, writer);
// Parse again to pretty format the document
- DocumentBuilder documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = documentBuilder.parse(new
ByteArrayInputStream(bos.toByteArray()));
OutputFormat format = new OutputFormat();
format.setIndenting(true);
@@ -423,4 +496,27 @@
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 dependencyWorkspace = workspaceFactory.createWorkspace();
+ try {
+ for (Contribution c: workspace.getContributions()) {
+ URI uri = URI.create(c.getURI());
+ URL url = url(c.getLocation());
+ Contribution contribution =
(Contribution)contributionInfoProcessor.read(null, uri, url);
+ dependencyWorkspace.getContributions().add(contribution);
+ }
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ return dependencyWorkspace;
+ }
+
}
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java?rev=637484&r1=637483&r2=637484&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
Sat Mar 15 14:43:08 2008
@@ -19,8 +19,6 @@
package org.apache.tuscany.sca.workspace.admin.impl;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -41,12 +39,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.XMLStreamWriter;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
@@ -97,14 +92,11 @@
import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
import org.apache.tuscany.sca.policy.PolicyFactory;
import
org.apache.tuscany.sca.workspace.processor.impl.ContributionContentProcessor;
-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.Reference;
import org.osoa.sca.annotations.Scope;
import org.osoa.sca.annotations.Service;
-import org.w3c.dom.Document;
/**
* Implementation of a deployable composite collection service.
@@ -143,73 +135,67 @@
* Initialize the component.
*/
@Init
- public void initialize() throws IOException, ContributionReadException,
XMLStreamException, ParserConfigurationException {
+ public void initialize() throws ParserConfigurationException {
- try {
-
- // FIXME Remove this later
- // Bootstrap a registry
- ExtensionPointRegistry registry = registry();
-
- // Get model factories
- modelFactories =
registry.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);
- ContributionFactory contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
- PolicyFactory policyFactory =
modelFactories.getFactory(PolicyFactory.class);
-
- // Get and initialize artifact processors
- StAXArtifactProcessorExtensionPoint staxProcessors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- StAXArtifactProcessor<Object> staxProcessor = new
ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
- staxProcessors.addArtifactProcessor(new
ContributionMetadataProcessor(assemblyFactory, contributionFactory,
staxProcessor));
- compositeProcessor =
(StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(Composite.class);
-
- URLArtifactProcessorExtensionPoint urlProcessors =
registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- URLArtifactProcessor<Object> urlProcessor = new
ExtensibleURLArtifactProcessor(urlProcessors);
- urlProcessors.addArtifactProcessor(new
ContributionMetadataDocumentProcessor(staxProcessor, inputFactory));
- urlProcessors.addArtifactProcessor(new
ContributionGeneratedMetadataDocumentProcessor(staxProcessor, inputFactory));
-
- // Create contribution processor
- modelResolvers =
registry.getExtensionPoint(ModelResolverExtensionPoint.class);
- contributionContentProcessor = new
ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor);
- contributionListeners =
registry.getExtensionPoint(ContributionListenerExtensionPoint.class).getContributionListeners();
-
- // Create composite builder
- SCABindingFactory scaBindingFactory =
modelFactories.getFactory(SCABindingFactory.class);
- IntentAttachPointTypeFactory intentAttachPointTypeFactory =
modelFactories.getFactory(IntentAttachPointTypeFactory.class);
- InterfaceContractMapper contractMapper = new
InterfaceContractMapperImpl();
-
- // TODO need to get these messages back to the browser
- CompositeBuilderMonitor monitor = new CompositeBuilderMonitor() {
- public void problem(Problem problem) {
- if (problem.getSeverity() == Severity.INFO) {
- logger.info(problem.toString());
- } else if (problem.getSeverity() == Severity.WARNING) {
- logger.warning(problem.toString());
- } else if (problem.getSeverity() == Severity.ERROR) {
- if (problem.getCause() != null) {
- logger.log(Level.SEVERE, problem.toString(),
problem.getCause());
- } else {
- logger.severe(problem.toString());
- }
+ // FIXME Remove this later
+ // Bootstrap a registry
+ ExtensionPointRegistry registry = registry();
+
+ // Get model factories
+ modelFactories =
registry.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);
+ ContributionFactory contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
+ PolicyFactory policyFactory =
modelFactories.getFactory(PolicyFactory.class);
+
+ // Get and initialize artifact processors
+ StAXArtifactProcessorExtensionPoint staxProcessors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ StAXArtifactProcessor<Object> staxProcessor = new
ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
+ staxProcessors.addArtifactProcessor(new
ContributionMetadataProcessor(assemblyFactory, contributionFactory,
staxProcessor));
+ compositeProcessor =
(StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(Composite.class);
+
+ URLArtifactProcessorExtensionPoint urlProcessors =
registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+ URLArtifactProcessor<Object> urlProcessor = new
ExtensibleURLArtifactProcessor(urlProcessors);
+ urlProcessors.addArtifactProcessor(new
ContributionMetadataDocumentProcessor(staxProcessor, inputFactory));
+ urlProcessors.addArtifactProcessor(new
ContributionGeneratedMetadataDocumentProcessor(staxProcessor, inputFactory));
+
+ // Create contribution processor
+ modelResolvers =
registry.getExtensionPoint(ModelResolverExtensionPoint.class);
+ contributionContentProcessor = new
ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor);
+ contributionListeners =
registry.getExtensionPoint(ContributionListenerExtensionPoint.class).getContributionListeners();
+
+ // Create composite builder
+ SCABindingFactory scaBindingFactory =
modelFactories.getFactory(SCABindingFactory.class);
+ IntentAttachPointTypeFactory intentAttachPointTypeFactory =
modelFactories.getFactory(IntentAttachPointTypeFactory.class);
+ InterfaceContractMapper contractMapper = new
InterfaceContractMapperImpl();
+
+ // TODO need to get these messages back to the browser
+ CompositeBuilderMonitor monitor = new CompositeBuilderMonitor() {
+ public void problem(Problem problem) {
+ if (problem.getSeverity() == Severity.INFO) {
+ logger.info(problem.toString());
+ } else if (problem.getSeverity() == Severity.WARNING) {
+ logger.warning(problem.toString());
+ } else if (problem.getSeverity() == Severity.ERROR) {
+ if (problem.getCause() != null) {
+ logger.log(Level.SEVERE, problem.toString(),
problem.getCause());
+ } else {
+ logger.severe(problem.toString());
}
}
- };
-
- compositeBuilder = new CompositeBuilderImpl(assemblyFactory,
scaBindingFactory, intentAttachPointTypeFactory,
- contractMapper,
monitor);
-
- compositeConfigurationBuilder = new
CompositeConfigurationBuilderImpl(assemblyFactory,
-
scaBindingFactory,
-
intentAttachPointTypeFactory,
-
contractMapper,
-
monitor);
-
- } catch (Exception e) {
- throw new ContributionReadException(e);
- }
+ }
+ };
+
+ compositeBuilder = new CompositeBuilderImpl(assemblyFactory,
scaBindingFactory, intentAttachPointTypeFactory,
+ contractMapper, monitor);
+
+ compositeConfigurationBuilder = new
CompositeConfigurationBuilderImpl(assemblyFactory,
+
scaBindingFactory,
+
intentAttachPointTypeFactory,
+
contractMapper,
+
monitor);
}
public Entry<String, Item>[] getAll() {
@@ -221,9 +207,10 @@
// Read contribution metadata
for (Entry<String, Item> contributionEntry: contributionEntries) {
+ Item contributionItem = contributionEntry.getData();
Contribution contribution;
try {
- contribution = contribution(contributionEntry.getKey(),
contributionEntry.getData().getLink());
+ contribution = contribution(contributionEntry.getKey(),
contributionItem.getAlternate());
} catch (ContributionReadException e) {
continue;
}
@@ -246,7 +233,7 @@
// Read the contribution
Contribution contribution;
try {
- contribution = contribution(contributionURI,
contributionItem.getLink());
+ contribution = contribution(contributionURI,
contributionItem.getAlternate());
} catch (ContributionReadException e) {
throw new NotFoundException(key);
}
@@ -295,7 +282,7 @@
// Read the contribution
Contribution contribution;
try {
- contribution = contribution(contributionURI,
contributionItem.getLink());
+ contribution = contribution(contributionURI,
contributionItem.getAlternate());
} catch (ContributionReadException e) {
return entries.toArray(new Entry[entries.size()]);
}
@@ -354,7 +341,7 @@
// Read the contribution
Contribution c;
try {
- c = contribution(loadedContributions, entry.getKey(),
contributionItem.getLink());
+ c = contribution(loadedContributions, entry.getKey(),
contributionItem.getAlternate());
} catch (ContributionReadException e) {
continue;
}
@@ -459,22 +446,9 @@
// Write the deployable composite
try {
- // First write to a byte stream
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos);
+ response.setContentType("text/xml");
+ XMLStreamWriter writer =
outputFactory.createXMLStreamWriter(response.getOutputStream());
compositeProcessor.write(compositeImage, writer);
-
- // Parse again to pretty format the document
- DocumentBuilder documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
- Document document = documentBuilder.parse(new
ByteArrayInputStream(bos.toByteArray()));
- OutputFormat format = new OutputFormat();
- format.setIndenting(true);
- format.setIndent(2);
-
- // Write to the response stream
- XMLSerializer serializer = new
XMLSerializer(response.getOutputStream(), format);
- serializer.serialize(document);
-
} catch (Exception e) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
e.toString());
}
@@ -508,7 +482,7 @@
// Read the contribution
try {
- contribution = contribution(loadedContributions,
contributionURI, contributionItem.getLink());
+ contribution = contribution(loadedContributions,
contributionURI, contributionItem.getAlternate());
} catch (ContributionReadException e) {
continue;
}
@@ -531,15 +505,17 @@
/**
* Returns the contribution with the given URI.
*
+ * @param contributions
* @param contributionURI
+ * @param contributionLocation
* @return
* @throws NotFoundException
*/
- private Contribution contribution(List<Contribution> contributions, String
contributionURI, String contributionURL) throws ContributionReadException {
+ private Contribution contribution(List<Contribution> contributions, String
contributionURI, String contributionLocation) throws ContributionReadException {
try {
URI uri = URI.create(contributionURI);
- URL url = url(contributionURL);
- Contribution contribution =
(Contribution)contributionContentProcessor.read(null, uri, url);
+ URL location = url(contributionLocation);
+ Contribution contribution =
(Contribution)contributionContentProcessor.read(null, uri, location);
// FIXME simplify this later
// Fix up contribution imports
@@ -571,8 +547,16 @@
}
}
- private Contribution contribution(String contributionURI, String
contributionURL) throws ContributionReadException {
- return contribution(new ArrayList<Contribution>(), contributionURI,
contributionURL);
+ /**
+ * Returns the contribution with the given URI.
+ *
+ * @param contributionURI
+ * @param contributionLocation
+ * @return
+ * @throws NotFoundException
+ */
+ private Contribution contribution(String contributionURI, String
contributionLocation) throws ContributionReadException {
+ return contribution(new ArrayList<Contribution>(), contributionURI,
contributionLocation);
}
/**
@@ -607,6 +591,12 @@
}
}
+ /**
+ * Returns a link to the source of a composite
+ * @param contributionURI
+ * @param qname
+ * @return
+ */
private static String sourceLink(String contributionURI, QName qname) {
return "/composite-source/" + key(contributionURI, qname);
}
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java?rev=637484&r1=637483&r2=637484&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployedCompositeCollectionImpl.java
Sat Mar 15 14:43:08 2008
@@ -45,6 +45,7 @@
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;
@@ -98,12 +99,13 @@
private AssemblyFactory assemblyFactory;
private CompositeProcessor compositeProcessor;
private XMLOutputFactory outputFactory;
+ private DocumentBuilder documentBuilder;
/**
* Initialize the component.
*/
@Init
- public void initialize() {
+ public void initialize() throws ParserConfigurationException {
// Create factories
modelFactories = new DefaultModelFactoryExtensionPoint();
@@ -115,6 +117,9 @@
ContributionFactory contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
PolicyFactory policyFactory =
modelFactories.getFactory(PolicyFactory.class);
compositeProcessor = new CompositeProcessor(contributionFactory,
assemblyFactory, policyFactory, null);
+
+ // Create a document builder (used to pretty print XML)
+ documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
}
public Entry<String, Item>[] getAll() {
@@ -178,7 +183,8 @@
}
}
- // Read the composite file and write to response
+ // Read the composite file and write to response
+ response.setContentType("text/xml");
URLConnection connection = new URL(uri).openConnection();
connection.setUseCaches(false);
connection.connect();
@@ -330,7 +336,6 @@
compositeProcessor.write(compositeCollection, writer);
// Parse again to pretty format the document
- DocumentBuilder documentBuilder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = documentBuilder.parse(new
ByteArrayInputStream(bos.toByteArray()));
OutputFormat format = new OutputFormat();
format.setIndenting(true);
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html?rev=637484&r1=637483&r2=637484&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
Sat Mar 15 14:43:08 2008
@@ -37,15 +37,35 @@
var entries = feed.getElementsByTagName("entry");
var contributions = "";
contributions += '<table width="100%">';
- contributions +=
'<tr><th>Contribution</th><th>Dependencies</td><th>Deployables</th></tr>';
+ contributions +=
'<tr><th>Contribution</th><th>Dependencies</td><th>Deployable
Composites</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");
+ 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>';
- contributions += '<td><a
href=\"/workspace/?dependencies=' + id + '\"><img src="icons/feed-icon.png"
border="0"></a></td>';
- contributions += '<td><a
href=\"/deployable/?contribution=' + id + '\"><img src="icons/feed-icon.png"
border="0"></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);
+ }
+
+ contributions += '<td class=tdw>' +
dependencies +' </td>';
+ contributions += '<td class=tdw>' + deployables
+ '</td>';
contributions += '</tr>';
}
contributions += '</table>';
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java?rev=637484&r1=637483&r2=637484&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/test/java/org/apache/tuscany/sca/workspace/admin/impl/AdminTestCase.java
Sat Mar 15 14:43:08 2008
@@ -84,7 +84,7 @@
public void testGet() throws NotFoundException {
Item item = contributionCollection.get("assets");
- assertTrue(item.getLink().endsWith("contributions/assets"));
+ assertTrue(item.getAlternate().endsWith("contributions/assets/"));
}
public void testDependencies1() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]