public final void handle(IdentificationRequest request) throws IOException { IdentificationRequest<InputStream> archiveRequest = null; InputStream in = request.getSourceInputStream(); try { URI parent = request.getIdentifier().getUri(); long correlationId = request.getIdentifier().getNodeId(); final URI uri = ArchiveFileUtils.toGZipUri(parent); identifier.setAncestorId(request.getIdentifier().getAncestorId()); identifier.setParentId(correlationId); final InputStream gzin = new GZIPInputStream(in); try { archiveRequest.open(gzin); } finally { if (gzin != null) {
IdentificationResultCollection containerResults = containerIdentifier.submit(request); droidCore.removeLowerPriorityHits(containerResults); droidCore.checkForExtensionsMismatches(containerResults, request.getExtension()); containerResults.setFileLength(request.size()); containerResults.setRequestMetaData(request.getRequestMetaData()); return containerResults.getResults().isEmpty() ? null : containerResults; containerFormat, request.getIdentifier().getUri().toString(), e.getMessage(), causeMessage); log.warn(message);
private void closeRequest() { requests.remove(request); try { request.close(); } catch (IOException e) { log.error(String.format("Error closing request [%s]", request.getIdentifier().getUri()), e); } } }
private void generateHash(IdentificationRequest request) throws IOException { if (generateHash) { try { InputStream in = request.getSourceInputStream(); try { String hash = hashGenerator.hash(in); request.getRequestMetaData().setHash(hash); } finally { if (in != null) { in.close(); } } //CHECKSTYLE:OFF - generating a hash can't prejudice any other results } catch (Exception e) { log.error(e.getMessage(), e); } //CHECKSTYLE:ON } }
/** * {@inheritDoc} */ @Override public final void handle(IdentificationRequest request) throws IOException { final InputStream arcIn = request.getSourceInputStream(); try { Iterable<WarcRecord> iterable = new Iterable<WarcRecord>() { @Override public final Iterator<WarcRecord> iterator() { return new WarcArchiveEntryIterator(arcIn); } }; WarcArchiveWalker walker = new WarcArchiveWalker(request.getIdentifier(), arcIn); walker.walk(iterable); } finally { if (arcIn != null) { arcIn.close(); } } }
/** * Helper method to open an identification request. */ private void openIdentificationRequest(File file) { try { URI resourceUri = file.toURI(); RequestMetaData metadata = new RequestMetaData(file.length(), file.lastModified(), file.getName()); RequestIdentifier requestIdentifier = new RequestIdentifier(resourceUri); identificationRequest = new FileSystemIdentificationRequest(metadata, requestIdentifier); FileInputStream inputStream = new FileInputStream(file); identificationRequest.open(inputStream); } catch (Exception e) { log.error("Could not open identification request.", e); } }
throws CommandExecutionException { final String newPath = "gzip:" + slash1 + path + request.getFileName() + "!" + slash; slash1 = ""; final URI newUri = URI.create(GzipUtils.getUncompressedFilename(uri.toString())); gzin = new GZIPInputStream(request.getSourceInputStream()); gzRequest.open(gzin); final IdentificationResultCollection gzResults =
public void handleError(IdentificationException e) { final IdentificationRequest request = e.getRequest(); final RequestIdentifier identifier = request.getIdentifier(); final URI uri = identifier.getUri(); final Long nodeId = identifier.getNodeId(); metaData.setNodeStatus(getNodeStatus(e.getErrorType())); node.setNoFormatsIdentified(); RequestMetaData requestMetaData = request.getRequestMetaData(); metaData.setName(requestMetaData.getName()); metaData.setSize(requestMetaData.getSize()); metaData.setExtension(request.getExtension()); metaData.setLastModified(request.getRequestMetaData().getTime()); metaData.setHash(requestMetaData.getHash());
request.open(in); IdentificationResultImpl result = new IdentificationResultImpl(); result.setMethod(IdentificationMethod.CONTAINER); result.setRequestMetaData(request.getRequestMetaData()); String puid = mapping.getPuid(); result.setPuid(mapping.getPuid()); request.close(); } finally { if (in != null) {
@Override public void handle(IdentificationRequest request) throws IOException { BlockDevice device = new FatReader(request.getWindowReader()); FileSystem fatSystem = FatFileSystem.read(device, OPEN_READ_ONLY); FsDirectory root = fatSystem.getRoot(); FatArchiveWalker walker = new FatArchiveWalker(droid, resultHandler, request.getIdentifier()); walker.walk(root); }
IdentificationRequest request, boolean allExtensions) { IdentificationResultCollection results = new IdentificationResultCollection(request); results.setRequestMetaData(request.getRequestMetaData()); String fileExtension = request.getExtension(); if (fileExtension != null && !fileExtension.isEmpty()) { List<FileFormat> fileFormats; results.setFileLength(request.size()); results.setRequestMetaData(request.getRequestMetaData()); return results;
droid.removeLowerPriorityHits(containerResults); droid.checkForExtensionsMismatches(containerResults, format); containerResults.setFileLength(identificationRequest.size()); containerResults.setRequestMetaData(identificationRequest.getRequestMetaData()); return containerResults;
request.open(in); final IdentificationResultCollection results = getBinarySignatureIdentifier().matchBinarySignatures(request); request.close(); } catch (IOException ioe) { System.err.println(ioe + " " + newPath); // continue after corrupt archive try { request.close(); } catch (IOException ioe) { System.err.println("Failed to close temp file for Container request:" + ioe);
/** * * @param request the original request. */ public IdentificationResultCollection(IdentificationRequest request) { correlationId = request.getIdentifier().getParentResourceId(); resourceUri = request.getIdentifier().getUri(); }
/** * Shuts down the executor service and closes any in-flight requests. * @throws IOException if temp files could not be deleted. */ public void close() throws IOException { executorService.shutdownNow(); for (IdentificationRequest request : requests) { request.close(); } }
/** * @return the File name of the request */ @Override public final String getFileName() { return request.getFileName(); }
final IdentificationResultImpl result = new IdentificationResultImpl(); result.setMethod(IdentificationMethod.CONTAINER); result.setRequestMetaData(request.getRequestMetaData()); result.setPuid(mapping.getPuid()); results.addResult(result);
ole2Identifier.setIdentifierEngine(ole2IdentifierEngine); containerResults = ole2Identifier.process( new CloseShieldInputStream(request.getSourceInputStream()), containerResults); } catch (IOException e) { // carry on after container i/o problems System.err.println(e + SPACE + L_BRACKET + fileName + R_BRACKET); zipIdentifier.setIdentifierEngine(zipIdentifierEngine); containerResults = zipIdentifier.process( new CloseShieldInputStream(request.getSourceInputStream()), containerResults); } catch (IOException e) { // carry on after container i/o problems System.err.println(e + SPACE + L_BRACKET + fileName + R_BRACKET);
@Override public WindowReader getWindowReader() { return request.getWindowReader(); } }
private IdentificationResultCollection handleExtensions(IdentificationRequest request, IdentificationResultCollection results) { IdentificationResultCollection extensionResults = results; try { List<IdentificationResult> resultList = results.getResults(); if (resultList != null && resultList.isEmpty()) { // If we call matchExtensions with "true", it will match // ALL files formats which have a given extension. // If "false", it will only match file formats for which // there is no other signature defined. IdentificationResultCollection checkExtensionResults = droidCore.matchExtensions(request, matchAllExtensions); if (checkExtensionResults != null) { extensionResults = checkExtensionResults; } } else { droidCore.checkForExtensionsMismatches(extensionResults, request.getExtension()); } //CHECKSTYLE:OFF - do not allow any errors in other code to // prevent results so far from being recorded. } catch (Exception e) { log.error(e.getMessage(), e); } //CHECKSTYLE:ON return extensionResults; }