diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/node-impl')
2 files changed, 65 insertions, 40 deletions
diff --git a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java index 2d46a8659b..a97f40e943 100644 --- a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java +++ b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java @@ -73,6 +73,7 @@ import org.apache.tuscany.sca.node.configuration.DefaultNodeConfigurationFactory import org.apache.tuscany.sca.node.configuration.DeploymentComposite; import org.apache.tuscany.sca.node.configuration.NodeConfiguration; import org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory; +import org.apache.tuscany.sca.node.extensibility.NodeExtension; import org.apache.tuscany.sca.runtime.DomainRegistryFactory; import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory; import org.apache.tuscany.sca.runtime.RuntimeProperties; @@ -482,4 +483,22 @@ public class NodeFactoryImpl extends NodeFactory { autoDestroy = b; } + /** + * Create and load a node + * @param configuration + * @return The node + */ + public NodeExtension loadNode(NodeConfiguration configuration) { + Node node = createNode(configuration); + + try { + NodeImpl nodeImpl = ((NodeImpl) node); + nodeImpl.load(); + return nodeImpl; + } catch (Throwable e) { + throw new ServiceRuntimeException(e); + } + } + + } diff --git a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java index aae077b11c..eaffdac602 100644 --- a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java +++ b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java @@ -53,8 +53,8 @@ import org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint; import org.apache.tuscany.sca.node.extensibility.NodeExtension; import org.apache.tuscany.sca.runtime.ActivationException; import org.apache.tuscany.sca.runtime.CompositeActivator; -import org.apache.tuscany.sca.runtime.DomainRegistryFactory; import org.apache.tuscany.sca.runtime.DomainRegistry; +import org.apache.tuscany.sca.runtime.DomainRegistryFactory; import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory; import org.apache.tuscany.sca.runtime.RuntimeComponent; import org.apache.tuscany.sca.runtime.RuntimeComponentService; @@ -114,50 +114,29 @@ public class NodeImpl implements Node, NodeExtension { public Node start() { logger.log(nodeFactory.quietLogging? Level.FINE : Level.INFO, "Starting node: " + configuration.getURI() + " domain: " + configuration.getDomainURI()); - nodeFactory.init(); - nodeFactory.addNode(configuration, this); - this.proxyFactory = nodeFactory.proxyFactory; - try { - Monitor monitor = nodeFactory.monitorFactory.createMonitor(); - ProcessorContext context = new ProcessorContext(monitor); - - // Set up the thead context monitor - Monitor tcm = nodeFactory.monitorFactory.setContextMonitor(monitor); - try { - // Use the lack of the contributions collection as an indicator for when the node - // is being started for the first time. If it is the first time do all the work - // to read the contributions and create the domain composite - if (contributions == null) { - contributions = nodeFactory.loadContributions(configuration, context); - } - - if (domainComposite == null) { - - UtilityExtensionPoint utilities = nodeFactory.registry.getExtensionPoint(UtilityExtensionPoint.class); - this.compositeActivator = utilities.getUtility(CompositeActivator.class); + load(); - domainComposite = nodeFactory.configureNode(configuration, contributions, context); + nodeFactory.addNode(configuration, this); + this.proxyFactory = nodeFactory.proxyFactory; - DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(nodeFactory.registry); - DomainRegistry domainRegistry = - domainRegistryFactory.getEndpointRegistry(configuration.getDomainRegistryURI(), configuration.getDomainURI()); + // Set up the node context + UtilityExtensionPoint utilities = nodeFactory.registry.getExtensionPoint(UtilityExtensionPoint.class); + this.compositeActivator = utilities.getUtility(CompositeActivator.class); - this.compositeContext = - new CompositeContext(nodeFactory.registry, - domainRegistry, - domainComposite, - configuration.getDomainURI(), - configuration.getURI(), - nodeFactory.getDeployer().getSystemDefinitions()); - // Pass down the context attributes - compositeContext.getAttributes().putAll(configuration.getAttributes()); - } + DomainRegistryFactory domainRegistryFactory = + ExtensibleDomainRegistryFactory.getInstance(nodeFactory.registry); + DomainRegistry domainRegistry = + domainRegistryFactory.getEndpointRegistry(configuration.getDomainRegistryURI(), + configuration.getDomainURI()); - } finally { - // Reset the thread context monitor - nodeFactory.monitorFactory.setContextMonitor(tcm); - } + this.compositeContext = + new CompositeContext(nodeFactory.registry, domainRegistry, domainComposite, + configuration.getDomainURI(), configuration.getURI(), nodeFactory + .getDeployer().getSystemDefinitions()); + // Pass down the context attributes + compositeContext.getAttributes().putAll(configuration.getAttributes()); + // Activate the composite compositeActivator.activate(compositeContext, domainComposite); @@ -197,6 +176,33 @@ public class NodeImpl implements Node, NodeExtension { } + public void load() throws Throwable { + nodeFactory.init(); + + Monitor monitor = nodeFactory.monitorFactory.createMonitor(); + ProcessorContext context = new ProcessorContext(monitor); + + // Set up the thead context monitor + Monitor tcm = nodeFactory.monitorFactory.setContextMonitor(monitor); + try { + // Use the lack of the contributions collection as an indicator for when the node + // is being started for the first time. If it is the first time do all the work + // to read the contributions and create the domain composite + if (contributions == null) { + contributions = nodeFactory.loadContributions(configuration, context); + } + + if (domainComposite == null) { + domainComposite = nodeFactory.configureNode(configuration, contributions, context); + } + + + } finally { + // Reset the thread context monitor + nodeFactory.monitorFactory.setContextMonitor(tcm); + } + } + public void stop() { logger.log(nodeFactory.quietLogging? Level.FINE : Level.INFO, "Stopping node: " + configuration.getURI()); |