package com.qianwen.core.tool.jackson; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.lang.reflect.Type; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import com.qianwen.core.tool.jackson.BladeBeanSerializerModifier; import com.qianwen.core.tool.utils.Charsets; import org.springframework.http.HttpOutputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageNotWritableException; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.StreamUtils; /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/jackson/MappingApiJackson2HttpMessageConverter.class */ public class MappingApiJackson2HttpMessageConverter extends AbstractReadWriteJackson2HttpMessageConverter { @Nullable private String jsonPrefix; public MappingApiJackson2HttpMessageConverter(ObjectMapper objectMapper, BladeJacksonProperties properties) { super(objectMapper, initWriteObjectMapper(objectMapper, properties), initMediaType(properties)); } private static List initMediaType(BladeJacksonProperties properties) { List supportedMediaTypes = new ArrayList<>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON); supportedMediaTypes.add(new MediaType("application", "*+json")); if (Boolean.TRUE.equals(properties.getSupportTextPlain())) { supportedMediaTypes.add(MediaType.TEXT_PLAIN); } return supportedMediaTypes; } private static ObjectMapper initWriteObjectMapper(ObjectMapper readObjectMapper, BladeJacksonProperties properties) { ObjectMapper writeObjectMapper = readObjectMapper.copy(); if (Boolean.TRUE.equals(properties.getBigNumToString())) { writeObjectMapper.registerModules(new Module[]{BladeNumberModule.INSTANCE}); } if (Boolean.TRUE.equals(properties.getNullToEmpty())) { writeObjectMapper.setSerializerFactory(writeObjectMapper.getSerializerFactory().withSerializerModifier(new BladeBeanSerializerModifier())); writeObjectMapper.getSerializerProvider().setNullValueSerializer(BladeBeanSerializerModifier.NullJsonSerializers.STRING_JSON_SERIALIZER); } return writeObjectMapper; } /* JADX INFO: Access modifiers changed from: protected */ @Override // org.springblade.core.tool.jackson.AbstractReadWriteJackson2HttpMessageConverter public void writeInternal(@NonNull Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { if (object instanceof String) { Charset defaultCharset = getDefaultCharset(); Charset charset = defaultCharset == null ? Charsets.UTF_8 : defaultCharset; StreamUtils.copy((String) object, charset, outputMessage.getBody()); return; } super.writeInternal(object, type, outputMessage); } public void setJsonPrefix(@Nullable String jsonPrefix) { this.jsonPrefix = jsonPrefix; } public void setPrefixJson(boolean prefixJson) { this.jsonPrefix = prefixJson ? ")]}', " : null; } protected void writePrefix(@NonNull JsonGenerator generator, @NonNull Object object) throws IOException { if (this.jsonPrefix != null) { generator.writeRaw(this.jsonPrefix); } } }