From aaec4e940a518055cdf22a7e4a0717815f39fc82 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Fri, 8 Mar 2024 22:19:55 +0100 Subject: [PATCH] fix: Prevent memory leak --- .../wahlrecht/security/SpringPolicyEnforcerFilter.kt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/module-server/src/main/kotlin/de/twomartens/wahlrecht/security/SpringPolicyEnforcerFilter.kt b/module-server/src/main/kotlin/de/twomartens/wahlrecht/security/SpringPolicyEnforcerFilter.kt index 4000cf8..13043b2 100644 --- a/module-server/src/main/kotlin/de/twomartens/wahlrecht/security/SpringPolicyEnforcerFilter.kt +++ b/module-server/src/main/kotlin/de/twomartens/wahlrecht/security/SpringPolicyEnforcerFilter.kt @@ -12,18 +12,15 @@ import org.keycloak.adapters.authorization.spi.ConfigurationResolver import org.keycloak.adapters.authorization.spi.HttpRequest import org.keycloak.representations.adapters.config.PolicyEnforcerConfig import java.io.IOException -import java.util.concurrent.ConcurrentHashMap class SpringPolicyEnforcerFilter(private val configResolver: ConfigurationResolver) : Filter { - private val policyEnforcer: MutableMap = ConcurrentHashMap() - @Throws(IOException::class, ServletException::class) override fun doFilter(servletRequest: ServletRequest, servletResponse: ServletResponse?, filterChain: FilterChain) { val request = servletRequest as HttpServletRequest val response = servletResponse as HttpServletResponse? val httpRequest = ServletHttpRequest(request) { extractBearerToken(request) } - val policyEnforcer = getOrCreatePolicyEnforcer(httpRequest) + val policyEnforcer = createPolicyEnforcer(httpRequest) val authzContext = policyEnforcer.enforce(httpRequest, ServletHttpResponse(response)) request.setAttribute(AuthorizationContext::class.java.name, authzContext) if (authzContext.isGranted) { @@ -53,8 +50,8 @@ class SpringPolicyEnforcerFilter(private val configResolver: ConfigurationResolv return null } - private fun getOrCreatePolicyEnforcer(request: HttpRequest): SpringPolicyEnforcer { - return policyEnforcer.computeIfAbsent(configResolver.resolve(request)) { createPolicyEnforcer(it) } + private fun createPolicyEnforcer(request: HttpRequest): SpringPolicyEnforcer { + return createPolicyEnforcer(configResolver.resolve(request)) } private fun createPolicyEnforcer(enforcerConfig: PolicyEnforcerConfig): SpringPolicyEnforcer {