Merge branch 'stable-3.1' * stable-3.1: Set version to 3.0.2 Amend 'get' method adding Class type as parameter Ignore Eclipse IDE files Change-Id: I3237138479ef578f99c212df5457683c3060c9c9
diff --git a/.gitignore b/.gitignore index 16f1fc2..dfa6ffb 100644 --- a/.gitignore +++ b/.gitignore
@@ -25,6 +25,12 @@ # Maven target target +# Eclipse +.classpath +.factorypath +.project +.settings/ + # IntelliJ .idea *.iml
diff --git a/src/main/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabase.java b/src/main/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabase.java index 3b75019..d1b6d53 100644 --- a/src/main/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabase.java +++ b/src/main/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabase.java
@@ -103,8 +103,10 @@ * * @param project project name * @param refName reference name + * @param clazz wanted Class of the returned value * @return {@link java.util.Optional} of the value * @throws GlobalRefDbSystemError value cannot be returned due to a system error. */ - <T> Optional<T> get(Project.NameKey project, String refName) throws GlobalRefDbSystemError; + <T> Optional<T> get(Project.NameKey project, String refName, Class<T> clazz) + throws GlobalRefDbSystemError; }
diff --git a/src/test/java/com/gerritforge/gerrit/globalrefdb/FakeGlobalRefDatabase.java b/src/test/java/com/gerritforge/gerrit/globalrefdb/FakeGlobalRefDatabase.java index 40d7a8e..44c4fbb 100644 --- a/src/test/java/com/gerritforge/gerrit/globalrefdb/FakeGlobalRefDatabase.java +++ b/src/test/java/com/gerritforge/gerrit/globalrefdb/FakeGlobalRefDatabase.java
@@ -105,9 +105,10 @@ @Override @SuppressWarnings("unchecked") - public <T> Optional<T> get(Project.NameKey project, String refName) + public <T> Optional<T> get(Project.NameKey project, String refName, Class<T> clazz) throws GlobalRefDbSystemError { - return Optional.ofNullable((T) projectRefDb(project).get(refName)) + String key = String.format("%s/%s", project.get(), refName); + return Optional.ofNullable((T) genericKeyValueStore.get(key)) .map(v -> ((AtomicReference<T>) v).get()); }
diff --git a/src/test/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabaseTest.java b/src/test/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabaseTest.java index b2656bb..bb5ad8d 100644 --- a/src/test/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabaseTest.java +++ b/src/test/java/com/gerritforge/gerrit/globalrefdb/GlobalRefDatabaseTest.java
@@ -155,17 +155,31 @@ } @Test - public void shouldReturnValueInTheGlobalRefDB() { - objectUnderTest.compareAndPut(project, initialRef, objectId1); - Optional<ObjectId> o = objectUnderTest.get(project, initialRef.getName()); + public void shouldReturnObjectValueInTheGlobalRefDB() { + Object object = new Object(); + objectUnderTest.compareAndPut(project, refName, null, object); + + Optional<Object> o = objectUnderTest.get(project, refName, Object.class); + assertThat(o.isPresent()).isTrue(); - assertThat(o.get()).isEqualTo(objectId1); + assertThat(o.get()).isEqualTo(object); + } + + @Test + public void shouldReturnLongValueInTheGlobalRefDB() { + objectUnderTest.compareAndPut(project, refName, null, 1L); + + Optional<Long> o = objectUnderTest.get(project, refName, Long.class); + + assertThat(o.isPresent()).isTrue(); + assertThat(o.get()).isEqualTo(1L); } @Test public void shouldReturnEmptyIfValueIsNotInTheGlobalRefDB() { - Optional<ObjectId> o = objectUnderTest.get(project, "nonExistentRef"); - assertThat(o.isPresent()).isFalse(); + Optional<Object> value = objectUnderTest.get(project, "nonExistentRef", Object.class); + + assertThat(value.isPresent()).isFalse(); } @Test