diff --git a/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java b/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java index 27778032d5de2d7873bf14c5c1197e70d912dc9d..4204a73deffcab7b8ae27dd1a5b042c5d28fde42 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java +++ b/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java @@ -18,11 +18,13 @@ */ package org.sleuthkit.datamodel; +import com.google.common.annotations.Beta; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -125,12 +127,11 @@ public Content getParent() throws TskCoreException { // It is possible that multiple threads could be doing this calculation // simultaneously, but it's worth the potential extra processing to prevent deadlocks. if (parent == null) { - ObjectInfo parentInfo; - parentInfo = db.getParentInfo(this); - if (parentInfo == null) { + Optional<Long> parentIdOpt = getParentId(); + if (!parentIdOpt.isPresent()) { parent = null; } else { - parent = db.getContentById(parentInfo.getId()); + parent = db.getContentById(parentIdOpt.get()); } } return parent; @@ -140,6 +141,28 @@ void setParent(Content parent) { this.parent = parent; } + /** + * Returns the parent object id of the content or empty if no parent can be + * identified. + * + * @return An optional of the parent object id. + * + * @throws TskCoreException + */ + @Beta + public Optional<Long> getParentId() throws TskCoreException { + if (parentId == UNKNOWN_ID) { + ObjectInfo parentInfo = db.getParentInfo(this); + if (parentInfo != null) { + parentId = parentInfo.getId(); + } + } + + return parentId == UNKNOWN_ID + ? Optional.empty() + : Optional.of(parentId); + } + /** * Set the ID of the this AbstractContent's parent * diff --git a/bindings/java/src/org/sleuthkit/datamodel/BlackboardArtifact.java b/bindings/java/src/org/sleuthkit/datamodel/BlackboardArtifact.java index 97695afe6648174f77da3a3fbe207cee71cf7f74..fba83e40ebd9c4d3d87817773af9ba14ae281ccd 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/BlackboardArtifact.java +++ b/bindings/java/src/org/sleuthkit/datamodel/BlackboardArtifact.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.datamodel; +import com.google.common.annotations.Beta; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.sql.SQLException; @@ -177,7 +178,8 @@ public long getObjectID() { * * @return The data source object id, may be null. */ - Long getDataSourceObjectID() { + @Beta + public Long getDataSourceObjectID() { return this.dataSourceObjId; }