summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-28 22:23:35 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-28 22:32:01 -0600
commit2a37a2e09e6b56d86fd20d16a8f0b7907113c2e2 (patch)
tree31c6da40c25c8879b36d92fe559c7be1fe990bf0
parent6e743ddc61bd70594a9f039c72715b183de7786e (diff)
downloadscala-di-test-master.tar.gz
scala-di-test-master.zip
clean this upHEADmaster
-rw-r--r--.gitignore3
-rw-r--r--build.sbt2
-rw-r--r--src/main/scala/database/Database.scala22
-rw-r--r--src/main/scala/logger/Logger.scala (renamed from src/main/scala/myapp/logger.scala)5
-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.scala (renamed from src/main/scala/myapp.scala)6
-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
9 files changed, 73 insertions, 64 deletions
diff --git a/.gitignore b/.gitignore
index 007798c..2f7896d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
-/target
-/project
+target/
diff --git a/build.sbt b/build.sbt
index 8367316..c26002f 100644
--- a/build.sbt
+++ b/build.sbt
@@ -3,3 +3,5 @@ name := "scala-di-test"
version := "0.01"
scalaVersion := "2.10.0"
+
+scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature")
diff --git a/src/main/scala/database/Database.scala b/src/main/scala/database/Database.scala
new file mode 100644
index 0000000..3606593
--- /dev/null
+++ b/src/main/scala/database/Database.scala
@@ -0,0 +1,22 @@
+package 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: String =
+ List(dsn, username, password).mkString(", ")
+}
+
+object DBI {
+ def connect (dsn: String, username: String, password: String): DBI =
+ new DBI(dsn, username, password)
+}
diff --git a/src/main/scala/myapp/logger.scala b/src/main/scala/logger/Logger.scala
index 8e985dc..0e2fe79 100644
--- a/src/main/scala/myapp/logger.scala
+++ b/src/main/scala/logger/Logger.scala
@@ -1,10 +1,11 @@
-package myapp.logger
+package logger
trait Logger {
def log (msg: String): Unit
}
class FileLogger (logFileName: String) extends Logger {
- def log (msg: String): Unit =
+ def log (msg: String) {
println("writing " + msg + " to " + logFileName)
+ }
}
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.scala b/src/main/scala/myapp/Runner.scala
index 2de2372..15c3403 100644
--- a/src/main/scala/myapp.scala
+++ b/src/main/scala/myapp/Runner.scala
@@ -1,6 +1,8 @@
-import myapp.cake.container.Container
+package myapp
-object MyApp extends App {
+import myapp.cake.Container
+
+object Runner extends App {
val container1 = new Container
println("running container 1")
container1.application.run
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)
-}