PluginClassLoader class
Пакет: com.hypixel.hytale.server.core.plugin
Файл: com/hypixel/hytale/server/core/plugin/PluginClassLoader.java
extends: URLClassLoader
Поля (23)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
var0 |
|
Class |
var10 |
|
Class |
var11 |
|
Class |
var12 |
|
URL |
var2 |
|
|
var2 |
|
|
var2 |
|
|
var2 |
|
ObjectArrayList |
var2 |
|
Class |
var3 |
|
Class |
var3 |
|
|
var3 |
|
|
var3 |
|
PluginManager.PluginBridgeClassLoader |
var3 |
|
Enumeration |
var3 |
|
ClassLoader |
var4 |
|
Enumeration |
var4 |
|
PluginManager.PluginBridgeClassLoader |
var5 |
|
Enumeration |
var6 |
|
|
var6 |
|
|
var6 |
|
Class |
var9 |
Методы (23)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
ClassNotFoundExceptionthrow new ClassNotFoundException(var1) |
|
|
if if(this.childFirst) |
|
|
if if(var3 != null) |
|
|
if if(var9 != null) |
|
|
if if(!this.childFirst) |
|
|
if if(var10 != null) |
|
|
if if(var2) |
|
|
if if(this.plugin != null) |
|
|
if if(var11 != null) |
|
|
if if(var12 != null) |
|
|
if if(var3 == null) |
|
|
if if(var4 != null) |
|
|
if if(var3 == null) |
|
|
if if(var2 != null) |
|
|
if if(var2 != null) |
|
|
if if(this.plugin != null) |
|
|
if if(this.plugin != null) |
static |
boolean |
isFromThirdPartyPluginboolean isFromThirdPartyPlugin(@Nullable Throwable var0) |
public |
boolean |
isInServerClassPathboolean isInServerClassPath() |
abstract |
|
registerAsParallelCapable registerAsParallelCapable() |
|
void |
setPluginvoid setPlugin(@Nonnull JavaPlugin var1) |
abstract |
|
this this(var1, var2, var3, false, var4) |
|
|
while while(var0 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.plugin;
class="kw">import com.hypixel.hytale.common.plugin.PluginIdentifier;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.io.IOException;
class="kw">import java.net.URL;
class="kw">import java.net.URLClassLoader;
class="kw">import java.util.Collections;
class="kw">import java.util.Enumeration;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class PluginClassLoader class="kw">extends URLClassLoader {
@Nonnull
class="kw">private class="kw">final PluginManager pluginManager;
class="kw">private class="kw">final boolean inServerClassPath;
class="kw">private class="kw">final boolean childFirst;
@Nullable
class="kw">private JavaPlugin plugin;
class="kw">public PluginClassLoader(@Nonnull PluginManager var1, @Nullable PluginIdentifier var2, boolean var3, @Nonnull URL... var4) {
this(var1, var2, var3, false, var4);
}
class="kw">public PluginClassLoader(@Nonnull PluginManager var1, @Nullable PluginIdentifier var2, boolean var3, boolean var4, @Nonnull URL... var5) {
super((var3 ? "BuiltinPlugin" : "ThirdParty") + (var2 != null ? "(" + var2 + ")" : ""), var5, null);
this.inServerClassPath = var3;
this.childFirst = var4;
this.pluginManager = var1;
}
class="kw">public boolean isInServerClassPath() {
class="kw">return this.inServerClassPath;
}
void setPlugin(@Nonnull JavaPlugin var1) {
this.plugin = var1;
}
@Nonnull
@Override
class="kw">protected Class<?> loadClass(@Nonnull String var1, boolean var2) class="kw">throws ClassNotFoundException {
class="kw">return this.loadClass0(var1, true);
}
@Nonnull
class="kw">private Class<?> loadClass0(@Nonnull String var1, boolean var2) class="kw">throws ClassNotFoundException {
if (this.childFirst) {
try {
Class var3 = super.loadClass(var1, false);
if (var3 != null) {
class="kw">return var3;
}
} catch (ClassNotFoundException var8) {
}
}
try {
Class var9 = PluginManager.class.getClassLoader().loadClass(var1);
if (var9 != null) {
class="kw">return var9;
}
} catch (ClassNotFoundException var7) {
}
if (!this.childFirst) {
try {
Class var10 = super.loadClass(var1, false);
if (var10 != null) {
class="kw">return var10;
}
} catch (ClassNotFoundException var6) {
}
}
if (var2) {
if (this.plugin != null) {
try {
Class var11 = this.pluginManager.getBridgeClassLoader().loadClass0(var1, this, this.plugin.getManifest());
if (var11 != null) {
class="kw">return var11;
}
} catch (ClassNotFoundException var5) {
}
} else {
try {
Class var12 = this.pluginManager.getBridgeClassLoader().loadClass0(var1, this);
if (var12 != null) {
class="kw">return var12;
}
} catch (ClassNotFoundException var4) {
}
}
}
throw new ClassNotFoundException(var1);
}
@Nonnull
class="kw">public Class<?> loadLocalClass(@Nonnull String var1) class="kw">throws ClassNotFoundException {
class="kw">synchronized (this.getClassLoadingLock(var1)) {
Class var3 = this.findLoadedClass(var1);
if (var3 == null) {
try {
ClassLoader var4 = this.getParent();
if (var4 != null) {
var3 = var4.loadClass(var1);
}
} catch (ClassNotFoundException var6) {
}
if (var3 == null) {
var3 = this.loadClass0(var1, false);
}
}
class="kw">return var3;
}
}
@Nullable
@Override
class="kw">public URL getResource(@Nonnull String var1) {
URL var2 = PluginManager.class.getClassLoader().getResource(var1);
if (var2 != null) {
class="kw">return var2;
}
var2 = super.getResource(var1);
if (var2 != null) {
class="kw">return var2;
}
PluginManager.PluginBridgeClassLoader var3 = this.pluginManager.getBridgeClassLoader();
if (this.plugin != null) {
var2 = var3.getResource0(var1, this, this.plugin.getManifest());
} else {
var2 = var3.getResource0(var1, this);
}
class="kw">return var2;
}
@Nonnull
@Override
class="kw">public Enumeration<URL> getResources(@Nonnull String var1) class="kw">throws IOException {
ObjectArrayList var2 = new ObjectArrayList();
Enumeration var3 = PluginManager.class.getClassLoader().getResources(var1);
while (var3.hasMoreElements()) {
var2.add(var3.nextElement());
}
Enumeration var4 = super.getResources(var1);
while (var4.hasMoreElements()) {
var2.add(var4.nextElement());
}
PluginManager.PluginBridgeClassLoader var5 = this.pluginManager.getBridgeClassLoader();
Enumeration var6;
if (this.plugin != null) {
var6 = var5.getResources0(var1, this, this.plugin.getManifest());
} else {
var6 = var5.getResources0(var1, this);
}
while (var6.hasMoreElements()) {
var2.add(var6.nextElement());
}
class="kw">return Collections.enumeration(var2);
}
class="kw">public class="kw">static boolean isFromThirdPartyPlugin(@Nullable Throwable var0) {
while (var0 != null) {
for (StackTraceElement var4 : var0.getStackTrace()) {
if (var4.getClassLoaderName() != null && var4.getClassLoaderName().startsWith("ThirdParty")) {
class="kw">return true;
}
}
if (var0.getClass().getClassLoader() class="kw">instanceof PluginClassLoader var6 && !var6.isInServerClassPath()) {
class="kw">return true;
}
if (var0.getCause() == var0) {
break;
}
var0 = var0.getCause();
}
class="kw">return false;
}
class="kw">static {
registerAsParallelCapable();
}
}