/** * 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; }
@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; } });
/** * 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; }
@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; } });
/** * 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; }
/** * 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; }
/** * 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 classes accepted by given filter. * * TODO: Could be refactored - scan() is almost the same. */ public List<Class<?>> scanClasses(Predicate<String> filter) { List<Class<?>> discoveredClasses = new ArrayList<>(128); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> discoveredFileNames = filterAddonResources(addon, filter); // Then try to load the classes. for (String discoveredFilename : discoveredFileNames) { String clsName = PathUtil.classFilePathToClassname(discoveredFilename); try { Class<?> clazz = addon.getClassLoader().loadClass(clsName); discoveredClasses.add(clazz); } catch (ClassNotFoundException ex) { LOG.log(Level.WARNING, "Failed to load class for name '" + clsName + "':\n" + ex.getMessage(), ex); } } } return discoveredClasses; }
/** * Scans all Forge addons for classes accepted by given filter. * * TODO: Could be refactored - scan() is almost the same. */ public List<Class<?>> scanClasses(Predicate<String> filter) { List<Class<?>> discoveredClasses = new ArrayList<>(128); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> discoveredFileNames = filterAddonResources(addon, filter); // Then try to load the classes. for (String discoveredFilename : discoveredFileNames) { String clsName = WindupPathUtil.classFilePathToClassname(discoveredFilename); try { Class<?> clazz = addon.getClassLoader().loadClass(clsName); discoveredClasses.add(clazz); } catch (ClassNotFoundException ex) { LOG.log(Level.WARNING, "Failed to load class for name '" + clsName + "':\n" + ex.getMessage(), ex); } } } return discoveredClasses; }
/** * Scans all Forge addons for classes accepted by given filter. * * TODO: Could be refactored - scan() is almost the same. */ public List<Class<?>> scanClasses(Predicate<String> filter) { List<Class<?>> discoveredClasses = new ArrayList<>(128); // For each Forge addon... for (Addon addon : furnace.getAddonRegistry().getAddons(AddonFilters.allStarted())) { List<String> discoveredFileNames = filterAddonResources(addon, filter); // Then try to load the classes. for (String discoveredFilename : discoveredFileNames) { String clsName = PathUtil.classFilePathToClassname(discoveredFilename); try { Class<?> clazz = addon.getClassLoader().loadClass(clsName); discoveredClasses.add(clazz); } catch (ClassNotFoundException ex) { LOG.log(Level.WARNING, "Failed to load class for name '" + clsName + "':\n" + ex.getMessage(), ex); } } } return discoveredClasses; }
for (Addon addon : addonRegistry.getAddons(AddonFilters.allStarted()))
private Object loadObject() throws Exception for (Addon addon : registry.getAddons(AddonFilters.allStarted()))
@Override public List<RuleProvider> call() throws Exception { List<RuleProvider> result = new ArrayList<>(); Set<Addon> addons = furnace.getAddonRegistry().getAddons(AddonFilters.allStarted()); for (Addon addon : addons) { RulesetMetadata rulesetMetadata = null; ExportedInstance<RulesetMetadata> metadataInstance = addon.getServiceRegistry().getExportedInstance(RulesetMetadata.class); if (metadataInstance != null) { rulesetMetadata = metadataInstance.get(); } Set<ExportedInstance<RuleProvider>> providerInstances = addon.getServiceRegistry().getExportedInstances(RuleProvider.class); for (ExportedInstance<RuleProvider> instance : providerInstances) { RuleProvider provider = instance.get(); if (provider.getMetadata() instanceof MetadataBuilder) ((MetadataBuilder) provider.getMetadata()).setRulesetMetadata(rulesetMetadata); result.add(provider); } } return result; } });
@Override public List<RuleProvider> call() throws Exception { List<RuleProvider> result = new ArrayList<>(); Set<Addon> addons = furnace.getAddonRegistry().getAddons(AddonFilters.allStarted()); for (Addon addon : addons) { RulesetMetadata rulesetMetadata = null; ExportedInstance<RulesetMetadata> metadataInstance = addon.getServiceRegistry().getExportedInstance(RulesetMetadata.class); if (metadataInstance != null) { rulesetMetadata = metadataInstance.get(); } Set<ExportedInstance<RuleProvider>> providerInstances = addon.getServiceRegistry().getExportedInstances(RuleProvider.class); for (ExportedInstance<RuleProvider> instance : providerInstances) { RuleProvider provider = instance.get(); if (provider.getMetadata() instanceof MetadataBuilder) ((MetadataBuilder) provider.getMetadata()).setRulesetMetadata(rulesetMetadata); result.add(provider); } } return result; } });