public FileMetadata process(File targetFile) { FileMetadata tempMeta = new FileMetadata(); tempMeta.setFilePointer(targetFile); tempMeta.setArchiveMeta(dirMeta); for(FileMetadata archiveEntryMeta : tempMeta.getArchiveMeta().getEntries()) { if(archiveEntryMeta.getFilePointer().equals(tempMeta.getFilePointer())) { result = archiveEntryMeta; break;
public boolean isOfInterest(T fileMeta) { // if we found a blacklist, it is of interest. return fileMeta.getDecorations().size() > 0; }
@Override public JspMetadata fileEntryToMeta(FileMetadata entry) { File file = entry.getFilePointer(); LOG.debug("Processing: " + file.getAbsolutePath()); JspMetadata meta = new JspMetadata(); meta.setArchiveMeta(entry.getArchiveMeta()); meta.setFilePointer(file); return meta; }
@Override public void processMeta(FileMetadata meta) { try { FileInputStream fis = new FileInputStream(meta.getFilePointer()); String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis); Hash result = new Hash(); result.setHashType(HashType.MD5); result.setHash(md5); meta.getDecorations().add(result); if (LOG.isDebugEnabled()) { LOG.debug("File: " + meta.getFilePointer().getAbsolutePath() + " : MD5: " + md5); } chainDecorators(meta); } catch (Exception e) { LOG.error("Exception generating MD5.", e); } } }
@Override public XmlMetadata archiveEntryToMeta(ZipEntryMetadata archiveEntry) { File file = archiveEntry.getFilePointer(); LOG.debug("Processing XML: " + file.getAbsolutePath()); FileMetadata meta = null; if (file.length() > 1048576L * 1) { LOG.warn("XML larger than 1 MB: " + file.getAbsolutePath() + "; Skipping processing."); meta = new FileMetadata(); meta.setArchiveMeta(archiveEntry.getArchiveMeta()); meta.setFilePointer(file); Summary sr = new Summary(); sr.setDescription("File is too large; skipped."); sr.setLevel(NotificationLevel.WARNING); meta.getDecorations().add(sr); } else { XmlMetadata xmlMeta = new XmlMetadata(); xmlMeta.setArchiveMeta(archiveEntry.getArchiveMeta()); xmlMeta.setFilePointer(file); meta = xmlMeta; return xmlMeta; } return null; }
@Override protected boolean continueProcessing(FileMetadata meta) { String fileNameText = null; if (fullPath) { fileNameText = meta.getFilePointer().getAbsolutePath(); fileNameText = StringUtils.replace(fileNameText, "\\", "/"); } else { fileNameText = meta.getFilePointer().getName(); } return regexPattern.matcher(fileNameText).find(); }
protected String buildTitle(T meta, File rootDirectory) { String title = StringUtils.removeStart(meta.getFilePointer().getAbsolutePath(), rootDirectory.getAbsolutePath()); title = StringUtils.replace(title, "\\", "/"); title = StringUtils.removeStart(title, "/"); if(meta instanceof FileMetadata) { String starter = ((FileMetadata)meta).getArchiveMeta().getRelativePath(); if(LOG.isDebugEnabled()) { LOG.debug("Removing: " + starter + " from "+title); } title = StringUtils.removeStart(title, starter); } title = StringUtils.removeStart(title, "/"); return title; }
@Override public void processMeta(T fileMeta) { File file = fileMeta.getFilePointer(); if (LOG.isTraceEnabled()) { LOG.trace("Processing Extension: " + file.getAbsolutePath()); } decoratorPipeline.processMeta(fileMeta); if (isOfInterest(fileMeta)) { // add it to it's parent's results. fileMeta.getArchiveMeta().getEntries().add(fileMeta); } }
@Override public void processMeta(FileMetadata meta) { try { FileInputStream fis = new FileInputStream(meta.getFilePointer()); String sha1 = org.apache.commons.codec.digest.DigestUtils.sha1Hex(fis); Hash result = new Hash(); result.setHashType(HashType.SHA1); result.setHash(sha1); meta.getDecorations().add(result); if (LOG.isDebugEnabled()) { LOG.debug("File: " + meta.getFilePointer().getAbsolutePath() + " : SHA1: " + sha1); } chainDecorators(meta); } catch (Exception e) { LOG.error("Exception generating MD5.", e); } }
@Override public void processFile(FileMetadata entry) { String path = StringUtils.replace(entry.getFilePointer().getAbsolutePath(), "\\", "/"); if(matchesExtension(path)) { T meta = fileEntryToMeta(entry); if (meta != null) { processMeta(meta); return; } } }
@Override public XmlMetadata fileEntryToMeta(FileMetadata entry) { File file = entry.getFilePointer(); meta = new FileMetadata(); meta.setFilePointer(file); meta.setArchiveMeta(entry.getArchiveMeta()); meta.getDecorations().add(sr); xmlMeta.setArchiveMeta(entry.getArchiveMeta()); xmlMeta.setFilePointer(file); meta = xmlMeta;
@Override public ManifestMetadata fileEntryToMeta(FileMetadata entry) { File file = entry.getFilePointer(); LOG.debug("Processing Manifest: " + file.getAbsolutePath().toString()); if (file.length() > 1048576L * 1) { LOG.warn("Manifest larger than 1 MB: " + file.getAbsolutePath() + "; Skipping processing."); return null; } ManifestMetadata meta = new ManifestMetadata(); //meta.setArchiveMeta(archiveEntry.getArchiveMeta()); meta.setFilePointer(file); meta.setArchiveMeta(entry.getArchiveMeta()); Classification classification = new Classification(); StoryPointEffort he = new StoryPointEffort(); he.setHours(0); classification.setEffort(he); classification.setDescription("ArchiveMetadata Manifest"); meta.getDecorations().add(classification); return meta; } }
@Override public void processMeta(FileMetadata file) { for (AbstractDecoration dr : file.getDecorations()) { for (ResultProcessor hp : hintProcessors) { hp.process(dr); } } } }
@Override public void processMeta(FileMetadata meta) { try { String contents = FileUtils.readFileToString(meta.getFilePointer()); Matcher matcher = regexPattern.matcher(contents); while (matcher.find()) { String matched = matcher.group(1); Line lr = new Line(); lr.setDescription("Blacklist Namespace: " + matched); lr.setLineNumber(NewLineUtil.countNewLine(contents, matcher.start())); lr.setPattern(matched); meta.getDecorations().add(lr); } } catch (IOException e) { LOG.error("Exception reading content for: " + meta.getFilePointer().getAbsolutePath(), e); } } }
@Override public void process(ArchiveMetadata archive, File reportDirectory) { //for each resource, create and persist a serialized data object. for(ArchiveMetadata archiveMeta : archive.getNestedArchives()) { //recurse. this.process(archiveMeta, reportDirectory); } for(FileMetadata fileMeta : archive.getEntries()) { //convert file resource to meta object and persist. MetaResultTransformer transformer = resolver.resolveTransformer(fileMeta.getClass()); ResourceData data = transformer.toResourceData(fileMeta, reportDirectory); File metaOut = new File(fileMeta.getFilePointer().getAbsolutePath() + ".windup.meta"); try { marshaller.marshal(metaOut, data); } catch (IOException e) { LOG.error("Exception writing meta: "+metaOut.getAbsolutePath(), e); } } } }
@Override public JavaMetadata fileEntryToMeta(FileMetadata entry) { JavaMetadata javaMeta = new JavaMetadata(); javaMeta.setArchiveMeta(entry.getArchiveMeta()); fis = new FileInputStream(entry.getFilePointer()); javaMeta.setFilePointer(entry.getFilePointer()); LOG.error("Exception processing file: "+entry.getFilePointer().getAbsolutePath(), e);
protected List<AbstractDecoration> matchResults(FileMetadata meta) { List<AbstractDecoration> results = new LinkedList<AbstractDecoration>(); for (AbstractDecoration rst : meta.getDecorations()) { if (regexPattern.matcher(rst.getPattern()).find()) { results.add(rst); } } return results; }
@Override public JavaMetadata fileEntryToMeta(FileMetadata entry) { JavaMetadata meta = new JavaMetadata(); meta.setFilePointer(entry.getFilePointer()); meta.setArchiveMeta(entry.getArchiveMeta()); populateMeta(meta); if (!customerPackageResolver.isCustomerPkg(meta.getQualifiedClassName())) { LOG.trace("Not customer package."); return null; } if (blacklistPackageResolver.containsGenerated(meta.getClassDependencies())) { LOG.trace("Class is generated. Skip profiling."); return null; } // third does the class contain any blacklists? if (!blacklistPackageResolver.containsBlacklist(meta.getClassDependencies())) { LOG.trace("Class does not contain blacklists."); return null; } return meta; }
@Override public void processMeta(FileMetadata file) { List<AbstractDecoration> retractList = new LinkedList<AbstractDecoration>(); for (AbstractDecoration dr : file.getDecorations()) { for (MatchingProcessor hp : whitelistProcessors) { if (hp.process(dr)) { // retract from the decorations. retractList.add(dr); } } } if (LOG.isDebugEnabled()) { LOG.debug("Retracting: " + retractList.size() + " decorations."); } // method used to avoid concurrent modification exception. for (AbstractDecoration dr : retractList) { boolean retracted = file.getDecorations().remove(dr); if (LOG.isDebugEnabled()) { LOG.debug("Retracting: " + dr.toString() + " :: " + retracted); } } } }
@Override protected List<AbstractDecoration> matchResults(FileMetadata meta) { List<AbstractDecoration> results = new LinkedList<AbstractDecoration>(); for (AbstractDecoration dr : meta.getDecorations()) { if (dr instanceof JavaLine) { JavaLine result = (JavaLine) dr; if (sourceType != null) { if (result.getSourceType() != sourceType) { // not of interest. continue; } } if (regexPattern.matcher(dr.getPattern()).find()) { results.add(dr); } } } return results; } }