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();
   }
}