Migrate the remaining GroupIndex FieldDefs to the new format
SchemaFields
Change-Id: Ibcbfb7c06d366c56b2b073435c2468f1e18eeae0
Release-Notes: skip
diff --git a/java/com/google/gerrit/lucene/LuceneGroupIndex.java b/java/com/google/gerrit/lucene/LuceneGroupIndex.java
index 223a73b..d475ab7 100644
--- a/java/com/google/gerrit/lucene/LuceneGroupIndex.java
+++ b/java/com/google/gerrit/lucene/LuceneGroupIndex.java
@@ -15,7 +15,7 @@
package com.google.gerrit.lucene;
import static com.google.common.collect.Iterables.getOnlyElement;
-import static com.google.gerrit.server.index.group.GroupField.UUID;
+import static com.google.gerrit.server.index.group.GroupField.UUID_FIELD_SPEC;
import com.google.common.collect.ImmutableSet;
import com.google.gerrit.entities.AccountGroup;
@@ -57,14 +57,14 @@
private static final String GROUPS = "groups";
- private static final String UUID_SORT_FIELD = sortFieldName(UUID);
+ private static final String UUID_SORT_FIELD = sortFieldName(UUID_FIELD_SPEC);
private static Term idTerm(InternalGroup group) {
return idTerm(group.getGroupUUID());
}
private static Term idTerm(AccountGroup.UUID uuid) {
- return QueryBuilder.stringTerm(UUID.getName(), uuid.get());
+ return QueryBuilder.stringTerm(UUID_FIELD_SPEC.getName(), uuid.get());
}
private final GerritIndexWriterConfig indexWriterConfig;
@@ -108,7 +108,7 @@
void add(Document doc, Values<InternalGroup> values) {
// Add separate DocValues field for the field that is needed for sorting.
SchemaField<InternalGroup, ?> f = values.getField();
- if (f == UUID) {
+ if (f == UUID_FIELD_SPEC) {
String value = (String) getOnlyElement(values.getValues());
doc.add(new SortedDocValuesField(UUID_SORT_FIELD, new BytesRef(value)));
}
@@ -153,7 +153,8 @@
@Override
protected InternalGroup fromDocument(Document doc) {
- AccountGroup.UUID uuid = AccountGroup.uuid(doc.getField(UUID.getName()).stringValue());
+ AccountGroup.UUID uuid =
+ AccountGroup.uuid(doc.getField(UUID_FIELD_SPEC.getName()).stringValue());
// Use the GroupCache rather than depending on any stored fields in the
// document (of which there shouldn't be any).
return groupCache.get().get(uuid).orElse(null);
diff --git a/java/com/google/gerrit/server/index/IndexUtils.java b/java/com/google/gerrit/server/index/IndexUtils.java
index 2add1ca..80cc463 100644
--- a/java/com/google/gerrit/server/index/IndexUtils.java
+++ b/java/com/google/gerrit/server/index/IndexUtils.java
@@ -94,9 +94,9 @@
*/
public static Set<String> groupFields(QueryOptions opts) {
Set<String> fs = opts.fields();
- return fs.contains(GroupField.UUID.getName())
+ return fs.contains(GroupField.UUID_FIELD_SPEC.getName())
? fs
- : Sets.union(fs, ImmutableSet.of(GroupField.UUID.getName()));
+ : Sets.union(fs, ImmutableSet.of(GroupField.UUID_FIELD_SPEC.getName()));
}
/** Returns a index-friendly representation of a {@link CurrentUser} to be used in queries. */
diff --git a/java/com/google/gerrit/server/index/group/GroupField.java b/java/com/google/gerrit/server/index/group/GroupField.java
index dd6aa3b..7a26f31 100644
--- a/java/com/google/gerrit/server/index/group/GroupField.java
+++ b/java/com/google/gerrit/server/index/group/GroupField.java
@@ -15,15 +15,12 @@
package com.google.gerrit.server.index.group;
import static com.google.common.collect.ImmutableList.toImmutableList;
-import static com.google.gerrit.index.FieldDef.exact;
-import static com.google.gerrit.index.FieldDef.storedOnly;
import com.google.common.base.MoreObjects;
import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.AccountGroup;
import com.google.gerrit.entities.InternalGroup;
import com.google.gerrit.git.ObjectIds;
-import com.google.gerrit.index.FieldDef;
import com.google.gerrit.index.IndexedField;
import com.google.gerrit.index.SchemaUtil;
import java.sql.Timestamp;
@@ -44,8 +41,14 @@
ID_FIELD.integer("id");
/** Group UUID. */
- public static final FieldDef<InternalGroup, String> UUID =
- exact("uuid").stored().build(g -> g.getGroupUUID().get());
+ public static final IndexedField<InternalGroup, String> UUID_FIELD =
+ IndexedField.<InternalGroup>stringBuilder("UUID")
+ .required()
+ .stored()
+ .build(g -> g.getGroupUUID().get());
+
+ public static final IndexedField<InternalGroup, String>.SearchSpec UUID_FIELD_SPEC =
+ UUID_FIELD.exact("uuid");
/** Group owner UUID. */
public static final IndexedField<InternalGroup, String> OWNER_UUID_FIELD =
@@ -120,12 +123,17 @@
SUBGROUP_FIELD.exact("subgroup");
/** ObjectId of HEAD:refs/groups/<UUID>. */
- public static final FieldDef<InternalGroup, byte[]> REF_STATE =
- storedOnly("ref_state")
+ public static final IndexedField<InternalGroup, byte[]> REF_STATE_FIELD =
+ IndexedField.<InternalGroup>byteArrayBuilder("RefState")
+ .stored()
+ .required()
.build(
g -> {
byte[] a = new byte[ObjectIds.STR_LEN];
MoreObjects.firstNonNull(g.getRefState(), ObjectId.zeroId()).copyTo(a, 0);
return a;
});
+
+ public static final IndexedField<InternalGroup, byte[]>.SearchSpec REF_STATE_SPEC =
+ REF_STATE_FIELD.storedOnly("ref_state");
}
diff --git a/java/com/google/gerrit/server/index/group/GroupSchemaDefinitions.java b/java/com/google/gerrit/server/index/group/GroupSchemaDefinitions.java
index 6690102..26f9e96 100644
--- a/java/com/google/gerrit/server/index/group/GroupSchemaDefinitions.java
+++ b/java/com/google/gerrit/server/index/group/GroupSchemaDefinitions.java
@@ -33,7 +33,7 @@
static final Schema<InternalGroup> V5 =
schema(
/* version= */ 5,
- ImmutableList.of(GroupField.REF_STATE, GroupField.UUID),
+ ImmutableList.of(),
ImmutableList.of(
GroupField.CREATED_ON_FIELD,
GroupField.DESCRIPTION_FIELD,
@@ -43,7 +43,9 @@
GroupField.NAME_FIELD,
GroupField.NAME_PART_FIELD,
GroupField.OWNER_UUID_FIELD,
- GroupField.SUBGROUP_FIELD),
+ GroupField.REF_STATE_FIELD,
+ GroupField.SUBGROUP_FIELD,
+ GroupField.UUID_FIELD),
ImmutableList.<IndexedField<InternalGroup, ?>.SearchSpec>of(
GroupField.CREATED_ON_SPEC,
GroupField.DESCRIPTION_SPEC,
@@ -53,7 +55,9 @@
GroupField.NAME_SPEC,
GroupField.NAME_PART_SPEC,
GroupField.OWNER_UUID_SPEC,
- GroupField.SUBGROUP_SPEC));
+ GroupField.REF_STATE_SPEC,
+ GroupField.SUBGROUP_SPEC,
+ GroupField.UUID_FIELD_SPEC));
// Bump Lucene version requires reindexing
@Deprecated static final Schema<InternalGroup> V6 = schema(V5);
diff --git a/java/com/google/gerrit/server/index/group/IndexedGroupQuery.java b/java/com/google/gerrit/server/index/group/IndexedGroupQuery.java
index 90070b6..cacf919 100644
--- a/java/com/google/gerrit/server/index/group/IndexedGroupQuery.java
+++ b/java/com/google/gerrit/server/index/group/IndexedGroupQuery.java
@@ -36,9 +36,9 @@
public static QueryOptions createOptions(
IndexConfig config, int start, int limit, Set<String> fields) {
// Always include GroupField.UUID since it is needed to load the group from NoteDb.
- if (!fields.contains(GroupField.UUID.getName())) {
+ if (!fields.contains(GroupField.UUID_FIELD_SPEC.getName())) {
fields = new HashSet<>(fields);
- fields.add(GroupField.UUID.getName());
+ fields.add(GroupField.UUID_FIELD_SPEC.getName());
}
return QueryOptions.create(config, start, limit, fields);
}
diff --git a/java/com/google/gerrit/server/index/group/StalenessChecker.java b/java/com/google/gerrit/server/index/group/StalenessChecker.java
index 4ce3f5b..0bce282 100644
--- a/java/com/google/gerrit/server/index/group/StalenessChecker.java
+++ b/java/com/google/gerrit/server/index/group/StalenessChecker.java
@@ -39,7 +39,7 @@
@Singleton
public class StalenessChecker {
public static final ImmutableSet<String> FIELDS =
- ImmutableSet.of(GroupField.UUID.getName(), GroupField.REF_STATE.getName());
+ ImmutableSet.of(GroupField.UUID_FIELD_SPEC.getName(), GroupField.REF_STATE_SPEC.getName());
private final GroupIndexCollection indexes;
private final GitRepositoryManager repoManager;
@@ -84,7 +84,8 @@
try (Repository repo = repoManager.openRepository(allUsers)) {
Ref ref = repo.exactRef(RefNames.refsGroups(uuid));
ObjectId head = ref == null ? ObjectId.zeroId() : ref.getObjectId();
- ObjectId idFromIndex = ObjectId.fromString(result.get().getValue(GroupField.REF_STATE), 0);
+ ObjectId idFromIndex =
+ ObjectId.fromString(result.get().getValue(GroupField.REF_STATE_SPEC), 0);
if (head.equals(idFromIndex)) {
return StalenessCheckResult.notStale();
}
diff --git a/java/com/google/gerrit/server/query/group/GroupPredicates.java b/java/com/google/gerrit/server/query/group/GroupPredicates.java
index 8d935d6..e742cba 100644
--- a/java/com/google/gerrit/server/query/group/GroupPredicates.java
+++ b/java/com/google/gerrit/server/query/group/GroupPredicates.java
@@ -30,7 +30,7 @@
}
public static Predicate<InternalGroup> uuid(AccountGroup.UUID uuid) {
- return new GroupPredicate(GroupField.UUID, GroupQueryBuilder.FIELD_UUID, uuid.get());
+ return new GroupPredicate(GroupField.UUID_FIELD_SPEC, GroupQueryBuilder.FIELD_UUID, uuid.get());
}
public static Predicate<InternalGroup> description(String description) {
diff --git a/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java b/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java
index 094c52e..6c8e4d8 100644
--- a/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java
+++ b/javatests/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java
@@ -380,7 +380,7 @@
indexes.getSearchIndex().getSchema().getStoredFields()));
assertThat(rawFields).isPresent();
- assertThat(rawFields.get().getValue(GroupField.UUID)).isEqualTo(uuid.get());
+ assertThat(rawFields.get().getValue(GroupField.UUID_FIELD_SPEC)).isEqualTo(uuid.get());
}
@Test