diff --git a/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java b/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java index 9dfca101829654ba49a596ac5d6c7bda2119b84e..7d922b9f126955745f0717dcdfcaccbde3728d71 100755 --- a/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java +++ b/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java @@ -174,6 +174,15 @@ public interface ContentVisitor<T> { * @return result of the visit */ T visit(OsAccount act); + + /** + * Act on (visit) an UnsupportedContent object + * + * @param uc UnsupportedContent object to visit / act on + * + * @return result of the visit + */ + T visit(UnsupportedContent uc); /** * The default content visitor - quickest method for implementing a custom @@ -268,5 +277,10 @@ public T visit(Report r) { public T visit(OsAccount act) { return defaultVisit(act); } + + @Override + public T visit(UnsupportedContent uc) { + return defaultVisit(uc); + } } } diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java index 53fd9eb086e7dab745a82e0d5171cb22ac8e63f6..7fbf4f9d7dddb5d7653a76a372aa1d271e552a31 100755 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java @@ -3090,6 +3090,8 @@ public List<Content> getRootObjects() throws TskCoreException { break; case HOST_ADDRESS: break; + case UNSUPPORTED: + break; default: throw new TskCoreException("Parentless object has wrong type to be a root: " + i.type); } @@ -5660,7 +5662,7 @@ public Content getContentById(long id) throws TskCoreException { content = hostAddressManager.getHostAddress(id); break; default: - throw new TskCoreException("Could not obtain Content object with ID: " + id); + content = new UnsupportedContent(this, id); } return content; diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitItemVisitor.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitItemVisitor.java index 8fc8ec0a3d0191fe97dc8a09d5674ac9e3a6a94e..45927b1093bc598518bd573fbaa44d9eed4f6596 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitItemVisitor.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitItemVisitor.java @@ -186,6 +186,15 @@ public interface SleuthkitItemVisitor<T> { * @return result of the visit */ T visit(OsAccount account); + + /** + * Act on (visit) an UnsupportedContent object + * + * @param unsupportedContent content to visit / act on + * + * @return result of the visit + */ + T visit(UnsupportedContent unsupportedContent); /** * The default visitor - quickest method for implementing a custom visitor. @@ -284,5 +293,10 @@ public T visit(Report report) { public T visit(OsAccount account) { return defaultVisit(account); } + + @Override + public T visit(UnsupportedContent unsupportedContent) { + return defaultVisit(unsupportedContent); + } } } diff --git a/bindings/java/src/org/sleuthkit/datamodel/TskData.java b/bindings/java/src/org/sleuthkit/datamodel/TskData.java index 56e1af5aad4f1721da9dced6cb9347c805f0f4c3..805770328239cff06fe6536eecb206862ede928b 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/TskData.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TskData.java @@ -634,7 +634,8 @@ public enum ObjectType { REPORT(6), ///< Report - see reports for more details POOL(7), ///< Pool OS_ACCOUNT(8), ///< OS Account - see tsk_os_accounts for more details - HOST_ADDRESS(9) ///< Host Address - see tsk_host_addresses for more details + HOST_ADDRESS(9), ///< Host Address - see tsk_host_addresses for more details + UNSUPPORTED(-1) ///< Unsupported type ; private final short objectType; @@ -664,8 +665,7 @@ public static ObjectType valueOf(short objectType) { return v; } } - throw new IllegalArgumentException( - MessageFormat.format(bundle.getString("TskData.objectTypeEnum.exception.msg1.text"), objectType)); + return UNSUPPORTED; } } diff --git a/bindings/java/src/org/sleuthkit/datamodel/UnsupportedContent.java b/bindings/java/src/org/sleuthkit/datamodel/UnsupportedContent.java new file mode 100644 index 0000000000000000000000000000000000000000..2c49f6b66f37f50765fa4eadd1943a6fb7eb8f20 --- /dev/null +++ b/bindings/java/src/org/sleuthkit/datamodel/UnsupportedContent.java @@ -0,0 +1,63 @@ +/* + * Sleuth Kit Data Model + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier <at> sleuthkit <dot> org + * + * Licensed 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.sleuthkit.datamodel; + +/** + * This content type is used as a default when the object type from the tsk_objects + * table is not present in the TskData.ObjectType enum. This should only come into play + * when loading case databases created by a newer version of Autopsy. + */ +public class UnsupportedContent extends AbstractContent { + + /** + * Create an UnsupportedContent object. + * Only store the object id. + * + * @param db case database handle + * @param obj_id object id + */ + protected UnsupportedContent(SleuthkitCase db, long obj_id) { + super(db, obj_id, "Unsupported Content"); + } + + @Override + public int read(byte[] buf, long offset, long len) throws TskCoreException { + return 0; + } + + @Override + public void close() { + // Do nothing + } + + @Override + public long getSize() { + return 0; + } + + @Override + public <T> T accept(ContentVisitor<T> v) { + return v.visit(this); + } + + @Override + public <T> T accept(SleuthkitItemVisitor<T> v) { + return v.visit(this); + } +}