Revision 6adaafb6 logic/src/main/scala/gr/grnet/aquarium/MasterConf.scala

b/logic/src/main/scala/gr/grnet/aquarium/MasterConf.scala
41 41
import com.ckkloverdos.props.Props
42 42
import com.ckkloverdos.maybe.{Maybe, Failed, Just, NoVal}
43 43
import com.ckkloverdos.convert.Converters.{DefaultConverters => TheDefaultConverters}
44
import rest.RESTService
44 45

  
45 46
/**
46 47
 * The master configurator. Responsible to load all of application configuration and provide the relevant services.
......
50 51
class MasterConf(val props: Props) {
51 52
  import MasterConf.Keys
52 53

  
53
  private[this] val _actorProvider: ActorProvider = {
54
    val className = props.getEx(Keys.actor_provider_class)
55
    val actorProvider = defaultClassLoader.loadClass(className).newInstance().asInstanceOf[ActorProvider]
56
    
57
    actorProvider match {
54
  private[this] def newInstance[C : Manifest](className: String): C = {
55
    val c = defaultClassLoader.loadClass(className).newInstance().asInstanceOf[C]
56
    c match {
58 57
      case configurable: Configurable ⇒
59 58
        configurable configure props
59
        c
60
      case _ ⇒
61
        c
60 62
    }
63
  }
61 64

  
62
    actorProvider
65
  private[this] val _actorProvider: ActorProvider = {
66
    newInstance[ActorProvider](props.getEx(Keys.actor_provider_class))
67
  }
68
  
69
  private[this] val _restService: RESTService = {
70
    newInstance[RESTService](props.getEx(Keys.rest_service_class))
63 71
  }
64 72

  
65 73
  def get(prop: String): String =
......
69 77
    }
70 78

  
71 79
  def defaultClassLoader = Thread.currentThread().getContextClassLoader
80

  
81
  def startServices(): Unit = {
82
    _actorProvider.start()
83
    _restService.start()
84
  }
85

  
86
  def stopServices(): Unit = {
87
    _restService.stop()
88
    _actorProvider.stop()
89
    
90
//    akka.actor.Actor.registry.shutdownAll()
91
  }
92

  
93
  def stopServicesWithDelay(millis: Long) {
94
    Thread sleep millis
95
    stopServices()
96
  }
72 97
  
73 98
  def actorProvider = _actorProvider
74 99
}
......
175 200
    final val actor_provider_class = "actor.provider.class"
176 201

  
177 202
    /**
203
     * The class that initializes the REST service
204
     */
205
    final val rest_service_class = "rest.service.class"
206

  
207
    /**
178 208
     * Comma separated list of amqp servers running in active-active
179 209
     * configuration.
180 210
     */

Also available in: Unified diff