diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-02-12 20:13:04 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-02-12 20:13:04 -0600 |
commit | 5e377f152de4073c79abcf4efb4507306604b170 (patch) | |
tree | cc0ed66b6bb7cd14814655fb54e65781319620a9 | |
parent | 183f9789ce0b941efc3d22856d7d5ed1f9d7c764 (diff) | |
download | scala-di-test-5e377f152de4073c79abcf4efb4507306604b170.tar.gz scala-di-test-5e377f152de4073c79abcf4efb4507306604b170.zip |
renamings and style tweaks to make this more readable
-rw-r--r-- | src/main/scala/cake.scala | 32 | ||||
-rw-r--r-- | src/main/scala/cake/application.scala | 13 | ||||
-rw-r--r-- | src/main/scala/cake/services.scala | 21 | ||||
-rw-r--r-- | src/main/scala/myapp.scala (renamed from src/main/scala/app.scala) | 2 | ||||
-rw-r--r-- | src/main/scala/myapp/application.scala | 13 | ||||
-rw-r--r-- | src/main/scala/myapp/cake/container.scala | 48 | ||||
-rw-r--r-- | src/main/scala/myapp/cake/services.scala | 30 | ||||
-rw-r--r-- | src/main/scala/myapp/database.scala (renamed from src/main/scala/cake/database.scala) | 5 | ||||
-rw-r--r-- | src/main/scala/myapp/logger.scala (renamed from src/main/scala/cake/logger.scala) | 2 |
9 files changed, 96 insertions, 70 deletions
diff --git a/src/main/scala/cake.scala b/src/main/scala/cake.scala deleted file mode 100644 index 32583e7..0000000 --- a/src/main/scala/cake.scala +++ /dev/null @@ -1,32 +0,0 @@ -package cake - -trait HasLogger extends cake.services.HasLogger { - type LoggerType = Logger - class Logger(logFileName: String) extends cake.logger.FileLogger(logFileName) with ILogger -} - -trait HasDatabase extends cake.services.HasDatabase { - type DatabaseType = Database - class Database protected (dsn: String, username: String, password: String) extends cake.database.DBI(dsn, username, password) with IDatabase - object Database { - def connect(dsn: String, username: String, password: String) = - new Database(dsn, username, password) - } -} - -trait HasApplication extends cake.services.HasApplication { - this: cake.HasLogger with cake.HasDatabase => - type ApplicationType = Application - class Application extends cake.application.Application(logger, database) with IApplication -} - -class Container ( - logFileName: String = "out.log", - dsn: String = "dbi:mysql:myapp", - username: String = "doy", - password: String = "blah" - ) extends HasApplication with HasLogger with HasDatabase { - lazy val application = new Application - lazy val logger = new Logger(logFileName) - lazy val database = Database.connect(dsn, username, password) -} diff --git a/src/main/scala/cake/application.scala b/src/main/scala/cake/application.scala deleted file mode 100644 index c37396b..0000000 --- a/src/main/scala/cake/application.scala +++ /dev/null @@ -1,13 +0,0 @@ -package cake.application - -import cake.logger.Logger -import cake.database.Database - -class Application (logger: Logger, dbh: Database) { - def run (): Unit = { - logger.log("starting") - logger.log("got a dbh: " + dbh) - logger.log(dbh.query("foo")) - logger.log("ending") - } -} diff --git a/src/main/scala/cake/services.scala b/src/main/scala/cake/services.scala deleted file mode 100644 index dd949c2..0000000 --- a/src/main/scala/cake/services.scala +++ /dev/null @@ -1,21 +0,0 @@ -package cake.services - -trait HasApplication { - type ApplicationType - val application: ApplicationType with IApplication - trait IApplication { - def run (): Unit - } -} - -trait HasDatabase { - type DatabaseType - val database: DatabaseType with IDatabase - trait IDatabase extends cake.database.Database -} - -trait HasLogger { - type LoggerType - val logger: LoggerType with ILogger - trait ILogger extends cake.logger.Logger -} diff --git a/src/main/scala/app.scala b/src/main/scala/myapp.scala index c75690f..2de2372 100644 --- a/src/main/scala/app.scala +++ b/src/main/scala/myapp.scala @@ -1,4 +1,4 @@ -import cake.Container +import myapp.cake.container.Container object MyApp extends App { val container1 = new Container diff --git a/src/main/scala/myapp/application.scala b/src/main/scala/myapp/application.scala new file mode 100644 index 0000000..24cda2a --- /dev/null +++ b/src/main/scala/myapp/application.scala @@ -0,0 +1,13 @@ +package myapp.application + +import myapp.logger.Logger +import myapp.database.Database + +class MyApp (logger: Logger, dbh: Database) { + def run { + logger.log("starting") + logger.log("got a dbh: " + dbh) + logger.log(dbh.query("foo")) + logger.log("ending") + } +} diff --git a/src/main/scala/myapp/cake/container.scala b/src/main/scala/myapp/cake/container.scala new file mode 100644 index 0000000..7c40880 --- /dev/null +++ b/src/main/scala/myapp/cake/container.scala @@ -0,0 +1,48 @@ +package myapp.cake.container + +import myapp.cake.services +import myapp.logger.FileLogger +import myapp.database.DBI +import myapp.application.MyApp + +trait HasLogger extends services.HasLogger { + type LoggerType = Logger + + class Logger( + logFileName: String + ) extends FileLogger(logFileName) with LoggerService +} + +trait HasDatabase extends services.HasDatabase { + type DatabaseType = Database + + class Database protected ( + dsn: String, + username: String, + password: String + ) extends DBI(dsn, username, password) with DatabaseService + + object Database { + def connect(dsn: String, username: String, password: String) = + new Database(dsn, username, password) + } +} + +trait HasApplication extends services.HasApplication { + this: HasLogger with HasDatabase => + + type ApplicationType = Application + + 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 { + lazy val application = new Application + lazy val logger = new Logger(logFileName) + lazy val database = Database.connect(dsn, username, password) +} diff --git a/src/main/scala/myapp/cake/services.scala b/src/main/scala/myapp/cake/services.scala new file mode 100644 index 0000000..99be3d5 --- /dev/null +++ b/src/main/scala/myapp/cake/services.scala @@ -0,0 +1,30 @@ +package myapp.cake.services + +import myapp.database.Database +import myapp.logger.Logger + +trait HasApplication { + type ApplicationType + + val application: ApplicationType with ApplicationService + + trait ApplicationService { + def run (): Unit + } +} + +trait HasDatabase { + type DatabaseType + + val database: DatabaseType with DatabaseService + + trait DatabaseService extends Database +} + +trait HasLogger { + type LoggerType + + val logger: LoggerType with LoggerService + + trait LoggerService extends Logger +} diff --git a/src/main/scala/cake/database.scala b/src/main/scala/myapp/database.scala index dd9e2fd..9a321c2 100644 --- a/src/main/scala/cake/database.scala +++ b/src/main/scala/myapp/database.scala @@ -1,4 +1,4 @@ -package cake.database +package myapp.database trait Database { def query (search: String): String @@ -7,7 +7,8 @@ trait Database { class DBI protected ( dsn: String, username: String, - password: String) extends Database { + password: String +) extends Database { def query (search: String): String = "found " + search override def toString = List(dsn, username, password).mkString(", ") } diff --git a/src/main/scala/cake/logger.scala b/src/main/scala/myapp/logger.scala index db6de9a..8e985dc 100644 --- a/src/main/scala/cake/logger.scala +++ b/src/main/scala/myapp/logger.scala @@ -1,4 +1,4 @@ -package cake.logger +package myapp.logger trait Logger { def log (msg: String): Unit |