All Downloads are FREE. Search and download functionalities are using the official Maven repository.

name.remal.gradle_plugins.dsl.artifact.ArtifactsCache.kt Maven / Gradle / Ivy

package name.remal.gradle_plugins.dsl.artifact

import com.google.common.cache.CacheBuilder
import com.google.common.cache.CacheLoader
import com.google.common.cache.LoadingCache
import org.slf4j.LoggerFactory
import java.io.File
import java.util.concurrent.TimeUnit.MINUTES

object ArtifactsCache {

    @JvmStatic
    private val logger = LoggerFactory.getLogger(ArtifactsCache::class.java)

    private val cache: LoadingCache = CacheBuilder.newBuilder()
        .softValues()
        .expireAfterAccess(5, MINUTES)
        .build(object : CacheLoader() {
            override fun load(file: File) = Artifact(file)
        });

    operator fun get(file: File): Artifact = cache[file.absoluteFile]

    fun invalidate(file: File) {
        logger.debug("Invalidate artifacts cache for {}", file)
        cache.invalidate(file)
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy