external compiler: rename & move

This commit is contained in:
nik
2012-10-02 15:21:05 +04:00
parent 36284c0a66
commit e4f8aa8404
18 changed files with 84 additions and 87 deletions
@@ -2,8 +2,8 @@ package org.jetbrains.jps.builders;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import java.io.File;
import java.io.FileFilter;
@@ -43,7 +43,7 @@ public interface BuildRootIndex {
<R extends BuildRootDescriptor> Collection<R> findAllParentDescriptors(@NotNull File file, @Nullable CompileContext context);
@Nullable
RootDescriptor getModuleAndRoot(@Nullable CompileContext context, File file);
JavaSourceRootDescriptor getModuleAndRoot(@Nullable CompileContext context, File file);
@NotNull
FileFilter getRootFilter(@NotNull BuildRootDescriptor descriptor);
@@ -9,11 +9,11 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.BuilderRegistry;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.model.JpsModel;
import org.jetbrains.jps.service.JpsServiceManager;
@@ -213,7 +213,7 @@ public class BuildRootIndexImpl implements BuildRootIndex {
public Collection<? extends BuildRootDescriptor> clearTempRoots(@NotNull CompileContext context) {
try {
final Map<File, BuildRootDescriptor> map = ROOT_DESCRIPTOR_MAP.get(context);
return map != null? map.values() : Collections.<RootDescriptor>emptyList();
return map != null? map.values() : Collections.<BuildRootDescriptor>emptyList();
}
finally {
TEMP_TARGET_ROOTS_MAP.set(context, null);
@@ -223,7 +223,7 @@ public class BuildRootIndexImpl implements BuildRootIndex {
@Override
@Nullable
public RootDescriptor getModuleAndRoot(@Nullable CompileContext context, File file) {
public JavaSourceRootDescriptor getModuleAndRoot(@Nullable CompileContext context, File file) {
return findParentDescriptor(file, JavaModuleBuildTargetType.ALL_TYPES, context);
}
@@ -14,7 +14,6 @@ import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.FSOperations;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.incremental.Utils;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.model.module.JpsModule;
@@ -164,7 +163,7 @@ public class JavaBuilderUtil {
final List<Pair<File, JpsModule>> result = new ArrayList<Pair<File, JpsModule>>();
for (File file : affected) {
if (!moduleBasedFilter.accept(file)) {
final RootDescriptor moduleAndRoot = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
final JavaSourceRootDescriptor moduleAndRoot = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
result.add(Pair.create(file, moduleAndRoot != null ? moduleAndRoot.target.getModule() : null));
}
}
@@ -176,7 +175,7 @@ public class JavaBuilderUtil {
final Set<JpsModule> chunkModules = chunk.getModules();
if (!chunkModules.isEmpty()) {
for (File file : affected) {
final RootDescriptor moduleAndRoot = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
final JavaSourceRootDescriptor moduleAndRoot = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
if (moduleAndRoot != null && chunkModules.contains(moduleAndRoot.target.getModule())) {
return true;
}
@@ -250,7 +249,7 @@ public class JavaBuilderUtil {
@Override
public boolean accept(File file) {
final RootDescriptor rd = myContext.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(myContext, file);
final JavaSourceRootDescriptor rd = myContext.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(myContext, file);
if (rd == null) {
return true;
}
@@ -1,4 +1,4 @@
package org.jetbrains.jps.incremental.fs;
package org.jetbrains.jps.builders.java;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
@@ -15,7 +15,7 @@ import java.io.FileFilter;
* @author Eugene Zhuravlev
* Date: 1/3/12
*/
public final class RootDescriptor extends BuildRootDescriptor {
public final class JavaSourceRootDescriptor extends BuildRootDescriptor {
@NotNull
public final File root;
@NotNull
@@ -23,7 +23,7 @@ public final class RootDescriptor extends BuildRootDescriptor {
public final boolean isGeneratedSources;
public final boolean isTemp;
public RootDescriptor(@NotNull File root, @NotNull ModuleBuildTarget target, boolean isGenerated, boolean isTemp) {
public JavaSourceRootDescriptor(@NotNull File root, @NotNull ModuleBuildTarget target, boolean isGenerated, boolean isTemp) {
this.root = root;
this.target = target;
this.isGeneratedSources = isGenerated;
@@ -8,7 +8,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.model.JpsEncodingConfigurationService;
import org.jetbrains.jps.model.JpsEncodingProjectConfiguration;
import org.jetbrains.jps.model.JpsModel;
@@ -49,7 +49,7 @@ public class CompilerEncodingConfiguration {
File file = JpsPathUtil.urlToFile(fileUrl);
if (charset == null || (!file.isDirectory() && !shouldHonorEncodingForCompilation(builders, file))) continue;
final RootDescriptor rootDescriptor = myRootsIndex.getModuleAndRoot(null, file);
final JavaSourceRootDescriptor rootDescriptor = myRootsIndex.getModuleAndRoot(null, file);
if (rootDescriptor == null) continue;
final JpsModule module = rootDescriptor.target.getModule();
@@ -10,9 +10,9 @@ import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.impl.BuildTargetChunk;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.fs.BuildFSState;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.storage.Timestamps;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.model.java.JpsJavaClasspathKind;
@@ -30,7 +30,7 @@ import java.util.Set;
*/
public class FSOperations {
public static void markDirty(CompileContext context, final File file) throws IOException {
final RootDescriptor rd = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
final JavaSourceRootDescriptor rd = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
if (rd != null) {
final ProjectDescriptor pd = context.getProjectDescriptor();
pd.fsState.markDirty(context, file, rd, pd.timestamps.getStorage());
@@ -38,7 +38,7 @@ public class FSOperations {
}
public static void markDirtyIfNotDeleted(CompileContext context, final File file) throws IOException {
final RootDescriptor rd = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
final JavaSourceRootDescriptor rd = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
if (rd != null) {
final ProjectDescriptor pd = context.getProjectDescriptor();
pd.fsState.markDirtyIfNotDeleted(context, file, rd, pd.timestamps.getStorage());
@@ -46,7 +46,7 @@ public class FSOperations {
}
public static void markDeleted(CompileContext context, File file) throws IOException {
final RootDescriptor rd = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
final JavaSourceRootDescriptor rd = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
if (rd != null) {
final ProjectDescriptor pd = context.getProjectDescriptor();
pd.fsState.registerDeleted(rd.target, file, pd.timestamps.getStorage());
@@ -132,7 +132,7 @@ public class FSOperations {
@Nullable THashSet<File> currentFiles) throws IOException {
final ModuleExcludeIndex rootsIndex = context.getProjectDescriptor().getModuleExcludeIndex();
final Set<File> excludes = new HashSet<File>(rootsIndex.getModuleExcludes(target.getModule()));
for (RootDescriptor rd : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context)) {
for (JavaSourceRootDescriptor rd : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context)) {
if (!rd.root.exists()) {
continue;
}
@@ -141,7 +141,7 @@ public class FSOperations {
}
}
private static void traverseRecursively(CompileContext context, final RootDescriptor rd, final File file, Set<File> excludes, @NotNull final Timestamps tsStorage, final boolean forceDirty, @Nullable Set<File> currentFiles) throws IOException {
private static void traverseRecursively(CompileContext context, final JavaSourceRootDescriptor rd, final File file, Set<File> excludes, @NotNull final Timestamps tsStorage, final boolean forceDirty, @Nullable Set<File> currentFiles) throws IOException {
final File[] children = file.listFiles();
if (children != null) { // is directory
if (children.length > 0 && !JpsPathUtil.isUnder(excludes, file)) {
@@ -24,12 +24,12 @@ import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.impl.BuildTargetChunk;
import org.jetbrains.jps.builders.java.JavaBuilderUtil;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.java.dependencyView.Callbacks;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.cmdline.BuildRunner;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.fs.BuildFSState;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.java.ExternalJavacDescriptor;
import org.jetbrains.jps.incremental.java.JavaBuilder;
import org.jetbrains.jps.incremental.java.JavaBuilderLogger;
@@ -598,9 +598,7 @@ public class IncProjectBuilder {
rootFiles.add(rd.getRootFile());
context.getProjectDescriptor().fsState.clearRecompile(rd);
}
myAsyncTasks.add(
FileUtil.asyncDelete(rootFiles)
);
myAsyncTasks.add(FileUtil.asyncDelete(rootFiles));
}
try {
@@ -760,9 +758,9 @@ public class IncProjectBuilder {
nextPassRequired = false;
myProjectDescriptor.fsState.beforeNextRoundStart(context, chunk);
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder = new DirtyFilesHolder<RootDescriptor, ModuleBuildTarget>() {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder = new DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget>() {
@Override
public void processDirtyFiles(@NotNull FileProcessor<RootDescriptor, ModuleBuildTarget> processor) throws IOException {
public void processDirtyFiles(@NotNull FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget> processor) throws IOException {
FSOperations.processFilesToRecompile(context, chunk, processor);
}
};
@@ -834,16 +832,16 @@ public class IncProjectBuilder {
}
private static void syncOutputFiles(final CompileContext context,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
final BuildDataManager dataManager = context.getProjectDescriptor().dataManager;
try {
final Collection<String> allOutputs = new LinkedList<String>();
dirtyFilesHolder.processDirtyFiles(new FileProcessor<RootDescriptor, ModuleBuildTarget>() {
dirtyFilesHolder.processDirtyFiles(new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
private final Map<ModuleBuildTarget, SourceToOutputMapping> storageMap = new HashMap<ModuleBuildTarget, SourceToOutputMapping>();
@Override
public boolean apply(ModuleBuildTarget target, File file, RootDescriptor sourceRoot) throws IOException {
public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor sourceRoot) throws IOException {
SourceToOutputMapping srcToOut = storageMap.get(target);
if (srcToOut == null) {
srcToOut = dataManager.getSourceToOutputMap(target);
@@ -943,7 +941,7 @@ public class IncProjectBuilder {
fsState.markInitialScanPerformed(target);
}
final Timestamps timestamps = pd.timestamps.getStorage();
for (RootDescriptor rd : pd.getBuildRootIndex().getTargetRoots(target, context)) {
for (JavaSourceRootDescriptor rd : pd.getBuildRootIndex().getTargetRoots(target, context)) {
marked |= fsState.markAllUpToDate(context, rd, timestamps);
}
}
@@ -6,10 +6,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.model.JpsModel;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import org.jetbrains.jps.model.java.JpsJavaDependenciesEnumerator;
@@ -26,7 +26,7 @@ import java.util.List;
/**
* @author nik
*/
public class ModuleBuildTarget extends BuildTarget<RootDescriptor> {
public class ModuleBuildTarget extends BuildTarget<JavaSourceRootDescriptor> {
private final JpsModule myModule;
private final String myModuleName;
private final JavaModuleBuildTargetType myTargetType;
@@ -77,21 +77,21 @@ public class ModuleBuildTarget extends BuildTarget<RootDescriptor> {
@NotNull
@Override
public List<RootDescriptor> computeRootDescriptors(JpsModel model, ModuleExcludeIndex index, IgnoredFileIndex ignoredFileIndex) {
List<RootDescriptor> roots = new ArrayList<RootDescriptor>();
public List<JavaSourceRootDescriptor> computeRootDescriptors(JpsModel model, ModuleExcludeIndex index, IgnoredFileIndex ignoredFileIndex) {
List<JavaSourceRootDescriptor> roots = new ArrayList<JavaSourceRootDescriptor>();
for (JpsModuleSourceRoot sourceRoot : myModule.getSourceRoots()) {
final File root = JpsPathUtil.urlToFile(sourceRoot.getUrl());
final boolean testRoot = JavaSourceRootType.TEST_SOURCE.equals(sourceRoot.getRootType());
if (testRoot == isTests()) {
roots.add(new RootDescriptor(root, this, false, false));
roots.add(new JavaSourceRootDescriptor(root, this, false, false));
}
}
return roots;
}
@Override
public RootDescriptor findRootDescriptor(String rootId, BuildRootIndex rootIndex) {
List<RootDescriptor> descriptors = rootIndex.getRootDescriptors(new File(rootId), Collections.<JavaModuleBuildTargetType>singletonList(myTargetType), null);
public JavaSourceRootDescriptor findRootDescriptor(String rootId, BuildRootIndex rootIndex) {
List<JavaSourceRootDescriptor> descriptors = rootIndex.getRootDescriptors(new File(rootId), Collections.<JavaModuleBuildTargetType>singletonList(myTargetType), null);
return ContainerUtil.getFirstItem(descriptors);
}
@@ -2,7 +2,7 @@ package org.jetbrains.jps.incremental;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import java.io.File;
@@ -25,7 +25,7 @@ public abstract class ModuleLevelBuilder extends Builder {
public abstract ExitCode build(CompileContext context,
ModuleChunk chunk,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException;
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException;
public boolean shouldHonorFileEncodingForCompilation(File file) {
return false;
@@ -10,9 +10,9 @@ import org.jetbrains.jps.builders.BuildRootDescriptor;
import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.CompileScope;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.incremental.Utils;
import org.jetbrains.jps.incremental.artifacts.instructions.ArtifactRootDescriptor;
import org.jetbrains.jps.incremental.storage.Timestamps;
@@ -30,7 +30,7 @@ import java.util.Set;
*/
public class BuildFSState extends FSState {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.incremental.fs.BuildFSState");
private static final Key<Set<ModuleBuildTarget>> CONTEXT_TARGETS_KEY = Key.create("_fssfate_context_modules_");
private static final Key<Set<? extends BuildTarget<?>>> CONTEXT_TARGETS_KEY = Key.create("_fssfate_context_targets_");
private static final Key<FilesDelta> CURRENT_ROUND_DELTA_KEY = Key.create("_current_round_delta_");
private static final Key<FilesDelta> LAST_ROUND_DELTA_KEY = Key.create("_last_round_delta_");
@@ -69,12 +69,12 @@ public class BuildFSState extends FSState {
if (context == null) {
return false;
}
Set<ModuleBuildTarget> targets = CONTEXT_TARGETS_KEY.get(context, Collections.<ModuleBuildTarget>emptySet());
Set<? extends BuildTarget<?>> targets = CONTEXT_TARGETS_KEY.get(context, Collections.<BuildTarget<?>>emptySet());
return targets.contains(rd.getTarget());
}
@Override
public boolean markDirtyIfNotDeleted(@Nullable CompileContext context, File file, final RootDescriptor rd, @Nullable Timestamps tsStorage) throws IOException {
public boolean markDirtyIfNotDeleted(@Nullable CompileContext context, File file, final BuildRootDescriptor rd, @Nullable Timestamps tsStorage) throws IOException {
final boolean marked = super.markDirtyIfNotDeleted(context, file, rd, tsStorage);
if (marked) {
final FilesDelta roundDelta = getRoundDelta(CURRENT_ROUND_DELTA_KEY, context);
@@ -112,7 +112,7 @@ public class BuildFSState extends FSState {
setRoundDelta(CURRENT_ROUND_DELTA_KEY, context, new FilesDelta());
}
public <R extends RootDescriptor, T extends BuildTarget<R>> boolean processFilesToRecompile(CompileContext context, final T target, final FileProcessor<R, T> processor) throws IOException {
public <R extends BuildRootDescriptor, T extends BuildTarget<R>> boolean processFilesToRecompile(CompileContext context, final T target, final FileProcessor<R, T> processor) throws IOException {
final Map<BuildRootDescriptor, Set<File>> data = getSourcesToRecompile(context, target);
BuildRootIndex rootIndex = context.getProjectDescriptor().getBuildRootIndex();
final CompileScope scope = context.getScope();
@@ -137,7 +137,7 @@ public class BuildFSState extends FSState {
/**
* @return true if marked something, false otherwise
*/
public boolean markAllUpToDate(CompileContext context, final RootDescriptor rd, final Timestamps stamps) throws IOException {
public boolean markAllUpToDate(CompileContext context, final JavaSourceRootDescriptor rd, final Timestamps stamps) throws IOException {
boolean marked = false;
final FilesDelta delta = getDelta(rd.target);
final Set<File> files = delta.clearRecompile(rd);
@@ -192,7 +192,7 @@ public class BuildFSState extends FSState {
return marked;
}
private static void setContextTargets(@Nullable CompileContext context, @Nullable Set<ModuleBuildTarget> targets) {
private static void setContextTargets(@Nullable CompileContext context, @Nullable Set<? extends BuildTarget<?>> targets) {
if (context != null) {
CONTEXT_TARGETS_KEY.set(context, targets);
}
@@ -89,11 +89,11 @@ public class FSState {
public boolean markDirtyIfNotDeleted(@Nullable CompileContext context,
final File file,
final RootDescriptor rd,
final BuildRootDescriptor rd,
final @Nullable Timestamps tsStorage) throws IOException {
final boolean marked = getDelta(rd.target).markRecompileIfNotDeleted(rd, file);
final boolean marked = getDelta(rd.getTarget()).markRecompileIfNotDeleted(rd, file);
if (marked && tsStorage != null) {
tsStorage.removeStamp(file, rd.target);
tsStorage.removeStamp(file, rd.getTarget());
}
return marked;
}
@@ -109,7 +109,7 @@ final class FilesDelta {
return added;
}
public boolean markRecompileIfNotDeleted(RootDescriptor root, File file) {
public boolean markRecompileIfNotDeleted(BuildRootDescriptor root, File file) {
final boolean isMarkedDeleted;
synchronized (myDeletedPaths) {
isMarkedDeleted = !myDeletedPaths.isEmpty() && myDeletedPaths.contains(FileUtil.toCanonicalPath(file.getPath()));
@@ -35,11 +35,11 @@ import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.java.JavaBuilderUtil;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.java.dependencyView.Callbacks;
import org.jetbrains.jps.builders.java.dependencyView.Mappings;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
@@ -124,7 +124,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
if (srcFile != null && content != null) {
final String outputPath = FileUtil.toSystemIndependentName(out.getFile().getPath());
final String sourcePath = FileUtil.toSystemIndependentName(srcFile.getPath());
final RootDescriptor rootDescriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, srcFile);
final JavaSourceRootDescriptor rootDescriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, srcFile);
final BuildDataManager dataManager = context.getProjectDescriptor().dataManager;
boolean isTemp = false;
if (rootDescriptor != null) {
@@ -172,13 +172,13 @@ public class JavaBuilder extends ModuleLevelBuilder {
public ExitCode build(final CompileContext context,
final ModuleChunk chunk,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
try {
final Set<File> filesToCompile = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
final Set<File> formsToCompile = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
dirtyFilesHolder.processDirtyFiles(new FileProcessor<RootDescriptor, ModuleBuildTarget>() {
public boolean apply(ModuleBuildTarget target, File file, RootDescriptor sourceRoot) throws IOException {
dirtyFilesHolder.processDirtyFiles(new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor sourceRoot) throws IOException {
if (JAVA_SOURCES_FILTER.accept(file)) {
filesToCompile.add(file);
}
@@ -195,11 +195,11 @@ public class JavaBuilder extends ModuleLevelBuilder {
if (!context.isProjectRebuild()) {
for (Iterator<File> formsIterator = formsToCompile.iterator(); formsIterator.hasNext(); ) {
final File form = formsIterator.next();
final RootDescriptor descriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, form);
final JavaSourceRootDescriptor descriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, form);
if (descriptor == null) {
continue;
}
for (RootDescriptor rd : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(descriptor.target, context)) {
for (JavaSourceRootDescriptor rd : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(descriptor.target, context)) {
final File boundSource = getBoundSource(rd.root, form);
if (boundSource == null) {
continue;
@@ -330,7 +330,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
final Set<File> tempRootsSourcePath = new HashSet<File>();
final BuildRootIndex index = pd.getBuildRootIndex();
for (ModuleBuildTarget target : chunk.getTargets()) {
for (RootDescriptor rd : index.getTempTargetRoots(target, context)) {
for (JavaSourceRootDescriptor rd : index.getTempTargetRoots(target, context)) {
tempRootsSourcePath.add(rd.root);
}
}
@@ -893,7 +893,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
continue;
}
final Set<File> roots = new LinkedHashSet<File>();
for (RootDescriptor descriptor : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context)) {
for (JavaSourceRootDescriptor descriptor : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context)) {
roots.add(descriptor.root);
}
map.put(outputDir, roots);
@@ -8,9 +8,9 @@ import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
@@ -49,7 +49,7 @@ public class ResourcesBuilder extends ModuleLevelBuilder {
public ExitCode build(final CompileContext context,
final ModuleChunk chunk,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
final ResourcePatterns patterns = ResourcePatterns.KEY.get(context);
assert patterns != null;
try {
@@ -66,8 +66,8 @@ public class ResourcesBuilder extends ModuleLevelBuilder {
}
};
FSOperations.processFilesToRecompile(context, chunk, moduleFilter, new FileProcessor<RootDescriptor, ModuleBuildTarget>() {
public boolean apply(final ModuleBuildTarget target, final File file, final RootDescriptor sourceRoot) throws IOException {
FSOperations.processFilesToRecompile(context, chunk, moduleFilter, new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
public boolean apply(final ModuleBuildTarget target, final File file, final JavaSourceRootDescriptor sourceRoot) throws IOException {
if (patterns.isResourceFile(file, sourceRoot.root)) {
try {
context.processMessage(new ProgressMessage("Copying " + file.getPath()));
@@ -99,7 +99,7 @@ public class ResourcesBuilder extends ModuleLevelBuilder {
private static void copyResource(CompileContext context,
JpsModule module,
File file,
RootDescriptor sourceRoot,
JavaSourceRootDescriptor sourceRoot,
final SourceToOutputMapping outputToSourceMapping, final boolean tests) throws IOException {
final String outputRootUrl = JpsJavaExtensionService.getInstance().getOutputUrl(module, tests);
if (outputRootUrl == null) {
@@ -4,8 +4,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.builders.AdditionalRootsProviderService;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import java.io.File;
import java.util.ArrayList;
@@ -15,17 +15,17 @@ import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidAdditionalRootProviderService extends AdditionalRootsProviderService<RootDescriptor> {
public class AndroidAdditionalRootProviderService extends AdditionalRootsProviderService<JavaSourceRootDescriptor> {
public AndroidAdditionalRootProviderService() {
super(Collections.singletonList(JavaModuleBuildTargetType.PRODUCTION));
}
@NotNull
@Override
public List<RootDescriptor> getAdditionalRoots(@NotNull BuildTarget<RootDescriptor> target, File dataStorageRoot) {
public List<JavaSourceRootDescriptor> getAdditionalRoots(@NotNull BuildTarget<JavaSourceRootDescriptor> target, File dataStorageRoot) {
ModuleBuildTarget buildTarget = (ModuleBuildTarget)target;
final File generatedSourcesRoot = AndroidJpsUtil.getGeneratedSourcesStorage(buildTarget.getModule(), dataStorageRoot);
final List<RootDescriptor> result = new ArrayList<RootDescriptor>();
final List<JavaSourceRootDescriptor> result = new ArrayList<JavaSourceRootDescriptor>();
addRoot(result, buildTarget, new File(generatedSourcesRoot, AndroidJpsUtil.AAPT_GENERATED_SOURCE_ROOT_NAME));
addRoot(result, buildTarget, new File(generatedSourcesRoot, AndroidJpsUtil.AIDL_GENERATED_SOURCE_ROOT_NAME));
@@ -35,7 +35,7 @@ public class AndroidAdditionalRootProviderService extends AdditionalRootsProvide
return result;
}
private static void addRoot(List<RootDescriptor> result, ModuleBuildTarget buildTarget, final File file) {
result.add(new RootDescriptor(file, buildTarget, true, false));
private static void addRoot(List<JavaSourceRootDescriptor> result, ModuleBuildTarget buildTarget, final File file) {
result.add(new JavaSourceRootDescriptor(file, buildTarget, true, false));
}
}
@@ -8,8 +8,8 @@ import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.ProjectPaths;
import org.jetbrains.jps.android.model.JpsAndroidModuleExtension;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.model.module.JpsModule;
@@ -28,7 +28,7 @@ public class AndroidLibraryPackagingBuilder extends ModuleLevelBuilder {
}
@Override
public ExitCode build(CompileContext context, ModuleChunk chunk, DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
public ExitCode build(CompileContext context, ModuleChunk chunk, DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
if (chunk.containsTests() || !AndroidJpsUtil.containsAndroidFacet(chunk) || AndroidJpsUtil.isLightBuild(context)) {
return ExitCode.NOTHING_DONE;
}
@@ -23,9 +23,9 @@ import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.android.model.JpsAndroidModuleExtension;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.java.FormsParsing;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
@@ -75,7 +75,7 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
@Override
public ModuleLevelBuilder.ExitCode build(CompileContext context,
ModuleChunk chunk,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
if (chunk.containsTests() || !AndroidJpsUtil.containsAndroidFacet(chunk)) {
return ExitCode.NOTHING_DONE;
}
@@ -90,7 +90,7 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
private static ModuleLevelBuilder.ExitCode doBuild(CompileContext context,
ModuleChunk chunk,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws IOException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws IOException {
final Map<JpsModule, MyModuleData> moduleDataMap = computeModuleDatas(chunk.getModules(), context);
if (moduleDataMap == null || moduleDataMap.size() == 0) {
return ExitCode.ABORT;
@@ -110,9 +110,9 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
final Map<File, ModuleBuildTarget> idlFilesToCompile = new HashMap<File, ModuleBuildTarget>();
final Map<File, ModuleBuildTarget> rsFilesToCompile = new HashMap<File, ModuleBuildTarget>();
dirtyFilesHolder.processDirtyFiles(new FileProcessor<RootDescriptor, ModuleBuildTarget>() {
dirtyFilesHolder.processDirtyFiles(new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
@Override
public boolean apply(ModuleBuildTarget target, File file, RootDescriptor sourceRoot) throws IOException {
public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor sourceRoot) throws IOException {
final JpsAndroidModuleExtension extension = AndroidJpsUtil.getExtension(target.getModule());
if (extension == null) {
@@ -905,7 +905,7 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
@Nullable
private static String getDependencyFolder(@NotNull CompileContext context, @NotNull File sourceFile, @NotNull File genFolder) {
final RootDescriptor descriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, sourceFile);
final JavaSourceRootDescriptor descriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, sourceFile);
if (descriptor == null) {
return null;
}
@@ -975,7 +975,7 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
@Nullable
private static String computePackageForFile(@NotNull CompileContext context, @NotNull File file) throws IOException {
final RootDescriptor descriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
final JavaSourceRootDescriptor descriptor = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, file);
if (descriptor == null) {
return null;
}
@@ -14,12 +14,12 @@ import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.java.JavaBuilderUtil;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.java.dependencyView.Callbacks;
import org.jetbrains.jps.builders.java.dependencyView.Mappings;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.cmdline.ClasspathBootstrap;
import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.java.ClassPostProcessor;
import org.jetbrains.jps.incremental.java.JavaBuilder;
import org.jetbrains.jps.incremental.messages.BuildMessage;
@@ -67,7 +67,7 @@ public class GroovyBuilder extends ModuleLevelBuilder {
public ModuleLevelBuilder.ExitCode build(final CompileContext context,
ModuleChunk chunk,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws ProjectBuildException {
try {
final List<File> toCompile = collectChangedFiles(context, dirtyFilesHolder);
if (toCompile.isEmpty()) {
@@ -136,7 +136,7 @@ public class GroovyBuilder extends ModuleLevelBuilder {
final BuildRootIndex rootsIndex = context.getProjectDescriptor().getBuildRootIndex();
for (ModuleBuildTarget target : generationOutputs.keySet()) {
File root = new File(generationOutputs.get(target));
rootsIndex.associateTempRoot(context, target, new RootDescriptor(root, target, true, true));
rootsIndex.associateTempRoot(context, target, new JavaSourceRootDescriptor(root, target, true, true));
}
}
@@ -206,7 +206,7 @@ public class GroovyBuilder extends ModuleLevelBuilder {
GroovycOSProcessHandler.OutputItem item, Map<ModuleBuildTarget, String> generationOutputs, String compilerOutput) throws IOException {
if (chunk.getModules().size() > 1) {
final BuildRootIndex rootsIndex = context.getProjectDescriptor().getBuildRootIndex();
RootDescriptor descriptor = rootsIndex.getModuleAndRoot(context, new File(item.sourcePath));
JavaSourceRootDescriptor descriptor = rootsIndex.getModuleAndRoot(context, new File(item.sourcePath));
if (descriptor != null) {
ModuleBuildTarget srcTarget = descriptor.target;
if (!srcTarget.equals(chunk.representativeTarget())) {
@@ -238,12 +238,12 @@ public class GroovyBuilder extends ModuleLevelBuilder {
}
private static List<File> collectChangedFiles(CompileContext context,
DirtyFilesHolder<RootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws IOException {
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder) throws IOException {
final ResourcePatterns patterns = ResourcePatterns.KEY.get(context);
assert patterns != null;
final List<File> toCompile = new ArrayList<File>();
dirtyFilesHolder.processDirtyFiles(new FileProcessor<RootDescriptor, ModuleBuildTarget>() {
public boolean apply(ModuleBuildTarget target, File file, RootDescriptor sourceRoot) throws IOException {
dirtyFilesHolder.processDirtyFiles(new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor sourceRoot) throws IOException {
final String path = file.getPath();
if (isGroovyFile(path) && !patterns.isResourceFile(file, sourceRoot.root)) { //todo file type check
toCompile.add(file);
@@ -269,7 +269,7 @@ public class GroovyBuilder extends ModuleLevelBuilder {
for (GroovycOSProcessHandler.OutputItem item : successfullyCompiled) {
final String sourcePath = FileUtil.toSystemIndependentName(item.sourcePath);
final String outputPath = FileUtil.toSystemIndependentName(item.outputPath);
final RootDescriptor moduleAndRoot = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, new File(sourcePath));
final JavaSourceRootDescriptor moduleAndRoot = context.getProjectDescriptor().getBuildRootIndex().getModuleAndRoot(context, new File(sourcePath));
if (moduleAndRoot != null) {
final ModuleBuildTarget target = moduleAndRoot.target;
context.getProjectDescriptor().dataManager.getSourceToOutputMap(target).appendOutput(sourcePath, outputPath);