From 850aa67ca8246c65a82e83126d72ddd31fa543d2 Mon Sep 17 00:00:00 2001 From: Gregor Billing Date: Fri, 18 Sep 2020 00:35:41 +0200 Subject: [PATCH] Do not rely on Java lowercasing mechanisms --- .../server/webscrambles/wcif/model/Gender.kt | 4 +++- .../webscrambles/wcif/model/RegistrationStatus.kt | 15 +++++++-------- .../server/webscrambles/wcif/model/ResultType.kt | 13 ++++++------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/Gender.kt b/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/Gender.kt index eccab044e..df2d9839e 100644 --- a/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/Gender.kt +++ b/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/Gender.kt @@ -1,6 +1,7 @@ package org.worldcubeassociation.tnoodle.server.webscrambles.wcif.model import org.worldcubeassociation.tnoodle.server.serial.SingletonStringEncoder +import org.worldcubeassociation.tnoodle.server.webscrambles.exceptions.BadWcifParameterException enum class Gender(val wcaString: String) { MALE("m"), @@ -11,6 +12,7 @@ enum class Gender(val wcaString: String) { fun fromWCAString(wcaString: String) = values().find { it.wcaString == wcaString } override fun encodeInstance(instance: Gender) = instance.wcaString - override fun makeInstance(deserialized: String) = fromWCAString(deserialized)!! + override fun makeInstance(deserialized: String) = fromWCAString(deserialized) + ?: BadWcifParameterException.error("Unknown WCIF spec Gender: '$deserialized'. Valid types: ${values().map { it.wcaString }}") } } diff --git a/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/RegistrationStatus.kt b/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/RegistrationStatus.kt index ff2c7dff7..80a3f3a0b 100644 --- a/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/RegistrationStatus.kt +++ b/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/RegistrationStatus.kt @@ -1,19 +1,18 @@ package org.worldcubeassociation.tnoodle.server.webscrambles.wcif.model import org.worldcubeassociation.tnoodle.server.serial.SingletonStringEncoder +import org.worldcubeassociation.tnoodle.server.webscrambles.exceptions.BadWcifParameterException -enum class RegistrationStatus { - ACCEPTED, - PENDING, - DELETED; - - val wcaString - get() = name.toLowerCase() +enum class RegistrationStatus(val wcaString: String) { + ACCEPTED("accepted"), + PENDING("pending"), + DELETED("deleted"); companion object : SingletonStringEncoder("RegistrationStatus") { fun fromWCAString(wcaString: String) = values().find { it.wcaString == wcaString } override fun encodeInstance(instance: RegistrationStatus) = instance.wcaString - override fun makeInstance(deserialized: String) = fromWCAString(deserialized)!! + override fun makeInstance(deserialized: String) = fromWCAString(deserialized) + ?: BadWcifParameterException.error("Unknown WCIF spec RegistrationStatus: '$deserialized'. Valid types: ${values().map { it.wcaString }}") } } diff --git a/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/ResultType.kt b/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/ResultType.kt index 2fd2f2a00..b6b32cb2e 100644 --- a/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/ResultType.kt +++ b/webscrambles/src/main/kotlin/org/worldcubeassociation/tnoodle/server/webscrambles/wcif/model/ResultType.kt @@ -1,18 +1,17 @@ package org.worldcubeassociation.tnoodle.server.webscrambles.wcif.model import org.worldcubeassociation.tnoodle.server.serial.SingletonStringEncoder +import org.worldcubeassociation.tnoodle.server.webscrambles.exceptions.BadWcifParameterException -enum class ResultType { - SINGLE, - AVERAGE; - - val wcaString - get() = this.name.toLowerCase() +enum class ResultType(val wcaString: String) { + SINGLE("single"), + AVERAGE("average"); companion object : SingletonStringEncoder("ResultType") { fun fromWCAString(wcaString: String) = values().find { it.wcaString == wcaString } override fun encodeInstance(instance: ResultType) = instance.wcaString - override fun makeInstance(deserialized: String) = fromWCAString(deserialized)!! + override fun makeInstance(deserialized: String) = fromWCAString(deserialized) + ?: BadWcifParameterException.error("Unknown WCIF spec ResultType: '$deserialized'. Valid types: ${values().map { it.wcaString }}") } }