diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java index 6aa66990f2..26d31da32f 100644 --- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java +++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java @@ -125,6 +125,23 @@ public final class Change { id = newValue; } + public String toRefPrefix() { + return refPrefixBuilder().toString(); + } + + StringBuilder refPrefixBuilder() { + StringBuilder r = new StringBuilder(32) + .append(REFS_CHANGES); + int m = id % 100; + if (m < 10) { + r.append('0'); + } + return r.append(m) + .append('/') + .append(id) + .append('/'); + } + /** Parse a Change.Id out of a string representation. */ public static Id parse(final String str) { final Id r = new Id(); diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java index 13ca7aac94..ae1b75b3da 100644 --- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java +++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java @@ -14,8 +14,6 @@ package com.google.gerrit.reviewdb.client; -import static com.google.gerrit.reviewdb.client.RefNames.REFS_CHANGES; - import com.google.gwtorm.client.Column; import com.google.gwtorm.client.IntKey; @@ -109,19 +107,9 @@ public final class PatchSet { } public String toRefName() { - StringBuilder r = new StringBuilder(); - r.append(REFS_CHANGES); - int change = changeId.get(); - int m = change % 100; - if (m < 10) { - r.append('0'); - } - r.append(m); - r.append('/'); - r.append(change); - r.append('/'); - r.append(patchSetId); - return r.toString(); + return changeId.refPrefixBuilder() + .append(patchSetId) + .toString(); } /** Parse a PatchSet.Id out of a string representation. */ diff --git a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/ChangeTest.java b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/ChangeTest.java index 81be436a66..47f409ab83 100644 --- a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/ChangeTest.java +++ b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/ChangeTest.java @@ -71,6 +71,14 @@ public class ChangeTest { assertNotRef("refs/changes/01/1/1/meta"); } + @Test + public void toRefPrefix() { + assertThat(new Change.Id(1).toRefPrefix()) + .isEqualTo("refs/changes/01/1/"); + assertThat(new Change.Id(1234).toRefPrefix()) + .isEqualTo("refs/changes/34/1234/"); + } + private static void assertRef(int changeId, String refName) { assertThat(Change.Id.fromRef(refName)).isEqualTo(new Change.Id(changeId)); } diff --git a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/PatchSetTest.java b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/PatchSetTest.java index da2f6ba021..7a6be876ec 100644 --- a/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/PatchSetTest.java +++ b/gerrit-reviewdb/src/test/java/com/google/gerrit/reviewdb/client/PatchSetTest.java @@ -83,6 +83,14 @@ public class PatchSetTest { assertThat(joinGroups(ImmutableList.of("", "cd"))).isEqualTo(",cd"); } + @Test + public void testToRefName() { + assertThat(new PatchSet.Id(new Change.Id(1), 23).toRefName()) + .isEqualTo("refs/changes/01/1/23"); + assertThat(new PatchSet.Id(new Change.Id(1234), 5).toRefName()) + .isEqualTo("refs/changes/34/1234/5"); + } + private static void assertRef(int changeId, int psId, String refName) { assertThat(PatchSet.isChangeRef(refName)).isTrue(); assertThat(PatchSet.Id.fromRef(refName))