diff --git a/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/ClassFactory.java b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/ClassFactory.java new file mode 100644 index 000000000..5daecf195 --- /dev/null +++ b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/ClassFactory.java @@ -0,0 +1,11 @@ +package com.fr.third.fasterxml.jackson.databind.type; + +/** + * Created by juhaoyu on 2018/11/5. + */ +public interface ClassFactory { + + Class classForName(String className); + + Class classForName(String className, ClassLoader classLoader); +} diff --git a/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java index 44a02d4de..98f6163d8 100644 --- a/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java +++ b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java @@ -103,13 +103,21 @@ public final class TypeFactory * ClassLoader used by this factory (Issue #624) */ protected final ClassLoader _classLoader; + + private ClassFactory classFactory; /* /********************************************************** /* Life-cycle /********************************************************** */ - + + + public void setClassFactory(ClassFactory classFactory) { + + this.classFactory = classFactory; + } + private TypeFactory() { _parser = new TypeParser(this); _modifiers = null; @@ -247,10 +255,18 @@ public final class TypeFactory protected Class classForName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException { + + if (classFactory != null) { + return classFactory.classForName(name, loader); + } return Class.forName(name, true, loader); } protected Class classForName(String name) throws ClassNotFoundException { + + if (classFactory != null) { + return classFactory.classForName(name); + } return Class.forName(name); }