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