summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-12 14:19:20 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-12 14:19:20 -0600
commit31037aa59eac67d98aefc2d25f7d30764e319b67 (patch)
tree4e0497136fca23037c2858f2e205d071ca0851a7
parent9074a601970a626a446b5fefed5b30db39092ff6 (diff)
downloadscala-di-test-31037aa59eac67d98aefc2d25f7d30764e319b67.tar.gz
scala-di-test-31037aa59eac67d98aefc2d25f7d30764e319b67.zip
add a bit more type safety
-rw-r--r--src/main/scala/cake.scala6
-rw-r--r--src/main/scala/cake/application.scala1
-rw-r--r--src/main/scala/cake/database.scala1
-rw-r--r--src/main/scala/cake/services.scala15
4 files changed, 17 insertions, 6 deletions
diff --git a/src/main/scala/cake.scala b/src/main/scala/cake.scala
index 51bdcb8..e0d3eb2 100644
--- a/src/main/scala/cake.scala
+++ b/src/main/scala/cake.scala
@@ -2,18 +2,18 @@ package cake
trait HasLogger extends cake.services.HasLogger {
type LoggerType = Logger
- class Logger(logFileName: String) extends cake.logger.FileLogger(logFileName)
+ class Logger(logFileName: String) extends cake.logger.FileLogger(logFileName) with ILogger
}
trait HasDatabase extends cake.services.HasDatabase {
type DatabaseType = Database
- class Database(dsn: String, username: String, password: String) extends cake.database.DBI(dsn, username, password)
+ class Database(dsn: String, username: String, password: String) extends cake.database.DBI(dsn, username, password) with IDatabase
}
trait HasApplication extends cake.services.HasApplication {
this: cake.HasLogger with cake.HasDatabase =>
type ApplicationType = Application
- class Application extends cake.application.Application(logger, database)
+ class Application extends cake.application.Application(logger, database) with IApplication
}
object Container extends HasApplication with HasLogger with HasDatabase {
diff --git a/src/main/scala/cake/application.scala b/src/main/scala/cake/application.scala
index 8311dc8..0dac58b 100644
--- a/src/main/scala/cake/application.scala
+++ b/src/main/scala/cake/application.scala
@@ -8,6 +8,7 @@ class Application (val logger: FileLogger, val dbh: DBI) {
logger.log("starting")
logger.log("got a dbh: " +
List(dbh.dsn, dbh.username, dbh.password).mkString(", "))
+ logger.log(dbh.query("foo"))
logger.log("ending")
}
}
diff --git a/src/main/scala/cake/database.scala b/src/main/scala/cake/database.scala
index d7f37e9..6ba4a1c 100644
--- a/src/main/scala/cake/database.scala
+++ b/src/main/scala/cake/database.scala
@@ -5,6 +5,7 @@ class DBI (
val dsn: String,
val username: String,
val password: String) {
+ def query (search: String): String = "found " + search
}
// object DBI {
diff --git a/src/main/scala/cake/services.scala b/src/main/scala/cake/services.scala
index ed28203..b171165 100644
--- a/src/main/scala/cake/services.scala
+++ b/src/main/scala/cake/services.scala
@@ -2,15 +2,24 @@ package cake.services
trait HasApplication {
type ApplicationType
- val application: ApplicationType
+ val application: ApplicationType with IApplication
+ trait IApplication {
+ def run (): Unit
+ }
}
trait HasDatabase {
type DatabaseType
- val database: DatabaseType
+ val database: DatabaseType with IDatabase
+ trait IDatabase {
+ def query (search: String): String
+ }
}
trait HasLogger {
type LoggerType
- val logger: LoggerType
+ val logger: LoggerType with ILogger
+ trait ILogger {
+ def log (msg: String): Unit
+ }
}