001package ca.cdr.api.model.json.jackson2deprecated;
002
003/*-
004 * #%L
005 * Smile CDR - CDR
006 * %%
007 * Copyright (C) 2016 - 2026 Smile CDR, Inc.
008 * %%
009 * All rights reserved.
010 * #L%
011 */
012
013import ca.cdr.api.model.json.RawJsonDeserializer;
014import com.fasterxml.jackson.core.JsonParser;
015import com.fasterxml.jackson.databind.DeserializationContext;
016import com.fasterxml.jackson.databind.JsonDeserializer;
017import com.fasterxml.jackson.databind.JsonNode;
018import com.fasterxml.jackson.databind.ObjectMapper;
019
020import java.io.IOException;
021
022/**
023 * Jackson 2 copy of {@link RawJsonDeserializer}, retained only for the admin-JSON Spring MVC wire:
024 * Spring 6.2's {@code MappingJackson2HttpMessageConverter} accepts a Jackson 2 {@code ObjectMapper} only,
025 * and Spring provides no Jackson 3 converter before Spring Framework 7.
026 * <p>
027 * TODO SPRING_7_UPGRADE - delete this class once Spring is upgraded to 7 and
028 * {@code JacksonJsonHttpMessageConverter} can take the Jackson 3 mapper directly. Keep it in step with
029 * {@link RawJsonDeserializer} until then.
030 */
031public class RawJsonDeserializerJacksonV2Deprecated extends JsonDeserializer<String> {
032        private static final ObjectMapper mapper = new ObjectMapper();
033
034        @Override
035        public String deserialize(JsonParser theParser, DeserializationContext theDeserializationContext)
036                        throws IOException {
037                JsonNode node = mapper.readTree(theParser);
038                return mapper.writeValueAsString(node);
039        }
040}