Bug Fix: Issues with 'adding context'
Closes #128

Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/7e25bdaa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/7e25bdaa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/7e25bdaa

Branch: refs/heads/master
Commit: 7e25bdaa0a244cfeec478b2d26cfcb5cb33c2dd2
Parents: 8f779fd
Author: Aaron Mihalik <miha...@alum.mit.edu>
Authored: Thu Dec 15 16:57:41 2016 -0500
Committer: Aaron Mihalik <aaron.miha...@gmail.com>
Committed: Sat Dec 17 22:53:33 2016 -0500

----------------------------------------------------------------------
 .../rya/api/domain/StatementMetadata.java       | 18 +++++++--
 .../rya/api/domain/StatementMetadataTest.java   | 39 ++++++++++++++++++++
 .../SimpleMongoDBStorageStrategyTest.java       |  2 +
 3 files changed, 55 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/7e25bdaa/common/rya.api/src/main/java/org/apache/rya/api/domain/StatementMetadata.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/main/java/org/apache/rya/api/domain/StatementMetadata.java 
b/common/rya.api/src/main/java/org/apache/rya/api/domain/StatementMetadata.java
index 904f86c..a70e5da 100644
--- 
a/common/rya.api/src/main/java/org/apache/rya/api/domain/StatementMetadata.java
+++ 
b/common/rya.api/src/main/java/org/apache/rya/api/domain/StatementMetadata.java
@@ -1,4 +1,3 @@
-package org.apache.rya.api.domain;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -17,6 +16,7 @@ package org.apache.rya.api.domain;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.rya.api.domain;
 
 import java.io.UnsupportedEncodingException;
 import java.util.HashMap;
@@ -43,9 +43,16 @@ public class StatementMetadata {
 
     public StatementMetadata(byte[] value) throws RdfDAOException {
         try {
-            // try to convert back to a json string and then back to the map.
-            String metadataString = new String(value, "UTF8");
-            metadataMap = gson.fromJson(metadataString, HashMap.class);
+            if (value == null) {
+                metadataMap = new HashMap<>();
+            } else {
+                // try to convert back to a json string and then back to the 
map.
+                String metadataString = new String(value, "UTF8");
+                metadataMap = gson.fromJson(metadataString, HashMap.class);
+                if (metadataMap == null) {
+                    metadataMap = new HashMap<>();
+                }
+            }
         } catch (UnsupportedEncodingException e) {
             throw new RdfDAOException(e);
         }
@@ -65,6 +72,9 @@ public class StatementMetadata {
 
     public byte[] toBytes() {
         // convert the map to a json string
+        if (metadataMap.isEmpty()) {
+            return null;
+        }
         String metadataString = gson.toJson(metadataMap);
         // TODO may want to cache this for performance reasons
         return metadataString.getBytes();

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/7e25bdaa/common/rya.api/src/test/java/org/apache/rya/api/domain/StatementMetadataTest.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/test/java/org/apache/rya/api/domain/StatementMetadataTest.java
 
b/common/rya.api/src/test/java/org/apache/rya/api/domain/StatementMetadataTest.java
new file mode 100644
index 0000000..2252dc2
--- /dev/null
+++ 
b/common/rya.api/src/test/java/org/apache/rya/api/domain/StatementMetadataTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rya.api.domain;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StatementMetadataTest {
+
+    @Test
+    public void simpleTests() throws Exception {
+        StatementMetadata empty = new StatementMetadata();
+        byte[] emptyData = empty.toBytes();
+        Assert.assertArrayEquals(emptyData, new 
StatementMetadata(emptyData).toBytes());
+
+        
+        StatementMetadata single = new StatementMetadata();
+        single.addMetadata("This", "That");
+        byte[] singleData = single.toBytes();
+        Assert.assertArrayEquals(singleData, new 
StatementMetadata(singleData).toBytes());
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/7e25bdaa/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
 
b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
index 910a387..bec403c 100644
--- 
a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
+++ 
b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/SimpleMongoDBStorageStrategyTest.java
@@ -40,6 +40,7 @@ public class SimpleMongoDBStorageStrategyTest {
     private static final String PREDICATE = "http://temp.com";;
     private static final String OBJECT = "http://object.com";;
     private static final String CONTEXT = "http://context.com";;
+    private static final String STATEMENT_METADATA = "{}";
 
     private static final RyaStatement testStatement;
     private static final DBObject testDBO;
@@ -61,6 +62,7 @@ public class SimpleMongoDBStorageStrategyTest {
         testDBO.put("object", OBJECT);
         testDBO.put("objectType", ANYURI.stringValue());
         testDBO.put("context", CONTEXT);
+        testDBO.put("statementMetadata", STATEMENT_METADATA);
         testDBO.put("insertTimestamp", null);
     }
 

Reply via email to