@@ -21,15 +21,14 @@ import java.io.InputStream
21
21
import java .net .URL
22
22
import java .util .Properties
23
23
import com .ckkloverdos .maybe .{NoVal , Maybe }
24
+ import com .ckkloverdos .convert .Converters
24
25
25
26
/**
26
27
* Properties with conversion methods.
27
28
*
28
- * TODO: integrate with `converter` project
29
- *
30
29
* @author Christos KK Loverdos <loverdos@gmail.com>.
31
30
*/
32
- class Props (val map : Map [String , String ]) {
31
+ class Props (val map : Map [String , String ])( implicit conv : Converters = Converters . DefaultConverters ) {
33
32
34
33
private def _toBoolean (value : String , falseStrings : Set [String ]): Boolean = {
35
34
if (null eq value) {
@@ -39,6 +38,8 @@ class Props(val map: Map[String, String]) {
39
38
}
40
39
}
41
40
41
+ def converters = conv
42
+
42
43
def contains (key : String ) = map contains key
43
44
44
45
def filterKeys (f : String => Boolean ) = new Props (map filterKeys f)
@@ -60,37 +61,37 @@ class Props(val map: Map[String, String]) {
60
61
}
61
62
62
63
def getByte (key : String ): Maybe [Byte ] = map.get(key) match {
63
- case Some (value) => Maybe (value.toByte )
64
+ case Some (value) => conv.convertValueToByte (value)
64
65
case None => NoVal
65
66
}
66
67
67
68
def getShort (key : String ): Maybe [Short ] = map.get(key) match {
68
- case Some (value) => Maybe (value.toShort )
69
+ case Some (value) => conv.convertValueToShort (value)
69
70
case None => NoVal
70
71
}
71
72
72
73
def getInt (key : String ): Maybe [Int ] = map.get(key) match {
73
- case Some (value) => Maybe (value.toInt )
74
+ case Some (value) => conv.convertValueToInt(conv )
74
75
case None => NoVal
75
76
}
76
77
77
78
def getLong (key : String ): Maybe [Long ] = map.get(key) match {
78
- case Some (value) => Maybe (value.toLong )
79
+ case Some (value) => conv.convertValueToLong (value)
79
80
case None => NoVal
80
81
}
81
82
82
83
def getDouble (key : String ): Maybe [Double ] = map.get(key) match {
83
- case Some (value) => Maybe (value.toDouble )
84
+ case Some (value) => conv.convertValueToDouble (value)
84
85
case None => NoVal
85
86
}
86
87
87
88
def getFloat (key : String ): Maybe [Float ] = map.get(key) match {
88
- case Some (value) => Maybe (value.toFloat )
89
+ case Some (value) => conv.convertValueToFloat (value)
89
90
case None => NoVal
90
91
}
91
92
92
93
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 ] )
94
95
case None => NoVal
95
96
}
96
97
@@ -130,7 +131,7 @@ object Props {
130
131
131
132
lazy val empty = new Props (Map ())
132
133
133
- def apply (rc : StreamResource ): Maybe [Props ] = {
134
+ def apply (rc : StreamResource )( implicit conv : Converters ) : Maybe [Props ] = {
134
135
rc.mapInputStream { in =>
135
136
val props = new java.util.Properties
136
137
props.load(in)
@@ -139,17 +140,17 @@ object Props {
139
140
} map (new Props (_))
140
141
}
141
142
142
- def apply (in : InputStream ): Maybe [Props ] =
143
+ def apply (in : InputStream )( implicit conv : Converters ) : Maybe [Props ] =
143
144
this (new WrappingStreamResource (in, DummyWrappedPath , DummyWrappedURL ))
144
145
145
- def apply (props : Properties ): Maybe [Props ] = {
146
+ def apply (props : Properties )( implicit conv : Converters ) : Maybe [Props ] = {
146
147
import collection .JavaConversions ._
147
148
Maybe (new Props (props.toMap))
148
149
}
149
150
150
- def apply (path : String , rc : StreamResourceContext = DefaultResourceContext ): Maybe [Props ] = {
151
+ def apply (path : String , rc : StreamResourceContext = DefaultResourceContext )( implicit conv : Converters ) : Maybe [Props ] = {
151
152
rc.getResource(path).flatMap(this (_))
152
153
}
153
154
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 : _* ))
155
156
}
0 commit comments