package org.jboss.windup.reporting.freemarker; import java.net.URL; import java.util.concurrent.Callable; import org.jboss.forge.furnace.Furnace; import org.jboss.forge.furnace.addons.Addon; import org.jboss.forge.furnace.lock.LockMode; import org.jboss.forge.furnace.util.AddonFilters; import org.jboss.windup.config.furnace.FurnaceHolder; import freemarker.cache.URLTemplateLoader; public class FurnaceFreeMarkerTemplateLoader extends URLTemplateLoader { @Override protected URL getURL(final String name) { final Furnace furnace = FurnaceHolder.getFurnace(); return furnace.getLockManager().performLocked(LockMode.READ, new Callable<URL>() { @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; } }); } }