Author: lresende
Date: Sat Jul  4 16:21:28 2009
New Revision: 791146

URL: http://svn.apache.org/viewvc?rev=791146&view=rev
Log:
TUSCANY-2984 - Adding prioritization while starting module activators to allow 
module activators dependencies to start first

Modified:
    
tuscany/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
    
tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
    
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
    
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator

Modified: 
tuscany/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java?rev=791146&r1=791145&r2=791146&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
 Sat Jul  4 16:21:28 2009
@@ -23,6 +23,8 @@
 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 @@
  * @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 @@
         
         // 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();

Modified: 
tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java?rev=791146&r1=791145&r2=791146&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
 Sat Jul  4 16:21:28 2009
@@ -21,6 +21,8 @@
 
 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 @@
         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 @@
         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);
+    }
 }

Modified: 
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java?rev=791146&r1=791145&r2=791146&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/java/org/apache/tuscany/sca/web/javascript/dojo/DojoModuleActivator.java
 Sat Jul  4 16:21:28 2009
@@ -40,6 +40,10 @@
     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;
         

Modified: 
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator?rev=791146&r1=791145&r2=791146&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/web-javascript-dojo/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
 Sat Jul  4 16:21:28 2009
@@ -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


Reply via email to