currentClassLoader

This commit is contained in:
redkale
2024-10-12 08:25:46 +08:00
parent a1c4fafa47
commit b6accc97f6
25 changed files with 27 additions and 33 deletions

View File

@@ -150,7 +150,7 @@ class AppConfig {
if (compileMode || this.classLoader instanceof RedkaleClassLoader.RedkaleCacheClassLoader) {
this.serverClassLoader = this.classLoader;
} else {
// this.serverClassLoader = RedkaleClassLoader.getRedkaleClassLoader(this.classLoader);
// this.serverClassLoader = RedkaleClassLoader.currentClassLoader(this.classLoader);
this.serverClassLoader = this.classLoader;
}
}

View File

@@ -66,7 +66,7 @@ public abstract class JsonDynEncoder<T> extends ObjectEncoder<JsonWriter, T> {
}
}
final Map<String, AccessibleObject> mixedNames = mixedNames0;
RedkaleClassLoader loader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader loader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/convert/json/_Dyn" + JsonDynEncoder.class.getSimpleName() + "__"
+ clazz.getName().replace('.', '_').replace('$', '_') + "_" + factory.getFeatures() + "_"
+ Utility.md5Hex(elementb.toString()); // tiny必须要加上, 同一个类会有多个字段定制Convert

View File

@@ -69,7 +69,7 @@ public abstract class ProtobufDynEncoder<T> extends ProtobufObjectEncoder<T> {
}
}
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/convert/pb/_Dyn" + ProtobufDynEncoder.class.getSimpleName() + "__"
+ clazz.getName().replace('.', '_').replace('$', '_') + "_" + factory.getFeatures() + "_"
+ Utility.md5Hex(elementb.toString()); // tiny必须要加上, 同一个类会有多个字段定制Convert

View File

@@ -454,7 +454,7 @@ public class MessageModuleEngine extends ModuleEngine {
}
}
if (boost != null && Utility.isNotEmpty(boost.consumerBytes)) {
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
boost.consumerBytes.forEach((innerFullName, bytes) -> {
try {
String clzName = innerFullName.replace('/', '.');

View File

@@ -108,7 +108,7 @@ public class HttpContext extends Context {
final String handlerDesc = Type.getDescriptor(CompletionHandler.class);
final String newDynName = "org/redkaledyn/http/handler/_DynHttpAsyncHandler__"
+ handlerClass.getName().replace('.', '/').replace('$', '_');
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
try {
return (Creator<H>) Creator.create(classLoader.loadClass(newDynName.replace('/', '.')));
} catch (Throwable ex) {

View File

@@ -560,7 +560,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
for (Class cz : method.getParameterTypes()) {
tmpps.append("__").append(cz.getName().replace('.', '_'));
}
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/http/servlet/action/_DynHttpActionServlet__"
+ this.getClass().getName().replace('.', '_').replace('$', '_') + "__" + method.getName() + tmpps;
try {

View File

@@ -74,7 +74,7 @@ public abstract class SncpActionServlet extends SncpServlet {
this.actionid = actionid;
this.method = method;
this.paramComposeBeanType = SncpRemoteAction.createParamComposeBeanType(
RedkaleClassLoader.getRedkaleClassLoader(),
RedkaleClassLoader.currentClassLoader(),
Sncp.getServiceType(service),
method,
actionid,
@@ -356,7 +356,7 @@ public abstract class SncpActionServlet extends SncpServlet {
final boolean boolReturnTypeFuture = Future.class.isAssignableFrom(method.getReturnType());
final String newDynName = "org/redkaledyn/sncp/servlet/action/_DynSncpActionServlet__"
+ resourceType.getSimpleName() + "_" + method.getName() + "_" + actionid;
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
Class<?> newClazz = null;
try {
newClazz = classLoader.loadClass(newDynName.replace('/', '.'));

View File

@@ -54,7 +54,7 @@ public interface SncpAsyncHandler<V, A> extends CompletionHandler<V, A> {
final String realHandlerDesc = Type.getDescriptor(CompletionHandler.class);
final String newDynName = "org/redkaledyn/sncp/handler/_Dyn" + sncpHandlerClass.getSimpleName()
+ "__" + handlerClass.getName().replace('.', '/').replace('$', '_');
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
try {
Class newHandlerClazz = classLoader.loadClass(newDynName.replace('/', '.'));
return (Creator<SncpAsyncHandler>) Creator.create(newHandlerClazz);

View File

@@ -101,7 +101,7 @@ public final class SncpRemoteAction {
this.paramTypes = TypeToken.getGenericType(method.getGenericParameterTypes(), serviceImplClass);
this.paramClasses = method.getParameterTypes();
Type pt = createParamComposeBeanType(
RedkaleClassLoader.getRedkaleClassLoader(),
RedkaleClassLoader.currentClassLoader(),
serviceImplClass,
method,
actionid,

View File

@@ -80,7 +80,7 @@ public abstract class EntityFullFunc<T> {
final String objectDesc = Type.getDescriptor(Object.class);
final String serisDesc = Type.getDescriptor(Serializable[].class);
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/source/_Dyn" + EntityFullFunc.class.getSimpleName() + "__"
+ entityType.getName().replace('.', '_').replace('$', '_');
try {

View File

@@ -60,7 +60,7 @@ public final class DataSqlMapperBuilder {
if (!mapperType.isInterface()) {
throw new SourceException(mapperType + " is not interface");
}
final RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
final RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final Class entityType = entityType(mapperType);
final String supDynName = mapperType.getName().replace('.', '/');
final String newDynName = "org/redkaledyn/source/mapper/_DynDataSqlMapper_"

View File

@@ -1002,7 +1002,7 @@ public interface Attribute<T, F> {
final String interDesc = Type.getDescriptor(TypeToken.typeToClass(subclass));
final String columnDesc = Type.getDescriptor(column);
Class realclz = TypeToken.typeToClass(subclass);
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
try {
classLoader.loadClass(realclz.getName());
} catch (ClassNotFoundException e) {

View File

@@ -679,7 +679,7 @@ public interface Copier<S, D> extends BiFunction<S, D, D> {
final String srcClassName = srcClass.getName().replace('.', '/');
final String destDesc = Type.getDescriptor(destClass);
final String srcDesc = Type.getDescriptor(srcClass);
final RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
final RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String utilClassName = Utility.class.getName().replace('.', '/');
final String newDynName = "org/redkaledyn/copier/_Dyn" + Copier.class.getSimpleName() + "_" + options
+ "__" + srcClass.getName().replace('.', '_').replace('$', '_')

View File

@@ -292,7 +292,7 @@ public interface Creator<T> {
final String supDynName = Creator.class.getName().replace('.', '/');
final String interName = clazz.getName().replace('.', '/');
final String interDesc = Type.getDescriptor(clazz);
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/creator/_Dyn" + Creator.class.getSimpleName() + "__"
+ clazz.getName().replace('.', '_').replace('$', '_') + (paramCount < 0 ? "" : ("_" + paramCount));
try {

View File

@@ -115,7 +115,7 @@ public abstract class Flows {
if (!"executable".equals(System.getProperty("org.graalvm.nativeimage.kind"))) { // not native-image
try {
//
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
reactorMonoClass0 = classLoader.loadClass("reactor.core.publisher.Mono");
Class<Function<Object, CompletableFuture>> monoFuncClass = null;
try {

View File

@@ -231,7 +231,7 @@ class Inners {
}
final String interName = clazz.getName().replace('.', '/');
final String interDesc = org.redkale.asm.Type.getDescriptor(clazz);
final RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
final RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/creator/_DynArrayFunction__"
+ clazz.getName().replace('.', '_').replace('$', '_');
try {

View File

@@ -91,7 +91,7 @@ public interface Invoker<C, R> {
} else if (returnType == void.class) {
returnDesc = Type.getDescriptor(Void.class);
}
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
StringBuilder sbpts = new StringBuilder();
for (Class c : method.getParameterTypes()) {
sbpts.append('_').append(c.getName().replace('.', '_').replace('$', '_'));

View File

@@ -93,10 +93,8 @@ public class RedkaleClassLoader extends URLClassLoader {
super(urls, parent);
}
public static RedkaleClassLoader getRedkaleClassLoader(ClassLoader loader) {
if (loader == null) {
loader = Thread.currentThread().getContextClassLoader();
}
public static RedkaleClassLoader currentClassLoader() {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader instanceof RedkaleClassLoader) {
return (RedkaleClassLoader) loader;
}
@@ -109,10 +107,6 @@ public class RedkaleClassLoader extends URLClassLoader {
return new RedkaleClassLoader(loader);
}
public static RedkaleClassLoader getRedkaleClassLoader() {
return getRedkaleClassLoader(Thread.currentThread().getContextClassLoader());
}
public static URI getConfResourceAsURI(String confURI, String file) {
if (file.startsWith("http:") || file.startsWith("https:") || file.startsWith("ftp:")) {
return URI.create(file);

View File

@@ -67,7 +67,7 @@ public interface Reproduce<D, S> extends BiFunction<D, S, D> {
final String srcClassName = srcClass.getName().replace('.', '/');
final String destDesc = Type.getDescriptor(destClass);
final String srcDesc = Type.getDescriptor(srcClass);
final RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
final RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
final String newDynName = "org/redkaledyn/reproduce/_Dyn" + Reproduce.class.getSimpleName()
+ "__" + destClass.getName().replace('.', '_').replace('$', '_')
+ "__" + srcClass.getName().replace('.', '_').replace('$', '_');

View File

@@ -662,7 +662,7 @@ public abstract class TypeToken<T> {
// 注意: RetResult<Map<String, Long>[]> 这种泛型带[]的尚未实现支持
private static Type createParameterizedType0(final Class rawType, final Type... actualTypeArguments) {
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
StringBuilder tmpps = new StringBuilder(getClassTypeDescriptor(rawType));
for (Type cz : actualTypeArguments) {
tmpps.append(" ").append(getClassTypeDescriptor(cz));

View File

@@ -46,7 +46,7 @@ public class CachedInstanceTest {
@BeforeAll
public static void init() throws Exception {
classLoader = RedkaleClassLoader.getRedkaleClassLoader();
classLoader = RedkaleClassLoader.currentClassLoader();
CacheMemorySource remoteSource = new CacheMemorySource("cache-remote");
remoteSource.init(null);
resourceFactory = ResourceFactory.create();

View File

@@ -45,7 +45,7 @@ public class RestConvertTest {
Method method = Application.class.getDeclaredMethod("initWorkExecutor");
method.setAccessible(true);
method.invoke(application);
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
// ------------------------ 初始化 CService ------------------------------------
RestConvertService service =
Sncp.createSimpleLocalService(application.getClassLoader(), RestConvertService.class, resFactory);

View File

@@ -40,7 +40,7 @@ public class RestSleepTest {
method.invoke(application);
// ------------------------ 初始化 CService ------------------------------------
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
RestSleepService service =
Sncp.createSimpleLocalService(application.getClassLoader(), RestSleepService.class, resFactory);
HttpServer server = new HttpServer(application, System.currentTimeMillis(), resFactory);

View File

@@ -54,7 +54,7 @@ public class MessagedInstanceTest {
application = Application.create(true);
resourceFactory = application.getResourceFactory();
engine = new MessageModuleEngine(application);
classLoader = RedkaleClassLoader.getRedkaleClassLoader();
classLoader = RedkaleClassLoader.currentClassLoader();
MessageAgent agent = createMessageAgent(application, "mymq");
MessageAgent[] messageAgents = new MessageAgent[] {agent};

View File

@@ -22,7 +22,7 @@ public class GameTest {
@Test
public void run() throws Exception {
RedkaleClassLoader classLoader = RedkaleClassLoader.getRedkaleClassLoader();
RedkaleClassLoader classLoader = RedkaleClassLoader.currentClassLoader();
WebSocketServlet servlet = Rest.createRestWebSocketServlet(classLoader, GameWebSocket.class, null);
}
}