You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by le...@apache.org on 2014/08/06 02:41:35 UTC

git commit: GORA-364 MemStore.get fails with NPE when key is not set

Repository: gora
Updated Branches:
  refs/heads/master 22b5cf8e5 -> 89c025d2f


GORA-364 MemStore.get fails with NPE when key is not set


Project: http://git-wip-us.apache.org/repos/asf/gora/repo
Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/89c025d2
Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/89c025d2
Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/89c025d2

Branch: refs/heads/master
Commit: 89c025d2f9e4ba19378eb15537104c8775bf2474
Parents: 22b5cf8
Author: Lewis John McGibbney <le...@jpl.nasa.gov>
Authored: Tue Aug 5 17:41:44 2014 -0700
Committer: Lewis John McGibbney <le...@jpl.nasa.gov>
Committed: Tue Aug 5 17:41:44 2014 -0700

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 ++
 .../org/apache/gora/memory/store/MemStore.java  |  3 ++
 .../apache/gora/memory/store/MemStoreTest.java  | 31 ++++++++++++++++++++
 3 files changed, 36 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/gora/blob/89c025d2/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4fdb83b..01e14f9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,8 @@
 
 Current Development 0.5-SNAPSHOT
 
+* GORA-364 MemStore.get fails with NPE when key is not set (Gerhard Gossen via lewismc)
+
 * GORA-189 Embrace all text-like parameters in generated Persistent subclasses by Compiler CharSequence (lewismc)
 
 * GORA-361 AvroUtils.deepClonePersistent needs to flush BinaryEncoder (Gerhard Gossen via hsaputra)

http://git-wip-us.apache.org/repos/asf/gora/blob/89c025d2/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
----------------------------------------------------------------------
diff --git a/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java b/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
index bc0d59f..56ba4e3 100644
--- a/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
+++ b/gora-core/src/main/java/org/apache/gora/memory/store/MemStore.java
@@ -139,6 +139,9 @@ public class MemStore<K, T extends PersistentBase> extends DataStoreBase<K, T> {
   @Override
   public T get(K key, String[] fields) {
     T obj = map.get(key);
+    if (obj == null) {
+      return null;
+    }
     return getPersistent(obj, getFieldsToQuery(fields));
   }
 

http://git-wip-us.apache.org/repos/asf/gora/blob/89c025d2/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
----------------------------------------------------------------------
diff --git a/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java b/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
new file mode 100644
index 0000000..f715280
--- /dev/null
+++ b/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
@@ -0,0 +1,31 @@
+package org.apache.gora.memory.store;
+
+import org.apache.gora.examples.generated.WebPage;
+import org.apache.gora.store.DataStore;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assume.assumeTrue;
+
+public class MemStoreTest {
+
+  @Test
+  public void testGetMissingValue() {
+    DataStore<String, WebPage> store = new MemStore<String, WebPage>();
+    WebPage nullWebPage = store.get("missing", new String[0]);
+    assertNull(nullWebPage);
+    store.close();
+  }
+
+  @Test
+  public void testPutGet() throws Exception {
+    String key = "org.apache.gora:http:/";
+    DataStore<String, WebPage> store = new MemStore<String, WebPage>();
+    assumeTrue(store.get(key, new String[0]) == null);
+    store.put(key, WebPage.newBuilder().build());
+    assertNotNull(store.get(key, new String[0]));
+    store.close();
+  }
+
+}