fun getArtifact()

in src/main/kotlin/com/github/mkartashev/hserr/miner/HsErrLog.kt [19:42]


    fun <T: Artifact> getArtifact(cls: KClass<T>): T? {
        var result: Artifact? = null
        if (!artifactByClass.containsKey(cls)) {
            // NB: can't use "computeIfAbsent()" because "extract()" may modify
            // the underlying map
            val extractor = ArtifactExtractorRegistry.get(cls)
            try {
                result = extractor.extract(this)
            } catch (e: ArtifactExtractionException) {
                if (enableDebug) {
                    println(e.message)
                }
            } catch (e: Exception) {
                if (!catchAll) throw e
                else println(e.message)
            } finally {
                artifactByClass[cls] = result
            }
        } else {
            result = artifactByClass[cls]
        }

        return  cls.safeCast(result)
    }