diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index f86913926..2e35d9a19 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -303,9 +303,9 @@ public final class Application { "jsonconvert", Convert.class, JsonFactory.root().getConvert()); this.resourceFactory.register( "protobufconvert", Convert.class, ProtobufFactory.root().getConvert()); - BsonFactory.root().registerColumnHandlerConsumer(resourceFactory::inject); - JsonFactory.root().registerColumnHandlerConsumer(resourceFactory::inject); - ProtobufFactory.root().registerColumnHandlerConsumer(resourceFactory::inject); + BsonFactory.root().registerFieldFuncConsumer(resourceFactory::inject); + JsonFactory.root().registerFieldFuncConsumer(resourceFactory::inject); + ProtobufFactory.root().registerFieldFuncConsumer(resourceFactory::inject); // 系统内部模块组件 moduleEngines.add(this.sourceModule); // 放第一,很多module依赖于source diff --git a/src/main/java/org/redkale/convert/ConvertColumnHandler.java b/src/main/java/org/redkale/convert/ConvertColumnHandler.java index 9b08582cb..e4a994418 100644 --- a/src/main/java/org/redkale/convert/ConvertColumnHandler.java +++ b/src/main/java/org/redkale/convert/ConvertColumnHandler.java @@ -8,7 +8,7 @@ package org.redkale.convert; import java.lang.annotation.*; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.*; -import java.util.function.BiFunction; +import org.redkale.util.ColumnHandler; /** * 字段值转换器,常见于脱敏操作 @@ -28,11 +28,11 @@ public @interface ConvertColumnHandler { /** * 字段值转换器 * - * @return BiFunction<String, Object, Object>实现类 + * @return ColumnHandler实现类 * * @since 2.8.0 */ - Class value() default BiFunction.class; + Class value() default ColumnHandler.class; /** * 解析/序列化定制化的TYPE diff --git a/src/main/java/org/redkale/convert/ConvertFactory.java b/src/main/java/org/redkale/convert/ConvertFactory.java index 2abde5a34..909b5089d 100644 --- a/src/main/java/org/redkale/convert/ConvertFactory.java +++ b/src/main/java/org/redkale/convert/ConvertFactory.java @@ -61,7 +61,7 @@ public abstract class ConvertFactory { private final ConcurrentHashMap columnEntrys = new ConcurrentHashMap(); - private final ConcurrentHashMap columnHandlers = new ConcurrentHashMap(); + private final ConcurrentHashMap fieldFuncs = new ConcurrentHashMap(); private final Set skipIgnores = new HashSet(); @@ -74,7 +74,7 @@ public abstract class ConvertFactory { private boolean skipAllIgnore = false; - private Consumer columnHandlerConsumer; + private Consumer fieldFuncConsumer; protected ConvertFactory(ConvertFactory parent, int features) { this.features = features; @@ -436,17 +436,17 @@ public abstract class ConvertFactory { } for (ConvertColumnHandler h : chs) { if (h.type().contains(ct)) { - Class handlerClass = h.value(); - if (handlerClass != BiFunction.class) { + Class handlerClass = h.value(); + if (handlerClass != ColumnHandler.class) { colConvertType = h.type(); - colHandler = findColumnHandler(handlerClass); + colHandler = findFieldFunc(handlerClass); if (colHandler == null) { try { colHandler = handlerClass.getConstructor().newInstance(); } catch (Exception e) { throw new ConvertException(e); } - Consumer consumer = findColumnHandlerConsumer(); + Consumer consumer = findFieldFuncConsumer(); if (consumer != null) { consumer.accept(colHandler); } @@ -918,11 +918,11 @@ public abstract class ConvertFactory { return child; } - private Consumer findColumnHandlerConsumer() { - if (columnHandlerConsumer != null) { - return columnHandlerConsumer; + private Consumer findFieldFuncConsumer() { + if (fieldFuncConsumer != null) { + return fieldFuncConsumer; } - return parent == null ? null : parent.findColumnHandlerConsumer(); + return parent == null ? null : parent.findFieldFuncConsumer(); } private Class findEntityAlias(String name) { @@ -935,8 +935,8 @@ public abstract class ConvertFactory { * * @param consumer ColumnHandler处理函数 */ - public final void registerColumnHandlerConsumer(Consumer consumer) { - this.columnHandlerConsumer = consumer; + public final void registerFieldFuncConsumer(Consumer consumer) { + this.fieldFuncConsumer = consumer; } /** @@ -1110,12 +1110,12 @@ public abstract class ConvertFactory { return result; } - public final BiFunction findColumnHandler(Class type) { - BiFunction handler = columnHandlers.get(type); + public final BiFunction findFieldFunc(Class type) { + BiFunction handler = fieldFuncs.get(type); if (handler != null) { return handler; } - return this.parent == null ? null : this.parent.findColumnHandler(type); + return this.parent == null ? null : this.parent.findFieldFunc(type); } // ---------------------------------------------------------------------- @@ -1124,7 +1124,7 @@ public abstract class ConvertFactory { } public final void register(Class clazz, C columnHandler) { - columnHandlers.put(Objects.requireNonNull(clazz), Objects.requireNonNull(columnHandler)); + fieldFuncs.put(Objects.requireNonNull(clazz), Objects.requireNonNull(columnHandler)); } public final void register(final Type clazz, final SimpledCoder coder) { diff --git a/src/main/java/org/redkale/util/ColumnHandler.java b/src/main/java/org/redkale/util/ColumnHandler.java new file mode 100644 index 000000000..3b4b5c0eb --- /dev/null +++ b/src/main/java/org/redkale/util/ColumnHandler.java @@ -0,0 +1,29 @@ +/* + +*/ + +package org.redkale.util; + +import java.util.function.BiFunction; + +/** + * 字段值转换器,常见于脱敏操作 + * + *

详情见: https://redkale.org + * + * @author zhangjx + * @since 2.8.0 + * @param 泛型 + * @param 泛型 + */ +public interface ColumnHandler extends BiFunction { + + /** + * 字段值转换 + * @param field 字段名 + * @param value 字段值 + * @return 新的字段值 + */ + @Override + public V apply(String field, F value); +} diff --git a/src/test/java/org/redkale/test/convert/ConvertColumnHandlerTest.java b/src/test/java/org/redkale/test/convert/ConvertColumnHandlerTest.java index f8dd463a4..6451efff8 100644 --- a/src/test/java/org/redkale/test/convert/ConvertColumnHandlerTest.java +++ b/src/test/java/org/redkale/test/convert/ConvertColumnHandlerTest.java @@ -4,10 +4,10 @@ package org.redkale.test.convert; -import java.util.function.BiFunction; import org.junit.jupiter.api.*; import org.redkale.convert.ConvertColumnHandler; import org.redkale.convert.json.JsonConvert; +import org.redkale.util.ColumnHandler; /** * @@ -57,7 +57,7 @@ public class ConvertColumnHandlerTest { } } - public static class ParamColumnHandler implements BiFunction { + public static class ParamColumnHandler implements ColumnHandler { @Override public String apply(String field, String value) {