Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F92301525
Boot.scala
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Nov 19, 05:35
Size
1 KB
Mime Type
text/x-c++
Expires
Thu, Nov 21, 05:35 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22415312
Attached To
R2664 SHRINE MedCo Fork
Boot.scala
View Options
import akka.actor.{ActorRef, ActorSystem, Props}
import net.shrine.problem.{AbstractProblem, ProblemConfigSource, ProblemHandler, ProblemSources}
import spray.servlet.WebBoot
import scala.util.control.NonFatal
// this class is instantiated by the servlet initializer
// it needs to have a default constructor and implement
// the spray.servlet.WebBoot trait
class Boot extends WebBoot {
// we need an ActorSystem to host our application in
override val system = startActorSystem()
// the service actor replies to incoming HttpRequests
override val serviceActor: ActorRef = startServiceActor()
def startActorSystem() = try ActorSystem("MetaDataActors",MetaConfigSource.config)
catch {
case NonFatal(x) => CannotStartMetaData(x); throw x
case x: ExceptionInInitializerError => CannotStartMetaData(x); throw x
}
def startServiceActor() = try {
//TODO: create a common interface for Problems to hide behind, so that it doesn't exist anywhere in the code
//TODO: except for when brought into scope by a DatabaseProblemHandler
val handler:ProblemHandler = ProblemConfigSource.getObject("shrine.problem.problemHandler", ProblemConfigSource.config)
handler.warmUp()
// the service actor replies to incoming HttpRequests
system.actorOf(Props[MetaDataActor])
}
catch {
case NonFatal(x) => CannotStartMetaData(x); throw x
case x: ExceptionInInitializerError => CannotStartMetaData(x); throw x
}
}
case class CannotStartMetaData(ex:Throwable) extends AbstractProblem(ProblemSources.Dsa) {
override def summary: String = "The MetaData API could not start due to an exception."
override def description: String = s"The MetaData API could not start due to ${throwable.get}"
override def throwable = Some(ex)
}
Event Timeline
Log In to Comment