use of org.gradle.api.internal.changedetection.state.FileCollectionSnapshot in project gradle by gradle.
the class AbstractNamedFileSnapshotTaskStateChanges method buildSnapshots.
protected static ImmutableSortedMap<String, FileCollectionSnapshot> buildSnapshots(String taskName, FileCollectionSnapshotterRegistry snapshotterRegistry, String title, SortedSet<? extends TaskFilePropertySpec> fileProperties) {
ImmutableSortedMap.Builder<String, FileCollectionSnapshot> builder = ImmutableSortedMap.naturalOrder();
for (TaskFilePropertySpec propertySpec : fileProperties) {
FileCollectionSnapshot result;
try {
FileCollectionSnapshotter snapshotter = snapshotterRegistry.getSnapshotter(propertySpec.getSnapshotter());
result = snapshotter.snapshot(propertySpec.getPropertyFiles(), propertySpec.getCompareStrategy(), propertySpec.getSnapshotNormalizationStrategy());
} catch (UncheckedIOException e) {
throw new UncheckedIOException(String.format("Failed to capture snapshot of %s files for task '%s' property '%s' during up-to-date check.", title.toLowerCase(), taskName, propertySpec.getPropertyName()), e);
}
builder.put(propertySpec.getPropertyName(), result);
}
return builder.build();
}
use of org.gradle.api.internal.changedetection.state.FileCollectionSnapshot in project gradle by gradle.
the class DefaultClasspathHasher method hash.
@Override
public HashCode hash(ClassPath classpath) {
FileCollectionSnapshot snapshot = snapshotter.snapshot(new SimpleFileCollection(classpath.getAsFiles()), TaskFilePropertyCompareStrategy.ORDERED, ClasspathSnapshotNormalizationStrategy.INSTANCE);
BuildCacheHasher hasher = new DefaultBuildCacheHasher();
snapshot.appendToHasher(hasher);
return hasher.hash();
}
use of org.gradle.api.internal.changedetection.state.FileCollectionSnapshot in project gradle by gradle.
the class DiscoveredInputsTaskStateChanges method snapshotAfterTask.
@Override
public void snapshotAfterTask() {
FileCollectionSnapshot discoveredFilesSnapshot = createSnapshot(snapshotter, fileCollectionFactory.fixed("Discovered input files", discoveredFiles));
current.setDiscoveredInputFilesSnapshot(discoveredFilesSnapshot);
}
use of org.gradle.api.internal.changedetection.state.FileCollectionSnapshot in project gradle by gradle.
the class OutputFilesTaskStateChanges method saveCurrent.
@Override
public void saveCurrent() {
final ImmutableSortedMap<String, FileCollectionSnapshot> outputFilesAfter = buildSnapshots(getTaskName(), getSnapshotterRegistry(), getTitle(), getFileProperties());
ImmutableSortedMap<String, FileCollectionSnapshot> results = ImmutableSortedMap.copyOfSorted(Maps.transformEntries(getCurrent(), new Maps.EntryTransformer<String, FileCollectionSnapshot, FileCollectionSnapshot>() {
@Override
public FileCollectionSnapshot transformEntry(String propertyName, FileCollectionSnapshot beforeExecution) {
FileCollectionSnapshot afterExecution = outputFilesAfter.get(propertyName);
FileCollectionSnapshot afterPreviousExecution = getSnapshotAfterPreviousExecution(propertyName);
return outputSnapshotter.createOutputSnapshot(afterPreviousExecution, beforeExecution, afterExecution);
}
}));
current.setOutputFilesSnapshot(results);
}
use of org.gradle.api.internal.changedetection.state.FileCollectionSnapshot in project gradle by gradle.
the class TaskCacheKeyCalculator method calculate.
public TaskOutputCachingBuildCacheKey calculate(TaskExecution execution) {
DefaultTaskOutputCachingBuildCacheKeyBuilder builder = new DefaultTaskOutputCachingBuildCacheKeyBuilder();
HashCode taskClassLoaderHash = execution.getTaskClassLoaderHash();
List<HashCode> taskActionsClassLoaderHashes = execution.getTaskActionsClassLoaderHashes();
builder.appendTaskClass(execution.getTaskClass());
builder.appendClassloaderHash(taskClassLoaderHash);
builder.appendActionsClassloaderHashes(taskActionsClassLoaderHashes);
SortedMap<String, ValueSnapshot> inputProperties = execution.getInputProperties();
for (Map.Entry<String, ValueSnapshot> entry : inputProperties.entrySet()) {
DefaultBuildCacheHasher newHasher = new DefaultBuildCacheHasher();
entry.getValue().appendToHasher(newHasher);
HashCode hash = newHasher.hash();
builder.appendInputPropertyHash(entry.getKey(), hash);
}
SortedMap<String, FileCollectionSnapshot> inputFilesSnapshots = execution.getInputFilesSnapshot();
for (Map.Entry<String, FileCollectionSnapshot> entry : inputFilesSnapshots.entrySet()) {
FileCollectionSnapshot snapshot = entry.getValue();
DefaultBuildCacheHasher newHasher = new DefaultBuildCacheHasher();
snapshot.appendToHasher(newHasher);
HashCode hash = newHasher.hash();
builder.appendInputPropertyHash(entry.getKey(), hash);
}
SortedSet<String> outputPropertyNamesForCacheKey = execution.getOutputPropertyNamesForCacheKey();
for (String cacheableOutputPropertyName : outputPropertyNamesForCacheKey) {
builder.appendOutputPropertyName(cacheableOutputPropertyName);
}
return builder.build();
}
Aggregations