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