if (transformInvocation.isIncremental()) { for (Map.Entry<File, Status> changedInput : directoryInput.getChangedFiles().entrySet()) {
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 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())) { switch (status) {
for (Map.Entry<File, Status> changedFile : directoryInput.getChangedFiles() .entrySet()) {
if (incremental && d.getChangedFiles().isEmpty()) { return null; Map<File, Status> changed = d.getChangedFiles(); if (includeNotChanged) { for (File file : Files.fileTreeTraverser().preOrderTraversal(d.getFile())) { for (Map.Entry<File, Status> entry : d.getChangedFiles().entrySet()) { Status status = entry.getValue(); if (entry.getKey().getName().endsWith(".class")) {
changedFiles = directoryInput.getChangedFiles().entrySet(); } else { changedFiles = nonIncrementalFiles(inDir);
directoryInput -> !directoryInput.getChangedFiles().isEmpty());
if (invocation.isIncremental()) { for (Map.Entry<File, Status> fileEntry : directoryInput .getChangedFiles() .entrySet()) {
directoryInput.getChangedFiles().entrySet()) {
.getChangedFiles() .entrySet()) {
@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); } }
if (isIncremental) { for (Map.Entry<File, Status> fileStatus : directoryInput.getChangedFiles().entrySet()) { File input = fileStatus.getKey(); if (input.isDirectory()) {
deletedFiles.add(preDexedFile); } else if (!isIncremental || !directoryInput.getChangedFiles().isEmpty()) { Joiner.on(",").join(directoryInput.getChangedFiles().entrySet())); File preDexFile = getPreDexFile( outputProvider, needMerge, perStreamDexFolder, directoryInput);
if (invocation.isIncremental()) { for (Map.Entry<File, Status> entry : directoryInput.getChangedFiles().entrySet()) { if (entry.getValue() != Status.REMOVED) { File file = entry.getKey();
for (final Map.Entry<File, Status> changedFile : directoryInput.getChangedFiles().entrySet()) { mExecutor.execute(new Callable<Void>() { @Override
Format.DIRECTORY); if (invocation.isIncremental()) { for (Map.Entry<File, Status> entry : di.getChangedFiles().entrySet()) { File inputFile = entry.getKey(); switch (entry.getValue()) {