diff options
Diffstat (limited to '')
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 |