File src = jarInput.getFile(); File dst = invocation.getOutputProvider().getContentLocation( jarInput.getName(), jarInput.getContentTypes(), jarInput.getScopes(), Format.JAR); try {
@Test public void addJarInput_whenAddPaths_builtShouldReturnCorrectPaths() throws Exception { File file1 = getTmpFile("tmp1"); File file2 = getTmpFile("tmp2"); TransformInput input = builder.addJarInput(file1.getAbsolutePath(), file2.getAbsolutePath()).build(); assertThat(input.getJarInputs()).hasSize(2); JarInput[] jarInputs = input.getJarInputs().toArray(new JarInput[2]); assertThat(jarInputs[0].getFile().getAbsolutePath()).isEqualTo(file1.getAbsolutePath()); assertThat(jarInputs[1].getFile().getAbsolutePath()).isEqualTo(file2.getAbsolutePath()); }
switch (jarInput.getStatus()) { case NOTCHANGED: if (isIncremental) { File preDexFile = getPreDexFile( outputProvider, needMerge, perStreamDexFolder, jarInput); inputFiles.put(jarInput.getFile(), preDexFile); if (jarInput.getScopes() .equals(Collections.singleton(Scope.EXTERNAL_LIBRARIES))) { externalLibJarFiles.add(jarInput.getFile());
})); inputs.forEach(input -> input.getJarInputs().forEach(jarInput -> { switch (jarInput.getStatus()) { case ADDED: case CHANGED: try { extractBinFilesFromJar(jarInput.getFile()); } catch (IOException e) { logger.error(e, "Cannot extract data binding from input jar "); File jarOutFolder = getOutFolderForJarFile(jarInput.getFile()); FileUtils.deleteQuietly(jarOutFolder); break;
private ClassWalker.Visitor.Factory asFactory(AnnotationCollector collector) { return (incremental, content) -> { if (incremental && content instanceof JarInput) { JarInput j = (JarInput) content; if (j.getStatus() == Status.REMOVED) { graph.onJarRemoved(j.getName()); return null; } else if (j.getStatus() == Status.CHANGED) { graph.onJarRemoved(j.getName()); } } return new NamedVisitor(content.getName(), collector); }; }
private boolean isJarIncluded(JarInput jarInput) { for (String includedJar : includedJars) { if (jarInput.getName().startsWith(includedJar)) { return true; } } return false; }
private static boolean hasChangedInputs(Collection<TransformInput> inputs) { for (TransformInput input : inputs) { for (DirectoryInput directoryInput : input.getDirectoryInputs()) { if (!directoryInput.getChangedFiles().isEmpty()) { return true; } } for (JarInput jarInput : input.getJarInputs()) { if (jarInput.getStatus() != Status.NOTCHANGED) { return true; } } } return false; } }
@Test public void addJarInput_whenAddFile_builtShouldReturnFile() throws Exception { File file = getTmpFile("tmp"); TransformInput input = builder.addJarInput(file).build(); assertThat(input.getJarInputs()).hasSize(1); assertThat(input.getJarInputs().toArray(new JarInput[1])[0].getFile()).isEqualTo(file); }
private static boolean isIncrementalRun( boolean isIncremental, @NonNull Collection<TransformInput> referencedInputs) { if (!isIncremental) { return false; } for (TransformInput referencedInput : referencedInputs) { for (JarInput jarInput : referencedInput.getJarInputs()) { if (jarInput.getStatus() != Status.NOTCHANGED) { return false; } } for (DirectoryInput directoryInput : referencedInput.getDirectoryInputs()) { if (!directoryInput.getChangedFiles().isEmpty()) { return false; } } } return true; }
String name = jarInput.getName(); String md5Name = DigestUtils.md5Hex(jarInput.getFile().getAbsolutePath()); if (name.endsWith(".jar")){ name = name.substring(0,name.length()-4); File dest = outputProvider.getContentLocation(name + md5Name,jarInput.getContentTypes(),jarInput.getScopes(),Format.JAR); FileUtils.copyFile(jarInput.getFile(),dest);
private static void addAllClassLocations(TransformInput transformInput, List<URL> into) throws MalformedURLException { for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) { into.add(directoryInput.getFile().toURI().toURL()); } for (JarInput jarInput : transformInput.getJarInputs()) { into.add(jarInput.getFile().toURI().toURL()); } }
File backupJar = new File(outputDir, jarInput.getName()); switch(jarInput.getStatus()) { case REMOVED: if (backupJar.exists() && !backupJar.delete()) { if (backupJar.isDirectory()) { LOGGER.warning("Unexpected backup folder at %s while processing %s", backupJar.getAbsolutePath(), jarInput.getFile()); try { FileUtils.deleteDirectoryContents(backupJar); } else { try (JarFile backupJarFile = new JarFile(backupJar)) { try (JarFile jarFile = new JarFile(jarInput.getFile())) { resultSoFar = processChangedJar(backupJarFile, jarFile); if (!jarInput.getFile().exists() || jarInput.getFile().isDirectory()) { LOGGER.warning(String.format( "Please file a bug : VerifierTransform expected a file" + " at:\n %s \nbut the file does not exist or is a directory", jarInput.getFile())); resultSoFar = InstantRunVerifierStatus.INSTANT_RUN_FAILURE; copyFile(jarInput.getFile(), backupJar); break; case NOTCHANGED: default: throw new IllegalArgumentException("Unhandled JarInput status "
if (jar.getStatus() == Status.NOTCHANGED) { if (incremental && !includeNotChanged) { return null; } else if (jar.getStatus() == Status.REMOVED) { if (write) { Util.deleteIFExists(invocation.getOutputProvider().getContentLocation( jar.getName(), jar.getContentTypes(), jar.getScopes(), Format.JAR)); Status status = incremental ? jar.getStatus() : Status.NOTCHANGED; ZipFile file = new ZipFile(jar.getFile()); jar.getName(), jar.getContentTypes(), jar.getScopes(), Format.JAR); zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(output))); futures = new ArrayList<>();
private void gatherListFromJar( @NonNull JarInput jarInput, @NonNull ListMultimap<String, QualifiedContent> content) throws IOException { try (ZipFile zipFile = new ZipFile(jarInput.getFile())) { Enumeration<? extends ZipEntry> entries = zipFile.entries(); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); String path = entry.getName(); if (skipEntry(entry, path)) { continue; } content.put(path, jarInput); } } }
String jarName = jarInput.getName(); String md5Name = DigestUtils.md5Hex(jarInput.getFile().getAbsolutePath()); if (jarName.endsWith(".jar")) { jarName = jarName.substring(0, jarName.length() - 4); System.out.println("find jar -> " + jarInput.getFile().getAbsolutePath()); File dest = outputProvider.getContentLocation(jarName + md5Name, jarInput.getContentTypes(), jarInput.getScopes(), Format.JAR); FileUtils.copyFile(jarInput.getFile(), dest);
private static File verifyInputs(@NonNull Collection<TransformInput> inputs) { // Collect the inputs. There should be only one. List<File> inputFiles = Lists.newArrayList(); for (TransformInput transformInput : inputs) { for (JarInput jarInput : transformInput.getJarInputs()) { inputFiles.add(jarInput.getFile()); } for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) { inputFiles.add(directoryInput.getFile()); } } return Iterables.getOnlyElement(inputFiles); }
jarInput.getName(), jarInput.getContentTypes(), jarInput.getScopes(), Format.JAR ); FileUtils.copyFile(jarInput.getFile(), output); classpathFiles.add(directoryInput.getFile()); for (JarInput jarInput : input.getJarInputs()) classpathFiles.add(jarInput.getFile()); files.add(jarInput.getFile()); } else { classpathFiles.add(jarInput.getFile()); File output = outputProvider.getContentLocation( jarInput.getName(), jarInput.getContentTypes(), jarInput.getScopes(), Format.JAR ); FileUtils.copyFile(jarInput.getFile(), output);
@Override public void proceed() { Stream.concat( streamOf(inputs, TransformInput::getDirectoryInputs).map(input -> { Path src = input.getFile().toPath(); Path dst = getTargetPath.apply(input); return new DirProcessor(transform, src, dst); }), streamOf(inputs, TransformInput::getJarInputs).map(input -> { Path src = input.getFile().toPath(); Path dst = getTargetPath.apply(input); return new JarProcessor(transform, src, dst); }) ).forEach(Processor::proceed); }