Merge branch 'stable-3.6'

* stable-3.6:
  Remove dependency on //java/com/google/gerrit/proto
  Restore dockerized integration tests
  Adapt Bazel build and deps to latest stable-3.5
  Adapt to the latest Index interface in stable-3.5

Also adapt account and change index implementation to removal of support
for legacy numeric type done in: I6a040f55cc.

Change-Id: I360f99595aec8430de593318eff5c403fe5a9040
diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java
index 8967789..beb57bd 100644
--- a/src/main/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java
+++ b/src/main/java/com/google/gerrit/elasticsearch/ElasticAccountIndex.java
@@ -91,15 +91,12 @@
   @Override
   public DataSource<AccountState> getSource(Predicate<AccountState> p, QueryOptions opts)
       throws QueryParseException {
+    boolean useLegacyNumericFields = schema.hasField(AccountField.ID);
     JsonArray sortArray =
         getSortArray(
-            schema.useLegacyNumericFields()
-                ? AccountField.ID.getName()
-                : AccountField.ID_STR.getName());
+            useLegacyNumericFields ? AccountField.ID.getName() : AccountField.ID_STR.getName());
     return new ElasticQuerySource(
-        p,
-        opts.filterFields(o -> IndexUtils.accountFields(o, schema.useLegacyNumericFields())),
-        sortArray);
+        p, opts.filterFields(o -> IndexUtils.accountFields(o, useLegacyNumericFields)), sortArray);
   }
 
   @Override
@@ -129,7 +126,7 @@
             source
                 .getAsJsonObject()
                 .get(
-                    schema.useLegacyNumericFields()
+                    schema.hasField(AccountField.ID)
                         ? AccountField.ID.getName()
                         : AccountField.ID_STR.getName())
                 .getAsInt());
diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
index 7d4e0c7..83be597 100644
--- a/src/main/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
+++ b/src/main/java/com/google/gerrit/elasticsearch/ElasticChangeIndex.java
@@ -69,7 +69,6 @@
   private final ChangeMapping mapping;
   private final ChangeData.Factory changeDataFactory;
   private final Schema<ChangeData> schema;
-  private final FieldDef<ChangeData, ?> idField;
   private final ImmutableSet<String> skipFields;
 
   @Inject
@@ -84,8 +83,6 @@
     this.changeDataFactory = changeDataFactory;
     this.schema = schema;
     this.mapping = new ChangeMapping(schema, client.adapter());
-    this.idField =
-        this.schema.useLegacyNumericFields() ? ChangeField.LEGACY_ID : ChangeField.LEGACY_ID_STR;
     this.skipFields =
         MergeabilityComputationBehavior.fromConfig(gerritConfig).includeInIndex()
             ? ImmutableSet.of()
@@ -110,8 +107,7 @@
   @Override
   public DataSource<ChangeData> getSource(Predicate<ChangeData> p, QueryOptions opts)
       throws QueryParseException {
-    QueryOptions filteredOpts =
-        opts.filterFields(o -> IndexUtils.changeFields(o, schema.useLegacyNumericFields()));
+    QueryOptions filteredOpts = opts.filterFields(o -> IndexUtils.changeFields(o));
     return new ElasticQuerySource(p, filteredOpts, getSortArray());
   }
 
@@ -122,7 +118,7 @@
     JsonArray sortArray = new JsonArray();
     addNamedElement(ChangeField.UPDATED.getName(), properties, sortArray);
     addNamedElement(ChangeField.MERGED_ON.getName(), getMergedOnSortOptions(), sortArray);
-    addNamedElement(idField.getName(), properties, sortArray);
+    addNamedElement(ChangeField.LEGACY_ID_STR.getName(), properties, sortArray);
     return sortArray;
   }
 
@@ -160,7 +156,7 @@
     JsonElement c = source.get(ChangeField.CHANGE.getName());
 
     if (c == null) {
-      int id = source.get(idField.getName()).getAsInt();
+      int id = source.get(ChangeField.LEGACY_ID_STR.getName()).getAsInt();
       // IndexUtils#changeFields ensures either CHANGE or PROJECT is always present.
       String projectName = requireNonNull(source.get(ChangeField.PROJECT.getName()).getAsString());
       return changeDataFactory.create(Project.nameKey(projectName), Change.id(id));