Class PluginClassLoader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class PluginClassLoader
    extends DynamicURLClassLoader
    Class loader for JOSM plugins.

    In addition to the classes in the plugin jar file, it loads classes of required plugins. The JOSM core classes should be provided by the parent class loader.

    Since:
    12322
    • Constructor Summary

      Constructors 
      Constructor Description
      PluginClassLoader​(java.net.URL[] urls, java.lang.ClassLoader parent, java.util.Collection<PluginClassLoader> dependencies)
      Create a new PluginClassLoader.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addDependency​(PluginClassLoader dependency)
      Add class loader of a required plugin.
      private java.lang.Class<?> findClassInDependencies​(java.lang.String name, boolean resolve)
      Try to find the specified class in this classes dependencies
      java.net.URL findResource​(java.lang.String name)  
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve)  
      java.lang.String toString()  
      • Methods inherited from class java.net.URLClassLoader

        close, definePackage, findClass, findResources, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
      • Methods inherited from class java.security.SecureClassLoader

        defineClass, defineClass
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • PluginClassLoader

        public PluginClassLoader​(java.net.URL[] urls,
                                 java.lang.ClassLoader parent,
                                 java.util.Collection<PluginClassLoader> dependencies)
        Create a new PluginClassLoader.
        Parameters:
        urls - URLs of the plugin jar file (and extra libraries)
        parent - the parent class loader (for JOSM core classes)
        dependencies - class loaders of required plugin; can be null
    • Method Detail

      • addDependency

        public boolean addDependency​(PluginClassLoader dependency)
        Add class loader of a required plugin. This plugin will have access to the classes of the dependent plugin
        Parameters:
        dependency - the class loader of the required plugin
        Returns:
        true if the collection of dependencies changed as a result of the call
        Since:
        12867
      • loadClass

        protected java.lang.Class<?> loadClass​(java.lang.String name,
                                               boolean resolve)
                                        throws java.lang.ClassNotFoundException
        Overrides:
        loadClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • findClassInDependencies

        private java.lang.Class<?> findClassInDependencies​(java.lang.String name,
                                                           boolean resolve)
        Try to find the specified class in this classes dependencies
        Parameters:
        name - The name of the class to find
        resolve - true to resolve the class
        Returns:
        the class, if found, otherwise null
      • findResource

        public java.net.URL findResource​(java.lang.String name)
        Overrides:
        findResource in class java.net.URLClassLoader
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object