mirror of https://github.com/hykilpikonna/AquaDX
[O] Rewrite BooleanIntDeserializer
parent
3d58a15b10
commit
809004e16b
|
@ -3,7 +3,7 @@ package icu.samnyan.aqua.sega.chusan.model.userdata;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import icu.samnyan.aqua.sega.chusan.util.BooleanToIntegerDeserializer;
|
import icu.samnyan.aqua.sega.util.jackson.BooleanToIntegerDeserializer;
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
package icu.samnyan.aqua.sega.chusan.util;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JacksonException;
|
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
public class BooleanToIntegerDeserializer extends JsonDeserializer<Integer> {
|
|
||||||
@Override
|
|
||||||
public Integer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException {
|
|
||||||
return switch (p.getCurrentToken()) {
|
|
||||||
case VALUE_STRING -> {
|
|
||||||
String value = p.getValueAsString();
|
|
||||||
if (value.toLowerCase(Locale.ROOT).equals("true")) {
|
|
||||||
yield 1;
|
|
||||||
} else if (value.toLowerCase(Locale.ROOT).equals("false")) {
|
|
||||||
yield 0;
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
yield Integer.parseInt(value);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
throw new UnsupportedOperationException("Cannot deserialize to integer field");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case VALUE_NUMBER_INT -> p.getIntValue();
|
|
||||||
case VALUE_TRUE -> 1;
|
|
||||||
case VALUE_FALSE -> 0;
|
|
||||||
default -> throw new UnsupportedOperationException("Cannot deserialize to integer field");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package icu.samnyan.aqua.sega.util.jackson
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonParser
|
||||||
|
import com.fasterxml.jackson.core.JsonToken
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationContext
|
||||||
|
import com.fasterxml.jackson.databind.JsonDeserializer
|
||||||
|
import ext.int
|
||||||
|
|
||||||
|
class BooleanToIntegerDeserializer : JsonDeserializer<Int>() {
|
||||||
|
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Int {
|
||||||
|
return when (p.currentToken) {
|
||||||
|
JsonToken.VALUE_STRING -> when (val str = p.valueAsString.lowercase()) {
|
||||||
|
"true" -> 1
|
||||||
|
"false" -> 0
|
||||||
|
else -> str.int
|
||||||
|
}
|
||||||
|
JsonToken.VALUE_NUMBER_INT -> p.intValue
|
||||||
|
JsonToken.VALUE_TRUE -> 1
|
||||||
|
JsonToken.VALUE_FALSE -> 0
|
||||||
|
else -> throw UnsupportedOperationException("Cannot deserialize to boolean int")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue