diff options
author | James Moger <james.moger@gitblit.com> | 2014-05-07 15:37:03 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-05-07 15:37:03 -0400 |
commit | 0ee8041f980dab7fee723a326fa2a2f5d1fea054 (patch) | |
tree | b5c14595cbdec5b089f57b38d67a457c47184f20 /src/main | |
parent | 3b23dcdde4ef55927e45e56596e7023ce2cf9424 (diff) | |
download | gitblit-0ee8041f980dab7fee723a326fa2a2f5d1fea054.tar.gz gitblit-0ee8041f980dab7fee723a326fa2a2f5d1fea054.zip |
Fix class loading failure when there are no STARTED plugins
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/gitblit/wicket/GitBlitWebApp.java | 4 | ||||
-rw-r--r-- | src/main/java/com/gitblit/wicket/PluginClassResolver.java | 20 |
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 d3aa62fd..7291d039 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.Application; 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 @@ public class GitBlitWebApp extends WebApplication implements GitblitWicketApp { } // 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 ba53b04b..476f9611 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.Iterator; 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 @@ import com.gitblit.manager.IPluginManager; 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 @@ public class PluginClassResolver implements IClassResolver { } } - throw new ClassNotFoundException(className); + return coreResolver.resolveClass(className); } @Override @@ -85,6 +86,11 @@ public class PluginClassResolver implements IClassResolver { } } + Iterator<URL> it = coreResolver.getResources(name); + while (it.hasNext()) { + URL url = it.next(); + urls.add(url); + } return urls.iterator(); } @@ -94,14 +100,6 @@ public class PluginClassResolver implements IClassResolver { // 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); } |