From 0ee8041f980dab7fee723a326fa2a2f5d1fea054 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 07 May 2014 15:37:03 -0400 Subject: [PATCH] Fix class loading failure when there are no STARTED plugins --- src/main/java/com/gitblit/wicket/PluginClassResolver.java | 20 +++++++++----------- src/main/java/com/gitblit/wicket/GitBlitWebApp.java | 4 +++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java index d3aa62f..7291d03 100644 --- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java +++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java @@ -25,6 +25,7 @@ import org.apache.wicket.Request; import org.apache.wicket.Response; import org.apache.wicket.Session; +import org.apache.wicket.application.IClassResolver; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.protocol.http.WebApplication; @@ -226,7 +227,8 @@ } // customize the Wicket class resolver to load from plugins - PluginClassResolver classResolver = new PluginClassResolver(pluginManager); + IClassResolver coreResolver = getApplicationSettings().getClassResolver(); + PluginClassResolver classResolver = new PluginClassResolver(coreResolver, pluginManager); getApplicationSettings().setClassResolver(classResolver); getMarkupSettings().setDefaultMarkupEncoding("UTF-8"); diff --git a/src/main/java/com/gitblit/wicket/PluginClassResolver.java b/src/main/java/com/gitblit/wicket/PluginClassResolver.java index ba53b04..476f961 100644 --- a/src/main/java/com/gitblit/wicket/PluginClassResolver.java +++ b/src/main/java/com/gitblit/wicket/PluginClassResolver.java @@ -23,7 +23,6 @@ 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; @@ -40,9 +39,11 @@ 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; } @@ -65,7 +66,7 @@ } } - throw new ClassNotFoundException(className); + return coreResolver.resolveClass(className); } @Override @@ -85,6 +86,11 @@ } } + Iterator<URL> it = coreResolver.getResources(name); + while (it.hasNext()) { + URL url = it.next(); + urls.add(url); + } return urls.iterator(); } @@ -93,14 +99,6 @@ 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); -- Gitblit v1.9.1