diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/ArtifactOutputToSourceMapping.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/ArtifactOutputToSourceMapping.java index 067a383acf40..6c172251f0e1 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/ArtifactOutputToSourceMapping.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/ArtifactOutputToSourceMapping.java @@ -15,14 +15,18 @@ */ package org.jetbrains.jps.incremental.artifacts; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.SmartList; import com.intellij.util.io.DataExternalizer; import com.intellij.util.io.IOUtil; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.incremental.storage.AbstractStateStorage; import org.jetbrains.jps.incremental.storage.PathStringDescriptor; import java.io.*; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -35,6 +39,40 @@ public class ArtifactOutputToSourceMapping extends AbstractStateStorage state) throws IOException { + super.update(FileUtil.toSystemIndependentName(path), normalize(state)); + } + + @Override + public void appendData(String path, List data) throws IOException { + super.appendData(FileUtil.toSystemIndependentName(path), normalize(data)); + } + + private static List normalize(List data) { + if (data.isEmpty()) return Collections.emptyList(); + List normalized = new ArrayList(data.size()); + for (SourcePathAndRootIndex pair : data) { + normalized.add(new SourcePathAndRootIndex(FileUtil.toSystemIndependentName(pair.getPath()), pair.getRootIndex())); + } + return normalized; + } + + public void appendData(String outputPath, int rootIndex, String sourcePath) throws IOException { + super.appendData(outputPath, Collections.singletonList(new SourcePathAndRootIndex(FileUtil.toSystemIndependentName(sourcePath), rootIndex))); + } + + @Override + public void remove(String path) throws IOException { + super.remove(FileUtil.toSystemIndependentName(path)); + } + + @Nullable + @Override + public List getState(String path) throws IOException { + return super.getState(FileUtil.toSystemIndependentName(path)); + } + public static class SourcePathAndRootIndex { private final String myPath; private final int myRootIndex; diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/IncArtifactBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/IncArtifactBuilder.java index 2d002c98f441..6dc56ef587c6 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/IncArtifactBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/IncArtifactBuilder.java @@ -221,7 +221,7 @@ public class IncArtifactBuilder extends TargetBuilder