summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-05-07 15:37:03 -0400
committerJames Moger <james.moger@gitblit.com>2014-05-07 15:37:03 -0400
commit0ee8041f980dab7fee723a326fa2a2f5d1fea054 (patch)
treeb5c14595cbdec5b089f57b38d67a457c47184f20 /src
parent3b23dcdde4ef55927e45e56596e7023ce2cf9424 (diff)
downloadgitblit-0ee8041f980dab7fee723a326fa2a2f5d1fea054.tar.gz
gitblit-0ee8041f980dab7fee723a326fa2a2f5d1fea054.zip
Fix class loading failure when there are no STARTED plugins
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/gitblit/wicket/GitBlitWebApp.java4
-rw-r--r--src/main/java/com/gitblit/wicket/PluginClassResolver.java20
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);
}