@Override public boolean apply(ProjectModelTraversal input) { FileModel rootFile = input.getCurrent().getRootFileModel(); // This duplicate handling logic only applies to archives, so skip if it is not an archive if (!(rootFile instanceof ArchiveModel)) return true; ArchiveModel archive = (ArchiveModel) rootFile; if (!alreadySeenHashes.contains(archive.getSHA1Hash())) { alreadySeenHashes.add(archive.getSHA1Hash()); return true; } else { return false; } } });
@Override public boolean apply(ProjectModelTraversal input) { FileModel rootFile = input.getCurrent().getRootFileModel(); // This duplicate handling logic only applies to archives, so skip if it is not an archive if (!(rootFile instanceof ArchiveModel)) return true; ArchiveModel archive = (ArchiveModel) rootFile; if (!alreadySeenHashes.contains(archive.getSHA1Hash())) { alreadySeenHashes.add(archive.getSHA1Hash()); return true; } else { return false; } } });
@Override public void visit(ProjectModelTraversal traversal) { FileModel rootFile = traversal.getCurrent().getRootFileModel(); if (!(rootFile instanceof ArchiveModel)) return; ArchiveModel archive = (ArchiveModel) rootFile; String filePath = traversal.getFilePath(archive); addToMap(archive.getSHA1Hash(), filePath); } };
@Override public void visit(ProjectModelTraversal traversal) { FileModel rootFile = traversal.getCurrent().getRootFileModel(); if (!(rootFile instanceof ArchiveModel)) return; ArchiveModel archive = (ArchiveModel) rootFile; String filePath = traversal.getFilePath(archive); addToMap(archive.getSHA1Hash(), filePath); } };
private void setArchiveHashes(ArchiveModel payload) { if (payload.getMD5Hash() == null) { try (InputStream is = payload.asInputStream()) { String md5 = DigestUtils.md5Hex(is); payload.setMD5Hash(md5); } catch (IOException e) { throw new WindupException("Failed to read archive file at: " + payload.getFilePath() + " due to: " + e.getMessage(), e); } } if (payload.getSHA1Hash() == null) { try (InputStream is = payload.asInputStream()) { String sha1 = DigestUtils.sha1Hex(is); payload.setSHA1Hash(sha1); } catch (IOException e) { throw new WindupException("Failed to read archive file at: " + payload.getFilePath() + " due to: " + e.getMessage(), e); } } }
private void setArchiveHashes(ArchiveModel payload) { if (payload.getMD5Hash() == null) { try (InputStream is = payload.asInputStream()) { String md5 = DigestUtils.md5Hex(is); payload.setMD5Hash(md5); } catch (IOException e) { throw new WindupException("Failed to read archive file at: " + payload.getFilePath() + " due to: " + e.getMessage(), e); } } if (payload.getSHA1Hash() == null) { try (InputStream is = payload.asInputStream()) { String sha1 = DigestUtils.sha1Hex(is); payload.setSHA1Hash(sha1); } catch (IOException e) { throw new WindupException("Failed to read archive file at: " + payload.getFilePath() + " due to: " + e.getMessage(), e); } } }
private void setArchiveHashes(ArchiveModel payload) { if (payload.getMD5Hash() == null) { try (InputStream is = payload.asInputStream()) { String md5 = DigestUtils.md5Hex(is); payload.setMD5Hash(md5); } catch (IOException e) { throw new WindupException("Failed to read archive file at: " + payload.getFilePath() + " due to: " + e.getMessage(), e); } } if (payload.getSHA1Hash() == null) { try (InputStream is = payload.asInputStream()) { String sha1 = DigestUtils.sha1Hex(is); payload.setSHA1Hash(sha1); } catch (IOException e) { throw new WindupException("Failed to read archive file at: " + payload.getFilePath() + " due to: " + e.getMessage(), e); } } }
Coordinate coordinate = identifier.getCoordinate(archive.getSHA1Hash()); if (coordinate != null) LOG.info("Archive not identified: " + archive.getFilePath() + " SHA1: " + archive.getSHA1Hash());
Coordinate coordinate = identifier.getCoordinate(archive.getSHA1Hash()); if (coordinate != null) LOG.info("Archive not identified: " + archive.getFilePath() + " SHA1: " + archive.getSHA1Hash());
for (FileModel otherMatches : fileService.findAllByProperty(FileModel.SHA1_HASH, newArchiveModel.getSHA1Hash()))
for (FileModel otherMatches : fileService.findAllByProperty(FileModel.SHA1_HASH, newArchiveModel.getSHA1Hash()))
String sha1 = archiveModel.getSHA1Hash();
String sha1 = archiveModel.getSHA1Hash();
@Override public void vertexPropertyChanged(Vertex vertex, String key, Object oldValue, Object setValue) { if (ArchiveModel.ARCHIVE_NAME.equals(key)) { ArchiveService archiveService = new ArchiveService(event.getGraphContext()); ArchiveModel archive = archiveService.frame(vertex); setArchiveHashes(archive); Coordinate coordinate = IdentifiedArchives.getCoordinateFromSHA1(archive.getSHA1Hash()); if (coordinate != null) { log.info("Identified archive: [" + archive.getFilePath() + "] as [" + coordinate + "] will not be unzipped or analyzed."); IdentifiedArchiveModel identifiedArchive = GraphService .addTypeToModel(event.getGraphContext(), archive, IdentifiedArchiveModel.class); ArchiveCoordinateModel coordinateModel = new GraphService<>(event.getGraphContext(), ArchiveCoordinateModel.class).create(); coordinateModel.setArtifactId(coordinate.getArtifactId()); coordinateModel.setGroupId(coordinate.getGroupId()); coordinateModel.setVersion(coordinate.getVersion()); coordinateModel.setClassifier(coordinate.getClassifier()); identifiedArchive.setCoordinate(coordinateModel); IgnoredArchiveModel ignoredArchive = GraphService.addTypeToModel(event.getGraphContext(), archive, IgnoredArchiveModel.class); ignoredArchive.setIgnoredRegex("Known open-source library"); } else { log.info("Failed to identify archive: " + archive.getFilePath()); } } }
DuplicateArchiveModel duplicateArchive = duplicateArchiveService.create(); duplicateArchive.setCanonicalArchive(canonicalArchive); duplicateArchive.setSHA1Hash(canonicalArchive.getSHA1Hash()); duplicateArchive.setFilePath(canonicalArchive.getFilePath()); duplicateArchive.setArchiveName(canonicalArchive.getArchiveName());
DuplicateArchiveModel duplicateArchive = duplicateArchiveService.create(); duplicateArchive.setCanonicalArchive(canonicalArchive); duplicateArchive.setSHA1Hash(canonicalArchive.getSHA1Hash()); duplicateArchive.setFilePath(canonicalArchive.getFilePath()); duplicateArchive.setArchiveName(canonicalArchive.getArchiveName());