diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java index 2f13a48fd236da0853d9189ab89db229ed45289a..d2c9ac5b36ad966e32ec903860afb26815ec3bd2 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java @@ -192,12 +192,15 @@ public static ImageGalleryController getController(Case theCase) { * @param theCase The case. */ static void shutDownController(Case theCase) { + ImageGalleryController controller = null; synchronized (controllersByCaseLock) { if (controllersByCase.containsKey(theCase.getName())) { - ImageGalleryController controller = controllersByCase.remove(theCase.getName()); - controller.shutDown(); + controller = controllersByCase.remove(theCase.getName()); } } + if (controller != null) { + controller.shutDown(); + } } /** diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableFile.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableFile.java index 112c7ab6ec65b649e3b72ce0966d0aea75227868..534bdfc8c861ed160920104233971caad1004757 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableFile.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableFile.java @@ -105,8 +105,15 @@ public static DrawableFile create(Long fileID, boolean analyzed) throws TskCoreE protected DrawableFile(AbstractFile file, Boolean analyzed) { this.analyzed = new SimpleBooleanProperty(analyzed); this.file = file; - - categoryManager = ImageGalleryController.getController(Case.getCurrentCase()).getCategoryManager(); + + ImageGalleryController controllerForCase = ImageGalleryController.getController(Case.getCurrentCase()); + if (controllerForCase != null) { + categoryManager = ImageGalleryController.getController(Case.getCurrentCase()).getCategoryManager(); + } else { + // If getting the controller fails it means the case is currently closing. No need to + // print an error. + categoryManager = null; + } } public abstract boolean isVideo(); @@ -246,6 +253,12 @@ public SimpleObjectProperty<TagName> categoryProperty() { * Update the category property. */ private void updateCategory() { + // This only happens when a DrawableFile is created while the case is closing. No need + // to display the error message. + if (categoryManager == null) { + return; + } + try { List<ContentTag> contentTags = getContentTags(); TagName tag = null;