summaryrefslogtreecommitdiff
path: root/java/compiler/impl/src/org/jetbrains/builtInWebServer/ArtifactWebServerRootsProvider.java
blob: 4733ca3747ec60968c4afa8dc908a7b63d63af43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;
  }
}