Add folder to store incoming events
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 30 Mar 2012 09:10:12 +0000 (12:10 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 30 Mar 2012 09:10:12 +0000 (12:10 +0300)
This is a debugging aid, triggered by the presence of a configuration
key.

src/main/resources/aquarium.properties
src/main/scala/gr/grnet/aquarium/Configurator.scala
src/main/scala/gr/grnet/aquarium/Main.scala
src/test/resources/aquarium.properties

index e88a743..d71d8b7 100644 (file)
@@ -61,6 +61,8 @@ persistence.password=aquarium
 # another driver is in use
 mongo.connection.pool.size=20
 
+events.store.folder=events
+
 #######
 # DO NOT TOUCH the following options, unless you know what you are doing
 #######
index 2ab56c6..f1c59a0 100644 (file)
@@ -152,6 +152,19 @@ class Configurator(val props: Props) extends Loggable {
     }
   }
 
+  private[this] lazy val _eventsStoreFolder: Maybe[File] = {
+    props.get(Keys.events_store_folder) map {
+      folderName ⇒
+        val folder = new File(folderName)
+        folder.mkdirs()
+        if(folder.isDirectory) {
+          folder.getCanonicalFile
+        } else {
+          throw new AquariumException("%s = %s is not a folder".format(Keys.events_store_folder, folder))
+        }
+    }
+  }
+
   private[this] lazy val _resEventProc: ResourceEventProcessorService = new ResourceEventProcessorService
 
   private[this] lazy val _imEventProc: UserEventProcessorService = new UserEventProcessorService
@@ -258,6 +271,10 @@ class Configurator(val props: Props) extends Loggable {
   def getInt(name: String): Maybe[Int] = {
     props.get(name).map(_.toInt)
   }
+
+  def hasEventsStoreFolder = _eventsStoreFolder.isJust
+
+  def eventsStoreFolder = gr.grnet.aquarium.util.justForSure(_eventsStoreFolder).get
 }
 
 object Configurator {
@@ -493,6 +510,10 @@ object Configurator {
      */
     final val time_unit_in_millis = "time.unit.in.seconds"
 
-    final val message_queues_store_folder = "messages"
+    /**
+     * If a value is given to this property, then it represents a folder where all events coming to aquarium are
+     * stored.
+     */
+    final val events_store_folder = "events.store.folder"
   }
 }
index 83bd957..7b7c913 100644 (file)
@@ -83,6 +83,11 @@ object Main extends Loggable {
     logger.info("Starting Aquarium from {}", AQUARIUM_HOME_FOLDER.getCanonicalPath)
 
     val mc = Configurator.MasterConfigurator
+
+    if(mc.hasEventsStoreFolder) {
+      logger.info("{} = {}", Configurator.Keys.events_store_folder, mc.eventsStoreFolder)
+    }
+
     val rl = ResourceLocator
     val HERE = gr.grnet.aquarium.util.justForSure(rl.getResource(".")).get.url.toExternalForm
 
index 68d8d66..24ac06e 100644 (file)
@@ -62,6 +62,8 @@ persistence.password=aquarium
 # another driver is in use
 mongo.connection.pool.size=20
 
+events.store.folder=events
+
 #######
 # DO NOT TOUCH the following options, unless you know what you are doing
 #######