/** * Print a Registry dump to the logger * @param logger the logger to dump on */ public void print(Logger logger) { logger.info("Modules Registry information : " + modules.size() + " modules"); for (Module module : modules.values()) { logger.info(module.getModuleDefinition().getName()); } }
/** * Print a Registry dump to the logger * @param logger the logger to dump on */ public void print(Logger logger) { logger.info("Modules Registry information : " + modules.size() + " modules"); for (Module module : modules.values()) { logger.info(module.getModuleDefinition().getName()); } }
@Override public URL[] getURLs() { List<URL> result = new ArrayList<URL>(); if (parent instanceof URLClassLoader) { URL[] parentURLs = URLClassLoader.class.cast(parent).getURLs(); result.addAll(Arrays.asList(parentURLs)); } for (Module m : delegateModules) { ModuleDefinition md = m.getModuleDefinition(); URI[] uris = md.getLocations(); URL[] urls = new URL[uris.length]; for (int i = 0; i < uris.length; ++i) { try { urls[i] = uris[i].toURL(); } catch (MalformedURLException e) { logger.warning("Exception " + e + " while converting " + uris[i] + " to URL"); } } result.addAll(Arrays.asList(urls)); } return result.toArray(new URL[0]); }
@Override public URL[] getURLs() { List<URL> result = new ArrayList<URL>(); if (parent instanceof URLClassLoader) { URL[] parentURLs = URLClassLoader.class.cast(parent).getURLs(); result.addAll(Arrays.asList(parentURLs)); } for (Module m : delegateModules) { ModuleDefinition md = m.getModuleDefinition(); URI[] uris = md.getLocations(); URL[] urls = new URL[uris.length]; for (int i = 0; i < uris.length; ++i) { try { urls[i] = uris[i].toURL(); } catch (MalformedURLException e) { logger.warning("Exception " + e + " while converting " + uris[i] + " to URL"); } } result.addAll(Arrays.asList(urls)); } return result.toArray(new URL[0]); }
/** * Saves the inhabitants metadata to the cache in a file called inhabitants * @throws IOException if the file cannot be saved successfully */ private void saveCache() throws IOException { String cacheLocation = getProperty(HK2_CACHE_DIR); if (cacheLocation == null) { return; } File io = new File(cacheLocation, INHABITANTS_CACHE); if(logger.isLoggable(Level.FINE)) { logger.logp(Level.INFO, "OSGiModulesRegistryImpl", "saveCache", "HK2 cache file = {0}", new Object[]{io}); } if (io.exists()) io.delete(); io.createNewFile(); Map<URI, ModuleDefinition> data = new HashMap<URI, ModuleDefinition>(); for (Module m : modules.values()) { data.put(m.getModuleDefinition().getLocations()[0], m.getModuleDefinition()); } ObjectOutputStream os = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(io), getBufferSize())); os.writeObject(data); os.close(); }
@Override public synchronized void remove(Module module) { // It is overridden to make it synchronized as it is called from // BundleListener. super.remove(module); // Update cache. final URI location = module.getModuleDefinition().getLocations()[0]; cachedData.remove(location); cacheInvalidated = true; }
private static synchronized String getModulesClasspath(Habitat habitat) { synchronized (ASClassLoaderUtil.class) { if (modulesClassPath == null) { final StringBuilder tmpString = new StringBuilder(); ModulesRegistry mr = habitat.getComponent(ModulesRegistry.class); if (mr != null) { for (Module module : mr.getModules()) { for (URI uri : module.getModuleDefinition().getLocations()) { tmpString.append(uri.getPath()); tmpString.append(File.pathSeparator); } } } //set shared classpath for module so that it doesn't need to be //recomputed for every other invocation modulesClassPath = tmpString.toString(); } } return modulesClassPath; }
private void addProvider(Module module) { if (logger.isLoggable(Level.FINE)) logger.fine(" Adding the Provider - verified the module"); ClassLoader mcl = module.getClassLoader(); //get manifest entries and process ModuleDefinition md = module.getModuleDefinition(); Manifest mf = null; if (md != null) { mf = md.getManifest(); } if (mf != null) { processManifest(mf, mcl); } handleFutureStatsProviders(); }
/** * 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; }
@Override public synchronized void remove(Module module) { // It is overridden to make it synchronized as it is called from // BundleListener. super.remove(module); // Update cache. final URI location = module.getModuleDefinition().getLocations()[0]; cache.remove(location); }
/** * Modules can notify their registry that they have changed (classes, * resources,etc...). Registries are requested to take appropriate action * to make the new module available. */ public void changed(Module service) { // house keeping... remove(service); ModuleDefinition info = service.getModuleDefinition(); Module newService = newModule(info); // store it add(newService); }
/** * Modules can notify their registry that they have changed (classes, * resources,etc...). Registries are requested to take appropriate action * to make the new module available. */ public void changed(Module service) { // house keeping... remove(service); ModuleDefinition info = service.getModuleDefinition(); Module newService = newModule(info); // store it add(newService); }
newModule.getModuleDefinition()); if (modules.get(id) != null) return; modules.put(id, newModule);
newModule.getModuleDefinition()); if (modules.get(id) != null) return; modules.put(id, newModule);
static private boolean traverseAndFind(Module toTraverse, ModuleImpl toFind, Vector<Module> traversed) { traversed.add(toTraverse); for (ModuleDependency md : toTraverse.getModuleDefinition().getDependencies()) { ModulesRegistry registry = toTraverse.getRegistry(); for (Module mod : registry.getModules()) { if (mod.getName().equals(md.getName())) { if (mod!=null) { if (mod.getName().equals(toFind.getName())) { return true; } if (traverseAndFind(mod, toFind, traversed)) { return true; } } } } } traversed.remove(toTraverse); return false; } }
static private boolean traverseAndFind(Module toTraverse, ModuleImpl toFind, Vector<Module> traversed) { traversed.add(toTraverse); for (ModuleDependency md : toTraverse.getModuleDefinition().getDependencies()) { ModulesRegistry registry = toTraverse.getRegistry(); for (Module mod : registry.getModules()) { if (mod.getName().equals(md.getName())) { if (mod!=null) { if (mod.getName().equals(toFind.getName())) { return true; } if (traverseAndFind(mod, toFind, traversed)) { return true; } } } } } traversed.remove(toTraverse); return false; } }
/** * Creates and return a new private module implementation giving a name and * version constraints. A private module is like any other module except * it is not registered to be shared by other potential module users. * * @param moduleName the module name * @param version the desired version * @return the new private module or null if cannot be found * @throws com.sun.enterprise.module.ResolveError if the module dependencies cannot be resolved */ /*package*/ ModuleImpl newPrivateModuleFor(String moduleName, String version) { if(parent!=null) { ModuleImpl m = ModulesRegistryImpl.class.cast(parent).newPrivateModuleFor(moduleName,version); if(m!=null) return m; } ModuleId id = AbstractFactory.getInstance().createModuleId(moduleName, version); Module module = modules.get(id); if (module!=null) { ModuleImpl privateModule = (ModuleImpl)newModule(module.getModuleDefinition()); privateModule.resolve(); return privateModule; } return (ModuleImpl)loadFromRepository(moduleName, version); }
Map<String, List<Descriptor>> descriptorMap = module.getModuleDefinition().getMetadata().getDescriptors(); module.getModuleDefinition().getMetadata().addDescriptors(name, descriptors);
/** * Creates and return a new private module implementation giving a name and * version constraints. A private module is like any other module except * it is not registered to be shared by other potential module users. * * @param moduleName the module name * @param version the desired version * @return the new private module or null if cannot be found * @throws com.sun.enterprise.module.ResolveError if the module dependencies cannot be resolved */ /*package*/ ModuleImpl newPrivateModuleFor(String moduleName, String version) { if(parent!=null) { ModuleImpl m = ModulesRegistryImpl.class.cast(parent).newPrivateModuleFor(moduleName,version); if(m!=null) return m; } ModuleId id = AbstractFactory.getInstance().createModuleId(moduleName, version); Module module = modules.get(id); if (module!=null) { ModuleImpl privateModule = (ModuleImpl)newModule(module.getModuleDefinition()); privateModule.resolve(); return privateModule; } return (ModuleImpl)loadFromRepository(moduleName, version); }