From 31037aa59eac67d98aefc2d25f7d30764e319b67 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 12 Feb 2013 14:19:20 -0600 Subject: add a bit more type safety --- src/main/scala/cake.scala | 6 +++--- src/main/scala/cake/application.scala | 1 + src/main/scala/cake/database.scala | 1 + src/main/scala/cake/services.scala | 15 ++++++++++++--- 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 + } } -- cgit v1.2.3