override fun resolveResource()

in intellij-plugin-structure/structure-intellij/src/main/java/com/jetbrains/plugin/structure/intellij/resources/CompiledModulesResourceResolver.kt [13:38]


  override fun resolveResource(relativePath: String, basePath: Path): ResourceResolver.Result {
    val defaultResolve = DefaultResourceResolver.resolveResource(relativePath, basePath)
    if (defaultResolve !is ResourceResolver.Result.NotFound) {
      return defaultResolve
    }

    //Try to resolve path against module roots. [base] is ignored.
    val moduleRootRelativePath = if (relativePath.startsWith("/")) {
      relativePath.trimStart('/')
    } else {
      "META-INF/" + if (relativePath.startsWith("./")) relativePath.substringAfter("./") else relativePath
    }

    for (moduleRoot in moduleRoots) {
      val file = moduleRoot.resolve(moduleRootRelativePath)
      if (file.exists()) {
        return try {
          ResourceResolver.Result.Found(file, file.inputStream())
        } catch (e: Exception) {
          ResourceResolver.Result.Failed(file, e)
        }
      }
    }

    return ResourceResolver.Result.NotFound
  }