Author: rfeng
Date: Fri May 1 18:13:28 2009
New Revision: 770779
URL: http://svn.apache.org/viewvc?rev=770779&view=rev
Log:
Add the check for deployment composite from the XML string value
Modified:
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Modified:
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=770779&r1=770778&r2=770779&view=diff
==============================================================================
---
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
(original)
+++
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Fri May 1 18:13:28 2009
@@ -48,9 +48,6 @@
import org.apache.tuscany.sca.assembly.CompositeService;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
-// Added MJE 28/04/2009
-import org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor;
-//
import org.apache.tuscany.sca.contribution.Artifact;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionFactory;
@@ -105,7 +102,6 @@
import org.oasisopen.sca.ServiceRuntimeException;
import org.oasisopen.sca.client.SCAClient;
-
/**
* Represents an SCA runtime node.
*
@@ -122,6 +118,7 @@
// The composite loaded into this node
private Composite composite;
+ private boolean useDeploymentComposite;
private ExtensionPointRegistry extensionPoints;
private Monitor monitor;
@@ -159,14 +156,16 @@
}
String compositeURI = null;
- org.apache.tuscany.sca.node.Contribution[] contributions = new
org.apache.tuscany.sca.node.Contribution[]{new
org.apache.tuscany.sca.node.Contribution(root, root)};
+ org.apache.tuscany.sca.node.Contribution[] contributions =
+ new org.apache.tuscany.sca.node.Contribution[] {new
org.apache.tuscany.sca.node.Contribution(root, root)};
try {
// Initialize the runtime
init();
// Create a node configuration
- NodeImplementationFactory nodeImplementationFactory =
modelFactories.getFactory(NodeImplementationFactory.class);
+ NodeImplementationFactory nodeImplementationFactory =
+ modelFactories.getFactory(NodeImplementationFactory.class);
ConfiguredNodeImplementation configuration =
nodeImplementationFactory.createConfiguredNodeImplementation();
if (compositeURI != null) {
@@ -176,7 +175,7 @@
configuration.setComposite(composite);
}
- // Create contribution models
+ // Create contribution models
for (org.apache.tuscany.sca.node.Contribution c : contributions) {
Contribution contribution = contribution(contributionFactory,
c);
configuration.getContributions().add(contribution);
@@ -204,7 +203,8 @@
init();
// Read the node configuration feed
- StAXArtifactProcessor<ConfiguredNodeImplementation>
configurationProcessor =
xmlProcessors.getProcessor(ConfiguredNodeImplementation.class);
+ StAXArtifactProcessor<ConfiguredNodeImplementation>
configurationProcessor =
+ xmlProcessors.getProcessor(ConfiguredNodeImplementation.class);
URL configurationURL = new URL(configurationURI);
InputStream is = configurationURL.openStream();
XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
@@ -245,7 +245,8 @@
init();
// Create a node configuration
- NodeImplementationFactory nodeImplementationFactory =
modelFactories.getFactory(NodeImplementationFactory.class);
+ NodeImplementationFactory nodeImplementationFactory =
+ modelFactories.getFactory(NodeImplementationFactory.class);
ConfiguredNodeImplementation configuration =
nodeImplementationFactory.createConfiguredNodeImplementation();
if (compositeURI != null) {
@@ -255,7 +256,7 @@
configuration.setComposite(composite);
}
- // Create contribution models
+ // Create contribution models
for (org.apache.tuscany.sca.node.Contribution c : contributions) {
Contribution contribution = contribution(contributionFactory,
c);
configuration.getContributions().add(contribution);
@@ -285,19 +286,22 @@
init();
// Create a node configuration
- NodeImplementationFactory nodeImplementationFactory =
modelFactories.getFactory(NodeImplementationFactory.class);
+ NodeImplementationFactory nodeImplementationFactory =
+ modelFactories.getFactory(NodeImplementationFactory.class);
ConfiguredNodeImplementation configuration =
nodeImplementationFactory.createConfiguredNodeImplementation();
// Read the composite model
logger.log(Level.INFO, "Loading composite: " + compositeURI);
- XMLStreamReader reader = inputFactory.createXMLStreamReader(new
ByteArrayInputStream(compositeContent.getBytes("UTF-8")));
+ XMLStreamReader reader =
+ inputFactory.createXMLStreamReader(new
ByteArrayInputStream(compositeContent.getBytes("UTF-8")));
reader.nextTag();
// Read the composite model
composite = (Composite)compositeProcessor.read(reader);
if (composite != null && compositeURI != null) {
composite.setURI(compositeURI);
+ useDeploymentComposite = true;
}
analyzeProblems();
@@ -354,8 +358,9 @@
monitor = monitorFactory.createMonitor();
// Initialize the Tuscany module activators
- ModuleActivatorExtensionPoint activators =
extensionPoints.getExtensionPoint(ModuleActivatorExtensionPoint.class);
- for (ModuleActivator moduleActivator:
activators.getModuleActivators()) {
+ ModuleActivatorExtensionPoint activators =
+
extensionPoints.getExtensionPoint(ModuleActivatorExtensionPoint.class);
+ for (ModuleActivator moduleActivator :
activators.getModuleActivators()) {
try {
moduleActivator.start(extensionPoints);
moduleActivators.add(moduleActivator);
@@ -377,9 +382,10 @@
compositeProcessor = xmlProcessors.getProcessor(Composite.class);
// Create contribution content processor
- URLArtifactProcessorExtensionPoint docProcessorExtensions =
extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+ URLArtifactProcessorExtensionPoint docProcessorExtensions =
+
extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
contributionProcessor =
docProcessorExtensions.getProcessor(Contribution.class);
-
+
// Added MJE 28/04/2009
// Create Composite Document processor
compositeDocumentProcessor =
docProcessorExtensions.getProcessor(Composite.class);
@@ -388,16 +394,22 @@
modelResolvers =
extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
// Get a contribution dependency builder
- ContributionBuilderExtensionPoint contributionBuilders =
extensionPoints.getExtensionPoint(ContributionBuilderExtensionPoint.class);
- contributionDependencyBuilder =
contributionBuilders.getContributionBuilder("org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder");
+ ContributionBuilderExtensionPoint contributionBuilders =
+
extensionPoints.getExtensionPoint(ContributionBuilderExtensionPoint.class);
+ contributionDependencyBuilder =
+ contributionBuilders
+
.getContributionBuilder("org.apache.tuscany.sca.workspace.builder.ContributionDependencyBuilder");
// Get composite builders
- CompositeBuilderExtensionPoint compositeBuilders =
extensionPoints.getExtensionPoint(CompositeBuilderExtensionPoint.class);
- compositeBuilder =
compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.assembly.builder.CompositeBuilder");
+ CompositeBuilderExtensionPoint compositeBuilders =
+
extensionPoints.getExtensionPoint(CompositeBuilderExtensionPoint.class);
+ compositeBuilder =
+
compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.assembly.builder.CompositeBuilder");
// Get endpoint builders
// TODO - new extension point?
- endpointReferenceBuilder =
compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.endpoint.impl.EndpointReferenceBuilderImpl");
+ endpointReferenceBuilder =
+
compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.endpoint.impl.EndpointReferenceBuilderImpl");
// Initialize runtime
@@ -412,14 +424,16 @@
DefinitionsFactory definitionsFactory =
modelFactories.getFactory(DefinitionsFactory.class);
systemDefinitions = definitionsFactory.createDefinitions();
-
- DefinitionsExtensionPoint definitionsExtensionPoint =
extensionPoints.getExtensionPoint(DefinitionsExtensionPoint.class);
- for(Definitions defs: definitionsExtensionPoint.getDefinitions()) {
+
+ DefinitionsExtensionPoint definitionsExtensionPoint =
+ extensionPoints.getExtensionPoint(DefinitionsExtensionPoint.class);
+ for (Definitions defs : definitionsExtensionPoint.getDefinitions()) {
DefinitionsUtil.aggregate(systemDefinitions, defs);
}
-
+
// Load the system definitions.xml from all of the loaded extension
points
- DefinitionsProviderExtensionPoint definitionsProviders =
extensionPoints.getExtensionPoint(DefinitionsProviderExtensionPoint.class);
+ DefinitionsProviderExtensionPoint definitionsProviders =
+
extensionPoints.getExtensionPoint(DefinitionsProviderExtensionPoint.class);
// aggregate all the definitions into a single definitions model
try {
@@ -451,31 +465,30 @@
// don't resolve the system contribution until all the application
// level definitions have been added
-
-//
-// // Configure a resolver for the system definitions
-// ModelResolver definitionsResolver = new DefaultModelResolver();
-// for (Intent intent : systemDefinitions.getPolicyIntents()) {
-// definitionsResolver.addModel(intent);
-// }
-// for (PolicySet policySet : systemDefinitions.getPolicySets()) {
-// definitionsResolver.addModel(policySet);
-// }
-// for (ExtensionType bindingType :
systemDefinitions.getBindingTypes()) {
-// definitionsResolver.addModel(bindingType);
-// }
-// for (ExtensionType implementationType :
systemDefinitions.getImplementationTypes()) {
-// definitionsResolver.addModel(implementationType);
-// }
-//
-// // Now that all system sca definitions have been read, let's resolve
them
-// URLArtifactProcessorExtensionPoint documentProcessors =
extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
-// URLArtifactProcessor<Definitions> definitionsProcessor =
documentProcessors.getProcessor(Definitions.class);
-// try {
-// definitionsProcessor.resolve(systemDefinitions,
definitionsResolver);
-// } catch (ContributionResolveException e) {
-// throw new IllegalStateException(e);
-// }
+ //
+ // // Configure a resolver for the system definitions
+ // ModelResolver definitionsResolver = new
DefaultModelResolver();
+ // for (Intent intent : systemDefinitions.getPolicyIntents()) {
+ // definitionsResolver.addModel(intent);
+ // }
+ // for (PolicySet policySet :
systemDefinitions.getPolicySets()) {
+ // definitionsResolver.addModel(policySet);
+ // }
+ // for (ExtensionType bindingType :
systemDefinitions.getBindingTypes()) {
+ // definitionsResolver.addModel(bindingType);
+ // }
+ // for (ExtensionType implementationType :
systemDefinitions.getImplementationTypes()) {
+ // definitionsResolver.addModel(implementationType);
+ // }
+ //
+ // // Now that all system sca definitions have been read, let's
resolve them
+ // URLArtifactProcessorExtensionPoint documentProcessors =
extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+ // URLArtifactProcessor<Definitions> definitionsProcessor =
documentProcessors.getProcessor(Definitions.class);
+ // try {
+ // definitionsProcessor.resolve(systemDefinitions,
definitionsResolver);
+ // } catch (ContributionResolveException e) {
+ // throw new IllegalStateException(e);
+ // }
if (logger.isLoggable(Level.FINE)) {
long end = currentTimeMillis();
@@ -514,7 +527,7 @@
// into the system contribution. In turn add a default import into
// each contribution so that for unresolved items the resolution
// processing will look in the system contribution
- for (Contribution contribution: workspace.getContributions()) {
+ for (Contribution contribution : workspace.getContributions()) {
// aggregate definitions
for (Artifact artifact : contribution.getArtifacts()) {
Object model = artifact.getModel();
@@ -541,11 +554,11 @@
// Build the contribution dependencies
Set<Contribution> resolved = new HashSet<Contribution>();
- for (Contribution contribution: workspace.getContributions()) {
+ for (Contribution contribution : workspace.getContributions()) {
contributionDependencyBuilder.build(contribution, workspace,
monitor);
// Resolve contributions
- for (Contribution dependency: contribution.getDependencies()) {
+ for (Contribution dependency : contribution.getDependencies()) {
if (!resolved.contains(dependency)) {
resolved.add(dependency);
contributionProcessor.resolve(dependency,
workspace.getModelResolver());
@@ -563,49 +576,55 @@
// Find the composite in the given contributions
boolean found = false;
- Artifact compositeFile = contributionFactory.createArtifact();
- compositeFile.setUnresolved(true);
- compositeFile.setURI(composite.getURI());
- for (Contribution contribution: workspace.getContributions()) {
- ModelResolver resolver = contribution.getModelResolver();
+ if (!useDeploymentComposite) {
+ Artifact compositeFile = contributionFactory.createArtifact();
+ compositeFile.setUnresolved(true);
+ compositeFile.setURI(composite.getURI());
+ for (Contribution contribution : workspace.getContributions()) {
+ ModelResolver resolver = contribution.getModelResolver();
+
+ Artifact resolvedArtifact =
resolver.resolveModel(Artifact.class, compositeFile);
+ if (!resolvedArtifact.isUnresolved() &&
resolvedArtifact.getModel() instanceof Composite) {
+
+ if (!composite.isUnresolved()) {
+
+ // The composite content was passed into the node and
read into a composite model,
+ // don't use the composite found in the contribution,
use that composite, but just resolve
+ // it within the context of the contribution
+ compositeProcessor.resolve(composite, resolver);
- Artifact resolvedArtifact = resolver.resolveModel(Artifact.class,
compositeFile);
- if (!resolvedArtifact.isUnresolved() &&
resolvedArtifact.getModel() instanceof Composite) {
+ } else {
- if (!composite.isUnresolved()) {
-
- // The composite content was passed into the node and read
into a composite model,
- // don't use the composite found in the contribution, use
that composite, but just resolve
- // it within the context of the contribution
- compositeProcessor.resolve(composite, resolver);
-
- } else {
+ // Use the resolved composite we've found in the
contribution
+ composite = (Composite)resolvedArtifact.getModel();
+ }
+ found = true;
+ break;
+ } // end if
+ } // end for
+ }
- // Use the resolved composite we've found in the
contribution
- composite = (Composite)resolvedArtifact.getModel();
+ if (!found) {
+ if (!useDeploymentComposite) {
+ // If the composite was not found, then it must be a separate
composite file outside any of the contributions
+ // - a "composite by value" - this requires its URI to be
absolute and pointing at the composite file itself.
+ // First read in the composite file to create a composite
model object...
+ URI compositeURI = new URI(composite.getURI());
+ URL compositeURL = compositeURI.toURL();
+ composite = compositeDocumentProcessor.read(compositeURL,
compositeURI, compositeURL);
+ if (composite == null) {
+ throw new IllegalArgumentException("Composite not found: "
+ compositeURI);
}
- found = true;
- break;
- } // end if
- } // end for
+ }
- if (!found) {
- // If the composite was not found, then it must be a separate
composite file outside any of the contributions
- // - a "composite by value" - this requires its URI to be
absolute and pointing at the composite file itself.
- // First read in the composite file to create a composite model
object...
- URI compositeURI = new URI(composite.getURI());
- URL compositeURL = compositeURI.toURL();
- composite = compositeDocumentProcessor.read(compositeURL,
compositeURI, compositeURL);
- if( composite == null ) {
- throw new IllegalArgumentException("Composite not
found: " + compositeURI);
- }
-
- // Resolve the "composite by value" against the FIRST
contribution
- Contribution contribution = workspace.getContributions().get(0);
- ModelResolver resolver = contribution.getModelResolver();
- compositeProcessor.resolve(composite, resolver);
- if( composite.isUnresolved() ) {
- throw new IllegalArgumentException("Could not resolve
composite: " + compositeURI + " in contribution " + contribution.getURI() );
+ // Resolve the "composite by value" against the FIRST contribution
+ Contribution contribution = workspace.getContributions().get(0);
+ ModelResolver resolver = contribution.getModelResolver();
+ compositeProcessor.resolve(composite, resolver);
+ if (composite.isUnresolved()) {
+ throw new IllegalArgumentException("Could not resolve
composite: " + composite.getURI()
+ + " in contribution "
+ + contribution.getURI());
}
} // end if
@@ -684,7 +703,7 @@
public void destroy() {
// Stop the runtime modules
- for (ModuleActivator moduleActivator: moduleActivators) {
+ for (ModuleActivator moduleActivator : moduleActivators) {
moduleActivator.stop(extensionPoints);
}
@@ -803,7 +822,8 @@
return extensionPoints;
}
- public <T> T getService(Class<T> businessInterface, String serviceName,
URI domainURI) throws NoSuchServiceException, NoSuchDomainException {
+ public <T> T getService(Class<T> businessInterface, String serviceName,
URI domainURI)
+ throws NoSuchServiceException, NoSuchDomainException {
return getService(businessInterface, serviceName);
}
}