Java 类org.gradle.api.tasks.incremental.InputFileDetails 实例源码

项目:Reer    文件:ClassChangeProcessor.java   
public void processChange(final InputFileDetails input, final RecompilationSpec spec) {
    // Do not process
    if (input.isRemoved()) {
        return;
    }

    final ClassReader classReader;
    try {
        classReader = new Java9ClassReader(Files.toByteArray(input.getFile()));
    } catch (IOException e) {
        throw new IllegalArgumentException(String.format("Unable to read class file: '%s'", input.getFile()));
    }

    String className = classReader.getClassName().replaceAll("/", ".");
    DependentsSet actualDependents = previousCompilation.getDependents(className);
    if (actualDependents.isDependencyToAll()) {
        spec.setFullRebuildCause(actualDependents.getDescription(), input.getFile());
    } else {
        spec.getClassNames().addAll(actualDependents.getDependentClasses());
    }
}
项目:Pushjet-Android    文件:SelectiveCompilation.java   
public void execute(InputFileDetails inputFileDetails) {
    if (fullRebuildNeeded != null) {
        return;
    }
    File inputFile = inputFileDetails.getFile();
    String name = inputFile.getName();
    if (name.endsWith(".java")) {
        JavaSourceClass source = mapper.toJavaSourceClass(inputFile);
        compiler.addStaleClass(source);
        changedSourceOnly.include(source.getRelativePath());
        Set<String> actualDependents = dependencyInfo.getActualDependents(source.getClassName());
        if (actualDependents == null) {
            fullRebuildNeeded = "change to " + source.getClassName() + " requires full rebuild";
            return;
        }
        for (String d : actualDependents) {
            JavaSourceClass dSource = mapper.toJavaSourceClass(d);
            compiler.addStaleClass(dSource);
            changedSourceOnly.include(dSource.getRelativePath());
        }
    }
    if (name.endsWith(".jar")) {
        fullRebuildNeeded = "change to " + inputFile + " requires full rebuild";
        return;
    }
}
项目:Pushjet-Android    文件:JarChangeProcessor.java   
public RebuildInfo processJarChange(InputFileDetails jarChangeDetails, JarArchive jarArchive) {
    JarSnapshot existing = jarSnapshotFeeder.changedJar(jarChangeDetails.getFile());
    if (jarChangeDetails.isAdded()) {
        return DefaultRebuildInfo.NOTHING_TO_REBUILD;
    }

    if (jarChangeDetails.isRemoved()) {
        if (existing != null) {
            return new AllFromJarRebuildInfo(jarArchive);
        } else {
            return DefaultRebuildInfo.FULL_REBUILD;
        }
    }

    if (jarChangeDetails.isModified()) {
        if (existing != null) {
            JarSnapshot newSnapshot = jarSnapshotFeeder.createSnapshot(jarArchive);
            JarDelta jarDelta = existing.compareToSnapshot(newSnapshot);
            return new SpecificClassesRebuildInfo(jarDelta);
        } else {
            return new AllFromJarRebuildInfo(jarArchive);
        }
    }

    throw new IllegalArgumentException("Unknown input file details provided: " + jarChangeDetails);
}
项目:spotless    文件:Mocks.java   
private static InputFileDetails mockInputFileDetails(File file) {
    return new InputFileDetails() {
        @Override
        public boolean isAdded() {
            return false;
        }

        @Override
        public boolean isModified() {
            return false;
        }

        @Override
        public boolean isRemoved() {
            return false;
        }

        @Override
        public File getFile() {
            return file;
        }
    };
}
项目:Reer    文件:JarChangeProcessor.java   
public void processChange(InputFileDetails input, RecompilationSpec spec) {
    JarArchive jarArchive = new JarArchive(input.getFile(), fileOperations.zipTree(input.getFile()), fileOperations.getFileResolver().getPatternSetFactory());
    JarChangeDependentsFinder dependentsFinder = new JarChangeDependentsFinder(jarClasspathSnapshot, previousCompilation);
    DependentsSet actualDependents = dependentsFinder.getActualDependents(input, jarArchive);
    if (actualDependents.isDependencyToAll()) {
        spec.setFullRebuildCause(actualDependents.getDescription(), input.getFile());
        return;
    }
    spec.getClassNames().addAll(actualDependents.getDependentClasses());
}
项目:Reer    文件:RecompilationSpecProvider.java   
@Override
public void execute(InputFileDetails input) {
    if (spec.getFullRebuildCause() != null) {
        return;
    }
    if (hasExtension(input.getFile(), ".java")) {
        javaChangeProcessor.processChange(input, spec);
    } else if (hasExtension(input.getFile(), ".class")) {
        classChangeProcessor.processChange(input, spec);
    } else if (hasExtension(input.getFile(), ".jar")) {
        jarChangeProcessor.processChange(input, spec);
    }
}
项目:Reer    文件:JavaChangeProcessor.java   
public void processChange(InputFileDetails input, RecompilationSpec spec) {
    String className = sourceToNameConverter.getClassName(input.getFile());
    spec.getClassNames().add(className);
    DependentsSet actualDependents = previousCompilation.getDependents(className);
    if (actualDependents.isDependencyToAll()) {
        spec.setFullRebuildCause(actualDependents.getDescription(), input.getFile());
        return;
    }
    spec.getClassNames().addAll(actualDependents.getDependentClasses());
}
项目:Reer    文件:StatefulIncrementalTaskInputs.java   
public void outOfDate(final Action<? super InputFileDetails> outOfDateAction) {
    if (outOfDateProcessed) {
        throw new IllegalStateException("Cannot process outOfDate files multiple times");
    }
    doOutOfDate(outOfDateAction);
    outOfDateProcessed = true;
}
项目:Reer    文件:StatefulIncrementalTaskInputs.java   
public void removed(Action<? super InputFileDetails> removedAction) {
    if (!outOfDateProcessed) {
        throw new IllegalStateException("Must first process outOfDate files before processing removed files");
    }
    if (removedProcessed) {
        throw new IllegalStateException("Cannot process removed files multiple times");
    }
    doRemoved(removedAction);
    removedProcessed = true;
}
项目:Reer    文件:ChangesOnlyIncrementalTaskInputs.java   
@Override
protected void doOutOfDate(final Action<? super InputFileDetails> outOfDateAction) {
    for (TaskStateChange change : inputFilesState) {
        InputFileDetails fileChange = (InputFileDetails) change;
        if (fileChange.isRemoved()) {
            removedFiles.add(fileChange);
        } else {
            outOfDateAction.execute(fileChange);
        }
    }
}
项目:apollo-android    文件:ApolloClassGenTask.java   
@TaskAction
void generateClasses(IncrementalTaskInputs inputs) {
  inputs.outOfDate(new Action<InputFileDetails>() {
    @Override
    public void execute(InputFileDetails inputFileDetails) {
      GraphQLCompiler.Arguments args = new GraphQLCompiler.Arguments(inputFileDetails.getFile(), outputDir,
          apolloExtension.getCustomTypeMapping(), nullableValueType, apolloExtension.isUseSemanticNaming(),
          apolloExtension.isGenerateModelBuilder(), apolloExtension.isUseJavaBeansSemanticNaming(), apolloExtension
          .getOutputPackageName());
      new GraphQLCompiler().write(args);
    }
  });
}
项目:Pushjet-Android    文件:JarChangeProcessor.java   
public void processChange(InputFileDetails input, RecompilationSpec spec) {
    JarArchive jarArchive = new JarArchive(input.getFile(), fileOperations.zipTree(input.getFile()));
    JarChangeDependentsFinder dependentsFinder = new JarChangeDependentsFinder(jarClasspathSnapshot, previousCompilation);
    DependentsSet actualDependents = dependentsFinder.getActualDependents(input, jarArchive);
    if (actualDependents.isDependencyToAll()) {
        spec.setFullRebuildCause(actualDependents.getDescription(), input.getFile());
        return;
    }
    spec.getClassNames().addAll(actualDependents.getDependentClasses());
}
项目:Pushjet-Android    文件:RecompilationSpecProvider.java   
public void execute(InputFileDetails input) {
    if (spec.getFullRebuildCause() != null) {
        return;
    }
    if (input.getFile().getName().endsWith(".java")) {
        javaChangeProcessor.processChange(input, spec);
    }
    if (input.getFile().getName().endsWith(".jar")) {
        jarChangeProcessor.processChange(input, spec);
    }
}
项目:Pushjet-Android    文件:JavaChangeProcessor.java   
public void processChange(InputFileDetails input, RecompilationSpec spec) {
    String className = sourceToNameConverter.getClassName(input.getFile());
    spec.getClassNames().add(className);
    DependentsSet actualDependents = previousCompilation.getDependents(className);
    if (actualDependents.isDependencyToAll()) {
        spec.setFullRebuildCause(actualDependents.getDescription(), input.getFile());
        return;
    }
    spec.getClassNames().addAll(actualDependents.getDependentClasses());
}
项目:Pushjet-Android    文件:StatefulIncrementalTaskInputs.java   
public void outOfDate(final Action<? super InputFileDetails> outOfDateAction) {
    if (outOfDateProcessed) {
        throw new IllegalStateException("Cannot process outOfDate files multiple times");
    }
    doOutOfDate(outOfDateAction);
    outOfDateProcessed = true;
}
项目:Pushjet-Android    文件:StatefulIncrementalTaskInputs.java   
public void removed(Action<? super InputFileDetails> removedAction) {
    if (!outOfDateProcessed) {
        throw new IllegalStateException("Must first process outOfDate files before processing removed files");
    }
    if (removedProcessed) {
        throw new IllegalStateException("Cannot process removed files multiple times");
    }
    doRemoved(removedAction);
    removedProcessed = true;
}
项目:Pushjet-Android    文件:ChangesOnlyIncrementalTaskInputs.java   
@Override
protected void doOutOfDate(final Action<? super InputFileDetails> outOfDateAction) {
    for (TaskStateChange change : inputFilesState) {
        InputFileDetails fileChange = (InputFileDetails) change;
        if (fileChange.isRemoved()) {
            removedFiles.add(fileChange);
        } else {
            outOfDateAction.execute(fileChange);
        }
    }
}
项目:Pushjet-Android    文件:StatefulIncrementalTaskInputs.java   
public void outOfDate(final Action<? super InputFileDetails> outOfDateAction) {
    if (outOfDateProcessed) {
        throw new IllegalStateException("Cannot process outOfDate files multiple times");
    }
    doOutOfDate(outOfDateAction);
    outOfDateProcessed = true;
}
项目:Pushjet-Android    文件:StatefulIncrementalTaskInputs.java   
public void removed(Action<? super InputFileDetails> removedAction) {
    if (!outOfDateProcessed) {
        throw new IllegalStateException("Must first process outOfDate files before processing removed files");
    }
    if (removedProcessed) {
        throw new IllegalStateException("Cannot process removed files multiple times");
    }
    doRemoved(removedAction);
    removedProcessed = true;
}
项目:Pushjet-Android    文件:ChangesOnlyIncrementalTaskInputs.java   
@Override
protected void doOutOfDate(final Action<? super InputFileDetails> outOfDateAction) {
    for (TaskStateChange change : inputFilesState) {
        InputFileDetails fileChange = (InputFileDetails) change;
        if (fileChange.isRemoved()) {
            removedFiles.add(fileChange);
        } else {
            outOfDateAction.execute(fileChange);
        }
    }
}
项目:CodeColors    文件:ResourcesResGeneratingTask.java   
@Override
public void generate(IncrementalTaskInputs inputs) {
    mResFilesChanged = !inputs.isIncremental();

    if (!mResFilesChanged) {
        Action<InputFileDetails> detectChangesAction = new Action<InputFileDetails>() {
            @Override
            public void execute(InputFileDetails inputFileDetails) {
                if (!mResFilesChanged) {
                    mResFilesChanged = mResFileIdentifier.isResFile(inputFileDetails.getFile(), true);
                }
            }
        };

        inputs.outOfDate(detectChangesAction);
        if (!mResFilesChanged) {
            inputs.removed(detectChangesAction);
        }
    }

    if (mResFilesChanged) {
        // If we detect any changes, will rebuild all CodeColor resources.
        // Incremental build is too complex for its eventual gain.
        // For every build, we would have to parse the existing resources, and update or remove their
        // individual files and default values, for every configuration.
        generateResources();
    }
}
项目:Reer    文件:JarChangeDependentsFinder.java   
public DependentsSet getActualDependents(InputFileDetails jarChangeDetails, JarArchive jarArchive) {
    if (jarChangeDetails.isAdded()) {
        if (jarClasspathSnapshot.isAnyClassDuplicated(jarArchive)) {
            //at least one of the classes from the new jar is already present in jar classpath
            //to avoid calculation which class gets on the classpath first, rebuild all
            return new DependencyToAll("at least one of the classes of '" + jarArchive.file.getName() + "' is already present in classpath");
        } else {
            //none of the new classes in the jar are duplicated on classpath, don't rebuild
            return new DefaultDependentsSet();
        }
    }
    JarSnapshot previous = previousCompilation.getJarSnapshot(jarChangeDetails.getFile());

    if (previous == null) {
        //we don't know what classes were dependents of the jar in the previous build
        //for example, a class (in jar) with a constant might have changed into a class without a constant - we need to rebuild everything
        return new DependencyToAll("missing jar snapshot of '" + jarArchive.file.getName()  + "' from previous build");
    }

    if (jarChangeDetails.isRemoved()) {
        DependentsSet allClasses = previous.getAllClasses();
        if (allClasses.isDependencyToAll()) {
            return new DependencyToAll("at least one of the classes of removed jar '" + jarArchive.file.getName() + "' requires it");
        }
        //recompile all dependents of all the classes from jar
        return previousCompilation.getDependents(allClasses.getDependentClasses());
    }

    if (jarChangeDetails.isModified()) {
        JarSnapshot currentSnapshot = jarClasspathSnapshot.getSnapshot(jarArchive);
        AffectedClasses affected = currentSnapshot.getAffectedClassesSince(previous);
        if (affected.getAltered().isDependencyToAll()) {
            //at least one of the classes changed in the jar is a 'dependency-to-all'
            return affected.getAltered();
        }

        if (jarClasspathSnapshot.isAnyClassDuplicated(affected.getAdded())) {
            //A new duplicate class on classpath. As we don't fancy-handle classpath order right now, we don't know which class is on classpath first.
            //For safe measure rebuild everything
            return new DependencyToAll("at least one of the classes of modified jar '" + jarArchive.file.getName() + "' is already present in the classpath");
        }

        //recompile all dependents of the classes changed in the jar
        return previousCompilation.getDependents(affected.getAltered().getDependentClasses());
    }

    throw new IllegalArgumentException("Unknown input file details provided: " + jarChangeDetails);
}
项目:Reer    文件:RebuildIncrementalTaskInputs.java   
public void doOutOfDate(Action<? super InputFileDetails> outOfDateAction) {
    for (File file : task.getInputs().getFiles()) {
        outOfDateAction.execute(new RebuildInputFile(file));
    }
}
项目:Reer    文件:RebuildIncrementalTaskInputs.java   
public void doRemoved(Action<? super InputFileDetails> removedAction) {
}
项目:Reer    文件:ChangesOnlyIncrementalTaskInputs.java   
@Override
protected void doRemoved(Action<? super InputFileDetails> removedAction) {
    for (InputFileDetails removedFile : removedFiles) {
        removedAction.execute(removedFile);
    }
}
项目:Pushjet-Android    文件:JarChangeDependentsFinder.java   
public DependentsSet getActualDependents(InputFileDetails jarChangeDetails, JarArchive jarArchive) {
    if (jarChangeDetails.isAdded()) {
        if (jarClasspathSnapshot.isAnyClassDuplicated(jarArchive)) {
            //at least one of the classes from the new jar is already present in jar classpath
            //to avoid calculation which class gets on the classpath first, rebuild all
            return new DependencyToAll("at least one of the classes of '" + jarArchive.file.getName() + "' is already present in classpath");
        } else {
            //none of the new classes in the jar are duplicated on classpath, don't rebuild
            return new DefaultDependentsSet();
        }
    }
    JarSnapshot previous = previousCompilation.getJarSnapshot(jarChangeDetails.getFile());

    if (previous == null) {
        //we don't know what classes were dependents of the jar in the previous build
        //for example, a class (in jar) with a constant might have changed into a class without a constant - we need to rebuild everything
        return new DependencyToAll("missing jar snapshot of '" + jarArchive.file.getName()  + "' from previous build");
    }

    if (jarChangeDetails.isRemoved()) {
        DependentsSet allClasses = previous.getAllClasses();
        if (allClasses.isDependencyToAll()) {
            return new DependencyToAll("at least one of the classes of removed jar '" + jarArchive.file.getName() + "' requires it");
        }
        //recompile all dependents of all the classes from jar
        return previousCompilation.getDependents(allClasses.getDependentClasses());
    }

    if (jarChangeDetails.isModified()) {
        JarSnapshot currentSnapshot = jarClasspathSnapshot.getSnapshot(jarArchive);
        AffectedClasses affected = currentSnapshot.getAffectedClassesSince(previous);
        if (affected.getAltered().isDependencyToAll()) {
            //at least one of the classes changed in the jar is a 'dependency-to-all'
            return affected.getAltered();
        }

        if (jarClasspathSnapshot.isAnyClassDuplicated(affected.getAdded())) {
            //A new duplicate class on classpath. As we don't fancy-handle classpath order right now, we don't know which class is on classpath first.
            //For safe measure rebuild everything
            return new DependencyToAll("at least one of the classes of modified jar '" + jarArchive.file.getName() + "' is already present in the classpath");
        }

        //recompile all dependents of the classes changed in the jar
        return previousCompilation.getDependents(affected.getAltered().getDependentClasses());
    }

    throw new IllegalArgumentException("Unknown input file details provided: " + jarChangeDetails);
}
项目:Pushjet-Android    文件:RebuildIncrementalTaskInputs.java   
public void doOutOfDate(Action<? super InputFileDetails> outOfDateAction) {
    for (File file : task.getInputs().getFiles()) {
        outOfDateAction.execute(new RebuildInputFile(file));
    }
}
项目:Pushjet-Android    文件:RebuildIncrementalTaskInputs.java   
public void doRemoved(Action<? super InputFileDetails> removedAction) {
}
项目:Pushjet-Android    文件:ChangesOnlyIncrementalTaskInputs.java   
@Override
protected void doRemoved(Action<? super InputFileDetails> removedAction) {
    for (InputFileDetails removedFile : removedFiles) {
        removedAction.execute(removedFile);
    }
}
项目:Pushjet-Android    文件:RebuildIncrementalTaskInputs.java   
public void doOutOfDate(Action<? super InputFileDetails> outOfDateAction) {
    for (File file : task.getInputs().getFiles()) {
        outOfDateAction.execute(new RebuildInputFile(file));
    }
}
项目:Pushjet-Android    文件:RebuildIncrementalTaskInputs.java   
public void doRemoved(Action<? super InputFileDetails> removedAction) {
}
项目:Pushjet-Android    文件:ChangesOnlyIncrementalTaskInputs.java   
@Override
protected void doRemoved(Action<? super InputFileDetails> removedAction) {
    for (InputFileDetails removedFile : removedFiles) {
        removedAction.execute(removedFile);
    }
}
项目:CodeColors    文件:IgnoreResFilesTaskActionWrapper.java   
@Override
public void outOfDate(Action<? super InputFileDetails> action) {
    mIncrementalTaskInputs.outOfDate(new IgnoreResFilesActionWrapper(action, mResFiles));
}
项目:CodeColors    文件:IgnoreResFilesTaskActionWrapper.java   
@Override
public void removed(Action<? super InputFileDetails> action) {
    mIncrementalTaskInputs.removed(new IgnoreResFilesActionWrapper(action, mResFiles));
}
项目:CodeColors    文件:IgnoreResFilesTaskActionWrapper.java   
public IgnoreResFilesActionWrapper(Action<? super InputFileDetails> action, Set<File> resFiles) {
    mAction = action;
    mResFiles = resFiles;
}
项目:CodeColors    文件:IgnoreResFilesTaskActionWrapper.java   
@Override
public void execute(InputFileDetails inputFileDetails) {
    if (!mResFiles.contains(inputFileDetails.getFile())) {
        mAction.execute(new IgnoreResFilesInputFileDetailsWrapper(inputFileDetails, mResFiles));
    }
}
项目:CodeColors    文件:IgnoreResFilesTaskActionWrapper.java   
public IgnoreResFilesInputFileDetailsWrapper(InputFileDetails inputFileDetails, Set<File> resFiles) {
    mInputFileDetails = inputFileDetails;
    mFile = new IgnoreResFileFile(inputFileDetails.getFile().getPath(), resFiles);
}
项目:Reer    文件:StatefulIncrementalTaskInputs.java   
protected abstract void doOutOfDate(Action<? super InputFileDetails> outOfDateAction);
项目:Reer    文件:StatefulIncrementalTaskInputs.java   
protected abstract void doRemoved(Action<? super InputFileDetails> removedAction);
项目:Pushjet-Android    文件:StatefulIncrementalTaskInputs.java   
protected abstract void doOutOfDate(Action<? super InputFileDetails> outOfDateAction);