/** * Return the <code>ClassLoader</code> instance associated with this module. * Only designated public interfaces will be loaded and returned by * this classloader. * * @return the public <code>ClassLoader</code> */ public ClassLoaderFacade getClassLoader() { ClassLoaderFacade r=null; if (publicCL!=null) r = publicCL.get(); if (r!=null) return r; ClassLoaderFacade facade = AccessController.doPrivileged(new PrivilegedAction<ClassLoaderFacade>() { public ClassLoaderFacade run() { return new ClassLoaderFacade(getPrivateClassLoader()); } }); facade.setPublicPkgs(moduleDef.getPublicInterfaces()); publicCL = new WeakReference<ClassLoaderFacade>(facade); return facade; }
/** * Return the <code>ClassLoader</code> instance associated with this module. * Only designated public interfaces will be loaded and returned by * this classloader. * * @return the public <code>ClassLoader</code> */ public ClassLoaderFacade getClassLoader() { ClassLoaderFacade r=null; if (publicCL!=null) r = publicCL.get(); if (r!=null) return r; ClassLoaderFacade facade = AccessController.doPrivileged(new PrivilegedAction<ClassLoaderFacade>() { public ClassLoaderFacade run() { return new ClassLoaderFacade(getPrivateClassLoader()); } }); facade.setPublicPkgs(moduleDef.getPublicInterfaces()); publicCL = new WeakReference<ClassLoaderFacade>(facade); return facade; }
/** * Find and return a loaded Module that has the package name in its list * of exported interfaces. * * @param packageName the requested implementation package name. * @return the <code>Module</code> instance implementing the package * name or null if not found. * @throws ResolveError if the module dependencies cannot be resolved */ public Module makeModuleFor(String packageName) throws ResolveError { if(parent!=null) { Module m = parent.makeModuleFor(packageName); if(m!=null) return m; } for (Module module : modules.values()) { String[] exportedPkgs = module.getModuleDefinition().getPublicInterfaces(); for (String exportedPkg : exportedPkgs) { if (exportedPkg.equals(packageName)) { module.resolve(); return module; } } } return null; }
/** * Find and return a loaded Module that has the package name in its list * of exported interfaces. * * @param packageName the requested implementation package name. * @return the <code>Module</code> instance implementing the package * name or null if not found. * @throws ResolveError if the module dependencies cannot be resolved */ public Module makeModuleFor(String packageName) throws ResolveError { if(parent!=null) { Module m = parent.makeModuleFor(packageName); if(m!=null) return m; } for (Module module : modules.values()) { String[] exportedPkgs = module.getModuleDefinition().getPublicInterfaces(); for (String exportedPkg : exportedPkgs) { if (exportedPkg.equals(packageName)) { module.resolve(); return module; } } } return null; }