summaryrefslogtreecommitdiffstats
path: root/branches
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-07-04 16:21:28 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-07-04 16:21:28 +0000
commitb4f758f88e8c97be870ba86080d7f0adb6dafb65 (patch)
tree69d244ad2a21f110195a857b2f0d617efabc4f8a /branches
parent561abc6e8fd5b3a5dc860dbe8f9a5d4f91b8c807 (diff)
TUSCANY-2984 - Adding prioritization while starting module activators to allow module activators dependencies to start first
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@791146 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches')
-rw-r--r--branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java9
-rw-r--r--branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java28
-rw-r--r--branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java4
-rw-r--r--branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator2
4 files changed, 40 insertions, 3 deletions
diff --git a/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java b/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
index dc60d693ed..8034de67fe 100644
--- a/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
+++ b/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
@@ -23,6 +23,8 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
@@ -33,6 +35,8 @@ import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
* @version $Rev$ $Date$
*/
public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExtensionPoint {
+ private final static Logger logger = Logger.getLogger(DefaultModuleActivatorExtensionPoint.class.getName());
+
private List<ModuleActivator> activators = new ArrayList<ModuleActivator>();
private boolean loadedActivators;
@@ -72,7 +76,10 @@ public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExte
// Load and instantiate module activators
for (ServiceDeclaration activatorDeclaration: activatorDeclarations) {
- ModuleActivator activator;
+ if (logger.isLoggable(Level.FINE)) {
+ logger.fine("Loading " + activatorDeclaration.getClassName());
+ }
+ ModuleActivator activator = null;
try {
Class<ModuleActivator> activatorClass = (Class<ModuleActivator>)activatorDeclaration.loadClass();
activator = activatorClass.newInstance();
diff --git a/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java b/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
index 349548c08c..bc96224224 100644
--- a/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
+++ b/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
@@ -21,6 +21,8 @@ package org.apache.tuscany.sca.node.impl;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -320,8 +322,9 @@ public class RuntimeBootStrapper {
try {
Set<ServiceDeclaration> moduleActivators =
ServiceDiscovery.getInstance().getServiceDeclarations(ModuleActivator.class);
+ List<ServiceDeclaration> orderedModuleActivators = sort(moduleActivators);
Set<String> moduleClasses = new HashSet<String>();
- for (ServiceDeclaration moduleDeclarator : moduleActivators) {
+ for (ServiceDeclaration moduleDeclarator : orderedModuleActivators) {
if (moduleClasses.contains(moduleDeclarator.getClassName())) {
continue;
}
@@ -398,4 +401,27 @@ public class RuntimeBootStrapper {
return registry;
}
+ @SuppressWarnings("unchecked")
+ private static List<ServiceDeclaration> sort(Set<ServiceDeclaration> servicesDeclaration) {
+ ServiceDeclaration[] servicesArray = new ServiceDeclaration[servicesDeclaration.size()];
+ servicesArray = (ServiceDeclaration[])servicesDeclaration.toArray(servicesArray);
+ Arrays.sort(servicesArray, new Comparator() {
+ public int compare(final Object xObj, final Object yObj) {
+ String xPriority = ((ServiceDeclaration) xObj).getAttributes().get("priority");
+ String yPriority = ((ServiceDeclaration) yObj).getAttributes().get("priority");
+
+ long x = 0, y = 0;
+ if (xPriority != null && xPriority.length() > 0) {
+ x = Long.parseLong(xPriority);
+ }
+
+ if (yPriority != null && yPriority.length() > 0) {
+ y = Long.parseLong(yPriority);
+ }
+
+ return x > y ? 1 : -1;
+ }
+ });
+ return Arrays.asList(servicesArray);
+ }
}
diff --git a/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java b/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
index 5337b870d8..3eaf6bf47a 100644
--- a/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
+++ b/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
@@ -40,6 +40,10 @@ public class DojoModuleActivator implements ModuleActivator {
public void start(ExtensionPointRegistry registry) {
ServletHostExtensionPoint servletHosts = registry.getExtensionPoint(ServletHostExtensionPoint.class);
this.servletHost = servletHosts.getServletHosts().get(0);
+
+ if (servletHost == null) {
+ throw new IllegalStateException("Can't find ServletHost reference !");
+ }
Servlet servlet = null;
diff --git a/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator b/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
index b703bc5b3a..34edcb5199 100644
--- a/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
+++ b/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
@@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.
# Implementation class for the ModuleActivator
-org.apache.tuscany.sca.web.javascript.dojo.DojoModuleActivator
+org.apache.tuscany.sca.web.javascript.dojo.DojoModuleActivator;priority=9999