From 9ba901b95c444d262fe366a5a434428f50d51114 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Mon, 25 Jan 2021 10:55:17 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20JsonSimpleDesensitize=20=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E4=BD=BF=E7=94=A8class=20=E6=8C=87=E5=AE=9A=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84handler=EF=BC=8C=E6=9B=B4=E6=96=B9=E4=BE=BF?= =?UTF-8?q?=E7=9B=B4=E8=A7=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desensite/JsonDesensitizeSerializer.java | 6 ++--- .../SimpleDesensitizationHandlerHolder.java | 24 +++++++++++++++++-- .../annotation/JsonSimpleDesensitize.java | 3 +-- .../handler/SimpleDesensitizationHandler.java | 8 ------- .../SixAsteriskDesensitizationHandler.java | 15 ------------ .../test/desensite/DesensitizationUser.java | 2 +- .../desensite/TestDesensitizationHandler.java | 7 ------ 7 files changed, 27 insertions(+), 38 deletions(-) diff --git a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/JsonDesensitizeSerializer.java b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/JsonDesensitizeSerializer.java index a6ddb1f2..efc81fec 100644 --- a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/JsonDesensitizeSerializer.java +++ b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/JsonDesensitizeSerializer.java @@ -55,9 +55,9 @@ public class JsonDesensitizeSerializer extends JsonSerializer implements if (jsonDesensitizeAnnotation instanceof JsonSimpleDesensitize) { // Simple 类型处理 JsonSimpleDesensitize an = (JsonSimpleDesensitize) this.jsonDesensitizeAnnotation; - String type = an.type(); - SimpleDesensitizationHandler desensitizationHandler = SimpleDesensitizationHandlerHolder.TYPE_MAPS - .get(type); + Class handlerClass = an.handler(); + SimpleDesensitizationHandler desensitizationHandler = SimpleDesensitizationHandlerHolder + .getHandler(handlerClass); Assert.notNull(desensitizationHandler, "SimpleDesensitizationHandler can not be Null"); str = desensitizationHandler.handle(value); } diff --git a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/SimpleDesensitizationHandlerHolder.java b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/SimpleDesensitizationHandlerHolder.java index ed565788..af223129 100644 --- a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/SimpleDesensitizationHandlerHolder.java +++ b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/SimpleDesensitizationHandlerHolder.java @@ -14,15 +14,35 @@ import java.util.concurrent.ConcurrentHashMap; */ public class SimpleDesensitizationHandlerHolder { - public final static Map TYPE_MAPS = new ConcurrentHashMap<>(); + private final static Map, SimpleDesensitizationHandler> MAP = new ConcurrentHashMap<>(); static { // SPI 加载所有的脱敏类型处理 ServiceLoader loadedDrivers = ServiceLoader .load(SimpleDesensitizationHandler.class); for (SimpleDesensitizationHandler desensitizationHandler : loadedDrivers) { - TYPE_MAPS.put(desensitizationHandler.getType(), desensitizationHandler); + MAP.put(desensitizationHandler.getClass(), desensitizationHandler); } } + /** + * 获取Handler + * @param handlerClass SimpleDesensitizationHandler的实现类 + * @return 处理器实例 + */ + public static SimpleDesensitizationHandler getHandler(Class handlerClass) { + return MAP.get(handlerClass); + } + + /** + * 添加Handler + * @param handlerClass SimpleDesensitizationHandler的实现类 + * @param handler 处理器实例 + * @return handler 处理器实例 + */ + public static SimpleDesensitizationHandler addHandler(Class handlerClass, + SimpleDesensitizationHandler handler) { + return MAP.put(handlerClass, handler); + } + } diff --git a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/annotation/JsonSimpleDesensitize.java b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/annotation/JsonSimpleDesensitize.java index 04b4bb30..7488280a 100644 --- a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/annotation/JsonSimpleDesensitize.java +++ b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/annotation/JsonSimpleDesensitize.java @@ -22,9 +22,8 @@ public @interface JsonSimpleDesensitize { /** * 脱敏类型,用于指定脱敏处理器 - * @see SimpleDesensitizationHandler#getType() * @return type */ - String type(); + Class handler(); } diff --git a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SimpleDesensitizationHandler.java b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SimpleDesensitizationHandler.java index 7419b1ba..7630d5d8 100644 --- a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SimpleDesensitizationHandler.java +++ b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SimpleDesensitizationHandler.java @@ -1,7 +1,5 @@ package com.hccake.ballcat.common.core.desensite.handler; -import com.hccake.ballcat.common.core.desensite.handler.DesensitizationHandler; - /** * 简单的脱敏处理器,传入源数据直接返回脱敏后的数据 * @@ -10,12 +8,6 @@ import com.hccake.ballcat.common.core.desensite.handler.DesensitizationHandler; */ public interface SimpleDesensitizationHandler extends DesensitizationHandler { - /** - * 脱敏类型 - * @return 类型 - */ - String getType(); - /** * 脱敏处理 * @param origin 原始字符串 diff --git a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SixAsteriskDesensitizationHandler.java b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SixAsteriskDesensitizationHandler.java index ef7a19c4..eb6673ce 100644 --- a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SixAsteriskDesensitizationHandler.java +++ b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/desensite/handler/SixAsteriskDesensitizationHandler.java @@ -8,21 +8,6 @@ package com.hccake.ballcat.common.core.desensite.handler; */ public class SixAsteriskDesensitizationHandler implements SimpleDesensitizationHandler { - /** - * 定长脱敏,总是6个星号,不管原文是啥 - * @see SixAsteriskDesensitizationHandler - */ - public static final String TYPE = "SIX_ASTERISK"; - - /** - * 脱敏类型 - * @return 类型 - */ - @Override - public String getType() { - return TYPE; - } - /** * 脱敏处理 * @param origin 原始字符串 diff --git a/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/DesensitizationUser.java b/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/DesensitizationUser.java index 4d700511..646d6edf 100644 --- a/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/DesensitizationUser.java +++ b/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/DesensitizationUser.java @@ -42,7 +42,7 @@ public class DesensitizationUser { /** * 测试自定义脱敏 */ - @JsonSimpleDesensitize(type = TestDesensitizationHandler.TYPE) + @JsonSimpleDesensitize(handler = TestDesensitizationHandler.class) private String testField; } diff --git a/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/TestDesensitizationHandler.java b/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/TestDesensitizationHandler.java index 7d8d8f91..0309297b 100644 --- a/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/TestDesensitizationHandler.java +++ b/ballcat-common/ballcat-common-core/src/test/java/com/hccake/common/core/test/desensite/TestDesensitizationHandler.java @@ -8,13 +8,6 @@ import com.hccake.ballcat.common.core.desensite.handler.SimpleDesensitizationHan */ public class TestDesensitizationHandler implements SimpleDesensitizationHandler { - public final static String TYPE = "TEST"; - - @Override - public String getType() { - return TYPE; - } - @Override public String handle(String s) { return "TEST-" + s;