From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/MappingApiJackson2HttpMessageConverter.java |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 108 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/MappingApiJackson2HttpMessageConverter.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/MappingApiJackson2HttpMessageConverter.java
new file mode 100644
index 0000000..d73f7ba
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/MappingApiJackson2HttpMessageConverter.java
@@ -0,0 +1,108 @@
+package org.springblade.core.tool.jackson;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springblade.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;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 閽堝 api 鏈嶅姟瀵� android 鍜� ios 澶勭悊鐨� 鍒嗚鍐欑殑 jackson 澶勭悊
+ *
+ * <p>
+ * 1. app 绔笂鎶ユ暟鎹槸 浣跨敤 readObjectMapper
+ * 2. 杩斿洖缁� app 绔殑鏁版嵁浣跨敤 writeObjectMapper
+ * 3. 濡傛灉鏄繑鍥炲瓧绗︿覆锛岀洿鎺ョ浉搴旓紝涓嶅仛 json 澶勭悊
+ * </p>
+ *
+ * @author L.cm
+ */
+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<MediaType> initMediaType(BladeJacksonProperties properties) {
+		List<MediaType> supportedMediaTypes = new ArrayList<>();
+		supportedMediaTypes.add(MediaType.APPLICATION_JSON);
+		supportedMediaTypes.add(new MediaType("application", "*+json"));
+		// 鏀寔 text 鏂囨湰锛岀敤浜庢姤鏂囩鍚�
+		if (Boolean.TRUE.equals(properties.getSupportTextPlain())) {
+			supportedMediaTypes.add(MediaType.TEXT_PLAIN);
+		}
+		return supportedMediaTypes;
+	}
+
+	private static ObjectMapper initWriteObjectMapper(ObjectMapper readObjectMapper, BladeJacksonProperties properties) {
+		// 鎷疯礉 readObjectMapper
+		ObjectMapper writeObjectMapper = readObjectMapper.copy();
+		// 澶ф暟瀛� 杞� 瀛楃涓�
+		if (Boolean.TRUE.equals(properties.getBigNumToString())) {
+			writeObjectMapper.registerModules(BladeNumberModule.INSTANCE);
+		}
+		// null 澶勭悊
+		if (Boolean.TRUE.equals(properties.getNullToEmpty())) {
+			writeObjectMapper.setSerializerFactory(writeObjectMapper.getSerializerFactory().withSerializerModifier(new BladeBeanSerializerModifier()));
+			writeObjectMapper.getSerializerProvider().setNullValueSerializer(BladeBeanSerializerModifier.NullJsonSerializers.STRING_JSON_SERIALIZER);
+		}
+		return writeObjectMapper;
+	}
+
+	@Override
+	protected void writeInternal(@NonNull Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
+		// 濡傛灉鏄瓧绗︿覆锛岀洿鎺ュ啓鍑�
+		if (object instanceof String) {
+			Charset defaultCharset = this.getDefaultCharset();
+			Charset charset = defaultCharset == null ? Charsets.UTF_8 : defaultCharset;
+			StreamUtils.copy((String) object, charset, outputMessage.getBody());
+		} else {
+			super.writeInternal(object, type, outputMessage);
+		}
+	}
+
+	/**
+	 * Specify a custom prefix to use for this view's JSON output.
+	 * Default is none.
+	 *
+	 * @param jsonPrefix jsonPrefix
+	 * @see #setPrefixJson
+	 */
+	public void setJsonPrefix(@Nullable String jsonPrefix) {
+		this.jsonPrefix = jsonPrefix;
+	}
+
+	/**
+	 * Indicate whether the JSON output by this view should be prefixed with ")]}', ". Default is false.
+	 * <p>Prefixing the JSON string in this manner is used to help prevent JSON Hijacking.
+	 * The prefix renders the string syntactically invalid as a script so that it cannot be hijacked.
+	 * This prefix should be stripped before parsing the string as JSON.
+	 *
+	 * @param prefixJson prefixJson
+	 * @see #setJsonPrefix
+	 */
+	public void setPrefixJson(boolean prefixJson) {
+		this.jsonPrefix = (prefixJson ? ")]}', " : null);
+	}
+
+	@Override
+	protected void writePrefix(@NonNull JsonGenerator generator, @NonNull Object object) throws IOException {
+		if (this.jsonPrefix != null) {
+			generator.writeRaw(this.jsonPrefix);
+		}
+	}
+
+}

--
Gitblit v1.9.3