refactor: 취소 응답을 역직렬화하는 PaymentCancelResponseDeserializer 코틀린 마이그레이션

This commit is contained in:
이상진 2025-07-15 17:34:35 +09:00
parent f59853ead1
commit 3bf65422d3

View File

@ -1,38 +1,32 @@
package roomescape.payment.web.support;
package roomescape.payment.web.support
import java.io.IOException;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.core.TreeNode
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.deser.std.StdDeserializer
import roomescape.payment.web.dto.response.PaymentCancelResponse
import java.io.IOException
import java.time.OffsetDateTime
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
class PaymentCancelResponseDeserializer(
vc: Class<PaymentCancelResponse?>? = null
) : StdDeserializer<PaymentCancelResponse?>(vc) {
import roomescape.payment.web.dto.response.PaymentCancelResponse;
@Throws(IOException::class)
override fun deserialize(
jsonParser: JsonParser,
deserializationContext: DeserializationContext?
): PaymentCancelResponse {
val cancels: JsonNode = jsonParser.codec.readTree<TreeNode>(jsonParser)
.get("cancels")
.get(0) as JsonNode
public class PaymentCancelResponseDeserializer extends StdDeserializer<PaymentCancelResponse> {
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(
"yyyy-MM-dd'T'HH:mm:ssXXX");
public PaymentCancelResponseDeserializer() {
this(null);
}
public PaymentCancelResponseDeserializer(Class<?> vc) {
super(vc);
}
@Override
public PaymentCancelResponse deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException {
JsonNode cancels = (JsonNode)jsonParser.getCodec().readTree(jsonParser).get("cancels").get(0);
return new PaymentCancelResponse(
cancels.get("cancelStatus").asText(),
cancels.get("cancelReason").asText(),
cancels.get("cancelAmount").asLong(),
OffsetDateTime.parse(cancels.get("canceledAt").asText())
);
}
return PaymentCancelResponse(
cancels.get("cancelStatus").asText(),
cancels.get("cancelReason").asText(),
cancels.get("cancelAmount").asLong(),
OffsetDateTime.parse(cancels.get("canceledAt").asText())
)
}
}