Repository: stratos
Updated Branches:
  refs/heads/master 964d35dee -> 094b5fb6a


Adding logic to activate mock iaas component once stratos manager is activated


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/094b5fb6
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/094b5fb6
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/094b5fb6

Branch: refs/heads/master
Commit: 094b5fb6a25e952ce66ac5fa350541335b13e194
Parents: 964d35d
Author: Imesh Gunaratne <[email protected]>
Authored: Sat Mar 28 18:50:09 2015 +0530
Committer: Imesh Gunaratne <[email protected]>
Committed: Sat Mar 28 18:50:09 2015 +0530

----------------------------------------------------------------------
 .../internal/AutoscalerServiceComponent.java    |  2 +-
 .../org/apache/stratos/common/Component.java    |  2 +-
 .../StratosManagerServiceComponent.java         |  2 +-
 components/org.apache.stratos.mock.iaas/pom.xml |  5 ++
 .../iaas/internal/MockIaasServiceComponent.java | 60 ++++++++++++++------
 .../iaas/internal/ServiceReferenceHolder.java   | 10 ++++
 6 files changed, 62 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index 81608ec..a1c038e 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -101,7 +101,7 @@ public class AutoscalerServiceComponent {
                     try {
                         ComponentStartUpSynchronizer 
componentStartUpSynchronizer =
                                 
ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer();
-                        // Wait for cloud controller component to start
+                        // Wait for cloud controller component to be activated
                         
componentStartUpSynchronizer.waitForComponentActivation(Component.Autoscaler,
                                 Component.CloudController);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java
index 28f5341..c59593a 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Component.java
@@ -23,5 +23,5 @@ package org.apache.stratos.common;
  * Stratos components enumeration.
  */
 public enum Component {
-    MessageBroker, StratosManager, CloudController, Autoscaler, 
ComplexEventProcessor
+    MessageBroker, StratosManager, CloudController, Autoscaler, 
ComplexEventProcessor, MockIaaS
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
index 00fc68d..796d8b6 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
@@ -107,7 +107,7 @@ public class StratosManagerServiceComponent {
                         ComponentStartUpSynchronizer 
componentStartUpSynchronizer =
                                 
ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer();
 
-                        // Wait for cloud controller and autoscaler components 
to start
+                        // Wait for cloud controller and autoscaler components 
to be activated
                         
componentStartUpSynchronizer.waitForComponentActivation(Component.StratosManager,
                                 Component.CloudController);
                         
componentStartUpSynchronizer.waitForComponentActivation(Component.StratosManager,

http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.mock.iaas/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.mock.iaas/pom.xml 
b/components/org.apache.stratos.mock.iaas/pom.xml
index 9a0aed1..ba2e4c7 100644
--- a/components/org.apache.stratos.mock.iaas/pom.xml
+++ b/components/org.apache.stratos.mock.iaas/pom.xml
@@ -31,6 +31,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.stratos</groupId>
+            <artifactId>org.apache.stratos.common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.stratos</groupId>
             <artifactId>org.apache.stratos.messaging</artifactId>
             <version>${project.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java
 
b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java
index f998401..e1828e8 100644
--- 
a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java
+++ 
b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/MockIaasServiceComponent.java
@@ -21,6 +21,8 @@ package org.apache.stratos.mock.iaas.internal;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.Component;
+import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
 import org.apache.stratos.mock.iaas.config.MockIaasConfig;
 import org.apache.stratos.mock.iaas.persistence.PersistenceManager;
 import org.apache.stratos.mock.iaas.persistence.PersistenceManagerFactory;
@@ -38,30 +40,48 @@ import org.wso2.carbon.registry.core.session.UserRegistry;
  * @scr.component 
name="org.apache.stratos.mock.iaas.internal.MockIaasServiceComponent" 
immediate="true"
  * @scr.reference name="registry.service" 
interface="org.wso2.carbon.registry.core.service.RegistryService"
  *                cardinality="1..1" policy="dynamic" 
bind="setRegistryService" unbind="unsetRegistryService"
+ * @scr.reference name="componentStartUpSynchronizer" 
interface="org.apache.stratos.common.services.ComponentStartUpSynchronizer"
+ *                cardinality="1..1" policy="dynamic" 
bind="setComponentStartUpSynchronizer" 
unbind="unsetComponentStartUpSynchronizer"
  */
 public class MockIaasServiceComponent {
 
     private static final Log log = 
LogFactory.getLog(MockIaasServiceComponent.class);
 
-    protected void activate(ComponentContext context) {
-        try {
-            if(!MockIaasConfig.getInstance().isEnabled()) {
-                log.debug("Mock IaaS is disabled, Mock IaaS service component 
is not activated");
-                return;
-            }
+    protected void activate(final ComponentContext context) {
+        Runnable mockIaasActivator = new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    if(!MockIaasConfig.getInstance().isEnabled()) {
+                        log.debug("Mock IaaS is disabled, Mock IaaS service 
component is not activated");
+                        return;
+                    }
 
-            PersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager(PersistenceManagerType.Registry);
-            MockIaasServiceUtil mockIaasServiceUtil = new 
MockIaasServiceUtil(persistenceManager);
-            mockIaasServiceUtil.startInstancesPersisted();
+                    ComponentStartUpSynchronizer componentStartUpSynchronizer =
+                            
ServiceReferenceHolder.getInstance().getComponentStartUpSynchronizer();
 
-            MockIaasService mockIaasService = new MockIaasServiceImpl();
-            
context.getBundleContext().registerService(MockIaasService.class.getName(), 
mockIaasService, null);
-            log.info("Mock IaaS service registered");
+                    // Wait for stratos manager to be activated
+                    
componentStartUpSynchronizer.waitForComponentActivation(Component.MockIaaS,
+                            Component.StratosManager);
 
-            log.info("Mock IaaS service component activated");
-        } catch (Exception e) {
-            log.error("An error occurred when starting mock instances", e);
-        }
+                    PersistenceManager persistenceManager =
+                            
PersistenceManagerFactory.getPersistenceManager(PersistenceManagerType.Registry);
+                    MockIaasServiceUtil mockIaasServiceUtil = new 
MockIaasServiceUtil(persistenceManager);
+                    mockIaasServiceUtil.startInstancesPersisted();
+
+                    MockIaasService mockIaasService = new 
MockIaasServiceImpl();
+                    
context.getBundleContext().registerService(MockIaasService.class.getName(), 
mockIaasService, null);
+                    log.info("Mock IaaS service registered");
+
+                    
componentStartUpSynchronizer.setComponentStatus(Component.MockIaaS, true);
+                    log.info("Mock IaaS service component activated");
+                } catch (Exception e) {
+                    log.error("An error occurred when starting mock 
instances", e);
+                }
+            }
+        };
+        Thread mockIaasActivatorThread = new Thread(mockIaasActivator);
+        mockIaasActivatorThread.start();
     }
 
     protected void deactivate(ComponentContext context) {
@@ -87,4 +107,12 @@ public class MockIaasServiceComponent {
         }
         ServiceReferenceHolder.getInstance().setRegistry(null);
     }
+
+    protected void 
setComponentStartUpSynchronizer(ComponentStartUpSynchronizer 
componentStartUpSynchronizer) {
+        
ServiceReferenceHolder.getInstance().setComponentStartUpSynchronizer(componentStartUpSynchronizer);
+    }
+
+    protected void 
unsetComponentStartUpSynchronizer(ComponentStartUpSynchronizer 
componentStartUpSynchronizer) {
+        
ServiceReferenceHolder.getInstance().setComponentStartUpSynchronizer(null);
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/094b5fb6/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java
 
b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java
index 1d75f8a..1334d93 100644
--- 
a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java
+++ 
b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/internal/ServiceReferenceHolder.java
@@ -19,6 +19,7 @@
 
 package org.apache.stratos.mock.iaas.internal;
 
+import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
 import org.wso2.carbon.registry.core.session.UserRegistry;
 
 /**
@@ -28,6 +29,7 @@ public class ServiceReferenceHolder {
 
     private static volatile ServiceReferenceHolder instance;
     private UserRegistry registry;
+    private ComponentStartUpSynchronizer componentStartUpSynchronizer;
 
     private ServiceReferenceHolder() {
     }
@@ -50,4 +52,12 @@ public class ServiceReferenceHolder {
     public UserRegistry getRegistry() {
         return registry;
     }
+
+    public void setComponentStartUpSynchronizer(ComponentStartUpSynchronizer 
componentStartUpSynchronizer) {
+        this.componentStartUpSynchronizer = componentStartUpSynchronizer;
+    }
+
+    public ComponentStartUpSynchronizer getComponentStartUpSynchronizer() {
+        return componentStartUpSynchronizer;
+    }
 }

Reply via email to