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); }