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