IDEA-99822 Make: Reload java source in different encoding does not trigger incremental make; passing ProjectDescriptor instead of Context object as BuildTarget configuration calculation depends on model only

This commit is contained in:
Eugene Zhuravlev
2013-03-01 13:44:00 +01:00
parent 06114d8984
commit 2f5819dffe
6 changed files with 15 additions and 10 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.jps.builders;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
@@ -46,7 +47,7 @@ public abstract class BuildTarget<R extends BuildRootDescriptor> {
public abstract Collection<BuildTarget<?>> computeDependencies(BuildTargetRegistry targetRegistry, TargetOutputIndex outputIndex);
public void writeConfiguration(CompileContext context, PrintWriter out) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
}
@NotNull
@@ -31,6 +31,7 @@ import org.jetbrains.jps.builders.java.ExcludedJavaSourceRootProvider;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.model.JpsModel;
@@ -156,7 +157,7 @@ public final class ModuleBuildTarget extends JVMModuleBuildTarget<JavaSourceRoot
}
@Override
public void writeConfiguration(CompileContext context, PrintWriter out) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
final JpsModule module = getModule();
int fingerprint = getDependenciesFingerprint();
@@ -172,7 +173,7 @@ public final class ModuleBuildTarget extends JVMModuleBuildTarget<JavaSourceRoot
fingerprint += bytecodeTarget.hashCode();
}
final CompilerEncodingConfiguration encodingConfig = context.getProjectDescriptor().getEncodingConfiguration();
final CompilerEncodingConfiguration encodingConfig = pd.getEncodingConfiguration();
final String encoding = encodingConfig.getPreferredModuleEncoding(module);
if (encoding != null) {
fingerprint += encoding.hashCode();
@@ -27,6 +27,7 @@ import org.jetbrains.jps.builders.java.ExcludedJavaSourceRootProvider;
import org.jetbrains.jps.builders.java.ResourceRootDescriptor;
import org.jetbrains.jps.builders.java.ResourcesTargetType;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.model.JpsModel;
@@ -116,9 +117,9 @@ public final class ResourcesTarget extends JVMModuleBuildTarget<ResourceRootDesc
}
@Override
public void writeConfiguration(CompileContext context, PrintWriter out) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
int fingerprint = 0;
final BuildRootIndex rootIndex = context.getProjectDescriptor().getBuildRootIndex();
final BuildRootIndex rootIndex = pd.getBuildRootIndex();
final List<ResourceRootDescriptor> roots = rootIndex.getTargetRoots(this, null);
for (ResourceRootDescriptor root : roots) {
fingerprint += FileUtil.fileHashCode(root.getRootFile());
@@ -22,6 +22,7 @@ import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.artifacts.builders.LayoutElementBuildersRegistry;
import org.jetbrains.jps.incremental.artifacts.impl.JpsArtifactUtil;
@@ -106,9 +107,9 @@ public class ArtifactBuildTarget extends BuildTarget<ArtifactRootDescriptor> {
}
@Override
public void writeConfiguration(CompileContext context, PrintWriter out) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
out.println(StringUtil.notNullize(myArtifact.getOutputPath()));
final BuildRootIndex rootIndex = context.getProjectDescriptor().getBuildRootIndex();
final BuildRootIndex rootIndex = pd.getBuildRootIndex();
for (ArtifactRootDescriptor descriptor : rootIndex.getTargetRoots(this, null)) {
descriptor.writeConfiguration(out);
}
@@ -126,7 +126,7 @@ public class BuildTargetConfiguration {
private String saveToString(CompileContext context) {
StringWriter out = new StringWriter();
//noinspection IOResourceOpenedButNotSafelyClosed
myTarget.writeConfiguration(context, new PrintWriter(out));
myTarget.writeConfiguration(context.getProjectDescriptor(), new PrintWriter(out));
return out.toString();
}
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
@@ -141,8 +142,8 @@ public class MavenResourcesTarget extends ModuleBasedTarget<MavenResourceRootDes
}
@Override
public void writeConfiguration(CompileContext context, PrintWriter out) {
final BuildDataPaths dataPaths = context.getProjectDescriptor().getTargetsState().getDataPaths();
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
final BuildDataPaths dataPaths = pd.getTargetsState().getDataPaths();
final MavenModuleResourceConfiguration configuration = getModuleResourcesConfiguration(dataPaths);
if (configuration != null) {
out.write(Integer.toHexString(configuration.computeConfigurationHash(isTests())));