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}