Skip to content

Commit

Permalink
allow register class by name
Browse files Browse the repository at this point in the history
  • Loading branch information
chaokunyang committed Sep 24, 2024
1 parent 89a8d01 commit 22193f6
Showing 1 changed file with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,10 @@ public void register(Class<?> cls) {
}
}

public void register(String className) {
register(loadClass(className, false, 0, false));
}

public void register(Class<?>... classes) {
for (Class<?> cls : classes) {
register(cls);
Expand Down Expand Up @@ -500,13 +504,21 @@ public void register(Class<?> cls, int classId) {
extRegistry.classIdGenerator++;
}

public void register(String className, int classId) {
register(loadClass(className, false, 0, false), classId);
}

public void register(Class<?> cls, Short id, boolean createSerializer) {
register(cls, id);
if (createSerializer) {
getSerializer(cls);
}
}

public void register(String className, Short classId, boolean createSerializer) {
register(loadClass(className, false, 0, false), classId, createSerializer);
}

public boolean isRegistered(Class<?> cls) {
return extRegistry.registeredClassIdMap.get(cls) != null;
}
Expand Down Expand Up @@ -1800,6 +1812,11 @@ private Class<?> loadClass(ClassSpec classSpec) {
}

private Class<?> loadClass(String className, boolean isEnum, int arrayDims) {
return loadClass(className, isEnum, arrayDims, fury.getConfig().deserializeNonexistentClass());
}

private Class<?> loadClass(
String className, boolean isEnum, int arrayDims, boolean deserializeNonexistentClass) {
extRegistry.classChecker.checkClass(this, className);
try {
return Class.forName(className, false, fury.getClassLoader());
Expand All @@ -1811,7 +1828,7 @@ private Class<?> loadClass(String className, boolean isEnum, int arrayDims) {
String.format(
"Class %s not found from classloaders [%s, %s]",
className, fury.getClassLoader(), Thread.currentThread().getContextClassLoader());
if (fury.getConfig().deserializeNonexistentClass()) {
if (deserializeNonexistentClass) {
LOG.warn(msg);
return NonexistentClass.getNonexistentClass(
className, isEnum, arrayDims, metaContextShareEnabled);
Expand Down

0 comments on commit 22193f6

Please sign in to comment.