This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git
The following commit(s) were added to refs/heads/main by this push:
new 3348074f4 fix(java): Better ergonomics for AllowListChecker (#3061)
3348074f4 is described below
commit 3348074f44bd2d83497ca5bfe491f063710327a0
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]