Skip to content

Commit

Permalink
refactor: Change Currency enum class to data class
Browse files Browse the repository at this point in the history
  • Loading branch information
namjug-kim committed Jul 22, 2019
1 parent 7905e58 commit 3cb1e96
Show file tree
Hide file tree
Showing 11 changed files with 909 additions and 81 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,7 @@ class BinanceJsonObjectMapper : ExchangeJsonObjectMapper {
return object : JsonDeserializer<Currency>() {
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Currency? {
val rawValue = p.valueAsString
return try {
Currency.valueOf(rawValue)
} catch (e: IllegalArgumentException) {
Currency.UNKNOWN
}
return Currency.getInstance(rawValue)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class BithumbJsonObjectMapper : ExchangeJsonObjectMapper {
@Throws(IOException::class, JsonProcessingException::class)
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Currency? {
val rawValue = p.valueAsString
return Currency.valueOf(rawValue)
return Currency.getInstance(rawValue)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,7 @@ class CoinealJsonObjectMapper : ExchangeJsonObjectMapper {
override fun currencyDeserializer(): JsonDeserializer<Currency>? {
return object : JsonDeserializer<Currency>() {
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Currency {
return try {
Currency.valueOf(p.valueAsString.toUpperCase())
} catch (e: Exception) {
Currency.UNKNOWN
}
return Currency.getInstance(p.valueAsString.toUpperCase())
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,57 +21,54 @@ import com.njkim.reactivecrypto.core.common.util.toCarmelCase
data class ExchangeVendor(val name: String) {

companion object {
private val mapCache: MutableMap<String, ExchangeVendor> = HashMap()

@JvmField
val UPBIT = ExchangeVendor("UPBIT")
val UPBIT = getInstance("UPBIT")
@JvmField
val BINANCE = ExchangeVendor("BINANCE")
val BINANCE = getInstance("BINANCE")
@JvmField
val HUOBI_GLOBAL = ExchangeVendor("HUOBI_GLOBAL")
val HUOBI_GLOBAL = getInstance("HUOBI_GLOBAL")
@JvmField
val HUOBI_JAPAN = ExchangeVendor("HUOBI_JAPAN")
val HUOBI_JAPAN = getInstance("HUOBI_JAPAN")
@JvmField
val HUOBI_KOREA = ExchangeVendor("HUOBI_KOREA")
val HUOBI_KOREA = getInstance("HUOBI_KOREA")
@JvmField
val OKEX = ExchangeVendor("OKEX")
val OKEX = getInstance("OKEX")
@JvmField
val OKEX_KOREA = ExchangeVendor("OKEX_KOREA")
val OKEX_KOREA = getInstance("OKEX_KOREA")
@JvmField
val BITHUMB = ExchangeVendor("BITHUMB")
val BITHUMB = getInstance("BITHUMB")
@JvmField
val HUBI = ExchangeVendor("HUBI")
val HUBI = getInstance("HUBI")
@JvmField
val BITMEX = ExchangeVendor("BITMEX")
val BITMEX = getInstance("BITMEX")
@JvmField
val KRAKEN = ExchangeVendor("KRAKEN")
val KRAKEN = getInstance("KRAKEN")
@JvmField
val BITMAX = ExchangeVendor("BITMAX")
val BITMAX = getInstance("BITMAX")
@JvmField
val IDAX = ExchangeVendor("IDAX")
val IDAX = getInstance("IDAX")
@JvmField
val COINEAL = ExchangeVendor("COINEAL")
val COINEAL = getInstance("COINEAL")
@JvmField
val POLONIEX = ExchangeVendor("POLONIEX")
val POLONIEX = getInstance("POLONIEX")
@JvmField
val BITSTAMP = ExchangeVendor("BITSTAMP")
val BITSTAMP = getInstance("BITSTAMP")
@JvmField
val KORBOTEX = ExchangeVendor("KORBOTEX")
val KORBOTEX = getInstance("KORBOTEX")
@JvmField
val COINALL = ExchangeVendor("COINALL")
val COINALL = getInstance("COINALL")

@JvmStatic
fun getInstance(value: String): ExchangeVendor {
return mapCache.computeIfAbsent(value) { ExchangeVendor(value) }
}

@JvmStatic
fun values(): List<ExchangeVendor> {
return listOf(
UPBIT, BINANCE, HUOBI_GLOBAL, HUOBI_JAPAN, HUOBI_KOREA, OKEX, OKEX_KOREA, BITHUMB, HUBI, BITMEX,
KRAKEN, BITMAX, IDAX, COINEAL, POLONIEX, BITSTAMP, KORBOTEX
)
fun values(): Collection<ExchangeVendor> {
return mapCache.values
}

private val mapCache = values().map { it.name to it }.toMap().toMutableMap()
}

/**
Expand Down

0 comments on commit 3cb1e96

Please sign in to comment.