diff options
Diffstat (limited to 'java/compiler/impl/src')
3 files changed, 69 insertions, 9 deletions
diff --git a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java index 03ff006eea40..01da3bc62541 100644 --- a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java +++ b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java @@ -128,8 +128,6 @@ public class BuildManager implements ApplicationComponent{ private static final String COMPILER_PROCESS_JDK_PROPERTY = "compiler.process.jdk"; public static final String SYSTEM_ROOT = "compile-server"; public static final String TEMP_DIR_NAME = "_temp_"; - private static final int MAKE_TRIGGER_DELAY = 300 /*300 ms*/; - private static final int DOCUMENT_SAVE_TRIGGER_DELAY = 1500 /*1.5 sec*/; private final boolean IS_UNIT_TEST_MODE; private static final String IWS_EXTENSION = ".iws"; private static final String IPR_EXTENSION = ".ipr"; @@ -161,7 +159,7 @@ public class BuildManager implements ApplicationComponent{ private final BuildManagerPeriodicTask myAutoMakeTask = new BuildManagerPeriodicTask() { @Override protected int getDelay() { - return Registry.intValue("compiler.automake.trigger.delay", MAKE_TRIGGER_DELAY); + return Registry.intValue("compiler.automake.trigger.delay"); } @Override @@ -173,7 +171,7 @@ public class BuildManager implements ApplicationComponent{ private final BuildManagerPeriodicTask myDocumentSaveTask = new BuildManagerPeriodicTask() { @Override protected int getDelay() { - return Registry.intValue("compiler.document.save.trigger.delay", DOCUMENT_SAVE_TRIGGER_DELAY); + return Registry.intValue("compiler.document.save.trigger.delay"); } private final Semaphore mySemaphore = new Semaphore(); @@ -624,7 +622,7 @@ public class BuildManager implements ApplicationComponent{ data = new ProjectData(new SequentialTaskExecutor(PooledThreadExecutor.INSTANCE)); myProjectDataMap.put(projectPath, data); } - if (isRebuild || (isAutomake && Registry.is("compiler.automake.force.fs.rescan", false))) { + if (isRebuild || (isAutomake && Registry.is("compiler.automake.force.fs.rescan"))) { data.dropChanges(); } if (IS_UNIT_TEST_MODE) { diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java index 5752c3f5f77b..3fcfc8df5529 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java @@ -26,10 +26,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.artifacts.ArtifactManager; -import com.intellij.packaging.artifacts.ArtifactProperties; -import com.intellij.packaging.artifacts.ArtifactType; +import com.intellij.packaging.artifacts.*; import com.intellij.packaging.elements.*; import com.intellij.packaging.impl.elements.*; import com.intellij.util.PathUtil; @@ -599,5 +596,31 @@ public class ArtifactUtil { public static String suggestArtifactFileName(String artifactName) { return PathUtil.suggestFileName(artifactName, true, true); } + + @Nullable + public static Artifact addArtifact(@NotNull ModifiableArtifactModel artifactModel, + @NotNull ArtifactType type, + @NotNull ArtifactTemplate artifactTemplate) { + final ArtifactTemplate.NewArtifactConfiguration configuration = artifactTemplate.createArtifact(); + if (configuration == null) { + return null; + } + + final String baseName = configuration.getArtifactName(); + String name = baseName; + int i = 2; + while (artifactModel.findArtifact(name) != null) { + name = baseName + i; + i++; + } + + ArtifactType actualType = configuration.getArtifactType(); + if (actualType == null) { + actualType = type; + } + final ModifiableArtifact artifact = artifactModel.addArtifact(name, actualType, configuration.getRootElement()); + artifactTemplate.setUpArtifact(artifact, configuration); + return artifact; + } } diff --git a/java/compiler/impl/src/org/jetbrains/builtInWebServer/ArtifactWebServerRootsProvider.java b/java/compiler/impl/src/org/jetbrains/builtInWebServer/ArtifactWebServerRootsProvider.java new file mode 100644 index 000000000000..4733ca3747ec --- /dev/null +++ b/java/compiler/impl/src/org/jetbrains/builtInWebServer/ArtifactWebServerRootsProvider.java @@ -0,0 +1,39 @@ +package org.jetbrains.builtInWebServer; + +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.packaging.artifacts.Artifact; +import com.intellij.packaging.artifacts.ArtifactManager; +import com.intellij.util.PairFunction; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +final class ArtifactWebServerRootsProvider extends PrefixlessWebServerRootsProvider { + @Nullable + @Override + public PathInfo resolve(@NotNull String path, @NotNull Project project, @NotNull PairFunction<String, VirtualFile, VirtualFile> resolver) { + for (Artifact artifact : ArtifactManager.getInstance(project).getArtifacts()) { + VirtualFile root = artifact.getOutputFile(); + if (root != null) { + VirtualFile file = root.findFileByRelativePath(path); + if (file != null) { + return new PathInfo(file, root); + } + } + } + return null; + } + + @Nullable + @Override + public PathInfo getRoot(@NotNull VirtualFile file, @NotNull Project project) { + for (Artifact artifact : ArtifactManager.getInstance(project).getArtifacts()) { + VirtualFile root = artifact.getOutputFile(); + if (root != null && VfsUtilCore.isAncestor(root, file, true)) { + return new PathInfo(file, root); + } + } + return null; + } +}
\ No newline at end of file |