Query references by multiple prefixes
Support multiple prefixes when querying references to allow implementor to minimize number of RPC calls. Change-Id: I5f822fd7eaf9756b44750080d3056de138b64f4a Signed-off-by: Minh Thai <mthai@google.com>
This commit is contained in:
parent
751abf4a50
commit
a51e686e47
|
@ -333,4 +333,17 @@ public void testGetRefsByPrefix() throws IOException {
|
||||||
assertEquals(1, refs.size());
|
assertEquals(1, refs.size());
|
||||||
checkContainsRef(refs, db.exactRef("refs/heads/prefix/a"));
|
checkContainsRef(refs, db.exactRef("refs/heads/prefix/a"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetRefsByPrefixes() throws IOException {
|
||||||
|
List<Ref> refs = db.getRefDatabase().getRefsByPrefix();
|
||||||
|
assertEquals(0, refs.size());
|
||||||
|
|
||||||
|
refs = db.getRefDatabase().getRefsByPrefix("refs/heads/p",
|
||||||
|
"refs/tags/A");
|
||||||
|
assertEquals(3, refs.size());
|
||||||
|
checkContainsRef(refs, db.exactRef("refs/heads/pa"));
|
||||||
|
checkContainsRef(refs, db.exactRef("refs/heads/prefix/a"));
|
||||||
|
checkContainsRef(refs, db.exactRef("refs/tags/A"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -414,6 +414,31 @@ public List<Ref> getRefsByPrefix(String prefix) throws IOException {
|
||||||
return Collections.unmodifiableList(result);
|
return Collections.unmodifiableList(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns refs whose names start with one of the given prefixes.
|
||||||
|
* <p>
|
||||||
|
* The default implementation uses {@link #getRefsByPrefix(String)}.
|
||||||
|
* Implementors of {@link RefDatabase} should override this method directly
|
||||||
|
* if a better implementation is possible.
|
||||||
|
*
|
||||||
|
* @param prefixes
|
||||||
|
* strings that names of refs should start with.
|
||||||
|
* @return immutable list of refs whose names start with one of
|
||||||
|
* {@code prefixes}. Refs can be unsorted and may contain
|
||||||
|
* duplicates if the prefixes overlap.
|
||||||
|
* @throws java.io.IOException
|
||||||
|
* the reference space cannot be accessed.
|
||||||
|
* @since 5.1
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
public List<Ref> getRefsByPrefix(String... prefixes) throws IOException {
|
||||||
|
List<Ref> result = new ArrayList<>();
|
||||||
|
for (String prefix : prefixes) {
|
||||||
|
result.addAll(getRefsByPrefix(prefix));
|
||||||
|
}
|
||||||
|
return Collections.unmodifiableList(result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if any refs exist in the ref database.
|
* Check if any refs exist in the ref database.
|
||||||
* <p>
|
* <p>
|
||||||
|
|
Loading…
Reference in New Issue