keycloak-aplcache
Changes
connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java 55(+28 -27)
connections/jpa-liquibase/pom.xml 2(+0 -2)
pom.xml 6(+6 -0)
testsuite/integration/pom.xml 30(+30 -0)
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());
}
}
connections/jpa-liquibase/pom.xml 2(+0 -2)
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>
testsuite/integration/pom.xml 30(+30 -0)
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>