mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
external build: method extracted
This commit is contained in:
@@ -26,6 +26,8 @@ import java.util.Collection;
|
||||
public interface DirtyFilesHolder<R extends BuildRootDescriptor, T extends BuildTarget<R>> {
|
||||
void processDirtyFiles(@NotNull FileProcessor<R, T> processor) throws IOException;
|
||||
|
||||
boolean hasDirtyFiles() throws IOException;
|
||||
|
||||
boolean hasRemovedFiles();
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -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<R extends BuildRootDescriptor, T exte
|
||||
myContext = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasDirtyFiles() throws IOException {
|
||||
final Ref<Boolean> hasDirtyFiles = Ref.create(false);
|
||||
processDirtyFiles(new FileProcessor<R, T>() {
|
||||
@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<BuildTarget<?>, Collection<String>> map = Utils.REMOVED_SOURCES_KEY.get(myContext);
|
||||
|
||||
@@ -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<BuildRootDescriptor, Androi
|
||||
if (AndroidJpsUtil.isLightBuild(context)) {
|
||||
return;
|
||||
}
|
||||
final boolean[] hasDirtyFiles = {false};
|
||||
|
||||
holder.processDirtyFiles(new FileProcessor<BuildRootDescriptor, AndroidDexBuildTarget>() {
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user