From 1b3ec602b57b5ac9622d80af4e1babaebc4ebebe Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 16 Dec 2020 12:53:46 -0500 Subject: [PATCH] Tidying EFE class changes for java.io.File retries --- .../DocumentEmbeddedContentExtractor.java | 2 +- .../EmbeddedFileExtractorIngestModule.java | 54 +++++++++---------- .../SevenZipExtractor.java | 2 - 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/DocumentEmbeddedContentExtractor.java b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/DocumentEmbeddedContentExtractor.java index 227e4843c1..a25dd9e1d7 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/DocumentEmbeddedContentExtractor.java +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/DocumentEmbeddedContentExtractor.java @@ -123,7 +123,7 @@ class DocumentEmbeddedContentExtractor { DocumentEmbeddedContentExtractor(IngestJobContext context, FileTypeDetector fileTypeDetector, String moduleDirRelative, String moduleDirAbsolute) throws NoCurrentCaseException { - this.fileManager = Case.getCurrentCase().getServices().getFileManager(); + this.fileManager = Case.getCurrentCaseThrows().getServices().getFileManager(); this.services = IngestServices.getInstance(); this.context = context; this.fileTypeDetector = fileTypeDetector; diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/EmbeddedFileExtractorIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/EmbeddedFileExtractorIngestModule.java index 131235b8cc..10f7b79662 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/EmbeddedFileExtractorIngestModule.java +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/EmbeddedFileExtractorIngestModule.java @@ -83,8 +83,8 @@ public final class EmbeddedFileExtractorIngestModule extends FileIngestModuleAda * */ Case currentCase = Case.getCurrentCase(); - final String moduleDirAbsolute = Paths.get(currentCase.getModuleDirectory(), EmbeddedFileExtractorModuleFactory.getModuleName()).toString(); - final String moduleDirRelative = Paths.get(currentCase.getModuleOutputDirectoryRelativePath(), EmbeddedFileExtractorModuleFactory.getModuleName()).toString(); + String moduleDirAbsolute = Paths.get(currentCase.getModuleDirectory(), EmbeddedFileExtractorModuleFactory.getModuleName()).toString(); + String moduleDirRelative = Paths.get(currentCase.getModuleOutputDirectoryRelativePath(), EmbeddedFileExtractorModuleFactory.getModuleName()).toString(); /* * Construct an executor that will be used for calling java.io.File @@ -94,31 +94,7 @@ public final class EmbeddedFileExtractorIngestModule extends FileIngestModuleAda * FileTaskExecutor class header docs for more details. */ fileTaskExecutor = new FileTaskExecutor(context); - - try { - fileTypeDetector = new FileTypeDetector(); - } catch (FileTypeDetector.FileTypeDetectorInitException ex) { - throw new IngestModuleException(Bundle.CannotRunFileTypeDetection(), ex); - } - - try { - archiveExtractor = new SevenZipExtractor(context, fileTypeDetector, moduleDirRelative, moduleDirAbsolute, fileTaskExecutor); - } catch (SevenZipNativeInitializationException ex) { - throw new IngestModuleException(Bundle.UnableToInitializeLibraries(), ex); - } - - try { - documentExtractor = new DocumentEmbeddedContentExtractor(context, fileTypeDetector, moduleDirRelative, moduleDirAbsolute); - } catch (NoCurrentCaseException ex) { - fileTaskExecutor.shutDown(); - /* - * Exception message is localized because these ingestmodule start - * up exceptions are displayed to the user when running with the RCP - * GUI. - */ - throw new IngestModuleException(Bundle.EmbeddedFileExtractorIngestModule_UnableToGetMSOfficeExtractor_errMsg(), ex); - } - + if (refCounter.incrementAndGet(jobId) == 1) { try { File extractionDirectory = new File(moduleDirAbsolute); @@ -146,6 +122,30 @@ public final class EmbeddedFileExtractorIngestModule extends FileIngestModuleAda */ mapOfDepthTrees.put(jobId, new ConcurrentHashMap<>()); } + + try { + fileTypeDetector = new FileTypeDetector(); + } catch (FileTypeDetector.FileTypeDetectorInitException ex) { + throw new IngestModuleException(Bundle.CannotRunFileTypeDetection(), ex); + } + + try { + archiveExtractor = new SevenZipExtractor(context, fileTypeDetector, moduleDirRelative, moduleDirAbsolute, fileTaskExecutor); + } catch (SevenZipNativeInitializationException ex) { + throw new IngestModuleException(Bundle.UnableToInitializeLibraries(), ex); + } + + try { + documentExtractor = new DocumentEmbeddedContentExtractor(context, fileTypeDetector, moduleDirRelative, moduleDirAbsolute); + } catch (NoCurrentCaseException ex) { + fileTaskExecutor.shutDown(); + /* + * Exception message is localized because these ingestmodule start + * up exceptions are displayed to the user when running with the RCP + * GUI. + */ + throw new IngestModuleException(Bundle.EmbeddedFileExtractorIngestModule_UnableToGetMSOfficeExtractor_errMsg(), ex); + } } @Override diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java index b40b1d4baa..df8bbb2395 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.modules.embeddedfileextractor; -import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -34,7 +33,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.logging.Level; import net.sf.sevenzipjbinding.ArchiveFormat; import static net.sf.sevenzipjbinding.ArchiveFormat.RAR;