From 928fc37ecfc58a372350d9fd18568168b5f78ad0 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Tue, 27 Feb 2018 17:56:00 -0500 Subject: [PATCH 01/10] 2229: Use getOpenCase() instead of getCurrentCase() and throws checked excepiton: NoCurrentCaseException. --- .../sleuthkit/autopsy/casemodule/Case.java | 32 ++++++++++--- .../casemodule/NoCurrentCaseException.java | 47 +++++++++++++++++++ 2 files changed, 73 insertions(+), 6 deletions(-) create mode 100755 Core/src/org/sleuthkit/autopsy/casemodule/NoCurrentCaseException.java diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index b9665ab811..4529a0ea3f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -583,24 +583,44 @@ public class Case { } /** + * Deprecated. Use getOpenCase() instead. + * * Gets the current case, if there is one, at the time of the call. * * @return The current case. * * @throws IllegalStateException if there is no current case. */ + @Deprecated public static Case getCurrentCase() { /* * Throwing an unchecked exception is a bad idea here. * - * TODO (JIRA-2229): Case.getCurrentCase() method throws unchecked - * IllegalStateException; change to throw checked exception or return - * null */ - if (null != currentCase) { - return currentCase; + try { + Case curCase = getOpenCase(); + return curCase; + } catch (NoCurrentCaseException e) { + throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen"), e); + } + } + + /** + * Gets the current open case, if there is one, at the time of the call. + * + * @return The open case. + * + * @throws NoCurrentCaseException if there is no open case. + */ + @Messages({ + "Case.NoCurrentCaseException.message=No open case available." + }) + public static Case getOpenCase() throws NoCurrentCaseException { + Case openCase = currentCase; + if (null != openCase) { + return openCase; } else { - throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen")); + throw new NoCurrentCaseException(Bundle.Case_NoCurrentCaseException_message()); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NoCurrentCaseException.java b/Core/src/org/sleuthkit/autopsy/casemodule/NoCurrentCaseException.java new file mode 100755 index 0000000000..b52efe8992 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NoCurrentCaseException.java @@ -0,0 +1,47 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2018 Basis Technology Corp. + * Contact: carrier sleuthkit 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.autopsy.casemodule; + + +/** + * + * Exception thrown when no current case is available + */ +public class NoCurrentCaseException extends Exception { + private static final long serialVersionUID = 1L; + /** + * Constructs an exception with the specified message. + * + * @param message The exception message. + */ + public NoCurrentCaseException(String message) { + super(message); + } + + /** + * Constructs an exception with the specified message and cause. + * + * @param message The exception message. + * @param cause The exception cause. + */ + public NoCurrentCaseException(String message, Throwable cause) { + super(message, cause); + } + +} From 9feb88822ba541d0dbe6544626f46909bd88a53d Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Tue, 27 Feb 2018 18:11:07 -0500 Subject: [PATCH 02/10] 2229: Part 2: Use getOpenCase() instead of getCurrentCase() in package actions --- .../AddBlackboardArtifactTagAction.java | 5 ++-- .../autopsy/actions/AddBookmarkTagAction.java | 7 +++--- .../autopsy/actions/AddContentTagAction.java | 5 ++-- .../autopsy/actions/AddTagAction.java | 24 ++++++++++++------- .../DeleteBlackboardArtifactTagAction.java | 5 ++-- .../actions/DeleteContentTagAction.java | 5 ++-- ...DeleteFileBlackboardArtifactTagAction.java | 24 +++++++++++++------ .../actions/DeleteFileContentTagAction.java | 24 +++++++++++++------ .../actions/GetTagNameAndCommentDialog.java | 7 +++--- .../autopsy/actions/GetTagNameDialog.java | 13 +++++----- .../autopsy/actions/OpenLogFolderAction.java | 5 ++-- .../actions/OpenOutputFolderAction.java | 5 ++-- 12 files changed, 83 insertions(+), 46 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java index 02d7a48664..47bd201ec1 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java @@ -27,6 +27,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.TagName; @@ -83,8 +84,8 @@ public class AddBlackboardArtifactTagAction extends AddTagAction { new Thread(() -> { for (BlackboardArtifact artifact : selectedArtifacts) { try { - Case.getCurrentCase().getServices().getTagsManager().addBlackboardArtifactTag(artifact, tagName, comment); - } catch (TskCoreException ex) { + Case.getOpenCase().getServices().getTagsManager().addBlackboardArtifactTag(artifact, tagName, comment); + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(AddBlackboardArtifactTagAction.class.getName()).log(Level.SEVERE, "Error tagging result", ex); //NON-NLS SwingUtilities.invokeLater(() -> { JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddBookmarkTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddBookmarkTagAction.java index 2fefb10d54..9e99922775 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/AddBookmarkTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddBookmarkTagAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * -* Copyright 2011-2017 Basis Technology Corp. +* Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -30,6 +30,7 @@ import javax.swing.KeyStroke; import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.TagName; @@ -44,7 +45,7 @@ public class AddBookmarkTagAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { try { - Map tagNamesMap = Case.getCurrentCase().getServices().getTagsManager().getDisplayNamesToTagNamesMap(); + Map tagNamesMap = Case.getOpenCase().getServices().getTagsManager().getDisplayNamesToTagNamesMap(); TagName bookmarkTagName = tagNamesMap.get(BOOKMARK); /* @@ -60,7 +61,7 @@ public class AddBookmarkTagAction extends AbstractAction { AddContentTagAction.getInstance().addTag(bookmarkTagName, NO_COMMENT); } - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(AddBookmarkTagAction.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } } diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java index ac2da58755..dad777585f 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java @@ -27,6 +27,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.Content; @@ -139,8 +140,8 @@ public class AddContentTagAction extends AddTagAction { } } - Case.getCurrentCase().getServices().getTagsManager().addContentTag(file, tagName, comment); - } catch (TskCoreException ex) { + Case.getOpenCase().getServices().getTagsManager().addContentTag(file, tagName, comment); + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error tagging result", ex); //NON-NLS AbstractFile fileCopy = file; SwingUtilities.invokeLater(() -> { diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java index 95b68b87d6..12e23bdb30 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,9 +26,9 @@ import javax.swing.AbstractAction; import javax.swing.JMenu; import javax.swing.JMenuItem; import org.openide.util.NbBundle; -import org.openide.util.NbBundle.Messages; import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.TagName; @@ -91,11 +91,11 @@ abstract class AddTagAction extends AbstractAction implements Presenter.Popup { super(getActionDisplayName()); // Get the current set of tag names. - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); Map tagNamesMap = null; try { + TagsManager tagsManager = Case.getOpenCase().getServices().getTagsManager(); tagNamesMap = new TreeMap<>(tagsManager.getDisplayNamesToTagNamesMap()); - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } @@ -168,18 +168,26 @@ abstract class AddTagAction extends AbstractAction implements Presenter.Popup { * @param comment comment for the content or artifact tag */ private void getAndAddTag(String tagDisplayName, TagName tagName, String comment) { + Case openCase; + try { + openCase = Case.getOpenCase(); + } catch (NoCurrentCaseException ex) { + Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Exception while getting open case.", ex); // NON-NLS + return; + } + if (tagName == null) { try { - tagName = Case.getCurrentCase().getServices().getTagsManager().addTagName(tagDisplayName); + tagName = openCase.getServices().getTagsManager().addTagName(tagDisplayName); } catch (TagsManager.TagNameAlreadyExistsException ex) { try { - tagName = Case.getCurrentCase().getServices().getTagsManager().getDisplayNamesToTagNamesMap().get(tagDisplayName); + tagName = openCase.getServices().getTagsManager().getDisplayNamesToTagNamesMap().get(tagDisplayName); } catch (TskCoreException ex1) { Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, tagDisplayName + " already exists in database but an error occurred in retrieving it.", ex1); //NON-NLS - } + } } catch (TskCoreException ex) { Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Error adding " + tagDisplayName + " tag name", ex); //NON-NLS - } + } } addTag(tagName, comment); } diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java index 5bb578d722..28aa03bed8 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java @@ -28,6 +28,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.BlackboardArtifactTag; import org.sleuthkit.datamodel.TskCoreException; @@ -72,8 +73,8 @@ public class DeleteBlackboardArtifactTagAction extends AbstractAction { new Thread(() -> { for (BlackboardArtifactTag tag : selectedTags) { try { - Case.getCurrentCase().getServices().getTagsManager().deleteBlackboardArtifactTag(tag); - } catch (TskCoreException ex) { + Case.getOpenCase().getServices().getTagsManager().deleteBlackboardArtifactTag(tag); + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(DeleteBlackboardArtifactTagAction.class.getName()).log(Level.SEVERE, "Error deleting tag", ex); //NON-NLS SwingUtilities.invokeLater(() -> { JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java index 66cb2bf1e7..065a023c2f 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java @@ -28,6 +28,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.ContentTag; import org.sleuthkit.datamodel.TskCoreException; @@ -71,8 +72,8 @@ public class DeleteContentTagAction extends AbstractAction { new Thread(() -> { for (ContentTag tag : selectedTags) { try { - Case.getCurrentCase().getServices().getTagsManager().deleteContentTag(tag); - } catch (TskCoreException ex) { + Case.getOpenCase().getServices().getTagsManager().deleteContentTag(tag); + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(DeleteContentTagAction.class.getName()).log(Level.SEVERE, "Error deleting tag", ex); //NON-NLS SwingUtilities.invokeLater(() -> { JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteFileBlackboardArtifactTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteFileBlackboardArtifactTagAction.java index dd2108c1fc..ce99fb1ec4 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteFileBlackboardArtifactTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteFileBlackboardArtifactTagAction.java @@ -36,6 +36,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.BlackboardArtifact; @@ -95,7 +96,16 @@ public class DeleteFileBlackboardArtifactTagAction extends AbstractAction implem @Override protected Void doInBackground() throws Exception { - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); + TagsManager tagsManager; + try { + tagsManager = Case.getOpenCase().getServices().getTagsManager(); + } catch (NoCurrentCaseException ex) { + logger.log(Level.SEVERE, "Error untagging artifact. No open case found.", ex); //NON-NLS + Platform.runLater(() + -> new Alert(Alert.AlertType.ERROR, Bundle.DeleteFileBlackboardArtifactTagAction_deleteTag_alert(artifactId)).show() + ); + return null; + } try { logger.log(Level.INFO, "Removing tag {0} from {1}", new Object[]{tagName.getDisplayName(), artifactTag.getContent().getName()}); //NON-NLS @@ -142,13 +152,13 @@ public class DeleteFileBlackboardArtifactTagAction extends AbstractAction implem BlackboardArtifact artifact = selectedBlackboardArtifactsList.iterator().next(); - // Get the current set of tag names. - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); - Map tagNamesMap = null; try { + // Get the current set of tag names. + TagsManager tagsManager = Case.getOpenCase().getServices().getTagsManager(); + tagNamesMap = new TreeMap<>(tagsManager.getDisplayNamesToTagNamesMap()); - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } @@ -158,7 +168,7 @@ public class DeleteFileBlackboardArtifactTagAction extends AbstractAction implem if (null != tagNamesMap && !tagNamesMap.isEmpty()) { try { List existingTagsList - = Case.getCurrentCase().getServices().getTagsManager() + = Case.getOpenCase().getServices().getTagsManager() .getBlackboardArtifactTagsByArtifact(artifact); for (Map.Entry entry : tagNamesMap.entrySet()) { @@ -176,7 +186,7 @@ public class DeleteFileBlackboardArtifactTagAction extends AbstractAction implem } } } - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(TagMenu.class.getName()) .log(Level.SEVERE, "Error retrieving tags for TagMenu", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteFileContentTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteFileContentTagAction.java index c11ffd39fa..abc316b33f 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteFileContentTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteFileContentTagAction.java @@ -36,6 +36,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.AbstractFile; @@ -95,7 +96,16 @@ public class DeleteFileContentTagAction extends AbstractAction implements Presen @Override protected Void doInBackground() throws Exception { - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); + TagsManager tagsManager; + try { + tagsManager = Case.getOpenCase().getServices().getTagsManager(); + } catch (NoCurrentCaseException ex) { + logger.log(Level.SEVERE, "Error untagging file. No open case found.", ex); //NON-NLS + Platform.runLater(() -> + new Alert(Alert.AlertType.ERROR, Bundle.DeleteFileContentTagAction_deleteTag_alert(fileId)).show() + ); + return null; + } try { logger.log(Level.INFO, "Removing tag {0} from {1}", new Object[]{tagName.getDisplayName(), contentTag.getContent().getName()}); //NON-NLS @@ -139,13 +149,13 @@ public class DeleteFileContentTagAction extends AbstractAction implements Presen if(!selectedAbstractFilesList.isEmpty()) { AbstractFile file = selectedAbstractFilesList.iterator().next(); - // Get the current set of tag names. - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); - Map tagNamesMap = null; try { + // Get the current set of tag names. + TagsManager tagsManager = Case.getOpenCase().getServices().getTagsManager(); + tagNamesMap = new TreeMap<>(tagsManager.getDisplayNamesToTagNamesMap()); - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(TagsManager.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } @@ -155,7 +165,7 @@ public class DeleteFileContentTagAction extends AbstractAction implements Presen if (null != tagNamesMap && !tagNamesMap.isEmpty()) { try { List existingTagsList = - Case.getCurrentCase().getServices().getTagsManager() + Case.getOpenCase().getServices().getTagsManager() .getContentTagsByContent(file); for (Map.Entry entry : tagNamesMap.entrySet()) { @@ -173,7 +183,7 @@ public class DeleteFileContentTagAction extends AbstractAction implements Presen } } } - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(TagMenu.class.getName()) .log(Level.SEVERE, "Error retrieving tags for TagMenu", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java index e01a887949..f295a613a5 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -36,6 +36,7 @@ import javax.swing.KeyStroke; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.TagName; @@ -137,11 +138,11 @@ public class GetTagNameAndCommentDialog extends JDialog { // tag name DTOs to be enable to return the one the user selects. // Tag name DTOs may be null (user tag names that have not been used do // not exist in the database). - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); try { + TagsManager tagsManager = Case.getOpenCase().getServices().getTagsManager(); tagNamesSet.addAll(tagsManager.getAllTagNames()); - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(GetTagNameAndCommentDialog.class .getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java index 45d2715f63..4bdbf0bd29 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java @@ -39,6 +39,7 @@ import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.TagName; @@ -108,10 +109,10 @@ public class GetTagNameDialog extends JDialog { // Get the current set of tag names and hash them for a speedy lookup in // case the user chooses an existing tag name from the tag names table. - TagsManager tagsManager = Case.getCurrentCase().getServices().getTagsManager(); try { + TagsManager tagsManager = Case.getOpenCase().getServices().getTagsManager(); tagNamesMap.putAll(tagsManager.getDisplayNamesToTagNamesMap()); - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(GetTagNameDialog.class.getName()).log(Level.SEVERE, "Failed to get tag names", ex); //NON-NLS } @@ -347,9 +348,9 @@ public class GetTagNameDialog extends JDialog { if (tagName == null) { try { - tagName = Case.getCurrentCase().getServices().getTagsManager().addTagName(tagDisplayName, userTagDescription, TagName.HTML_COLOR.NONE, status); + tagName = Case.getOpenCase().getServices().getTagsManager().addTagName(tagDisplayName, userTagDescription, TagName.HTML_COLOR.NONE, status); dispose(); - } catch (TskCoreException ex) { + } catch (TskCoreException | NoCurrentCaseException ex) { Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Error adding " + tagDisplayName + " tag name", ex); //NON-NLS JOptionPane.showMessageDialog(this, NbBundle.getMessage(this.getClass(), @@ -360,8 +361,8 @@ public class GetTagNameDialog extends JDialog { tagName = null; } catch (TagsManager.TagNameAlreadyExistsException ex) { try { - tagName = Case.getCurrentCase().getServices().getTagsManager().getDisplayNamesToTagNamesMap().get(tagDisplayName); - } catch (TskCoreException ex1) { + tagName = Case.getOpenCase().getServices().getTagsManager().getDisplayNamesToTagNamesMap().get(tagDisplayName); + } catch (TskCoreException | NoCurrentCaseException ex1) { Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, tagDisplayName + " exists in database but an error occurred in retrieving it.", ex1); //NON-NLS JOptionPane.showMessageDialog(this, NbBundle.getMessage(this.getClass(), diff --git a/Core/src/org/sleuthkit/autopsy/actions/OpenLogFolderAction.java b/Core/src/org/sleuthkit/autopsy/actions/OpenLogFolderAction.java index 62a23b46b0..021ecd6278 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/OpenLogFolderAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/OpenLogFolderAction.java @@ -32,6 +32,7 @@ import org.openide.awt.ActionRegistration; import org.openide.modules.Places; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; /** @@ -57,9 +58,9 @@ public final class OpenLogFolderAction implements ActionListener { /* * Open the log directory for the case. */ - Case currentCase = Case.getCurrentCase(); + Case currentCase = Case.getOpenCase(); logDir = new File(currentCase.getLogDirectoryPath()); - } catch (IllegalStateException ex) { + } catch (NoCurrentCaseException ex) { /* * There is no open case, open the application level log * directory. diff --git a/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java b/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java index f3b624edb6..9e71c29fa9 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java @@ -33,6 +33,7 @@ import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; /** @@ -56,7 +57,7 @@ public final class OpenOutputFolderAction extends CallableSystemAction { public void performAction() { File outputDir; try { - Case currentCase = Case.getCurrentCase(); + Case currentCase = Case.getOpenCase(); outputDir = new File(currentCase.getOutputDirectory()); if (outputDir.exists()) { try { @@ -72,7 +73,7 @@ public final class OpenOutputFolderAction extends CallableSystemAction { NbBundle.getMessage(this.getClass(), "OpenOutputFolder.error1", outputDir.getAbsolutePath()), NotifyDescriptor.ERROR_MESSAGE); DialogDisplayer.getDefault().notify(descriptor); } - } catch (IllegalStateException ex) { + } catch (NoCurrentCaseException ex) { logger.log(Level.SEVERE, "OpenOutputFolderAction enabled with no current case", ex); //NON-NLS JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), NbBundle.getMessage(this.getClass(), "OpenOutputFolder.noCaseOpen")); } From 94736502b16c3128fa3671c884d4372e6abf1719 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Tue, 27 Feb 2018 18:15:38 -0500 Subject: [PATCH 03/10] 2229: Simple return the value instead of storing it in a local variable. --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 4529a0ea3f..aba9d190be 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -598,8 +598,7 @@ public class Case { * */ try { - Case curCase = getOpenCase(); - return curCase; + return getOpenCase(); } catch (NoCurrentCaseException e) { throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen"), e); } From 8d9cbf832076de253a06f60d118be6b1a8a5afba Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Wed, 28 Feb 2018 10:21:30 -0500 Subject: [PATCH 04/10] 2229: Simply follow Codacy suggestion to avoid negation within an 'if' expression. --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index aba9d190be..8cbda83ee2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -616,10 +616,10 @@ public class Case { }) public static Case getOpenCase() throws NoCurrentCaseException { Case openCase = currentCase; - if (null != openCase) { - return openCase; - } else { + if (openCase == null) { throw new NoCurrentCaseException(Bundle.Case_NoCurrentCaseException_message()); + } else { + return openCase; } } From 3cebe82f40459a2ae79d3630a5aec38aad31793f Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Wed, 28 Feb 2018 11:55:21 -0500 Subject: [PATCH 05/10] 2229: Part 3: Use getOpenCase() instead of getCurrentCase() in casemodule. --- .../AddImageWizardSelectDspVisual.java | 17 +++++++++++------ .../autopsy/casemodule/AddLocalFilesTask.java | 6 +++--- .../autopsy/casemodule/ImageDSProcessor.java | 2 +- .../autopsy/casemodule/LocalDiskPanel.java | 19 +++++++++++++------ .../casemodule/LocalFilesDSProcessor.java | 11 +++++++++-- .../casemodule/NewCaseWizardAction.java | 6 +++--- .../autopsy/casemodule/RecentCases.java | 10 +++++----- 7 files changed, 45 insertions(+), 26 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardSelectDspVisual.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardSelectDspVisual.java index 9c66184b47..e01773a79c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardSelectDspVisual.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardSelectDspVisual.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -58,10 +58,15 @@ final class AddImageWizardSelectDspVisual extends JPanel { initComponents(); selectedDsp = lastDspUsed; //if the last selected DSP was the Local Disk DSP and it would be disabled then we want to select a different DSP - if ((Case.getCurrentCase().getCaseType() == Case.CaseType.MULTI_USER_CASE) && selectedDsp.equals(LocalDiskDSProcessor.getType())) { - selectedDsp = ImageDSProcessor.getType(); + try { + if ((Case.getOpenCase().getCaseType() == Case.CaseType.MULTI_USER_CASE) && selectedDsp.equals(LocalDiskDSProcessor.getType())) { + selectedDsp = ImageDSProcessor.getType(); + } + createDataSourceProcessorButtons(); + } catch (NoCurrentCaseException ex) { + logger.log(Level.SEVERE, "Exception while getting open case.", ex); } - createDataSourceProcessorButtons(); + //add actionlistner to listen for change } @@ -96,7 +101,7 @@ final class AddImageWizardSelectDspVisual extends JPanel { * Create the a button for each DataSourceProcessor that should exist as an * option. */ - private void createDataSourceProcessorButtons() { + private void createDataSourceProcessorButtons() throws NoCurrentCaseException { //Listener for button selection ActionListener cbActionListener = new ActionListener() { @Override @@ -126,7 +131,7 @@ final class AddImageWizardSelectDspVisual extends JPanel { //Add the button JToggleButton dspButton = createDspButton(dspType); dspButton.addActionListener(cbActionListener); - if ((Case.getCurrentCase().getCaseType() == Case.CaseType.MULTI_USER_CASE) && dspType.equals(LocalDiskDSProcessor.getType())){ + if ((Case.getOpenCase().getCaseType() == Case.CaseType.MULTI_USER_CASE) && dspType.equals(LocalDiskDSProcessor.getType())){ dspButton.setEnabled(false); //disable the button for local disk DSP when this is a multi user case dspButton.setSelected(false); shouldAddMultiUserWarning = true; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddLocalFilesTask.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddLocalFilesTask.java index c610ff78c3..e7e3702600 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddLocalFilesTask.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddLocalFilesTask.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2013-2016 Basis Technology Corp. + * Copyright 2013-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -87,10 +87,10 @@ class AddLocalFilesTask implements Runnable { List errors = new ArrayList<>(); try { progress.setIndeterminate(true); - FileManager fileManager = Case.getCurrentCase().getServices().getFileManager(); + FileManager fileManager = Case.getOpenCase().getServices().getFileManager(); LocalFilesDataSource newDataSource = fileManager.addLocalFilesDataSource(deviceId, rootVirtualDirectoryName, "", localFilePaths, new ProgressUpdater()); newDataSources.add(newDataSource); - } catch (TskDataException | TskCoreException ex) { + } catch (TskDataException | TskCoreException | NoCurrentCaseException ex) { errors.add(ex.getMessage()); LOGGER.log(Level.SEVERE, String.format("Failed to add datasource: %s", ex.getMessage()), ex); } finally { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index b1824a86e8..6e27d1d831 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -264,7 +264,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour try { // verify that the image has a file system that TSK can process - Case currentCase = Case.getCurrentCase(); + Case currentCase = Case.getOpenCase(); if (!DataSourceUtils.imageHasFileSystem(dataSourcePath)) { // image does not have a file system that TSK can process return 0; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java index 15abfcf441..e36c34a5c7 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -42,7 +42,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.coreutils.PlatformUtil; import org.sleuthkit.autopsy.imagewriter.ImageWriterSettings; -@NbBundle.Messages({"LocalDiskPanel.refreshTablebutton.text=Refresh Local Disks" +@NbBundle.Messages({"LocalDiskPanel.refreshTablebutton.text=Refresh Local Disks", + "LocalDiskPanel.listener.getOpenCase.errTitle=No open case availabe", + "LocalDiskPanel.listener.getOpenCase.errMsg=LocalDiskPanel listener couldn't get the open case." }) /** * ImageTypePanel for adding a local disk or partition such as PhysicalDrive0 or @@ -74,9 +76,14 @@ final class LocalDiskPanel extends JPanel { public void valueChanged(ListSelectionEvent e) { if (diskTable.getSelectedRow() >= 0 && diskTable.getSelectedRow() < disks.size()) { enableNext = true; - setPotentialImageWriterPath(disks.get(diskTable.getSelectedRow())); try { + setPotentialImageWriterPath(disks.get(diskTable.getSelectedRow())); firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true); + } catch (NoCurrentCaseException ex) { + logger.log(Level.SEVERE, "Exception while getting open case.", e); //NON-NLS + MessageNotifyUtil.Notify.show(Bundle.LocalDiskPanel_listener_getOpenCase_errTitle(), + Bundle.LocalDiskPanel_listener_getOpenCase_errMsg(), + MessageNotifyUtil.MessageType.ERROR); } catch (Exception ex) { logger.log(Level.SEVERE, "LocalDiskPanel listener threw exception", e); //NON-NLS MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "LocalDiskPanel.moduleErr"), @@ -375,11 +382,11 @@ final class LocalDiskPanel extends JPanel { return noFatOrphansCheckbox.isSelected(); } - private static String getDefaultImageWriterFolder() { - return Paths.get(Case.getCurrentCase().getModuleDirectory(), "Image Writer").toString(); + private static String getDefaultImageWriterFolder() throws NoCurrentCaseException { + return Paths.get(Case.getOpenCase().getModuleDirectory(), "Image Writer").toString(); } - private void setPotentialImageWriterPath(LocalDisk disk) { + private void setPotentialImageWriterPath(LocalDisk disk) throws NoCurrentCaseException { File subDirectory = Paths.get(getDefaultImageWriterFolder()).toFile(); if (!subDirectory.exists()) { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index c3a55cbfbb..cfba224f1c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -31,6 +31,7 @@ import javax.swing.JPanel; import javax.swing.filechooser.FileFilter; import org.apache.commons.io.FilenameUtils; import org.openide.modules.InstalledFileLocator; +import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.ServiceProvider; @@ -166,6 +167,9 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; + } catch (NoCurrentCaseException ex) { + logger.log(Level.WARNING, "Exception while getting open case.", ex); + return; } } } @@ -184,7 +188,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat * @throws * org.sleuthkit.autopsy.casemodule.LocalFilesDSProcessor.L01Exception */ - private List extractLogicalEvidenceFileContents(final List logicalEvidenceFilePaths) throws L01Exception { + private List extractLogicalEvidenceFileContents(final List logicalEvidenceFilePaths) throws L01Exception, NoCurrentCaseException { final List extractedPaths = new ArrayList<>(); Path ewfexportPath; ewfexportPath = locateEwfexportExecutable(); @@ -195,7 +199,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat command.add("-f"); command.add("files"); command.add("-t"); - File l01Dir = new File(Case.getCurrentCase().getModuleDirectory(), L01_EXTRACTION_DIR); //WJS-TODO change to getOpenCase() when that method exists + File l01Dir = new File(Case.getOpenCase().getModuleDirectory(), L01_EXTRACTION_DIR); //WJS-TODO change to getOpenCase() when that method exists if (!l01Dir.exists()) { l01Dir.mkdirs(); } @@ -354,6 +358,9 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat logger.log(Level.WARNING, "File extension was .l01 but contents of logical evidence file were unable to be extracted", ex); //contents of l01 could not be extracted don't add data source or run ingest return 0; + } catch (NoCurrentCaseException ex) { + logger.log(Level.WARNING, "Exception while getting open case.", ex); + return 0; } } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java index 89d527fcc1..2f806bcecc 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -91,9 +91,9 @@ final class NewCaseWizardAction extends CallableSystemAction { if (EamDb.isEnabled()) { //if the eam is enabled we need to save the case organization information now EamDb dbManager = EamDb.getInstance(); if (dbManager != null) { - CorrelationCase cRCase = dbManager.getCase(Case.getCurrentCase()); + CorrelationCase cRCase = dbManager.getCase(Case.getOpenCase()); if (cRCase == null) { - cRCase = dbManager.newCase(Case.getCurrentCase()); + cRCase = dbManager.newCase(Case.getOpenCase()); } if (!organizationName.isEmpty()) { for (EamOrganization org : dbManager.getOrganizations()) { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java b/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java index 49e480450f..6aeb3338d4 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -374,8 +374,8 @@ final class RecentCases extends CallableSystemAction implements Presenter.Menu { int i = 0; String currentCaseName = null; try { - currentCaseName = Case.getCurrentCase().getDisplayName(); - } catch (IllegalStateException ex) { + currentCaseName = Case.getOpenCase().getDisplayName(); + } catch (NoCurrentCaseException ex) { // in case there is no current case. } @@ -407,8 +407,8 @@ final class RecentCases extends CallableSystemAction implements Presenter.Menu { String[] casePaths = new String[LENGTH]; String currentCasePath = null; try { - currentCasePath = Case.getCurrentCase().getMetadata().getFilePath().toString(); - } catch (IllegalStateException ex) { + currentCasePath = Case.getOpenCase().getMetadata().getFilePath().toString(); + } catch (NoCurrentCaseException ex) { /* * There may be no current case. */ From a9332c3fbef2b628f542ace3729dfa14abcc204a Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Wed, 28 Feb 2018 16:21:51 -0500 Subject: [PATCH 06/10] 3565 Fix bug with null MD5 and Interesting file and tag nodes --- .../sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java | 3 ++- Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java index 056d87bfbd..6479c21cf9 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java @@ -35,6 +35,7 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.stream.Collectors; import javax.swing.Action; +import org.apache.commons.lang3.StringUtils; import org.openide.nodes.Sheet; import org.openide.util.Lookup; import org.openide.util.NbBundle; @@ -421,7 +422,7 @@ public class BlackboardArtifactNode extends AbstractContentNode(Bundle.BlackboardArtifactNode_createSheet_artifactMD5_name(), Bundle.BlackboardArtifactNode_createSheet_artifactMD5_displayName(), "", - file != null ? file.getMd5Hash() : "")); + file != null ? StringUtils.defaultString(file.getMd5Hash()) : "")); } } else { String dataSourceStr = ""; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java index 9ce002efc0..745753f2d4 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.List; import java.util.logging.Level; import javax.swing.Action; +import org.apache.commons.lang3.StringUtils; import org.openide.nodes.Children; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; @@ -114,7 +115,7 @@ class ContentTagNode extends DisplayableItemNode { properties.put(new NodeProperty<>(Bundle.ContentTagNode_createSheet_artifactMD5_name(), Bundle.ContentTagNode_createSheet_artifactMD5_displayName(), "", - file != null ? file.getMd5Hash() : "")); + file != null ? StringUtils.defaultString(file.getMd5Hash()) : "")); return propertySheet; } From 3fa2ddea72be9ef1b4b5d2308516406d1d784e11 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Mon, 5 Mar 2018 15:51:16 -0500 Subject: [PATCH 07/10] 2229: part 2 remove unused imports --- .../org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index cfba224f1c..774a68ffc6 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -31,7 +31,6 @@ import javax.swing.JPanel; import javax.swing.filechooser.FileFilter; import org.apache.commons.io.FilenameUtils; import org.openide.modules.InstalledFileLocator; -import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.ServiceProvider; From 51f1d7044f48e90610b5817628299d383f6ccba9 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\zhaohui" Date: Tue, 6 Mar 2018 11:12:55 -0500 Subject: [PATCH 08/10] 2229: Part 1. Fix the document comment of deprecated method and a codacy issue. --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 8cbda83ee2..abfea4c965 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -583,14 +583,14 @@ public class Case { } /** - * Deprecated. Use getOpenCase() instead. - * * Gets the current case, if there is one, at the time of the call. * * @return The current case. * * @throws IllegalStateException if there is no current case. - */ + * + * @deprecated. Use getOpenCase() instead. + */ @Deprecated public static Case getCurrentCase() { /* @@ -617,7 +617,7 @@ public class Case { public static Case getOpenCase() throws NoCurrentCaseException { Case openCase = currentCase; if (openCase == null) { - throw new NoCurrentCaseException(Bundle.Case_NoCurrentCaseException_message()); + throw new NoCurrentCaseException(Case_NoCurrentCaseException_message()); } else { return openCase; } From d9023751af0b5948c532f2e978312fbcc7737434 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 6 Mar 2018 11:20:57 -0500 Subject: [PATCH 09/10] Disable Codacy flagging use of fully qualified names --- ruleset.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ruleset.xml b/ruleset.xml index b97681d624..88bfefaff2 100644 --- a/ruleset.xml +++ b/ruleset.xml @@ -178,7 +178,10 @@ - + From b53d993e33cb98bac649751439ec74307e03189a Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 6 Mar 2018 11:47:35 -0500 Subject: [PATCH 10/10] Remove redundant NbBundle in Case class --- Core/src/org/sleuthkit/autopsy/casemodule/Case.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index afdcc0ebba..86c18870f7 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -599,8 +599,8 @@ public class Case { */ try { return getOpenCase(); - } catch (NoCurrentCaseException e) { - throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen"), e); + } catch (NoCurrentCaseException ex) { + throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen"), ex); } } @@ -611,13 +611,10 @@ public class Case { * * @throws NoCurrentCaseException if there is no open case. */ - @Messages({ - "Case.NoCurrentCaseException.message=No open case available." - }) public static Case getOpenCase() throws NoCurrentCaseException { Case openCase = currentCase; if (openCase == null) { - throw new NoCurrentCaseException(Case_NoCurrentCaseException_message()); + throw new NoCurrentCaseException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen")); } else { return openCase; }