Adapting resources scanner to return PluginEntry
Thanks to the latest changes on HttpPluginServlet
(under review: I1d073434)
it is now possible to serve any type of static
resource as PluginEntry.
Interfaces are adapted and next step would be
returning static resources from Groovy scripts
based plugins.
Change-Id: Ic82cbb1be14268517af44383f6d73f0c6425c73a
diff --git a/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginProvider.java b/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginProvider.java
index 9203331..97bd60e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginProvider.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginProvider.java
@@ -16,7 +16,7 @@
import com.google.common.collect.Sets;
import com.google.gerrit.extensions.annotations.Listen;
-import com.google.gerrit.server.PluginUser;
+import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.server.plugins.InvalidPluginException;
import com.google.gerrit.server.plugins.ServerPlugin;
import com.google.gerrit.server.plugins.ServerPluginProvider;
@@ -53,23 +53,24 @@
"groovy", "gvy", "gy", "gsh");
private final Provider<GroovyPluginScriptEngine> scriptEngineProvider;
+ private final String providerPluginName;
@Inject
- public GroovyPluginProvider(Provider<GroovyPluginScriptEngine> scriptEngineProvider) {
+ public GroovyPluginProvider(
+ Provider<GroovyPluginScriptEngine> scriptEngineProvider,
+ @PluginName String providerPluginName) {
this.scriptEngineProvider = scriptEngineProvider;
+ this.providerPluginName = providerPluginName;
}
-
@Override
- public ServerPlugin get(File srcFile, PluginUser pluginUser,
- FileSnapshot snapshot, String pluginCanonicalWebUrl, File pluginDataDir)
- throws InvalidPluginException {
+ public ServerPlugin get(File srcFile, FileSnapshot snapshot,
+ PluginDescription description) throws InvalidPluginException {
GroovyPluginScriptEngine scriptEngine = scriptEngineProvider.get();
- return new ServerPlugin(getPluginName(srcFile), pluginCanonicalWebUrl,
- pluginUser, srcFile, snapshot, new GroovyPluginScanner(
- getPluginName(srcFile), scriptEngine,
- srcFile), pluginDataDir,
- scriptEngine.getGroovyClassLoader());
+ return new ServerPlugin(getPluginName(srcFile), description.canonicalUrl,
+ description.user, srcFile, snapshot, new GroovyPluginScanner(
+ getPluginName(srcFile), scriptEngine, srcFile),
+ description.dataDir, scriptEngine.getGroovyClassLoader());
}
@Override
@@ -87,4 +88,10 @@
int dotPos = srcFileName.lastIndexOf('.');
return srcFileName.substring(0, dashPos > 0 ? dashPos:dotPos);
}
+
+
+ @Override
+ public String getProviderPluginName() {
+ return providerPluginName;
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginScanner.java b/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginScanner.java
index c4790de..1f5f017 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginScanner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/scripting/groovyprovider/GroovyPluginScanner.java
@@ -17,6 +17,7 @@
import com.google.common.collect.Sets;
import com.google.gerrit.server.plugins.AbstractPreloadedPluginScanner;
import com.google.gerrit.server.plugins.InvalidPluginException;
+import com.google.gerrit.server.plugins.PluginEntry;
import com.google.gerrit.server.plugins.Plugin.ApiType;
import groovy.lang.Binding;
@@ -27,6 +28,7 @@
import org.codehaus.groovy.runtime.InvokerHelper;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
@@ -51,18 +53,18 @@
}
@Override
- public <T> Optional<T> getResource(String resourcePath, Class<? extends T> resourceClass) {
+ public Optional<PluginEntry> getEntry(String resourcePath) {
return Optional.absent();
}
@Override
- public Optional<InputStream> getResourceInputStream(String resourcePath)
+ public InputStream getInputStream(PluginEntry entry)
throws IOException {
- return Optional.absent();
+ throw new FileNotFoundException();
}
@Override
- public <T> Enumeration<T> resources(Class<? extends T> resourceClass) {
+ public Enumeration<PluginEntry> entries() {
return Collections.emptyEnumeration();
}