summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-12 20:13:04 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-12 20:13:04 -0600
commit5e377f152de4073c79abcf4efb4507306604b170 (patch)
treecc0ed66b6bb7cd14814655fb54e65781319620a9
parent183f9789ce0b941efc3d22856d7d5ed1f9d7c764 (diff)
downloadscala-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.scala32
-rw-r--r--src/main/scala/cake/application.scala13
-rw-r--r--src/main/scala/cake/services.scala21
-rw-r--r--src/main/scala/myapp.scala (renamed from src/main/scala/app.scala)2
-rw-r--r--src/main/scala/myapp/application.scala13
-rw-r--r--src/main/scala/myapp/cake/container.scala48
-rw-r--r--src/main/scala/myapp/cake/services.scala30
-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