keycloak-memoizeit

Details

diff --git a/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java b/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
index 3d0aab8..a5c7e97 100755
--- a/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
+++ b/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
@@ -78,7 +78,11 @@ public class DefaultInfinispanConnectionProviderFactory implements InfinispanCon
 
     private void initEmbedded() {
         GlobalConfigurationBuilder gcb = new GlobalConfigurationBuilder();
-        if (config.getBoolean("transport", false)) {
+
+        boolean clustered = config.getBoolean("clustered", false);
+        boolean async = config.getBoolean("async", true);
+
+        if (clustered) {
             gcb.transport().defaultTransport();
         }
         cacheManager = new DefaultCacheManager(gcb.build());
@@ -86,35 +90,32 @@ public class DefaultInfinispanConnectionProviderFactory implements InfinispanCon
 
         logger.debug("Started embedded Infinispan cache container");
 
-        cacheManager.defineConfiguration("sessions", createConfiguration("sessions"));
-        cacheManager.defineConfiguration("realms", createConfiguration("realms"));
-    }
-
-    private Configuration createConfiguration(String cacheName) {
-        Config.Scope cacheConfig = config.scope("caches", cacheName);
-        ConfigurationBuilder cb = new ConfigurationBuilder();
-
-        String cacheMode = cacheConfig.get("cacheMode", "local");
-        boolean async = cacheConfig.getBoolean("async", false);
-
-        if (cacheMode.equalsIgnoreCase("replicated")) {
-            cb.clustering().cacheMode(async ? CacheMode.REPL_ASYNC : CacheMode.REPL_SYNC);
-        } else if (cacheMode.equalsIgnoreCase("distributed")) {
-            cb.clustering().cacheMode(async ? CacheMode.DIST_ASYNC : CacheMode.DIST_SYNC);
-
-            int owners = cacheConfig.getInt("owners", 2);
-            int segments = cacheConfig.getInt("segments", 60);
-
-            cb.clustering().hash().numOwners(owners).numSegments(segments);
-        } else if (cacheMode.equalsIgnoreCase("invalidation")) {
-            cb.clustering().cacheMode(async ? CacheMode.INVALIDATION_ASYNC : CacheMode.INVALIDATION_SYNC);
-        } else if (!cacheMode.equalsIgnoreCase("local")) {
-            throw new RuntimeException("Invalid cache mode " + cacheMode);
+        ConfigurationBuilder invalidationConfigBuilder = new ConfigurationBuilder();
+        if (clustered) {
+            invalidationConfigBuilder.clustering().cacheMode(async ? CacheMode.INVALIDATION_ASYNC : CacheMode.INVALIDATION_SYNC);
         }
+        Configuration invalidationCacheConfiguration = invalidationConfigBuilder.build();
+
+        cacheManager.defineConfiguration("realms", invalidationCacheConfiguration);
+        cacheManager.defineConfiguration("users", invalidationCacheConfiguration);
+
+        ConfigurationBuilder sessionConfigBuilder = new ConfigurationBuilder();
+        if (clustered) {
+            String sessionsMode = config.get("sessionsMode", "distributed");
+            if (sessionsMode.equalsIgnoreCase("replicated")) {
+                sessionConfigBuilder.clustering().cacheMode(async ? CacheMode.REPL_ASYNC : CacheMode.REPL_SYNC);
+            } else if (sessionsMode.equalsIgnoreCase("distributed")) {
+                sessionConfigBuilder.clustering().cacheMode(async ? CacheMode.DIST_ASYNC : CacheMode.DIST_SYNC);
+            } else {
+                throw new RuntimeException("Invalid value for sessionsMode");
+            }
 
-        logger.debugv("Configured cache {0} with mode={1}, async={2}", cacheName, cacheMode, async);
+            sessionConfigBuilder.clustering().hash()
+                    .numOwners(config.getInt("sessionsOwners", 2))
+                    .numSegments(config.getInt("sessionsSegments", 60)).build();
+        }
 
-        return cb.build();
+        cacheManager.defineConfiguration("sessions", sessionConfigBuilder.build());
     }
 
 }
diff --git a/connections/jpa-liquibase/pom.xml b/connections/jpa-liquibase/pom.xml
index 5196c42..6cd103f 100755
--- a/connections/jpa-liquibase/pom.xml
+++ b/connections/jpa-liquibase/pom.xml
@@ -40,8 +40,6 @@
             <plugin>
                 <groupId>org.liquibase</groupId>
                 <artifactId>liquibase-maven-plugin</artifactId>
-<!-- set to ${liquibase.version} once Liquibase 3.2.3 is released (https://liquibase.jira.com/browse/CORE-1987) -->	
-                <version>3.1.1</version>
                 <configuration>
                     <changeLogFile>META-INF/jpa-changelog-master.xml</changeLogFile>
 
diff --git a/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.0.0.Final.xml b/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.0.0.Final.xml
index 5b5e921..856baee 100644
--- a/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.0.0.Final.xml
+++ b/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.0.0.Final.xml
@@ -63,7 +63,7 @@
             </column>
             <column name="DEVICE" type="VARCHAR(255)"/>
             <column name="HASH_ITERATIONS" type="INT(10)"/>
-            <column name="SALT" type="BINARY(255)"/>
+            <column name="SALT" type="VARBINARY(16)"/>
             <column name="TYPE" type="VARCHAR(255)"/>
             <column name="VALUE" type="VARCHAR(255)"/>
             <column name="USER_ID" type="VARCHAR(36)"/>

pom.xml 6(+6 -0)

diff --git a/pom.xml b/pom.xml
index 763bdcb..8b26ca0 100755
--- a/pom.xml
+++ b/pom.xml
@@ -582,6 +582,12 @@
                     <artifactId>minify-maven-plugin</artifactId>
                     <version>1.7.2</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.liquibase</groupId>
+                    <artifactId>liquibase-maven-plugin</artifactId>
+                    <!-- set to ${liquibase.version} once Liquibase 3.2.3 is released (https://liquibase.jira.com/browse/CORE-1987) -->
+                    <version>3.1.1</version>
+                </plugin>
             </plugins>
         </pluginManagement>
 
diff --git a/testsuite/integration/pom.xml b/testsuite/integration/pom.xml
index 6941eb3..67068d8 100755
--- a/testsuite/integration/pom.xml
+++ b/testsuite/integration/pom.xml
@@ -437,5 +437,35 @@
             </dependencies>
         </profile>
 
+        <profile>
+            <id>clean-jpa</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.liquibase</groupId>
+                        <artifactId>liquibase-maven-plugin</artifactId>
+                        <configuration>
+                            <changeLogFile>META-INF/jpa-changelog-master.xml</changeLogFile>
+
+                            <url>${keycloak.connectionsJpa.url}</url>
+                            <driver>${keycloak.connectionsJpa.driver}</driver>
+                            <username>${keycloak.connectionsJpa.user}</username>
+                            <password>${keycloak.connectionsJpa.password}</password>
+
+                            <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>clean-jpa</id>
+                                <phase>clean</phase>
+                                <goals>
+                                    <goal>dropAll</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 </project>