@Test public void addDirectoryInput_builtShouldReturnCorrectFile() throws Exception { File file = getTmpFile("tmp"); TransformInput input = builder.addDirectoryInput(file).build(); assertThat(input.getDirectoryInputs()).hasSize(1); assertThat(input.getDirectoryInputs().toArray(new DirectoryInput[1])[0].getFile()) .isEqualTo(file); }
input.getDirectoryInputs().parallelStream().forEach(directoryInput -> { File src = directoryInput.getFile(); File dst = invocation.getOutputProvider().getContentLocation(
for (DirectoryInput directoryInput : input.getDirectoryInputs()) {
/** * Determines all directories where class files can be found in the given * {@link TransformInput}. */ @NonNull protected static Collection<File> getAllDirectories(@NonNull TransformInput input) { return input.getDirectoryInputs().stream() .map(DirectoryInput::getFile) .collect(Collectors.toList()); }
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()); } }
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); }
private static Collection<File> getAllFiles( Collection<TransformInput> transformInputs, boolean includeDirectoryInput, boolean includeJarInput) { ImmutableList.Builder<File> inputFiles = ImmutableList.builder(); for (TransformInput input : transformInputs) { if (includeDirectoryInput) { for (DirectoryInput directoryInput : input.getDirectoryInputs()) { inputFiles.add(directoryInput.getFile()); } } if (includeJarInput) { for (JarInput jarInput : input.getJarInputs()) { inputFiles.add(jarInput.getFile()); } } } return inputFiles.build(); } }
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; } }
private void fullCopy(Collection<TransformInput> inputs) throws IOException { FileUtils.deleteQuietly(outFolder); FileUtils.forceMkdir(outFolder); for (TransformInput input : inputs) { for (DirectoryInput dirInput : input.getDirectoryInputs()) { File dataBindingDir = dirInput.getFile(); if (!dataBindingDir.exists()) { continue; } File artifactFolder = new File(dataBindingDir, DataBindingBuilder.INCREMENTAL_BIN_AAR_DIR); if (!artifactFolder.exists()) { continue; } //noinspection ConstantConditions for (String artifactName : artifactFolder.list()) { if (isResource(artifactName)) { FileUtils.copyFile(new File(artifactFolder, artifactName), new File(outFolder, artifactName)); } } } for(JarInput jarInput : input.getJarInputs()) { File jarFile = jarInput.getFile(); extractBinFilesFromJar(jarFile); } } }
@NonNull public Map<File, Format> getPipelineOutput( @NonNull StreamFilter streamFilter) { ImmutableList<TransformStream> streams = getStreams(streamFilter); if (streams.isEmpty()) { return ImmutableMap.of(); } ImmutableMap.Builder<File, Format> builder = ImmutableMap.builder(); for (TransformStream stream : streams) { // get the input for it TransformInput input = stream.asNonIncrementalInput(); for (JarInput jarInput : input.getJarInputs()) { builder.put(jarInput.getFile(), Format.JAR); } for (DirectoryInput directoryInput : input.getDirectoryInputs()) { builder.put(directoryInput.getFile(), Format.DIRECTORY); } } return builder.build(); } }
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; }
private void incrementalUpdate(@NonNull Collection<TransformInput> inputs) { inputs.forEach(input -> input.getDirectoryInputs().forEach(directoryInput -> { directoryInput.getChangedFiles().forEach((file, status) -> { if (isResource(file.getName())) {
boolean anyChangeOfInterest = transformInput.getDirectoryInputs().stream().anyMatch( directoryInput -> !directoryInput.getChangedFiles().isEmpty()); for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) { File[] files = directoryInput.getFile().listFiles(); if (files != null) {
private void addInputsToConfiguration( @NonNull Collection<TransformInput> inputs, boolean referencedOnly) { ClassPath classPath; List<String> baseFilter; if (referencedOnly) { classPath = configuration.libraryJars; baseFilter = JAR_FILTER; } else { classPath = configuration.programJars; baseFilter = null; } for (TransformInput transformInput : inputs) { for (JarInput jarInput : transformInput.getJarInputs()) { handleQualifiedContent(classPath, jarInput, baseFilter); } for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) { handleQualifiedContent(classPath, directoryInput, baseFilter); } } }
/** * Tries to determine the output class file, for rewriting the given class file. * * <p>This will return {@link Optional#absent()} if the class is not part of the program to * shrink (e.g. comes from a platform JAR). */ @NonNull protected Optional<File> chooseOutputFile( @NonNull T klass, @NonNull File classFile, @NonNull Iterable<TransformInput> inputs, @NonNull TransformOutputProvider output) { String classFilePath = classFile.getAbsolutePath(); for (TransformInput input : inputs) { Iterable<QualifiedContent> directoriesAndJars = Iterables.concat(input.getDirectoryInputs(), input.getJarInputs()); for (QualifiedContent directoryOrJar : directoriesAndJars) { File file = directoryOrJar.getFile(); if (classFilePath.startsWith(file.getAbsolutePath())) { File outputDir = output.getContentLocation( FileUtils.getDirectoryNameForJar(file), directoryOrJar.getContentTypes(), directoryOrJar.getScopes(), Format.DIRECTORY); return Optional.of(new File(outputDir, mGraph.getClassName(klass) + ".class")); } } } return Optional.absent(); }
Collection<DirectoryInput> directoryInputs = input.getDirectoryInputs(); for (DirectoryInput directoryInput : directoryInputs) { MyInjects.inject(directoryInput.getFile().getAbsolutePath(),mProject);
for (DirectoryInput directoryInput : input.getDirectoryInputs()) { File inputDir = directoryInput.getFile(); for (File file : Files.fileTreeTraverser()
@Override public void transform(@NonNull TransformInvocation invocation) throws IOException, TransformException, InterruptedException { checkNotNull(invocation.getOutputProvider(), "Missing output object for transform " + getName()); File outputDir = invocation.getOutputProvider().getContentLocation( "main", getOutputTypes(), getScopes(), Format.DIRECTORY); FileUtils.mkdirs(outputDir); TransformInput input = Iterables.getOnlyElement(invocation.getInputs()); // we don't want jar inputs. Preconditions.checkState(input.getJarInputs().isEmpty()); DirectoryInput directoryInput = Iterables.getOnlyElement(input.getDirectoryInputs()); File inputDir = directoryInput.getFile(); Instrumenter instrumenter = new Instrumenter(new OfflineInstrumentationAccessGenerator()); if (invocation.isIncremental()) { instrumentFilesIncremental(instrumenter, inputDir, outputDir, directoryInput.getChangedFiles()); } else { instrumentFilesFullRun(instrumenter, inputDir, outputDir); } }
@Override public void transform(@NonNull TransformInvocation invocation) throws IOException, TransformException, InterruptedException { FileUtils.cleanOutputDir(jniLibsFolder); for (TransformInput input : invocation.getReferencedInputs()) { for (JarInput jarInput : input.getJarInputs()) { copyFromJar(jarInput.getFile()); } for (DirectoryInput directoryInput : input.getDirectoryInputs()) { copyFromFolder(directoryInput.getFile()); } } }
for (DirectoryInput directoryInput : input.getDirectoryInputs()) { jarMerger.addFolder(directoryInput.getFile());