Skip to content

Commit 5f33ccf

Browse files
authored
Merge pull request #102 from namjug-kim/reaftor_currency_enum
refactor: Change Currency enum class to data class
2 parents 7905e58 + 3cb1e96 commit 5f33ccf

File tree

11 files changed

+909
-81
lines changed

11 files changed

+909
-81
lines changed

reactive-crypto-binance/src/main/kotlin/com/njkim/reactivecrypto/binance/BinanceJsonObjectMapper.kt

+1-5
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,7 @@ class BinanceJsonObjectMapper : ExchangeJsonObjectMapper {
7575
return object : JsonDeserializer<Currency>() {
7676
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Currency? {
7777
val rawValue = p.valueAsString
78-
return try {
79-
Currency.valueOf(rawValue)
80-
} catch (e: IllegalArgumentException) {
81-
Currency.UNKNOWN
82-
}
78+
return Currency.getInstance(rawValue)
8379
}
8480
}
8581
}

reactive-crypto-bithumb/src/main/kotlin/com/njkim/reactivecrypto/bithumb/BithumbJsonObjectMapper.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class BithumbJsonObjectMapper : ExchangeJsonObjectMapper {
8080
@Throws(IOException::class, JsonProcessingException::class)
8181
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Currency? {
8282
val rawValue = p.valueAsString
83-
return Currency.valueOf(rawValue)
83+
return Currency.getInstance(rawValue)
8484
}
8585
}
8686
}

reactive-crypto-coineal/src/main/kotlin/com/njkim/reactivecrypto/coineal/CoinealJsonObjectMapper.kt

+1-5
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,7 @@ class CoinealJsonObjectMapper : ExchangeJsonObjectMapper {
6969
override fun currencyDeserializer(): JsonDeserializer<Currency>? {
7070
return object : JsonDeserializer<Currency>() {
7171
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Currency {
72-
return try {
73-
Currency.valueOf(p.valueAsString.toUpperCase())
74-
} catch (e: Exception) {
75-
Currency.UNKNOWN
76-
}
72+
return Currency.getInstance(p.valueAsString.toUpperCase())
7773
}
7874
}
7975
}

reactive-crypto-core/src/main/kotlin/com/njkim/reactivecrypto/core/common/model/ExchangeVendor.kt

+22-25
Original file line numberDiff line numberDiff line change
@@ -21,57 +21,54 @@ import com.njkim.reactivecrypto.core.common.util.toCarmelCase
2121
data class ExchangeVendor(val name: String) {
2222

2323
companion object {
24+
private val mapCache: MutableMap<String, ExchangeVendor> = HashMap()
25+
2426
@JvmField
25-
val UPBIT = ExchangeVendor("UPBIT")
27+
val UPBIT = getInstance("UPBIT")
2628
@JvmField
27-
val BINANCE = ExchangeVendor("BINANCE")
29+
val BINANCE = getInstance("BINANCE")
2830
@JvmField
29-
val HUOBI_GLOBAL = ExchangeVendor("HUOBI_GLOBAL")
31+
val HUOBI_GLOBAL = getInstance("HUOBI_GLOBAL")
3032
@JvmField
31-
val HUOBI_JAPAN = ExchangeVendor("HUOBI_JAPAN")
33+
val HUOBI_JAPAN = getInstance("HUOBI_JAPAN")
3234
@JvmField
33-
val HUOBI_KOREA = ExchangeVendor("HUOBI_KOREA")
35+
val HUOBI_KOREA = getInstance("HUOBI_KOREA")
3436
@JvmField
35-
val OKEX = ExchangeVendor("OKEX")
37+
val OKEX = getInstance("OKEX")
3638
@JvmField
37-
val OKEX_KOREA = ExchangeVendor("OKEX_KOREA")
39+
val OKEX_KOREA = getInstance("OKEX_KOREA")
3840
@JvmField
39-
val BITHUMB = ExchangeVendor("BITHUMB")
41+
val BITHUMB = getInstance("BITHUMB")
4042
@JvmField
41-
val HUBI = ExchangeVendor("HUBI")
43+
val HUBI = getInstance("HUBI")
4244
@JvmField
43-
val BITMEX = ExchangeVendor("BITMEX")
45+
val BITMEX = getInstance("BITMEX")
4446
@JvmField
45-
val KRAKEN = ExchangeVendor("KRAKEN")
47+
val KRAKEN = getInstance("KRAKEN")
4648
@JvmField
47-
val BITMAX = ExchangeVendor("BITMAX")
49+
val BITMAX = getInstance("BITMAX")
4850
@JvmField
49-
val IDAX = ExchangeVendor("IDAX")
51+
val IDAX = getInstance("IDAX")
5052
@JvmField
51-
val COINEAL = ExchangeVendor("COINEAL")
53+
val COINEAL = getInstance("COINEAL")
5254
@JvmField
53-
val POLONIEX = ExchangeVendor("POLONIEX")
55+
val POLONIEX = getInstance("POLONIEX")
5456
@JvmField
55-
val BITSTAMP = ExchangeVendor("BITSTAMP")
57+
val BITSTAMP = getInstance("BITSTAMP")
5658
@JvmField
57-
val KORBOTEX = ExchangeVendor("KORBOTEX")
59+
val KORBOTEX = getInstance("KORBOTEX")
5860
@JvmField
59-
val COINALL = ExchangeVendor("COINALL")
61+
val COINALL = getInstance("COINALL")
6062

6163
@JvmStatic
6264
fun getInstance(value: String): ExchangeVendor {
6365
return mapCache.computeIfAbsent(value) { ExchangeVendor(value) }
6466
}
6567

6668
@JvmStatic
67-
fun values(): List<ExchangeVendor> {
68-
return listOf(
69-
UPBIT, BINANCE, HUOBI_GLOBAL, HUOBI_JAPAN, HUOBI_KOREA, OKEX, OKEX_KOREA, BITHUMB, HUBI, BITMEX,
70-
KRAKEN, BITMAX, IDAX, COINEAL, POLONIEX, BITSTAMP, KORBOTEX
71-
)
69+
fun values(): Collection<ExchangeVendor> {
70+
return mapCache.values
7271
}
73-
74-
private val mapCache = values().map { it.name to it }.toMap().toMutableMap()
7572
}
7673

7774
/**

0 commit comments

Comments
 (0)