override fun resolveExactPropertyResourceBundle()

in intellij-plugin-structure/structure-classes/src/main/java/com/jetbrains/plugin/structure/classes/resolvers/AbstractJarResolver.kt [42:69]


  override fun resolveExactPropertyResourceBundle(baseName: String, locale: Locale): ResolutionResult<PropertyResourceBundle> {
    if (baseName !in bundleNames) {
      return ResolutionResult.NotFound
    }

    val control = ResourceBundle.Control.getControl(ResourceBundle.Control.FORMAT_PROPERTIES)
    val bundleName: String = control.toBundleName(baseName, locale)

    val resourceName: String = control.toResourceName(bundleName, "properties")

    return try {
      val propertyResourceBundle = readPropertyResourceBundle(resourceName) ?: return ResolutionResult.NotFound
      return ResolutionResult.Found(propertyResourceBundle, fileOrigin)
    } catch (e: IOException) {
      failedToRead(resourceName, e, "I/O error")
    } catch (e: NullPointerException) {
      failedToRead(resourceName, e, "Stream is null")
    } catch (e: IllegalArgumentException) {
      failedToRead(resourceName, e, "Stream contains malformed Unicode sequences")
    } catch (e: MalformedInputException) {
      failedToRead(resourceName, e, "Stream contains an invalid UTF-8 sequence")
    } catch (e: UnmappableCharacterException) {
      failedToRead(resourceName, e, "Stream contains an unmappable UTF-8 sequence")
    } catch (e: Exception) {
      e.rethrowIfInterrupted()
      ResolutionResult.Invalid(e.message ?: e.javaClass.name)
    }
  }