/** * Get all {@link Addon} instances that depend on the reporting addon */ private Set<Addon> getAddonsToScan() { AddonFilter filter = new AddonFilter() { @Override public boolean accept(Addon addon) { // make sure to include ourselves as well (even though we don't technically depend on ourselves) return addonDependsOnReporting(addon) || addon.equals(CssJsResourceRenderingRuleProvider.this.addon); } }; return furnace.getAddonRegistry().getAddons(filter); }
/** * Get all {@link Addon} instances that depend on the reporting addon */ private Set<Addon> getAddonsToScan() { AddonFilter filter = new AddonFilter() { @Override public boolean accept(Addon addon) { // make sure to include ourselves as well (even though we don't technically depend on ourselves) return addonDependsOnReporting(addon) || addon.equals(CssJsResourceRenderingRuleProvider.this.addon); } }; return furnace.getAddonRegistry().getAddons(filter); }
public GraphApiCompositeClassLoaderProvider() { this.furnace = SimpleContainer.getFurnace(GraphApiCompositeClassLoaderProvider.class.getClassLoader()); for (Addon addon : this.furnace.getAddonRegistry().getAddons()) { if (addon.getClassLoader() != null && addon.getClassLoader().equals(GraphApiCompositeClassLoaderProvider.class.getClassLoader())) { this.addon = addon; break; } } }
public GraphApiCompositeClassLoaderProvider() { this.furnace = SimpleContainer.getFurnace(GraphApiCompositeClassLoaderProvider.class.getClassLoader()); for (Addon addon : this.furnace.getAddonRegistry().getAddons()) { if (addon.getClassLoader() != null && addon.getClassLoader().equals(GraphApiCompositeClassLoaderProvider.class.getClassLoader())) { this.addon = addon; break; } } }
/** * Creates a classloader which combines classloaders of all addons depending on Graph API. This insures that * FramedGraph can always load all the relevant types of *Model classes (as all model classes will be in Addons that * depend on Graph API). */ public ClassLoader getCompositeClassLoader() { List<ClassLoader> loaders = new ArrayList<>(); AddonFilter filter = new AddonFilter() { @Override public boolean accept(Addon addon) { return addonDependsOnGraphApi(addon); } }; for (Addon addon : furnace.getAddonRegistry().getAddons(filter)) { loaders.add(addon.getClassLoader()); } return new FurnaceCompositeClassLoader(getClass().getClassLoader(), loaders); }
/** * Creates a classloader which combines classloaders of all addons depending on Graph API. This insures that * FramedGraph can always load all the relevant types of *Model classes (as all model classes will be in Addons that * depend on Graph API). */ public ClassLoader getCompositeClassLoader() { List<ClassLoader> loaders = new ArrayList<>(); AddonFilter filter = new AddonFilter() { @Override public boolean accept(Addon addon) { return addonDependsOnGraphApi(addon); } }; for (Addon addon : furnace.getAddonRegistry().getAddons(filter)) { loaders.add(addon.getClassLoader()); } return new FurnaceCompositeClassLoader(getClass().getClassLoader(), loaders); }
/** * Scans all Forge addons for files accepted by given filter, and return them as a map (from Addon to URL list) */ public Map<Addon, List<URL>> scanForAddonMap(Predicate<String> filter) { Map<Addon, List<URL>> result = new IdentityHashMap<>(); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> filteredResourcePaths = filterAddonResources(addon, filter); List<URL> discoveredURLs = new ArrayList<>(); for (String filePath : filteredResourcePaths) { URL ruleFile = addon.getClassLoader().getResource(filePath); if (ruleFile != null) discoveredURLs.add(ruleFile); } if (!discoveredURLs.isEmpty()) result.put(addon, discoveredURLs); } return result; }
/** * Scans all Forge addons for files accepted by given filter, and return them as a map (from Addon to URL list) */ public Map<Addon, List<URL>> scanForAddonMap(Predicate<String> filter) { Map<Addon, List<URL>> result = new IdentityHashMap<>(); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> filteredResourcePaths = filterAddonResources(addon, filter); List<URL> discoveredURLs = new ArrayList<>(); for (String filePath : filteredResourcePaths) { URL ruleFile = addon.getClassLoader().getResource(filePath); if (ruleFile != null) discoveredURLs.add(ruleFile); } if (!discoveredURLs.isEmpty()) result.put(addon, discoveredURLs); } return result; }
/** * Scans all Forge addons for files accepted by given filter. */ public List<URL> scan(Predicate<String> filter) { List<URL> discoveredURLs = new ArrayList<>(128); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> filteredResourcePaths = filterAddonResources(addon, filter); for (String filePath : filteredResourcePaths) { URL ruleFile = addon.getClassLoader().getResource(filePath); if (ruleFile != null) discoveredURLs.add(ruleFile); } } return discoveredURLs; }
/** * Scans all Forge addons for files accepted by given filter, and return them as a map (from Addon to URL list) */ public Map<Addon, List<URL>> scanForAddonMap(Predicate<String> filter) { Map<Addon, List<URL>> result = new IdentityHashMap<>(); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> filteredResourcePaths = filterAddonResources(addon, filter); List<URL> discoveredURLs = new ArrayList<>(); for (String filePath : filteredResourcePaths) { URL ruleFile = addon.getClassLoader().getResource(filePath); if (ruleFile != null) discoveredURLs.add(ruleFile); } result.put(addon, discoveredURLs); } return result; }
private Addon getAddon() { Set<Addon> addons = SimpleContainer.getFurnace(RexsterInitializer.class.getClassLoader()).getAddonRegistry().getAddons(); for (Addon addon : addons) { boolean isRexster = addon.getId().getName().contains("rexster"); if (isRexster) { return addon; } } return null; }
@Override public URL call() throws Exception { URL result = null; for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allLoaded())) { URL url = addon.getClassLoader().getResource(name); if (url != null) { result = url; break; } } return result; } });
@Override public URL call() throws Exception { URL result = null; for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allLoaded())) { URL url = addon.getClassLoader().getResource(name); if (url != null) { result = url; break; } } return result; } });
@Override public Iterable<String> getCompletionProposals(UIContext context, InputComponent<?, String> input, String value) { Set<String> items = new TreeSet<String>(); Set<Addon> addons = furnace.getAddonRegistry().getAddons(); for (Addon addon : addons) { if (addon.getId().toCoordinates().startsWith(value)) items.add(addon.getId().getName()); } return items; } });
/** * Scans all Forge addons for files accepted by given filter. */ public List<URL> scan(Predicate<String> filter) { List<URL> discoveredURLs = new ArrayList<>(128); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> filteredResourcePaths = filterAddonResources(addon, filter); for (String filePath : filteredResourcePaths) { URL ruleFile = addon.getClassLoader().getResource(filePath); if (ruleFile != null) discoveredURLs.add(ruleFile); } } return discoveredURLs; }
/** * Scans all Forge addons for files accepted by given filter. */ public List<URL> scan(Predicate<String> filter) { List<URL> discoveredURLs = new ArrayList<>(128); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> filteredResourcePaths = filterAddonResources(addon, filter); for (String filePath : filteredResourcePaths) { URL ruleFile = addon.getClassLoader().getResource(filePath); if (ruleFile != null) discoveredURLs.add(ruleFile); } } return discoveredURLs; }
@Override public Set<ClassLoader> call() throws Exception { if (furnace.getStatus().isStarted()) { long registryVersion = furnace.getAddonRegistry().getVersion(); if (registryVersion != lastRegistryVersion) { result.clear(); lastRegistryVersion = registryVersion; for (Addon addon : furnace.getAddonRegistry().getAddons()) { ClassLoader classLoader = addon.getClassLoader(); if (classLoader != null) result.add(classLoader); } } } return result; } };
@Override public Set<ClassLoader> call() throws Exception { if (furnace.getStatus().isStarted()) { long registryVersion = furnace.getAddonRegistry().getVersion(); if (registryVersion != lastRegistryVersion) { result.clear(); lastRegistryVersion = registryVersion; for (Addon addon : furnace.getAddonRegistry().getAddons()) { ClassLoader classLoader = addon.getClassLoader(); if (classLoader != null) result.add(classLoader); } } } return result; } };
public void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager beanManager) { FurnaceProducer furnaceProducer = getFurnaceProducer(); addFurnace(abd, beanManager, furnaceProducer); HashSet<String> duplicateCheck = new HashSet<>(); for (Addon addon : furnaceProducer.getFurnace().getAddonRegistry().getAddons()) { if (!isWindupWebAddon(addon)) continue; awaitAddonStart(addon); if (addon.getStatus() == AddonStatus.STARTED) { // Copy them to prevent concurrent modification Set<Class<?>> exportedTypes = new HashSet<>(addon.getServiceRegistry().getExportedTypes()); for (Class<?> exportedType : exportedTypes) { addService(duplicateCheck, abd, beanManager, exportedType); } } } }
@Override @SuppressWarnings("unchecked") public void start() { getAddonRegistry() .getAddons(addon -> Versions.isSnapshot(addon.getId().getVersion()) && addon.getRepository() instanceof MutableAddonRepository) .stream() .map(Addon::getId) .forEach(addonId -> { // Find local repository path for each addon File installationPath = getInstallationPathFor(addonId); FileResource<?> resource = getResourceFactory().create(FileResource.class, installationPath); ResourceMonitor monitor = resource.monitor(); monitor.addResourceListener(e -> { // Run addonManager.remove and addonManager.install getAddonManager().remove(addonId).perform(); getAddonManager().install(addonId).perform(); }); monitors.put(addonId, monitor); }); }