Skip to content
This repository was archived by the owner on Aug 17, 2019. It is now read-only.

Commit 04aae1b

Browse files
committed
1 parent a134cdf commit 04aae1b

File tree

3 files changed

+20
-15
lines changed

3 files changed

+20
-15
lines changed

project/build/Project.scala

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class Project(info: ProjectInfo) extends DefaultProject(info) {
6262

6363
val lib_maybe = "com.ckkloverdos" %% "maybe" % "0.3.0" % "compile" withSources()
6464
val lib_sysprop = "com.ckkloverdos" %% "sysprop" % "0.1.0" % "compile" withSources()
65+
val lib_converter = "com.ckkloverdos" %% "converter" % "0.3.0" % "compile" withSources()
6566
val lib_slf4j = "org.slf4j" % "slf4j-api" % "1.6.1" % "compile" withSources()
6667
val lib_logback_simple = "ch.qos.logback" % "logback-classic" % "0.9.28" % "test" withSources()
6768
val lib_junit_interface = "com.novocode" % "junit-interface" % "0.7" % "test"

src/main/scala/com/ckkloverdos/props/Props.scala

+16-15
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@ import java.io.InputStream
2121
import java.net.URL
2222
import java.util.Properties
2323
import com.ckkloverdos.maybe.{NoVal, Maybe}
24+
import com.ckkloverdos.convert.Converters
2425

2526
/**
2627
* Properties with conversion methods.
2728
*
28-
* TODO: integrate with `converter` project
29-
*
3029
* @author Christos KK Loverdos <loverdos@gmail.com>.
3130
*/
32-
class Props(val map: Map[String, String]) {
31+
class Props(val map: Map[String, String])(implicit conv: Converters = Converters.DefaultConverters) {
3332

3433
private def _toBoolean(value: String, falseStrings: Set[String]): Boolean = {
3534
if(null eq value) {
@@ -39,6 +38,8 @@ class Props(val map: Map[String, String]) {
3938
}
4039
}
4140

41+
def converters = conv
42+
4243
def contains(key: String) = map contains key
4344

4445
def filterKeys(f: String => Boolean) = new Props(map filterKeys f)
@@ -60,37 +61,37 @@ class Props(val map: Map[String, String]) {
6061
}
6162

6263
def getByte(key: String): Maybe[Byte] = map.get(key) match {
63-
case Some(value) => Maybe(value.toByte)
64+
case Some(value) => conv.convertValueToByte(value)
6465
case None => NoVal
6566
}
6667

6768
def getShort(key: String): Maybe[Short] = map.get(key) match {
68-
case Some(value) => Maybe(value.toShort)
69+
case Some(value) => conv.convertValueToShort(value)
6970
case None => NoVal
7071
}
7172

7273
def getInt(key: String): Maybe[Int] = map.get(key) match {
73-
case Some(value) => Maybe(value.toInt)
74+
case Some(value) => conv.convertValueToInt(conv)
7475
case None => NoVal
7576
}
7677

7778
def getLong(key: String): Maybe[Long] = map.get(key) match {
78-
case Some(value) => Maybe(value.toLong)
79+
case Some(value) => conv.convertValueToLong(value)
7980
case None => NoVal
8081
}
8182

8283
def getDouble(key: String): Maybe[Double] = map.get(key) match {
83-
case Some(value) => Maybe(value.toDouble)
84+
case Some(value) => conv.convertValueToDouble(value)
8485
case None => NoVal
8586
}
8687

8788
def getFloat(key: String): Maybe[Float] = map.get(key) match {
88-
case Some(value) => Maybe(value.toFloat)
89+
case Some(value) => conv.convertValueToFloat(value)
8990
case None => NoVal
9091
}
9192

9293
def getProps(key: String): Maybe[Props] = map.get(key) match {
93-
case Some(value) => Props(value)
94+
case Some(value) => conv.convertValue(value, manifest[Props])
9495
case None => NoVal
9596
}
9697

@@ -130,7 +131,7 @@ object Props {
130131

131132
lazy val empty = new Props(Map())
132133

133-
def apply(rc: StreamResource): Maybe[Props] = {
134+
def apply(rc: StreamResource)(implicit conv: Converters): Maybe[Props] = {
134135
rc.mapInputStream { in =>
135136
val props = new java.util.Properties
136137
props.load(in)
@@ -139,17 +140,17 @@ object Props {
139140
} map (new Props(_))
140141
}
141142

142-
def apply(in: InputStream): Maybe[Props] =
143+
def apply(in: InputStream)(implicit conv: Converters): Maybe[Props] =
143144
this(new WrappingStreamResource(in, DummyWrappedPath, DummyWrappedURL))
144145

145-
def apply(props: Properties): Maybe[Props] = {
146+
def apply(props: Properties)(implicit conv: Converters): Maybe[Props] = {
146147
import collection.JavaConversions._
147148
Maybe(new Props(props.toMap))
148149
}
149150

150-
def apply(path: String, rc: StreamResourceContext = DefaultResourceContext): Maybe[Props] = {
151+
def apply(path: String, rc: StreamResourceContext = DefaultResourceContext)(implicit conv: Converters): Maybe[Props] = {
151152
rc.getResource(path).flatMap(this(_))
152153
}
153154

154-
def apply(keyvals: (String, String)*): Props = new Props(Map(keyvals: _*))
155+
def apply(keyvals: (String, String)*)(implicit conv: Converters): Props = new Props(Map(keyvals: _*))
155156
}

src/test/scala/com/ckkloverdos/resource/ResourceTest.scala

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.junit.Test
2121
import com.ckkloverdos.runmode.{StageMode, RunMode, TestMode, StandardRunModeContext}
2222
import com.ckkloverdos.props.Props
2323
import com.ckkloverdos.maybe.Just
24+
import com.ckkloverdos.convert.Converters
2425

2526
/**
2627
*
@@ -48,6 +49,8 @@ class ResourceTest {
4849

4950
val rmc = new StandardRunModeContext(DefaultResourceContext)
5051

52+
implicit val converters = Converters.DefaultConverters
53+
5154
private[this] def _exists(context: StreamResourceContext, rc_path: String, rc_name: String) {
5255
val maybeRC = context.getResource(rc_path)
5356
Assert.assertTrue(maybeRC.isJust)

0 commit comments

Comments
 (0)