keycloak-aplcache

Merge pull request #1469 from Smartling/KEYCLOAK-1494-Fix Support

7/20/2015 1:48:14 AM

Details

diff --git a/integration/spring-security/src/main/java/org/keycloak/adapters/springsecurity/AdapterDeploymentContextBean.java b/integration/spring-security/src/main/java/org/keycloak/adapters/springsecurity/AdapterDeploymentContextBean.java
index 29433ef..60d413c 100644
--- a/integration/spring-security/src/main/java/org/keycloak/adapters/springsecurity/AdapterDeploymentContextBean.java
+++ b/integration/spring-security/src/main/java/org/keycloak/adapters/springsecurity/AdapterDeploymentContextBean.java
@@ -9,30 +9,48 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.core.io.Resource;
 
-import java.io.InputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 
 /**
  * Bean holding the {@link KeycloakDeployment} and {@link AdapterDeploymentContext} for this
  * Spring application context. The Keycloak deployment is loaded from the required
- * <code>WEB-INF/keycloak.json</code> file generated by Keycloak.
+ * <code>keycloak.json</code> resource file.
  *
  * @author <a href="mailto:srossillo@smartling.com">Scott Rossillo</a>
  * @version $Revision: 1 $
  */
 public class AdapterDeploymentContextBean implements ApplicationContextAware, InitializingBean {
 
+    private static final String KEYCLOAK_CONFIG_FILE = "keycloak.json";
+    private static final String KEYCLOAK_CONFIG_WEB_RESOURCE = "WEB-INF/" + KEYCLOAK_CONFIG_FILE;
+    private static final String KEYCLOAK_CONFIG_CLASSPATH_RESOURCE = "classpath:" + KEYCLOAK_CONFIG_FILE;
+
     private ApplicationContext applicationContext;
     private AdapterDeploymentContext deploymentContext;
     private KeycloakDeployment deployment;
 
     @Override
     public void afterPropertiesSet() throws Exception {
-        Resource resource = applicationContext.getResource("WEB-INF/keycloak.json");
-        InputStream is = resource.getInputStream();
-        this.deployment = KeycloakDeploymentBuilder.build(is);
+        this.deployment = loadKeycloakDeployment();
         this.deploymentContext = new AdapterDeploymentContext(deployment);
     }
 
+    private KeycloakDeployment loadKeycloakDeployment() throws IOException {
+
+        Resource resource = applicationContext.getResource(KEYCLOAK_CONFIG_WEB_RESOURCE);
+
+        if (!resource.isReadable()) {
+            resource=  applicationContext.getResource(KEYCLOAK_CONFIG_CLASSPATH_RESOURCE);
+        }
+
+        if (!resource.isReadable()) {
+            throw new FileNotFoundException(String.format("Unable to locate Keycloak from %s or %s", KEYCLOAK_CONFIG_WEB_RESOURCE, KEYCLOAK_CONFIG_CLASSPATH_RESOURCE));
+        }
+
+        return KeycloakDeploymentBuilder.build(resource.getInputStream());
+    }
+
     /**
      * Returns the Keycloak {@link AdapterDeploymentContext} for this application context.
      *