summaryrefslogtreecommitdiffstats
path: root/src/main/scala/myapp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/myapp')
-rw-r--r--src/main/scala/myapp/MyApp.scala (renamed from src/main/scala/myapp/application.scala)6
-rw-r--r--src/main/scala/myapp/Runner.scala24
-rw-r--r--src/main/scala/myapp/cake/Container.scala (renamed from src/main/scala/myapp/cake/container.scala)36
-rw-r--r--src/main/scala/myapp/cake/services.scala38
-rw-r--r--src/main/scala/myapp/database.scala19
-rw-r--r--src/main/scala/myapp/logger.scala10
6 files changed, 65 insertions, 68 deletions
diff --git a/src/main/scala/myapp/application.scala b/src/main/scala/myapp/MyApp.scala
index 24cda2a..f3c8dcc 100644
--- a/src/main/scala/myapp/application.scala
+++ b/src/main/scala/myapp/MyApp.scala
@@ -1,7 +1,7 @@
-package myapp.application
+package myapp
-import myapp.logger.Logger
-import myapp.database.Database
+import logger.Logger
+import database.Database
class MyApp (logger: Logger, dbh: Database) {
def run {
diff --git a/src/main/scala/myapp/Runner.scala b/src/main/scala/myapp/Runner.scala
new file mode 100644
index 0000000..15c3403
--- /dev/null
+++ b/src/main/scala/myapp/Runner.scala
@@ -0,0 +1,24 @@
+package myapp
+
+import myapp.cake.Container
+
+object Runner extends App {
+ val container1 = new Container
+ println("running container 1")
+ container1.application.run
+ println("done with container 1")
+
+ val container2 = new Container(logFileName = "other.log")
+ println("running container 2")
+ container2.application.run
+ println("done with container 2")
+
+ val container3 = new Container(
+ dsn = "dbi:SQLite::memory:",
+ username = "",
+ password = ""
+ )
+ println("running container 3")
+ container3.application.run
+ println("done with container 3")
+}
diff --git a/src/main/scala/myapp/cake/container.scala b/src/main/scala/myapp/cake/Container.scala
index 6437c8b..ca952cd 100644
--- a/src/main/scala/myapp/cake/container.scala
+++ b/src/main/scala/myapp/cake/Container.scala
@@ -1,14 +1,26 @@
-package myapp.cake.container
+package myapp.cake
-import myapp.cake.services
-import myapp.logger.FileLogger
-import myapp.database.DBI
-import myapp.application.MyApp
+import database.DBI
+import logger.FileLogger
+
+import myapp.MyApp
+
+class Container (
+ logFileName: String = "out.log",
+ dsn: String = "dbi:mysql:myapp",
+ username: String = "doy",
+ password: String = "blah"
+) extends HasApplication with HasLogger with HasDatabase {
+ def application = new Application
+ // def logger = new Logger(logFileName) // non-singleton
+ lazy val logger = new Logger(logFileName) // singleton
+ def database = Database.connect(dsn, username, password)
+}
trait HasLogger extends services.HasLogger {
type LoggerType = Logger
- class Logger(
+ class Logger (
logFileName: String
) extends FileLogger(logFileName) with LoggerService
}
@@ -35,15 +47,3 @@ trait HasApplication extends services.HasApplication {
class Application extends MyApp(logger, database) with ApplicationService
}
-
-class Container (
- logFileName: String = "out.log",
- dsn: String = "dbi:mysql:myapp",
- username: String = "doy",
- password: String = "blah"
-) extends HasApplication with HasLogger with HasDatabase {
- def application = new Application
- // def logger = new Logger(logFileName) // non-singleton
- lazy val logger = new Logger(logFileName) // singleton
- def database = Database.connect(dsn, username, password)
-}
diff --git a/src/main/scala/myapp/cake/services.scala b/src/main/scala/myapp/cake/services.scala
index 6d4a860..c9579c6 100644
--- a/src/main/scala/myapp/cake/services.scala
+++ b/src/main/scala/myapp/cake/services.scala
@@ -1,30 +1,32 @@
-package myapp.cake.services
+package myapp.cake
-import myapp.database.Database
-import myapp.logger.Logger
+object services {
+ import database.Database
+ import logger.Logger
-trait HasApplication {
- type ApplicationType
+ trait HasApplication {
+ type ApplicationType
- def application (): ApplicationType with ApplicationService
+ def application: ApplicationType with ApplicationService
- trait ApplicationService {
- def run (): Unit
+ trait ApplicationService {
+ def run: Unit
+ }
}
-}
-trait HasDatabase {
- type DatabaseType
+ trait HasDatabase {
+ type DatabaseType
- def database (): DatabaseType with DatabaseService
+ def database: DatabaseType with DatabaseService
- trait DatabaseService extends Database
-}
+ trait DatabaseService extends Database
+ }
-trait HasLogger {
- type LoggerType
+ trait HasLogger {
+ type LoggerType
- def logger (): LoggerType with LoggerService
+ def logger: LoggerType with LoggerService
- trait LoggerService extends Logger
+ trait LoggerService extends Logger
+ }
}
diff --git a/src/main/scala/myapp/database.scala b/src/main/scala/myapp/database.scala
deleted file mode 100644
index 9a321c2..0000000
--- a/src/main/scala/myapp/database.scala
+++ /dev/null
@@ -1,19 +0,0 @@
-package myapp.database
-
-trait Database {
- def query (search: String): String
-}
-
-class DBI protected (
- dsn: String,
- username: String,
- password: String
-) extends Database {
- def query (search: String): String = "found " + search
- override def toString = List(dsn, username, password).mkString(", ")
-}
-
-object DBI {
- def connect (dsn: String, username: String, password: String) =
- new DBI(dsn, username, password)
-}
diff --git a/src/main/scala/myapp/logger.scala b/src/main/scala/myapp/logger.scala
deleted file mode 100644
index 8e985dc..0000000
--- a/src/main/scala/myapp/logger.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-package myapp.logger
-
-trait Logger {
- def log (msg: String): Unit
-}
-
-class FileLogger (logFileName: String) extends Logger {
- def log (msg: String): Unit =
- println("writing " + msg + " to " + logFileName)
-}