Merge branch 'stable-2.14' into stable-2.15

* stable-2.14:
  Fix label name generated by workskace-status.sh
  Ignore /MERGE_LIST when looking for owners
  Upgrade bazlets to latest stable-2.14 to build with 2.14.16 API
  Align Eclipse compiler settings with core Gerrit's
  Replace wildcard imports with explicit imports
  Upgrade jackson to 2.9.7
  bazlets: Replace native.git_repository with skylark rule
  Upgrade bazlets to latest stable-2.14 to build with 2.14.15 API
  Format all Bazel build files with buildifier
  Migrate (i.e. move) `tools/bazel.rc` to `.bazelrc`
  Update bazlets to latest stable-2.14 to build with 2.14.14 API
  Update bazlets to latest stable-2.14 to build with 2.14.13 API
  Fix names of build output jar files in README
  Adjust to renamed dependencies in core
  Update bazlets to latest revision on stable-2.14
  Filter out inactive accounts in OWNERS
  Bazel: Add standalone build mode
  Does not include jackson-core in the final artifacts
  Sync Jackson lib version with Gerrit
  Fix owners dependencies
  Remove duplicated build dependencies
  Reformat build files
  Remove Buck build
  Fix config documentation
  Fix Eclipse warnings
  Cleanup .gitignore file
  Eager initialize Owners Prolog Predicates
  Consider name and e-mail matching edge cases
  Batch sending mail when multiple reviewers added

Change-Id: I3c310a8eff7094ef4bd0c9bdb1fc2104b76dd835
diff --git a/.gitignore b/.gitignore
index f07afcd..6042b9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,6 @@
 *.ipr
 .idea
 /.classpath
-/.primary_build_tool
 /.project
 /.settings/
 /bazel-*
diff --git a/WORKSPACE b/WORKSPACE
index 2b45965..7c2b01b 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "b17f700875f5f2a96942d434516ba8e6088463d4",
+    commit = "087da1f6ca119ad5c4bc443926426ddf44dcde3a",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/lib/prolog/BUILD b/lib/prolog/BUILD
index e69de29..c5ed0b7 100644
--- a/lib/prolog/BUILD
+++ b/lib/prolog/BUILD
@@ -0,0 +1 @@
+# Empty file required by Bazel
diff --git a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java b/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java
index aeb5960..67fdb1e 100644
--- a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java
+++ b/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java
@@ -120,7 +120,7 @@
       newId = ObjectId.fromString(event.getNewObjectId());
     }
 
-    PatchListKey plKey = new PatchListKey(null, newId, IGNORE_NONE);
+    PatchListKey plKey = PatchListKey.againstCommit(null, newId, IGNORE_NONE);
     try {
       return patchListCache.get(plKey, change.getProject());
     } catch (PatchListNotAvailableException e) {
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java b/owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java
index 07e9af8..f22712a 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java
+++ b/owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java
@@ -14,8 +14,8 @@
 
 package com.vmware.gerrit.owners.common;
 
-import static com.google.gerrit.server.account.ExternalId.SCHEME_GERRIT;
-import static com.google.gerrit.server.account.ExternalId.SCHEME_MAILTO;
+import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_GERRIT;
+import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_MAILTO;
 
 import com.google.gerrit.common.errors.NoSuchGroupException;
 import com.google.gerrit.reviewdb.client.Account;
@@ -25,9 +25,10 @@
 import com.google.gerrit.server.account.AccountCache;
 import com.google.gerrit.server.account.AccountResolver;
 import com.google.gerrit.server.account.AccountState;
-import com.google.gerrit.server.account.ExternalId;
 import com.google.gerrit.server.account.GroupCache;
 import com.google.gerrit.server.account.GroupMembers;
+import com.google.gerrit.server.account.externalids.ExternalId;
+import com.google.gerrit.server.group.InternalGroup;
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.gerrit.server.util.ManualRequestContext;
 import com.google.gerrit.server.util.OneOffRequestContext;
@@ -38,6 +39,7 @@
 import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,19 +78,22 @@
   }
 
   private Set<Id> findAccountsInGroup(String groupNameOrUUID) {
-    AccountGroup group =
-        Optional.ofNullable(groupCache.get(new AccountGroup.NameKey(groupNameOrUUID)))
+    Optional<InternalGroup> group =
+        groupCache
+            .get(new AccountGroup.NameKey(groupNameOrUUID))
+            .map(Optional::of)
             .orElse(groupCache.get(new AccountGroup.UUID(groupNameOrUUID)));
 
-    if (group == null) {
+    if (!group.isPresent()) {
       log.warn("Group {} was not found", groupNameOrUUID);
+      return Collections.emptySet();
     }
 
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(adminUser.getAccountId())) {
 
       return groupMembers
           .create(adminUser)
-          .listAccounts(group.getGroupUUID(), null)
+          .listAccounts(group.get().getGroupUUID(), null)
           .stream()
           .map(Account::getId)
           .collect(Collectors.toSet());
@@ -100,7 +105,7 @@
 
   private Set<Account.Id> findUserOrEmail(String nameOrEmail) {
     try (ManualRequestContext ctx = oneOffRequestContext.open()) {
-      Set<Id> accountIds = resolver.findAll(ctx.getReviewDbProvider().get(), nameOrEmail);
+      Set<Id> accountIds = resolver.findAll(nameOrEmail);
       if (accountIds.isEmpty()) {
         log.warn("User '{}' does not resolve to any account.", nameOrEmail);
         return accountIds;
@@ -132,7 +137,7 @@
       }
 
       return accountIds;
-    } catch (OrmException e) {
+    } catch (OrmException | IOException | ConfigInvalidException e) {
       log.error("Error trying to resolve user " + nameOrEmail, e);
       return Collections.emptySet();
     }
diff --git a/tools/bazel.rc b/tools/bazel.rc
new file mode 100644
index 0000000..4ed16cf
--- /dev/null
+++ b/tools/bazel.rc
@@ -0,0 +1,2 @@
+build --workspace_status_command=./tools/workspace-status.sh
+test --build_tests_only
diff --git a/tools/bzl/BUILD b/tools/bzl/BUILD
index e69de29..c5ed0b7 100644
--- a/tools/bzl/BUILD
+++ b/tools/bzl/BUILD
@@ -0,0 +1 @@
+# Empty file required by Bazel