| | |
| | | import java.util.Set; |
| | | import java.util.TreeSet; |
| | | |
| | | import org.apache.wicket.Application; |
| | | import org.apache.wicket.WicketRuntimeException; |
| | | import org.apache.wicket.application.IClassResolver; |
| | | import org.slf4j.Logger; |
| | |
| | | public class PluginClassResolver implements IClassResolver { |
| | | private static final Logger logger = LoggerFactory.getLogger(PluginClassResolver.class); |
| | | |
| | | private final IClassResolver coreResolver; |
| | | private final IPluginManager pluginManager; |
| | | |
| | | public PluginClassResolver(IPluginManager pluginManager) { |
| | | public PluginClassResolver(IClassResolver coreResolver, IPluginManager pluginManager) { |
| | | this.coreResolver = coreResolver; |
| | | this.pluginManager = pluginManager; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | throw new ClassNotFoundException(className); |
| | | return coreResolver.resolveClass(className); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | } |
| | | |
| | | Iterator<URL> it = coreResolver.getResources(name); |
| | | while (it.hasNext()) { |
| | | URL url = it.next(); |
| | | urls.add(url); |
| | | } |
| | | return urls.iterator(); |
| | | } |
| | | |
| | |
| | | try { |
| | | // Try the classloader for the wicket jar/bundle |
| | | Enumeration<URL> resources = plugin.getPluginClassLoader().getResources(name); |
| | | loadResources(resources, loadedFiles); |
| | | |
| | | // Try the classloader for the user's application jar/bundle |
| | | resources = Application.get().getClass().getClassLoader().getResources(name); |
| | | loadResources(resources, loadedFiles); |
| | | |
| | | // Try the context class loader |
| | | resources = Thread.currentThread().getContextClassLoader().getResources(name); |
| | | loadResources(resources, loadedFiles); |
| | | } catch (IOException e) { |
| | | throw new WicketRuntimeException(e); |