Class ClassManager

java.lang.Object
i5.las2peer.classLoaders.ClassManager

public class ClassManager extends Object
The main class for loading classes in the las2peer environment. This ClassManager handles library registering and resolving (i.e. loading) dependencies as well as hotplugging. The main idea is to keep each service separate but load each needed library only once.
  • Constructor Details

    • ClassManager

      public ClassManager(Repository repository, ClassLoader platformLoader, ClassLoaderPolicy policy)
      create a new L2pClassLoader, which uses the given repository
      Parameters:
      repository - A repository to load classes from
      platformLoader - A platform class loader
      policy - A class loader policy
    • ClassManager

      public ClassManager(Repository[] repositories, ClassLoader platformLoader, ClassLoaderPolicy policy)
      create a new L2PClassLoader, which uses the given repositories
      Parameters:
      repositories - A bunch of repositories to load classes from
      platformLoader - A platform class loader
      policy - A class loader policy
    • ClassManager

      public ClassManager(List<Repository> repositories, ClassLoader platformLoader, ClassLoaderPolicy policy)
      create a new L2PClassLoader, which uses the given repositories
      Parameters:
      repositories - A bunch of repositories to load classes from
      platformLoader - A platform class loader
      policy - A class loader policy
  • Method Details

    • registerService

      public void registerService(ServiceNameVersion serviceIdentifier) throws ClassLoaderException
      Register a service with the given identifier.
      Parameters:
      serviceIdentifier - A service name and version identifier
      Throws:
      ClassLoaderException - If the library for this service could not be found
    • unregisterService

      public void unregisterService(ServiceNameVersion service) throws NotRegisteredException
      Unregister a service class loader.
      Parameters:
      service - A service name and version
      Throws:
      NotRegisteredException - If the library for this service could not be found
    • getServiceClass

      public Class<?> getServiceClass(ServiceNameVersion service) throws ClassLoaderException
      get a service class in the specified version a service has to be provided in a bundle of the package containing the service
      Parameters:
      service - A service name and version
      Returns:
      a class definition of the requested service
      Throws:
      ClassLoaderException - If the library for this service could not be found
    • getPackageName

      public static final String getPackageName(String className)
      extract the package name from a class name
      Parameters:
      className - A canonical class name
      Returns:
      the package name of a complete class name
    • addRepository

      public void addRepository(Repository repository)
      Adds a repository. Repositories cannot be removed.
      Parameters:
      repository - a repository