keycloak-uncached

[KEYCLOAK-8133] - Can't Sucessfully inject a custom KeycloakSpringBootConfigResolver

8/28/2018 6:49:07 PM

Details

diff --git a/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakBaseSpringBootConfiguration.java b/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakBaseSpringBootConfiguration.java
index 517d6c6..143368a 100755
--- a/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakBaseSpringBootConfiguration.java
+++ b/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakBaseSpringBootConfiguration.java
@@ -32,6 +32,7 @@ import org.eclipse.jetty.server.handler.HandlerList;
 import org.eclipse.jetty.server.handler.HandlerWrapper;
 import org.eclipse.jetty.util.security.Constraint;
 import org.eclipse.jetty.webapp.WebAppContext;
+import org.keycloak.adapters.KeycloakConfigResolver;
 import org.keycloak.adapters.jetty.KeycloakJettyAuthenticator;
 import org.keycloak.adapters.undertow.KeycloakServletExtension;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -54,6 +55,10 @@ public class KeycloakBaseSpringBootConfiguration {
         KeycloakSpringBootConfigResolver.setAdapterConfig(keycloakProperties);
     }
 
+    @Autowired (required = false)
+    public void setKeycloakConfigResolvers(KeycloakConfigResolver configResolver) {
+        KeycloakSpringBootConfigResolver.setDelegateConfigResolver(configResolver);
+    }
 
     static class KeycloakBaseUndertowDeploymentInfoCustomizer  {
 
diff --git a/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakSpringBootConfigResolver.java b/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakSpringBootConfigResolver.java
index 2f90402..8e809c5 100755
--- a/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakSpringBootConfigResolver.java
+++ b/adapters/oidc/spring-boot-adapter-core/src/main/java/org/keycloak/adapters/springboot/KeycloakSpringBootConfigResolver.java
@@ -17,6 +17,7 @@
 
 package org.keycloak.adapters.springboot;
 
+import org.keycloak.adapters.KeycloakConfigResolver;
 import org.keycloak.adapters.KeycloakDeployment;
 import org.keycloak.adapters.KeycloakDeploymentBuilder;
 import org.keycloak.adapters.OIDCHttpFacade;
@@ -24,22 +25,31 @@ import org.keycloak.representations.adapters.config.AdapterConfig;
 
 public class KeycloakSpringBootConfigResolver implements org.keycloak.adapters.KeycloakConfigResolver {
 
-    private KeycloakDeployment keycloakDeployment;
-
     private static AdapterConfig adapterConfig;
+    private static KeycloakConfigResolver delegateConfigResolver;
+
+    private KeycloakDeployment keycloakDeployment;
 
     @Override
     public KeycloakDeployment resolve(OIDCHttpFacade.Request request) {
-        if (keycloakDeployment != null) {
+        if (delegateConfigResolver == null) {
+            if (keycloakDeployment != null) {
+                return keycloakDeployment;
+            }
+
+            keycloakDeployment = KeycloakDeploymentBuilder.build(KeycloakSpringBootConfigResolver.adapterConfig);
+
             return keycloakDeployment;
         }
 
-        keycloakDeployment = KeycloakDeploymentBuilder.build(KeycloakSpringBootConfigResolver.adapterConfig);
-
-        return keycloakDeployment;
+        return delegateConfigResolver.resolve(request);
     }
 
     static void setAdapterConfig(AdapterConfig adapterConfig) {
         KeycloakSpringBootConfigResolver.adapterConfig = adapterConfig;
     }
+
+    static void setDelegateConfigResolver(KeycloakConfigResolver configResolver) {
+        KeycloakSpringBootConfigResolver.delegateConfigResolver = configResolver;
+    }
 }
\ No newline at end of file