Repository: incubator-stratos
Updated Branches:
  refs/heads/master ec84193b2 -> 1295d29c1


making Cartridge Agent to accept an implementation of CartridgeAgent as an 
argument


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

Branch: refs/heads/master
Commit: ae7f9062df5b08b8ab37fa34ddaa5cb15911cb92
Parents: 71f282b
Author: Nirmal Fernando <[email protected]>
Authored: Tue Mar 18 18:29:19 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Tue Mar 18 18:29:19 2014 +0530

----------------------------------------------------------------------
 .../stratos/cartridge/agent/CartridgeAgent.java | 121 ++++++++++---------
 .../apache/stratos/cartridge/agent/Main.java    |  27 ++++-
 2 files changed, 90 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ae7f9062/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
index c735355..105c069 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
@@ -41,31 +41,58 @@ public class CartridgeAgent implements Runnable {
             log.info("Cartridge agent started");
         }
 
-        String jndiPropertiesDir = 
System.getProperty(CartridgeAgentConstants.JNDI_PROPERTIES_DIR);
-        if(StringUtils.isBlank(jndiPropertiesDir)) {
-            if(log.isErrorEnabled()){
-                log.error(String.format("System property not found: %s", 
CartridgeAgentConstants.JNDI_PROPERTIES_DIR));
+        validateRequiredSystemProperties();
+
+        // Start instance notifier listener thread
+        subscribeToTopicsAndRegisterListeners();
+
+        // Publish instance started event
+        CartridgeAgentEventPublisher.publishInstanceStartedEvent();
+
+        // Execute start servers extension
+        ExtensionUtils.executeStartServersExtension();
+
+        // Wait for all ports to be active
+        CartridgeAgentUtils.waitUntilPortsActive("localhost", 
CartridgeAgentConfiguration.getInstance().getPorts());
+
+        // Check repo url
+        String repoUrl = 
CartridgeAgentConfiguration.getInstance().getRepoUrl();
+        if ("null".equals(repoUrl) || StringUtils.isBlank(repoUrl)) {
+            if(log.isInfoEnabled()) {
+                log.info("No artifact repository found");
             }
-            return;
+
+            // Publish instance activated event
+            CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
         }
 
-        String payloadPath = 
System.getProperty(CartridgeAgentConstants.PARAM_FILE_PATH);
-        if(StringUtils.isBlank(payloadPath)) {
-            if(log.isErrorEnabled()){
-                log.error(String.format("System property not found: %s", 
CartridgeAgentConstants.PARAM_FILE_PATH));
-            }
-            return;
+        String persistanceMappingsPayload = 
CartridgeAgentConfiguration.getInstance().getPersistanceMappings();
+        if(persistanceMappingsPayload != null) {
+            
ExtensionUtils.executeVolumeMountExtension(persistanceMappingsPayload);
         }
+        // TODO: Start this thread only if this node is configured as a commit 
true node
+        // Start periodical file checker task
+        // ScheduledExecutorService scheduler = 
Executors.newScheduledThreadPool(1);
+        // scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, 
10, TimeUnit.SECONDS);
 
-        String extensionsDir = 
System.getProperty(CartridgeAgentConstants.EXTENSIONS_DIR);
-        if(StringUtils.isBlank(extensionsDir)) {
-            if(log.isWarnEnabled()){
-                log.warn(String.format("System property not found: %s", 
CartridgeAgentConstants.EXTENSIONS_DIR));
-            }
+        // Keep the thread live until terminated
+
+        // start log publishing
+        LogPublisherManager logPublisherManager = new LogPublisherManager();
+        publishLogs(logPublisherManager);
+
+        while (!terminated) {
+               try {
+                               Thread.sleep(1000);
+                       } catch (InterruptedException ignore) {
+                       }
         }
 
-        // Start instance notifier listener thread
-        if(log.isDebugEnabled()) {
+        logPublisherManager.stop();
+    }
+
+       protected void subscribeToTopicsAndRegisterListeners() {
+               if(log.isDebugEnabled()) {
             log.debug("Starting instance notifier event message receiver 
thread");
         }
         InstanceNotifierMessageProcessorChain processorChain = new 
InstanceNotifierMessageProcessorChain();
@@ -110,50 +137,32 @@ public class CartridgeAgent implements Runnable {
             } catch (InterruptedException e) {
             }
         }
+       }
 
-        // Publish instance started event
-        CartridgeAgentEventPublisher.publishInstanceStartedEvent();
-
-        // Execute start servers extension
-        ExtensionUtils.executeStartServersExtension();
-
-        // Wait for all ports to be active
-        CartridgeAgentUtils.waitUntilPortsActive("localhost", 
CartridgeAgentConfiguration.getInstance().getPorts());
-
-        // Check repo url
-        String repoUrl = 
CartridgeAgentConfiguration.getInstance().getRepoUrl();
-        if ("null".equals(repoUrl) || StringUtils.isBlank(repoUrl)) {
-            if(log.isInfoEnabled()) {
-                log.info("No artifact repository found");
+       protected void validateRequiredSystemProperties() {
+               String jndiPropertiesDir = 
System.getProperty(CartridgeAgentConstants.JNDI_PROPERTIES_DIR);
+        if(StringUtils.isBlank(jndiPropertiesDir)) {
+            if(log.isErrorEnabled()){
+                log.error(String.format("System property not found: %s", 
CartridgeAgentConstants.JNDI_PROPERTIES_DIR));
             }
-
-            // Publish instance activated event
-            CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
+            return;
         }
 
-        String persistanceMappingsPayload = 
CartridgeAgentConfiguration.getInstance().getPersistanceMappings();
-        if(persistanceMappingsPayload != null)
-            
ExtensionUtils.executeVolumeMountExtension(persistanceMappingsPayload);
-        // TODO: Start this thread only if this node is configured as a commit 
true node
-        // Start periodical file checker task
-        // ScheduledExecutorService scheduler = 
Executors.newScheduledThreadPool(1);
-        // scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, 
10, TimeUnit.SECONDS);
-
-        // Keep the thread live until terminated
-
-        // start log publishing
-        LogPublisherManager logPublisherManager = new LogPublisherManager();
-        publishLogs(logPublisherManager);
-
-        while (!terminated) {
-               try {
-                               Thread.sleep(1000);
-                       } catch (InterruptedException ignore) {
-                       }
+        String payloadPath = 
System.getProperty(CartridgeAgentConstants.PARAM_FILE_PATH);
+        if(StringUtils.isBlank(payloadPath)) {
+            if(log.isErrorEnabled()){
+                log.error(String.format("System property not found: %s", 
CartridgeAgentConstants.PARAM_FILE_PATH));
+            }
+            return;
         }
 
-        logPublisherManager.stop();
-    }
+        String extensionsDir = 
System.getProperty(CartridgeAgentConstants.EXTENSIONS_DIR);
+        if(StringUtils.isBlank(extensionsDir)) {
+            if(log.isWarnEnabled()){
+                log.warn(String.format("System property not found: %s", 
CartridgeAgentConstants.EXTENSIONS_DIR));
+            }
+        }
+       }
 
     private static void publishLogs (LogPublisherManager logPublisherManager) {
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ae7f9062/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
index 5f00281..3bf73e7 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
@@ -19,6 +19,8 @@
 
 package org.apache.stratos.cartridge.agent;
 
+import java.lang.reflect.Constructor;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.log4j.PropertyConfigurator;
@@ -31,7 +33,7 @@ import 
org.apache.stratos.cartridge.agent.config.configurator.JndiConfigurator;
 public class Main {
 
     private static final Log log = LogFactory.getLog(Main.class);
-    private static CartridgeAgent cartridgeAgent;
+    private static CartridgeAgent cartridgeAgent = null;
 
     public static void main(String[] args) {
         try {
@@ -47,7 +49,28 @@ public class Main {
             // Initialize cartridge agent configuration
             CartridgeAgentConfiguration.getInstance();
 
-            cartridgeAgent = new CartridgeAgent();
+            if (args.length >= 1) {
+               String className = args[0];
+                               try {
+                                       Constructor<?> c = 
Class.forName(className)
+                                                       .getConstructor();
+                                       cartridgeAgent = (CartridgeAgent) 
c.newInstance();
+                                       log.info("Loaded Cartridge Agent using 
[class] "+className);
+                               } catch (Exception e) {
+                                       String msg = String.format("Cannot load 
Cartridge Agent from [class name] %s, "
+                                                       + "hence using the 
default agent.", className);
+                                       log.warn(msg, e);
+                               }
+            }
+            
+            if (cartridgeAgent == null) {
+               // load default agent
+               cartridgeAgent = new CartridgeAgent();
+               if (log.isDebugEnabled()) {
+                       log.debug("Loading default Cartridge Agent.");
+               }
+            }
+            // start agent
             Thread thread = new Thread(cartridgeAgent);
             thread.start();
         } catch (Exception e) {

Reply via email to