fixed updating resource in running app server when more than one artifact is changed

This commit is contained in:
nik
2010-08-25 16:56:55 +04:00
parent f6a9c35e08
commit a02881d6ef
2 changed files with 18 additions and 3 deletions
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.Key;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.util.io.DataExternalizer;
import com.intellij.util.io.KeyDescriptor;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -45,6 +46,19 @@ public class ArtifactsCompiler extends GenericCompiler<String, VirtualFilePersis
return compilers.length == 1 ? compilers[0] : null;
}
static void setAffectedArtifacts(final CompileContext context, Set<Artifact> artifacts) {
context.putUserData(AFFECTED_ARTIFACTS, artifacts);
}
static void addWrittenPaths(final CompileContext context, Set<String> writtenPaths) {
Set<String> paths = context.getUserData(WRITTEN_PATHS_KEY);
if (paths == null) {
paths = new THashSet<String>();
context.putUserData(WRITTEN_PATHS_KEY, paths);
}
paths.addAll(writtenPaths);
}
@NotNull
@Override
public KeyDescriptor<String> getItemKeyDescriptor() {
@@ -75,6 +89,7 @@ public class ArtifactsCompiler extends GenericCompiler<String, VirtualFilePersis
return "Artifacts Packaging Compiler";
}
@Nullable
public static Set<Artifact> getAffectedArtifacts(final CompileContext compileContext) {
return compileContext.getUserData(AFFECTED_ARTIFACTS);
}
@@ -112,7 +112,7 @@ public class ArtifactsCompilerInstance extends GenericCompilerInstance<ArtifactB
targets.add(new ArtifactBuildTarget(artifact));
}
if (selectedOnly) {
myContext.putUserData(ArtifactsCompiler.AFFECTED_ARTIFACTS, artifacts);
ArtifactsCompiler.setAffectedArtifacts(ArtifactsCompilerInstance.this.myContext, artifacts);
}
}
}.execute();
@@ -285,7 +285,7 @@ public class ArtifactsCompilerInstance extends GenericCompilerInstance<ArtifactB
}
private void onBuildStartedOrFinished(final boolean finished) throws Exception {
final Set<Artifact> artifacts = myContext.getUserData(ArtifactsCompiler.AFFECTED_ARTIFACTS);
final Set<Artifact> artifacts = ArtifactsCompiler.getAffectedArtifacts(myContext);
if (artifacts != null) {
for (Artifact artifact : artifacts) {
for (ArtifactPropertiesProvider provider : artifact.getPropertiesProviders()) {
@@ -335,7 +335,7 @@ public class ArtifactsCompilerInstance extends GenericCompilerInstance<ArtifactB
for (ArtifactCompilerCompileItem item : processedItems) {
consumer.addProcessedItem(item);
}
myContext.putUserData(ArtifactsCompiler.WRITTEN_PATHS_KEY, writtenPaths);
ArtifactsCompiler.addWrittenPaths(myContext, writtenPaths);
}
private THashSet<String> deleteFiles(List<GenericCompilerCacheState<String, VirtualFilePersistentState, ArtifactPackagingItemOutputState>> obsoleteItems,