/** {@inheritDoc} */ @Override protected final Class<?> findClass(String className, boolean exportsOnly, final boolean resolve) throws ClassNotFoundException { // Check if we have already loaded it.. Class<?> loadedClass = findLoadedClass(className); if (loadedClass != null) { if (resolve) { resolveClass(loadedClass); } return loadedClass; } final ModuleLogger log = Module.log; final Module module = this.module; log.trace("Finding class %s from %s", className, module); final Class<?> clazz = module.loadModuleClass(className, resolve); if (clazz != null) { return clazz; } log.trace("Class %s not found from %s", className, module); throw new ClassNotFoundException(className + " from [" + module + "]"); }
/** * Change the logger used by the module system. * <p> * If a security manager is present, then this method invokes the security manager's {@code checkPermission} method * with a <code>RuntimePermission("accessModuleLogger")</code> permission to verify access to the module logger. If * access is not granted, a {@code SecurityException} will be thrown. * * @param logger the new logger, must not be {@code null} */ public static void setModuleLogger(final ModuleLogger logger) { if (logger == null) { throw new IllegalArgumentException("logger is null"); } final SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(ACCESS_MODULE_LOGGER); } logger.greeting(); log = logger; }
public Module run() throws Exception { final ModuleLogger log = Module.log; final ModuleIdentifier moduleIdentifier = moduleSpec.getModuleIdentifier(); final Module module = new Module(moduleSpec, ModuleLoader.this); module.getClassLoaderPrivate().recalculate(); module.setDependencies(moduleSpec.getDependenciesInternal()); log.moduleDefined(moduleIdentifier, ModuleLoader.this); try { futureModule.setModule(module); return module; } catch (RuntimeException e) { log.trace(e, "Failed to load module %s", moduleIdentifier); throw e; } catch (Error e) { log.trace(e, "Failed to load module %s", moduleIdentifier); throw e; } } });
/** {@inheritDoc} */ @Override protected final Class<?> findClass(String className, boolean exportsOnly, final boolean resolve) throws ClassNotFoundException { // Check if we have already loaded it.. Class<?> loadedClass = findLoadedClass(className); if (loadedClass != null) { if (resolve) { resolveClass(loadedClass); } return loadedClass; } final ModuleLogger log = Module.log; loadedClass = jaxpClassesByName.get(className); if (loadedClass != null) { log.jaxpClassLoaded(loadedClass, module); if (resolve) { resolveClass(loadedClass); } return loadedClass; } final Module module = this.module; log.trace("Finding class %s from %s", className, module); final Class<?> clazz = module.loadModuleClass(className, resolve); if (clazz != null) { return clazz; } log.trace("Class %s not found from %s", className, module); throw new ClassNotFoundException(getClassNotFoundExceptionMessage(className, module)); }
log.trace("Attempting to find resource %s in %s", canonPath, this); final String path = pathOf(canonPath); final URLConnectionResource jaxpResource = ModuleClassLoader.jaxpImplResources.get(canonPath); if (iterator.hasNext()) { final URL url = iterator.next().getURL(); if (jaxpResource != null) log.jaxpResourceLoaded(url, this); return url; if (iterator.hasNext()) { final URL url = iterator.next().getURL(); if (jaxpResource != null) log.jaxpResourceLoaded(url, this); return url; log.jaxpResourceLoaded(url, this); return url;
final ModuleLogger log = Module.log; final Module module = this.module; log.trace("Attempting to define class %s in %s", name, module); log.trace("Detected a sealing violation (attempt to define class %s in sealed package %s in %s)", name, packageName, module); newClass = doDefineOrLoadClass(name, bytes, byteBuffer, protectionDomain); module.getModuleLoader().addClassLoadTime(Metrics.getCurrentCPUTime() - start); log.classDefined(name, module); } catch (LinkageError e) { log.classDefineFailed(e, name, module); throw e;
default void moduleDefined(String name, final ModuleLoader moduleLoader) { moduleDefined(ModuleIdentifier.fromString(name), moduleLoader); }
/** * Load a local exported resource from this class loader. * * @param name the resource name * @return the list of resources */ public List<Resource> loadResourceLocal(final String name) { final Map<String, List<ResourceLoader>> paths = this.paths.get().getAllPaths(); final String path = Module.pathOf(name); final URLConnectionResource jaxpResource = jaxpImplResources.get(name); final List<ResourceLoader> loaders = paths.get(path); final List<Resource> list = new ArrayList<Resource>(loaders == null ? 1 : loaders.size()); if (loaders != null) { for (ResourceLoader loader : loaders) { final Resource resource = loader.getResource(name); if (resource != null) { if (jaxpResource != null) Module.log.jaxpResourceLoaded(resource.getURL(), module); list.add(resource); } } } return list.isEmpty() ? Collections.emptyList() : list; }
final ModuleLogger log = Module.log; final Module module = this.module; log.trace("Attempting to define class %s in %s", name, module); log.trace("Detected a sealing violation (attempt to define class %s in sealed package %s in %s)", name, packageName, module); newClass = doDefineOrLoadClass(name, bytes, 0, bytes.length, protectionDomain); module.getModuleLoader().addClassLoadTime(Metrics.getCurrentCPUTime() - start); log.classDefined(name, module); } catch (NoClassDefFoundError e) { log.classDefineFailed(e, name, module); throw e; } catch (RuntimeException e) { log.classDefineFailed(e, name, module); throw e;
log.trace("Attempting to find all resources %s in %s", canonPath, this); final String path = pathOf(canonPath); final URLConnectionResource jaxpResource = ModuleClassLoader.jaxpImplResources.get(canonPath); for (Resource resource : resourceList) { final URL url = resource.getURL(); if (jaxpResource != null) log.jaxpResourceLoaded(url, this); list.add(url); for (Resource resource : resourceList) { final URL url = resource.getURL(); if (jaxpResource != null) log.jaxpResourceLoaded(url, this); list.add(url); log.jaxpResourceLoaded(url, this); list.add(url);
final ModuleLogger log = Module.log; final Module module = this.module; log.trace("Finding local class %s from %s", className, module); log.trace("Found previously loaded %s from %s", loadedClass, module); if (resolve) { resolveClass(loadedClass); log.jaxpClassLoaded(loadedClass, module); if (resolve) { resolveClass(loadedClass); log.trace("Loading class %s locally from %s", className, module); throw new ClassNotFoundException(className, e); } catch (RuntimeException e) { log.trace(e, "Unexpected runtime exception in module loader"); throw new ClassNotFoundException(className, e); } catch (Error e) { log.trace(e, "Unexpected error in module loader"); throw e; log.trace("No local specification found for class %s in %s", className, module); return null;
/** * Load a local exported resource from a specific root from this module class loader. * * @param root the root name * @param name the resource name * @return the resource, or {@code null} if it was not found */ @Deprecated Resource loadResourceLocal(final String root, final String name) { final Map<String, List<ResourceLoader>> paths = this.paths.get().getAllPaths(); final String path = Module.pathOf(name); final URLConnectionResource jaxpResource = jaxpImplResources.get(name); final List<ResourceLoader> loaders = paths.get(path); if (loaders != null) { for (ResourceLoader loader : loaders) { if (root.equals(loader.getRootName())) { final Resource resource = loader.getResource(name); if (jaxpResource != null) Module.log.jaxpResourceLoaded(resource.getURL(), module); return resource; } } } return null; }
/** * Find a library from one of the resource loaders. * * @param libname the library name * @return the full absolute path to the library */ @Override protected final String findLibrary(final String libname) { final ModuleLogger log = Module.log; log.trace("Attempting to load native library %s from %s", libname, module); for (ResourceLoaderSpec loader : paths.get().getSourceList(ResourceLoaderSpec.NO_RESOURCE_LOADERS)) { final String library = loader.getResourceLoader().getLibrary(libname); if (library != null) { return library; } } return null; }
log.trace("Attempting to find resource %s in %s", canonPath, this); final String path = pathOf(canonPath); final URLConnectionResource jaxpResource = ModuleClassLoader.jaxpImplResources.get(canonPath); if (iterator.hasNext()) { final Resource resource = iterator.next(); if (jaxpResource != null) log.jaxpResourceLoaded(resource.getURL(), this); return resource.openStream(); if (iterator.hasNext()) { final Resource resource = iterator.next(); if (jaxpResource != null) log.jaxpResourceLoaded(resource.getURL(), this); return resource.openStream(); log.jaxpResourceLoaded(jaxpResource.getURL(), this); return jaxpResource.openStream();
public Module run() throws Exception { final ModuleLogger log = Module.log; final String name = moduleSpec.getName(); final Module module = new Module(moduleSpec, ModuleLoader.this); module.getClassLoaderPrivate().recalculate(); module.setDependencies(moduleSpec.getDependenciesInternal()); log.moduleDefined(name, ModuleLoader.this); try { futureModule.setModule(module); return module; } catch (RuntimeException e) { log.trace(e, "Failed to load module %s", name); throw e; } catch (Error e) { log.trace(e, "Failed to load module %s", name); throw e; } } });
/** * Change the logger used by the module system. * <p> * If a security manager is present, then this method invokes the security manager's {@code checkPermission} method * with a <code>RuntimePermission("accessModuleLogger")</code> permission to verify access to the module logger. If * access is not granted, a {@code SecurityException} will be thrown. * * @param logger the new logger, must not be {@code null} */ public static void setModuleLogger(final ModuleLogger logger) { if (logger == null) { throw new IllegalArgumentException("logger is null"); } final SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(ACCESS_MODULE_LOGGER); } logger.greeting(); log = logger; }
MavenArtifactUtil.downloadFile(artifactCoordinates + ":pom", artifactAbsoluteHttpPath + "pom", targetArtifactPomFile); } catch (IOException e) { Module.getModuleLogger().trace(e, "Could not doDownload '%s' from '%s' repository", artifactRelativeHttpPath, remoteRepos); Module.getModuleLogger().trace(e, "Could not doDownload '%s' from '%s' repository", artifactRelativeHttpPath, remoteRepos);
final ModuleLogger log = Module.log; final Module module = this.module; log.trace("Finding local class %s from %s", className, module); log.trace("Found previously loaded %s from %s", loadedClass, module); if (resolve) { resolveClass(loadedClass); log.trace("Loading class %s locally from %s", className, module); throw new ClassNotFoundException(className, e); } catch (RuntimeException e) { log.trace(e, "Unexpected runtime exception in module loader"); throw new ClassNotFoundException(className, e); } catch (Error e) { log.trace(e, "Unexpected error in module loader"); throw e; log.trace("No local specification found for class %s in %s", className, module); return null;
/** * Find a library from one of the resource loaders. * * @param libname the library name * @return the full absolute path to the library */ @Override protected final String findLibrary(final String libname) { final ModuleLogger log = Module.log; log.trace("Attempting to load native library %s from %s", libname, module); for (ResourceLoaderSpec loader : paths.getSourceList(NO_RESOURCE_LOADERS)) { final String library = loader.getResourceLoader().getLibrary(libname); if (library != null) { return library; } } return null; }