This is an automated email from the ASF dual-hosted git repository. chaokunyang pushed a commit to tag v0.14.1-rc1 in repository https://gitbox.apache.org/repos/asf/fory.git
commit 7b3976f2123e52480264f3d949ae94d898c2dd37 Author: Asuka-star <[email protected]> AuthorDate: Fri Dec 19 21:33:46 2025 +0800 fix(java): Better ergonomics for AllowListChecker (#3061) ## Why? ## What does this PR do? 解决`setClassChecker/setTypeChecker`之后依旧打印错误日志 `setClassChecker`之后自动添加监听器 ## Related issues #3050 ## Does this PR introduce any user-facing change? - [x] Does this PR introduce any public API change? - [ ] Does this PR introduce any binary protocol compatibility change? ## Benchmark --- .../src/main/java/org/apache/fory/resolver/ClassResolver.java | 6 +++++- .../src/main/java/org/apache/fory/resolver/TypeResolver.java | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/java/fory-core/src/main/java/org/apache/fory/resolver/ClassResolver.java b/java/fory-core/src/main/java/org/apache/fory/resolver/ClassResolver.java index fbc0a261c..3b87c6611 100644 --- a/java/fory-core/src/main/java/org/apache/fory/resolver/ClassResolver.java +++ b/java/fory-core/src/main/java/org/apache/fory/resolver/ClassResolver.java @@ -1207,6 +1207,9 @@ public class ClassResolver extends TypeResolver { } return false; }; + if (classChecker instanceof AllowListChecker) { + ((AllowListChecker) classChecker).addListener(this); + } } @Override @@ -1335,7 +1338,8 @@ public class ClassResolver extends TypeResolver { && !Functions.isLambda(cls) && !ReflectionUtils.isJdkProxy(cls) && !extRegistry.registeredClassIdMap.containsKey(cls) - && !shimDispatcher.contains(cls)) { + && !shimDispatcher.contains(cls) + && !extRegistry.isTypeCheckerSet()) { LOG.warn(generateSecurityMsg(cls)); } } diff --git a/java/fory-core/src/main/java/org/apache/fory/resolver/TypeResolver.java b/java/fory-core/src/main/java/org/apache/fory/resolver/TypeResolver.java index 27fa633cf..24ccfc8a2 100644 --- a/java/fory-core/src/main/java/org/apache/fory/resolver/TypeResolver.java +++ b/java/fory-core/src/main/java/org/apache/fory/resolver/TypeResolver.java @@ -713,12 +713,17 @@ public abstract class TypeResolver { // TODO(chaokunyang) Better to use soft reference, see ObjectStreamClass. final ConcurrentHashMap<Tuple2<Class<?>, Boolean>, SortedMap<Member, Descriptor>> descriptorsCache = new ConcurrentHashMap<>(); - TypeChecker typeChecker = (resolver, className) -> true; + static final TypeChecker DEFAULT_TYPE_CHECKER = (resolver, className) -> true; + TypeChecker typeChecker = DEFAULT_TYPE_CHECKER; GenericType objectGenericType; final IdentityMap<Type, GenericType> genericTypes = new IdentityMap<>(); final Map<Class, Map<String, GenericType>> classGenericTypes = new HashMap<>(); final Map<List<ClassLoader>, CodeGenerator> codeGeneratorMap = new HashMap<>(); final Set<ClassInfo> registeredClassInfos = new HashSet<>(); boolean ensureSerializersCompiled; + + public boolean isTypeCheckerSet() { + return typeChecker != DEFAULT_TYPE_CHECKER; + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
