diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/DirtyFilesHolder.java b/jps/jps-builders/src/org/jetbrains/jps/builders/DirtyFilesHolder.java index c0c9219b62d6..3a1eaac159a7 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/DirtyFilesHolder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/DirtyFilesHolder.java @@ -26,6 +26,8 @@ import java.util.Collection; public interface DirtyFilesHolder> { void processDirtyFiles(@NotNull FileProcessor processor) throws IOException; + boolean hasDirtyFiles() throws IOException; + boolean hasRemovedFiles(); @NotNull diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/impl/DirtyFilesHolderBase.java b/jps/jps-builders/src/org/jetbrains/jps/builders/impl/DirtyFilesHolderBase.java index e8ee37326e90..b10637a56fce 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/impl/DirtyFilesHolderBase.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/impl/DirtyFilesHolderBase.java @@ -15,13 +15,17 @@ */ package org.jetbrains.jps.builders.impl; +import com.intellij.openapi.util.Ref; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.builders.BuildRootDescriptor; import org.jetbrains.jps.builders.BuildTarget; import org.jetbrains.jps.builders.DirtyFilesHolder; +import org.jetbrains.jps.builders.FileProcessor; import org.jetbrains.jps.incremental.CompileContext; import org.jetbrains.jps.incremental.Utils; +import java.io.File; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -36,6 +40,19 @@ public abstract class DirtyFilesHolderBase hasDirtyFiles = Ref.create(false); + processDirtyFiles(new FileProcessor() { + @Override + public boolean apply(T target, File file, R root) throws IOException { + hasDirtyFiles.set(true); + return false; + } + }); + return hasDirtyFiles.get(); + } + @Override public boolean hasRemovedFiles() { Map, Collection> map = Utils.REMOVED_SOURCES_KEY.get(myContext); diff --git a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidDexBuilder.java b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidDexBuilder.java index b5a38f26f026..15e620bec038 100644 --- a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidDexBuilder.java +++ b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidDexBuilder.java @@ -38,7 +38,6 @@ import org.jetbrains.jps.android.model.JpsAndroidSdkProperties; import org.jetbrains.jps.builders.BuildOutputConsumer; import org.jetbrains.jps.builders.BuildRootDescriptor; import org.jetbrains.jps.builders.DirtyFilesHolder; -import org.jetbrains.jps.builders.FileProcessor; import org.jetbrains.jps.cmdline.ClasspathBootstrap; import org.jetbrains.jps.incremental.CompileContext; import org.jetbrains.jps.incremental.ExternalProcessUtil; @@ -77,19 +76,9 @@ public class AndroidDexBuilder extends TargetBuilder() { - @Override - public boolean apply(AndroidDexBuildTarget target, File file, BuildRootDescriptor root) throws IOException { - assert target == buildTarget; - hasDirtyFiles[0] = true; - return false; - } - }); try { - if (!doDexBuild(buildTarget, context, hasDirtyFiles[0])) { + if (!doDexBuild(buildTarget, context, holder.hasDirtyFiles())) { throw new ProjectBuildException(); } }