private boolean waitForPredexFile(Item item, File outFile, boolean multiDex) throws InterruptedException, IOException { // wait until the file is pre-dexed by the first thread. item.getLatch().await(); // check that the generated file actually exists if (item.areOutputFilesPresent()) { if (multiDex) { // output should be a folder for (File sourceFile : item.getOutputFiles()) { File destFile = new File(outFile, sourceFile.getName()); checkSame(sourceFile, destFile); Files.copy(sourceFile, destFile); } } else { // file already pre-dex, just copy the output. if (item.getOutputFiles().isEmpty()) { throw new RuntimeException(item.toString()); } checkSame(item.getOutputFiles().get(0), outFile); Files.copy(item.getOutputFiles().get(0), outFile); } incrementHits(); return true; } return false; }
processOutputHandler); item.getOutputFiles().clear(); item.getOutputFiles().addAll(files); item.getLatch().countDown(); item.getLatch().await(); if (item.areOutputFilesPresent()) { if (multiDex) { for (File sourceFile : item.getOutputFiles()) { File destFile = new File(outFile, sourceFile.getName()); checkSame(sourceFile, destFile); if (item.getOutputFiles().isEmpty()) { throw new RuntimeException(item.toString()); checkSame(item.getOutputFiles().get(0), outFile); Files.copy(item.getOutputFiles().get(0), outFile);
Pair<Item, Boolean> pair = getItem(logger, itemKey); Item item = pair.getFirst(); logger.verbose("Item from cache %1$s", item.toString()); processOutputHandler); item.getOutputFiles().clear(); item.getOutputFiles().addAll(files); item.getLatch().countDown(); item.getSourceFile()));
processOutputHandler, logger); item.getOutputFiles().addAll(files); item.getLatch().countDown(); item.getLatch().await(); File fromFile = item.getOutputFiles().get(0);
item.getOutputFiles().add(outFile); item.getLatch().countDown(); item.getLatch().await(); File fromFile = item.getOutputFiles().get(0);