Merge pull request #5 from ugodiggi/master

Upgrade to gerrit v2.10
diff --git a/common.defs b/common.defs
index 17f4c86..a717515 100644
--- a/common.defs
+++ b/common.defs
@@ -1,44 +1,14 @@
 include_defs('//lib/maven.defs')
 include_defs('//lib/prolog/prolog.defs')
 
-JACKSON_REV = '2.1.1'
-maven_jar(
-  name = 'jackson-core',
-  id = 'com.fasterxml.jackson.core:jackson-core:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'jackson-databind',
-  id = 'com.fasterxml.jackson.core:jackson-databind:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'jackson-annotations',
-  id = 'com.fasterxml.jackson.core:jackson-annotations:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'jackson-dataformat-yaml',
-  id = 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'gitective-core',
-  id = 'org.gitective:gitective-core:0.9.9',
-  license = 'Apache2.0',
-)
-
 EXTERNAL_DEPS = [
-  ':gitective-core',
-  ':jackson-core',
-  ':jackson-databind',
-  ':jackson-annotations',
-  ':jackson-dataformat-yaml',
-]
+  '//plugins/gerrit-owners/gerrit-owners-common' + i for i in [
+    ':gitective-core',
+    ':jackson-core',
+    ':jackson-databind',
+    ':jackson-annotations',
+    ':jackson-dataformat-yaml',
+  ]]
 
 # These are dependencies that must be made available to the plugins' libraries at compilation
 # time, but should not be included in the plugins' jar files since they will be provided
@@ -46,6 +16,15 @@
 # For this reason all the intermediate java libraries that we build are java_library2 targets
 # rather than java_library.
 COMPILE_DEPS = [
-  '//:plugin-lib',
+  '//lib:guava',
+  '//lib/guice:guice',
+  '//lib:gwtorm',
+  '//lib/jgit:jgit',
+  '//lib/log:api',
+  '//gerrit-plugin-api:plugin-api',
+  '//gerrit-reviewdb:client',
+  '//gerrit-reviewdb:server',
+  '//gerrit-server:server',
+  '//gerrit-extension-api:lib',
   '//lib/prolog:prolog-cafe',
 ]
diff --git a/gerrit-owners-autoassign/BUCK b/gerrit-owners-autoassign/BUCK
index 18d0393..516426f 100644
--- a/gerrit-owners-autoassign/BUCK
+++ b/gerrit-owners-autoassign/BUCK
@@ -1,4 +1,6 @@
 include_defs('//plugins/gerrit-owners/common.defs')
+include_defs('//lib/maven.defs')
+include_defs('//lib/prolog/prolog.defs')
 
 gerrit_plugin(
   name = 'owners-autoassign',
@@ -9,6 +11,7 @@
     'Implementation-Title: Gerrit OWNERS autoassign plugin',
     'Implementation-URL: https://github.com/vadims/gerrit-owners',
     'Gerrit-PluginName: owners-autoassign',
+    'Gerrit-Module: com.vmware.gerrit.owners.common.AutoassignModule',
   ],
   deps = [
     '//plugins/gerrit-owners/gerrit-owners-common:common',
diff --git a/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java
new file mode 100644
index 0000000..eab2403
--- /dev/null
+++ b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java
@@ -0,0 +1,13 @@
+package com.vmware.gerrit.owners.common;
+
+import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.inject.AbstractModule;
+
+public class AutoassignModule extends AbstractModule {
+  @Override
+  protected void configure() {
+    DynamicSet.bind(binder(), GitReferenceUpdatedListener.class)
+        .to(GitRefListener.class);
+  }
+}
diff --git a/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
index d7ba7a3..1d2e307 100644
--- a/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
+++ b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
@@ -4,11 +4,13 @@
 package com.vmware.gerrit.owners.common;
 
 import com.google.gerrit.common.errors.EmailException;
+import com.google.gerrit.extensions.api.changes.AddReviewerInput;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.change.ChangeResource;
+import com.google.gerrit.server.change.ChangesCollection;
 import com.google.gerrit.server.change.PostReviewers;
 import com.google.gerrit.server.project.ChangeControl;
 import com.google.gerrit.server.project.NoSuchChangeException;
@@ -29,25 +31,29 @@
 
   private final ChangeControl.GenericFactory changeControlFactory;
 
+  private final ChangesCollection changesCollection;
+
   @Inject
   public ReviewerManager(Provider<CurrentUser> currentUserProvider,
                          Provider<PostReviewers> postReviewersProvider,
-                         ChangeControl.GenericFactory changeControlFactory) {
+                         ChangeControl.GenericFactory changeControlFactory,
+                         ChangesCollection changesCollection) {
     this.currentUserProvider = currentUserProvider;
     this.postReviewersProvider = postReviewersProvider;
     this.changeControlFactory = changeControlFactory;
+    this.changesCollection = changesCollection;
   }
 
   public void addReviewers(Change change, Collection<Account.Id> reviewers) throws ReviewerManagerException {
     try {
       PostReviewers postReviewers = postReviewersProvider.get();
       ChangeControl changeControl = changeControlFactory.controlFor(change, currentUserProvider.get());
-      ChangeResource changeResource = new ChangeResource(changeControl);
+      ChangeResource changeResource = changesCollection.parse(changeControl);
 
       // HACK(vspivak): Using PostReviewers is probably inefficient here, however it has all the hook/notification
       // logic, so it's easier to call it then to mimic/copy the logic here.
       for (Account.Id accountId : reviewers) {
-        PostReviewers.Input input = new PostReviewers.Input();
+        AddReviewerInput input = new AddReviewerInput();
         input.reviewer = accountId.toString();
         postReviewers.apply(changeResource, input);
       }
diff --git a/gerrit-owners-common/BUCK b/gerrit-owners-common/BUCK
index ea5fb6a..61f5e60 100644
--- a/gerrit-owners-common/BUCK
+++ b/gerrit-owners-common/BUCK
@@ -1,14 +1,44 @@
 include_defs('//plugins/gerrit-owners/common.defs')
+include_defs('//lib/maven.defs')
+include_defs('//lib/prolog/prolog.defs')
+
+JACKSON_REV = '2.1.1'
+maven_jar(
+  name = 'jackson-core',
+  id = 'com.fasterxml.jackson.core:jackson-core:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-databind',
+  id = 'com.fasterxml.jackson.core:jackson-databind:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-annotations',
+  id = 'com.fasterxml.jackson.core:jackson-annotations:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-dataformat-yaml',
+  id = 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'gitective-core',
+  id = 'org.gitective:gitective-core:0.9.9',
+  license = 'Apache2.0',
+)
 
 # see common.defs on why this is a java_library2 rather than java_library
-java_library2(
+java_library(
   name = 'common',
   srcs = glob([
     'src/main/java/**/*.java',
   ]),
-  deps = [],
-  # Notice that we put EXTERNAL_DEPS as compile_deps to prevent double inclusion in the owners
-  # plugin.
-  compile_deps = COMPILE_DEPS + EXTERNAL_DEPS,
+  deps = COMPILE_DEPS + EXTERNAL_DEPS,
   visibility = ['PUBLIC'],
 )
diff --git a/gerrit-owners/BUCK b/gerrit-owners/BUCK
index 0ef0040..009de04 100644
--- a/gerrit-owners/BUCK
+++ b/gerrit-owners/BUCK
@@ -1,21 +1,20 @@
 include_defs('//plugins/gerrit-owners/common.defs')
+include_defs('//lib/maven.defs')
+include_defs('//lib/prolog/prolog.defs')
 
 # buck is unhappy to build a gerrit_plugin with no source files.
 # On the other side, gerrit-owners-prolog-rules needs to be built after all the java files have been
 # compiled. For this reason we have a stub class that has no content and just makes buck happy.
 COMPILE_STUB = ['src/main/java/com/vmware/gerrit/owners/CompileStub.java']
 
-java_library2(
+java_library(
   name = 'gerrit-owners-lib',
   srcs = glob([
     'src/main/java/**/*.java',
   ], excludes=COMPILE_STUB),
   deps = [
     '//plugins/gerrit-owners/gerrit-owners-common:common',
-  ],
-  # Notice that we put EXTERNAL_DEPS as compile_deps to prevent double inclusion in the owners
-  # plugin.
-  compile_deps = COMPILE_DEPS + EXTERNAL_DEPS,
+  ] + COMPILE_DEPS + EXTERNAL_DEPS,
 )
 
 prolog_cafe_library(
@@ -34,6 +33,7 @@
     'Implementation-Title: Gerrit OWNERS plugin',
     'Implementation-URL: https://github.com/vadims/gerrit-owners',
     'Gerrit-PluginName: owners',
+    'Gerrit-Module: com.vmware.gerrit.owners.OwnersModule',
   ],
   deps = [
     ':gerrit-owners-lib',
diff --git a/gerrit-owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java b/gerrit-owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java
new file mode 100644
index 0000000..e2c90c4
--- /dev/null
+++ b/gerrit-owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java
@@ -0,0 +1,14 @@
+package com.vmware.gerrit.owners;
+
+import com.google.gerrit.rules.PredicateProvider;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.inject.AbstractModule;
+
+
+public class OwnersModule extends AbstractModule {
+  @Override
+  protected void configure() {
+    DynamicSet.bind(binder(), PredicateProvider.class)
+        .to(OwnerPredicateProvider.class);
+  }
+}