Refactored Main startup code
authorChristos KK Loverdos <loverdos@gmail.com>
Thu, 19 Apr 2012 11:33:52 +0000 (14:33 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Thu, 19 Apr 2012 11:33:52 +0000 (14:33 +0300)
src/main/scala/gr/grnet/aquarium/Configurator.scala
src/main/scala/gr/grnet/aquarium/Main.scala

index b359d3d..f6fa52a 100644 (file)
@@ -42,9 +42,9 @@ import com.ckkloverdos.props.Props
 import com.ckkloverdos.convert.Converters.{DefaultConverters => TheDefaultConverters}
 
 import gr.grnet.aquarium.actor.provider.ActorProvider
-import gr.grnet.aquarium.service.{IMEventProcessorService, ResourceEventProcessorService}
 import gr.grnet.aquarium.util.{Lifecycle, Loggable}
 import gr.grnet.aquarium.store._
+import service.{AkkaService, IMEventProcessorService, ResourceEventProcessorService}
 
 /**
  * The master configurator. Responsible to load all of application configuration and provide the relevant services.
@@ -196,7 +196,7 @@ class Configurator(val props: Props) extends Loggable {
 
   private[this] lazy val _imEventProc = new IMEventProcessorService
 
-  private[this] lazy val _lifecycleServices = List(_restService, _actorProvider, _resEventProc, _imEventProc)
+  private[this] lazy val _lifecycleServices = List(AkkaService, _restService, _actorProvider, _resEventProc, _imEventProc)
 
   def get(key: String, default: String = ""): String = props.getOr(key, default)
 
index 2a044b0..f7df336 100644 (file)
@@ -42,6 +42,7 @@ import ch.qos.logback.classic.LoggerContext
 import ch.qos.logback.classic.joran.JoranConfigurator
 import ch.qos.logback.core.util.StatusPrinter
 import com.ckkloverdos.maybe.{NoVal, Maybe, Failed, Just}
+import util.date.TimeHelpers
 import util.{LazyLoggable, Loggable}
 
 /**
@@ -87,13 +88,8 @@ object Main extends LazyLoggable {
     }
   }
 
-  def main(args: Array[String]) = {
+  def doStart(): Unit = {
     import ResourceLocator.{AQUARIUM_HOME, AQUARIUM_HOME_FOLDER, CONF_HERE, AKKA_HOME}
-
-    configureLogging()
-
-    logger.info("Starting Aquarium from {}", AQUARIUM_HOME_FOLDER)
-
     // We have AKKA builtin, so no need to mess with pre-existing installation.
     if(AKKA_HOME.value.isJust) {
       val error = new AquariumException("%s is set. Please unset and restart Aquarium".format(AKKA_HOME.name))
@@ -125,12 +121,24 @@ object Main extends LazyLoggable {
 
     Runtime.getRuntime.addShutdownHook(new Thread(new Runnable {
       def run = {
-        logger.info("Shutting down Aquarium")
-        mc.stopServices()
-        Actor.registry.shutdownAll()
+        logStopping()
+        val (ms0, ms1, _) = TimeHelpers.timed {
+          mc.stopServices()
+        }
+        logStopped(ms0, ms1)
       }
     }))
+  }
+
+  def main(args: Array[String]) = {
+    import ResourceLocator.AQUARIUM_HOME_FOLDER
 
-    logger.info("Started Aquarium")
+    configureLogging()
+
+    logStarting("Aquarium from %s", AQUARIUM_HOME_FOLDER)
+    val (ms0, ms1, _) = TimeHelpers.timed {
+      doStart()
+    }
+    logStarted(ms0, ms1, "Aquarium")
   }
 }
\ No newline at end of file