summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java204
1 files changed, 112 insertions, 92 deletions
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
index 3a76f9e1ec..007c0dde1f 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
@@ -48,9 +48,6 @@ import org.apache.tuscany.sca.assembly.Composite;
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.ServiceReference;
import org.oasisopen.sca.ServiceRuntimeException;
import org.oasisopen.sca.client.SCAClient;
-
/**
* Represents an SCA runtime node.
*
@@ -122,6 +118,7 @@ public class NodeImpl implements Node, Client, SCAClient {
// The composite loaded into this node
private Composite composite;
+ private boolean useDeploymentComposite;
private ExtensionPointRegistry extensionPoints;
private Monitor monitor;
@@ -159,14 +156,16 @@ public class NodeImpl implements Node, Client, SCAClient {
}
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
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 @@ public class NodeImpl implements Node, Client, SCAClient {
// 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 @@ public class NodeImpl implements Node, Client, SCAClient {
// 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 @@ public class NodeImpl implements Node, Client, SCAClient {
// 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 @@ public class NodeImpl implements Node, Client, SCAClient {
// 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) {
+ Artifact resolvedArtifact = resolver.resolveModel(Artifact.class, compositeFile);
+ if (!resolvedArtifact.isUnresolved() && resolvedArtifact.getModel() instanceof Composite) {
- if (!composite.isUnresolved()) {
+ 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);
+ // 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 {
+ } 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();
+ }
+ 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() );
+ 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);
+ }
+ }
+
+ // 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 class NodeImpl implements Node, Client, SCAClient {
public void destroy() {
// Stop the runtime modules
- for (ModuleActivator moduleActivator: moduleActivators) {
+ for (ModuleActivator moduleActivator : moduleActivators) {
moduleActivator.stop(extensionPoints);
}
@@ -803,7 +822,8 @@ public class NodeImpl implements Node, Client, SCAClient {
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);
}
}