Author: lresende
Date: Tue Mar 29 18:25:37 2011
New Revision: 1086667
URL: http://svn.apache.org/viewvc?rev=1086667&view=rev
Log:
TUSCANY-3496 - Adding extensibility to node api to allow other applications to
tap to it and provide services that require introspecting node metadata
Added:
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivator.java
- copied, changed from r1086614,
tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivatorExtensionPoint.java
- copied, changed from r1086614,
tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeExtension.java
- copied, changed from r1086614,
tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java
(with props)
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint
Modified:
tuscany/sca-java-2.x/trunk/modules/node-api/META-INF/MANIFEST.MF
tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java
tuscany/sca-java-2.x/trunk/modules/node-impl/META-INF/MANIFEST.MF
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Modified: tuscany/sca-java-2.x/trunk/modules/node-api/META-INF/MANIFEST.MF
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/META-INF/MANIFEST.MF?rev=1086667&r1=1086666&r2=1086667&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-api/META-INF/MANIFEST.MF Tue Mar 29
18:25:37 2011
@@ -1,6 +1,7 @@
Manifest-Version: 1.0
Export-Package:
org.apache.tuscany.sca.node;version="2.0.0";uses:="org.oasisopen.sca",
- org.apache.tuscany.sca.node.configuration;version="2.0.0"
+ org.apache.tuscany.sca.node.configuration;version="2.0.0",
+ org.apache.tuscany.sca.node.extensibility
SCA-Version: 1.1
Bundle-Name: Apache Tuscany SCA Node API
DynamicImport-Package: org.apache.tuscany.sca.node.impl,org.apache.tus
@@ -10,7 +11,8 @@ Bundle-Version: 2.0.0
Bundle-ManifestVersion: 2
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-Description: Apache Tuscany SCA Node API
-Import-Package: org.apache.tuscany.sca.node;version="2.0.0",
+Import-Package: org.apache.tuscany.sca.assembly,
+ org.apache.tuscany.sca.node;version="2.0.0",
org.apache.tuscany.sca.node.configuration;version="2.0.0",
org.oasisopen.sca;version="2.0.0"
Bundle-SymbolicName: org.apache.tuscany.sca.node.api
Modified: tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml?rev=1086667&r1=1086666&r2=1086667&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml Tue Mar 29 18:25:37 2011
@@ -30,12 +30,17 @@
<artifactId>tuscany-node-api</artifactId>
<name>Apache Tuscany SCA Node API</name>
- <dependencies>
+ <dependencies>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-sca-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-assembly</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
Modified:
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java?rev=1086667&r1=1086666&r2=1086667&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java
Tue Mar 29 18:25:37 2011
@@ -22,9 +22,6 @@ package org.apache.tuscany.sca.node;
import org.apache.tuscany.sca.node.configuration.NodeConfiguration;
import org.oasisopen.sca.ServiceReference;
-
-
-
/**
* Represents an SCA processing node.
* A node is loaded with an SCA composites. It can start and stop that
composite.
@@ -82,5 +79,5 @@ public interface Node {
* @param <B> the Java type of the business interface for the service
* @return a ServiceReference for the designated service
*/
- <B> ServiceReference<B> getServiceReference(Class<B> businessInterface,
String serviceName);
+ <B> ServiceReference<B> getServiceReference(Class<B> businessInterface,
String serviceName);
}
Copied:
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivator.java
(from r1086614, tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml)
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivator.java?p2=tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivator.java&p1=tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml&r1=1086614&r2=1086667&rev=1086667&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml (original)
+++
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivator.java
Tue Mar 29 18:25:37 2011
@@ -1,5 +1,4 @@
-<?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
@@ -16,26 +15,15 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
--->
-<project>
+ */
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-modules</artifactId>
- <version>2.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
+package org.apache.tuscany.sca.node.extensibility;
- <artifactId>tuscany-node-api</artifactId>
- <name>Apache Tuscany SCA Node API</name>
+import org.apache.tuscany.sca.node.Node;
- <dependencies>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-sca-api</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
+public interface NodeActivator {
-</project>
+ void nodeStarted(Node node);
+
+ void nodeStopped(Node node);
+}
Copied:
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivatorExtensionPoint.java
(from r1086614, tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml)
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivatorExtensionPoint.java?p2=tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivatorExtensionPoint.java&p1=tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml&r1=1086614&r2=1086667&rev=1086667&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml (original)
+++
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeActivatorExtensionPoint.java
Tue Mar 29 18:25:37 2011
@@ -1,5 +1,4 @@
-<?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
@@ -16,26 +15,18 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
--->
-<project>
+ */
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-modules</artifactId>
- <version>2.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>tuscany-node-api</artifactId>
- <name>Apache Tuscany SCA Node API</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-sca-api</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
+package org.apache.tuscany.sca.node.extensibility;
-</project>
+import java.util.List;
+
+
+public interface NodeActivatorExtensionPoint extends NodeActivator {
+
+ void addNodeActivator(NodeActivator listener);
+
+ void removeNodeActivator(NodeActivator listener);
+
+ List<NodeActivator> getNodeActivators();
+}
Copied:
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeExtension.java
(from r1086614, tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml)
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeExtension.java?p2=tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeExtension.java&p1=tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml&r1=1086614&r2=1086667&rev=1086667&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/pom.xml (original)
+++
tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/extensibility/NodeExtension.java
Tue Mar 29 18:25:37 2011
@@ -1,5 +1,4 @@
-<?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
@@ -16,26 +15,24 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
--->
-<project>
+ */
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-modules</artifactId>
- <version>2.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>tuscany-node-api</artifactId>
- <name>Apache Tuscany SCA Node API</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-sca-api</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
+package org.apache.tuscany.sca.node.extensibility;
-</project>
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.configuration.NodeConfiguration;
+
+public interface NodeExtension extends Node {
+
+ String getURI();
+
+ String getDomainURI();
+
+ NodeConfiguration getConfiguration();
+
+ Composite getDomainComposite();
+
+ ExtensionPointRegistry getExtensionPointRegistry();
+}
Modified: tuscany/sca-java-2.x/trunk/modules/node-impl/META-INF/MANIFEST.MF
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl/META-INF/MANIFEST.MF?rev=1086667&r1=1086666&r2=1086667&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-impl/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-impl/META-INF/MANIFEST.MF Tue Mar
29 18:25:37 2011
@@ -30,6 +30,7 @@ Import-Package: javax.management;resolut
org.apache.tuscany.sca.monitor;version="2.0.0",
org.apache.tuscany.sca.node;version="2.0.0",
org.apache.tuscany.sca.node.configuration;version="2.0.0",
+ org.apache.tuscany.sca.node.extensibility,
org.apache.tuscany.sca.node.impl;version="2.0.0",
org.apache.tuscany.sca.runtime;version="2.0.0",
org.apache.tuscany.sca.work;version="2.0.0",
Added:
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java?rev=1086667&view=auto
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java
(added)
+++
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java
Tue Mar 29 18:25:37 2011
@@ -0,0 +1,132 @@
+/*
+ * 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.node.extensibility.impl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
+import org.apache.tuscany.sca.extensibility.ServiceHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.extensibility.NodeActivator;
+import org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint;
+
+public class DefaultNodeActivatorExtensionPoint implements
NodeActivatorExtensionPoint {
+ private final static Logger logger =
Logger.getLogger(DefaultNodeActivatorExtensionPoint.class.getName());
+ private List<NodeActivator> activators = new ArrayList<NodeActivator>();
+ private ExtensionPointRegistry registry;
+ private boolean loadedActivators;
+
+ public DefaultNodeActivatorExtensionPoint(ExtensionPointRegistry registry)
{
+ this.registry = registry;
+ }
+
+ public void addNodeActivator(NodeActivator activator) {
+ this.activators.add(activator);
+ }
+
+ @Override
+ public void removeNodeActivator(NodeActivator activator) {
+ this.activators.remove(activator);
+ }
+
+ @Override
+ public List<NodeActivator> getNodeActivators() {
+ loadModuleActivators();
+ return activators;
+ }
+
+ @Override
+ public void nodeStarted(Node node) {
+ for(NodeActivator activator : activators) {
+ activator.nodeStarted(node);
+ }
+ }
+
+ @Override
+ public void nodeStopped(Node node) {
+ for(NodeActivator activator : activators) {
+ activator.nodeStopped(node);
+ }
+ }
+
+
+
+ /**
+ * Dynamically load node activators declared under META-INF/services
+ */
+ private synchronized void loadModuleActivators() {
+ if (loadedActivators)
+ return;
+
+ // Get the activator service declarations
+ Collection<ServiceDeclaration> activatorDeclarations;
+ try {
+ // Load the module activators by ranking
+ activatorDeclarations =
registry.getServiceDiscovery().getServiceDeclarations(NodeActivator.class.getName(),
true);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+
+ // Load and instantiate module activators
+ for (ServiceDeclaration activatorDeclaration : activatorDeclarations) {
+ if (logger.isLoggable(Level.FINE)) {
+ logger.fine("Loading " + activatorDeclaration.getClassName());
+ }
+ NodeActivator activator = null;
+ try {
+ Class<NodeActivator> activatorClass =
(Class<NodeActivator>)activatorDeclaration.loadClass();
+ try {
+ activator = ServiceHelper.newInstance(activatorClass,
ExtensionPointRegistry.class, registry);
+ } catch (NoSuchMethodException e) {
+ try {
+ activator =
+ ServiceHelper.newInstance(activatorClass,
+ new Class<?>[]
{ExtensionPointRegistry.class, Map.class},
+ registry,
+
activatorDeclaration.getAttributes());
+
+ } catch (NoSuchMethodException e1) {
+ activator = ServiceHelper.newInstance(activatorClass);
+
+ }
+ }
+ } catch (Throwable e) {
+ String optional =
activatorDeclaration.getAttributes().get("optional");
+ if ("true".equalsIgnoreCase(optional)) {
+ // If the optional flag is true, just log the error
+ logger.log(Level.SEVERE, e.getMessage(), e);
+ continue;
+ } else {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ addNodeActivator(activator);
+ }
+
+ loadedActivators = true;
+ }
+}
Propchange:
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/extensibility/impl/DefaultNodeActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=1086667&r1=1086666&r2=1086667&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Tue Mar 29 18:25:37 2011
@@ -44,6 +44,9 @@ import org.apache.tuscany.sca.core.invoc
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.node.Node;
import org.apache.tuscany.sca.node.configuration.NodeConfiguration;
+import org.apache.tuscany.sca.node.extensibility.NodeActivator;
+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;
@@ -58,7 +61,7 @@ import org.oasisopen.sca.ServiceUnavaila
/**
* An SCA Node that is managed by the NodeManager
*/
-public class NodeImpl implements Node {
+public class NodeImpl implements Node, NodeExtension {
private static final Logger logger =
Logger.getLogger(NodeImpl.class.getName());
private ProxyFactory proxyFactory;
private CompositeActivator compositeActivator;
@@ -67,6 +70,7 @@ public class NodeImpl implements Node {
private NodeConfiguration configuration;
private NodeFactoryImpl nodeFactory;
private List<Contribution> contributions;
+ private NodeActivatorExtensionPoint nodeActivators;
// private NodeManager mbean;
/**
@@ -78,8 +82,9 @@ public class NodeImpl implements Node {
super();
this.configuration = configuration;
this.nodeFactory = nodeFactory;
+ this.nodeActivators =
nodeFactory.getExtensionPointRegistry().getExtensionPoint(NodeActivatorExtensionPoint.class);
}
-
+
/**
* Create a node from the configuration and loaded contributions
* @param manager
@@ -90,6 +95,7 @@ public class NodeImpl implements Node {
super();
this.configuration = configuration;
this.nodeFactory = manager;
+ this.nodeActivators =
nodeFactory.getExtensionPointRegistry().getExtensionPoint(NodeActivatorExtensionPoint.class);
this.contributions = new ArrayList<Contribution>(contributions);
}
@@ -97,54 +103,58 @@ public class NodeImpl implements Node {
return getConfiguration().getURI();
}
+ public String getDomainURI() {
+ return getConfiguration().getDomainURI();
+ }
+
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
+ // 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) {
-
+
+ if (domainComposite == null) {
+
UtilityExtensionPoint utilities =
nodeFactory.registry.getExtensionPoint(UtilityExtensionPoint.class);
this.compositeActivator =
utilities.getUtility(CompositeActivator.class);
domainComposite = nodeFactory.configureNode(configuration,
contributions, context);
-
+
DomainRegistryFactory domainRegistryFactory =
ExtensibleDomainRegistryFactory.getInstance(nodeFactory.registry);
EndpointRegistry endpointRegistry =
domainRegistryFactory.getEndpointRegistry(configuration.getDomainRegistryURI(),
configuration.getDomainURI());
this.compositeContext =
- new CompositeContext(nodeFactory.registry,
- endpointRegistry,
- domainComposite,
- configuration.getDomainURI(),
+ new CompositeContext(nodeFactory.registry,
+ endpointRegistry,
+ domainComposite,
+ configuration.getDomainURI(),
configuration.getURI(),
nodeFactory.getDeployer().getSystemDefinitions());
// Pass down the context attributes
compositeContext.getAttributes().putAll(configuration.getAttributes());
}
-
+
} finally {
// Reset the thread context monitor
nodeFactory.monitorFactory.setContextMonitor(tcm);
}
-
+
// Activate the composite
compositeActivator.activate(compositeContext, domainComposite);
@@ -172,6 +182,9 @@ public class NodeImpl implements Node {
logger.log(Level.SEVERE, e.getMessage(), e);
}
+ for(NodeActivator activator : nodeActivators.getNodeActivators()) {
+ activator.nodeStarted(this);
+ }
return this;
} catch (Throwable e) {
@@ -212,13 +225,17 @@ public class NodeImpl implements Node {
} // end if
nodeFactory.removeNode(configuration);
-/*
+/*
this.compositeActivator = null;
this.proxyFactory = null;
this.domainComposite = null;
this.compositeContext = null;
-*/
-
+*/
+
+ for(NodeActivator activator : nodeActivators.getNodeActivators()) {
+ activator.nodeStopped(this);
+ }
+
ThreadMessageContext.removeMessageContext();
} catch (ActivationException e) {
@@ -269,7 +286,7 @@ public class NodeImpl implements Node {
if (component == null) {
throw new ServiceUnavailableException("The service " + name + "
has not been contributed to the domain");
}
-
+
return
((RuntimeComponent)component).getServiceReference(businessInterface,
serviceName);
}
@@ -303,47 +320,47 @@ public class NodeImpl implements Node {
}
return endpoints;
}
-
+
public Composite getDomainComposite() {
return domainComposite;
- }
-
+ }
+
public String dumpDomainComposite() {
-
- StAXArtifactProcessorExtensionPoint xmlProcessors =
+
+ StAXArtifactProcessorExtensionPoint xmlProcessors =
getExtensionPointRegistry().getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- StAXArtifactProcessor<Composite> compositeProcessor =
- xmlProcessors.getProcessor(Composite.class);
-
+ StAXArtifactProcessor<Composite> compositeProcessor =
+ xmlProcessors.getProcessor(Composite.class);
+
return writeComposite(getDomainComposite(), compositeProcessor);
}
-
+
private String writeComposite(Composite composite,
StAXArtifactProcessor<Composite> compositeProcessor){
ByteArrayOutputStream bos = new ByteArrayOutputStream();
XMLOutputFactory outputFactory =
nodeFactory.getExtensionPointRegistry().getExtensionPoint(FactoryExtensionPoint.class)
.getFactory(XMLOutputFactory.class);
-
+
try {
compositeProcessor.write(composite,
outputFactory.createXMLStreamWriter(bos), new
ProcessorContext(nodeFactory.registry));
} catch(Exception ex) {
return ex.toString();
}
-
+
String result = bos.toString();
-
+
// write out and nested composites
for (Component component : composite.getComponents()) {
if (component.getImplementation() instanceof Composite) {
- result += "\n<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -->\n" +
+ result += "\n<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -->\n" +
writeComposite((Composite)component.getImplementation(),
compositeProcessor);
}
}
-
+
return result;
}
-
+
public List<Contribution> getContributions() {
return contributions;
}
Added:
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint?rev=1086667&view=auto
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint
(added)
+++
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.node.extensibility.NodeActivatorExtensionPoint
Tue Mar 29 18:25:37 2011
@@ -0,0 +1,19 @@
+# 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.
+
+org.apache.tuscany.sca.node.extensibility.impl.DefaultNodeActivatorExtensionPoint
+