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();
   }