StateFileUtil( File projectRootDirectory, File directoryToProcess, File dotGradleStatesDirectory, DigesterFactory shaDigesterFactory, IoFactory ioFactory) { this.projectRootDirectory = projectRootDirectory; this.absoluteProjectRootPath = projectRootDirectory.getAbsolutePath(); this.ioFactory = ioFactory; this.directoryToProcess = directoryToProcess; this.absoluteDirectoryToProcessPath = directoryToProcess.getAbsolutePath(); this.shaDigesterFactory = shaDigesterFactory; final String relativePathToProjectRoot = getRelativePathToProjectRoot(directoryToProcess); final String directoryStateId = getStringDigest(relativePathToProjectRoot); directoryStateDir = new File(dotGradleStatesDirectory, directoryStateId); oldDirectoryStateDir = new File(directoryStateDir, "old"); newDirectoryStateDir = new File(directoryStateDir, "new"); if (newDirectoryStateDir.exists()) { try { FileUtils.deleteDirectory(newDirectoryStateDir); } catch (IOException e) { throw new GradleException( "failed to clear new state directory " + newDirectoryStateDir.getAbsolutePath(), e); } } if (!GFileUtils.createDirectoriesWhenNotExistent(oldDirectoryStateDir, newDirectoryStateDir)) { throw new GradleException( "failed to create one or more of the state directories [" + oldDirectoryStateDir.getAbsolutePath() + ", " + newDirectoryStateDir.getAbsolutePath() + "]"); } }