summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/node-impl/src
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/sca-java-1.x/modules/node-impl/src
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/sca-java-1.x/modules/node-impl/src')
-rw-r--r--branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java28
1 files changed, 27 insertions, 1 deletions
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);
+ }
}