keycloak-uncached
Changes
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportPropertiesManager.java 152(+0 -152)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportProviderImpl.java 82(+0 -82)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/directory/TmpDirExportImportIOProvider.java 36(+0 -36)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/directory/TmpDirExportWriter.java 82(+0 -82)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/directory/TmpDirImportReader.java 67(+0 -67)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/ExportImportIOProvider.java 14(+0 -14)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/ExportWriter.java 13(+0 -13)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/ImportReader.java 13(+0 -13)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/zip/EncryptedZIPExportWriter.java 66(+0 -66)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/zip/EncryptedZIPImportReader.java 70(+0 -70)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/io/zip/EncryptedZIPIOProvider.java 48(+0 -48)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelExporter.java 335(+0 -335)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelImporter.java 327(+0 -327)
export-import/export-import-impl/src/main/resources/META-INF/services/org.keycloak.exportimport.ExportImportProvider 1(+0 -1)
export-import/export-import-impl/src/main/resources/META-INF/services/org.keycloak.exportimport.io.ExportImportIOProvider 2(+0 -2)
export-import/export-import-impl/src/test/java/org/keycloak/exportimport/JPAToMongoExportImportTest.java 14(+0 -14)
export-import/export-import-impl/src/test/java/org/keycloak/exportimport/MongoToJPAExportImportTest.java 17(+0 -17)
export-import/pom.xml 1(+0 -1)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheModelProvider.java 14(+14 -0)
server/pom.xml 12(+11 -1)
testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java 39(+30 -9)
testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java 7(+4 -3)
testsuite/tools/pom.xml 12(+11 -1)
Details
export-import/pom.xml 1(+0 -1)
diff --git a/export-import/pom.xml b/export-import/pom.xml
index 15d39f6..72468fa 100755
--- a/export-import/pom.xml
+++ b/export-import/pom.xml
@@ -16,7 +16,6 @@
<modules>
<module>export-import-api</module>
- <module>export-import-impl</module>
<module>export-import-dir</module>
<module>export-import-single-file</module>
<module>export-import-zip</module>
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheModelProvider.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheModelProvider.java
index d116744..edc79e2 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheModelProvider.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheModelProvider.java
@@ -266,9 +266,23 @@ public class DefaultCacheModelProvider implements CacheModelProvider {
@Override
public boolean removeRealm(String id) {
cache.invalidateCachedRealmById(id);
+
+ RealmModel realm = getDelegate().getRealm(id);
+ Set<RoleModel> realmRoles = null;
+ if (realm != null) {
+ realmRoles = realm.getRoles();
+ }
+
boolean didIt = getDelegate().removeRealm(id);
realmInvalidations.add(id);
+ // TODO: Temporary workaround to invalidate cached realm roles
+ if (didIt && realmRoles != null) {
+ for (RoleModel role : realmRoles) {
+ roleInvalidations.add(role.getId());
+ }
+ }
+
return didIt;
}
diff --git a/project-integrations/aerogear-ups/auth-server/pom.xml b/project-integrations/aerogear-ups/auth-server/pom.xml
index 2ea0015..a689697 100755
--- a/project-integrations/aerogear-ups/auth-server/pom.xml
+++ b/project-integrations/aerogear-ups/auth-server/pom.xml
@@ -167,7 +167,12 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
- <artifactId>keycloak-export-import-impl</artifactId>
+ <artifactId>keycloak-export-import-dir</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-export-import-single-file</artifactId>
<version>${project.version}</version>
</dependency>
server/pom.xml 12(+11 -1)
diff --git a/server/pom.xml b/server/pom.xml
index a086cee..7ab2cbb 100755
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -284,7 +284,17 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
- <artifactId>keycloak-export-import-impl</artifactId>
+ <artifactId>keycloak-export-import-dir</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-export-import-zip</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-export-import-single-file</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
index 20b5f09..a3e9df9 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
@@ -5,8 +5,6 @@ import java.util.Properties;
import org.junit.Assert;
import org.junit.ClassRule;
-import org.junit.FixMethodOrder;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExternalResource;
import org.junit.rules.RuleChain;
@@ -25,7 +23,6 @@ import org.keycloak.models.UserModel;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.testsuite.rule.KeycloakRule;
-import org.keycloak.testutils.KeycloakServer;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -39,7 +36,7 @@ public class ExportImportTest {
@Override
protected void before() throws Throwable {
- if (System.getProperty("hibernate.connection.url") == null) {
+ if (System.getProperty("hibernate.connection.url") == null) {
String baseExportImportDir = getExportImportTestDirectory();
File oldDBFile = new File(baseExportImportDir, "keycloakDB.h2.db");
@@ -64,6 +61,29 @@ public class ExportImportTest {
}
};
+ // We want data to be persisted among server restarts
+ private static ExternalResource mongoRule = new ExternalResource() {
+
+ private static final String MONGO_CLEAR_ON_STARTUP_PROP_NAME = "keycloak.model.mongo.clearOnStartup";
+ private String previousMongoClearOnStartup;
+
+ @Override
+ protected void before() throws Throwable {
+ previousMongoClearOnStartup = System.getProperty(MONGO_CLEAR_ON_STARTUP_PROP_NAME);
+ System.setProperty(MONGO_CLEAR_ON_STARTUP_PROP_NAME, "false");
+ }
+
+ @Override
+ protected void after() {
+ if (previousMongoClearOnStartup != null) {
+ System.setProperty(MONGO_CLEAR_ON_STARTUP_PROP_NAME, "false");
+ } else {
+ System.getProperties().remove(MONGO_CLEAR_ON_STARTUP_PROP_NAME);
+ }
+ }
+
+ };
+
private static KeycloakRule keycloakRule = new KeycloakRule( new KeycloakRule.KeycloakSetup() {
@Override
@@ -79,9 +99,10 @@ public class ExportImportTest {
@ClassRule
public static TestRule chain = RuleChain
.outerRule(hibernateSetupRule)
+ .around(mongoRule)
.around(keycloakRule);
- //@Test
+ @Test
public void testDirFullExportImport() throws Throwable {
ExportImportConfig.setProvider(DirExportProviderFactory.PROVIDER_ID);
String targetDirPath = getExportImportTestDirectory() + File.separator + "dirExport";
@@ -95,7 +116,7 @@ public class ExportImportTest {
Assert.assertEquals(4, new File(targetDirPath).listFiles().length);
}
- //@Test
+ @Test
public void testDirRealmExportImport() throws Throwable {
ExportImportConfig.setProvider(DirExportProviderFactory.PROVIDER_ID);
String targetDirPath = getExportImportTestDirectory() + File.separator + "dirRealmExport";
@@ -118,7 +139,7 @@ public class ExportImportTest {
testFullExportImport();
}
- //@Test
+ @Test
public void testSingleFileRealmExportImport() throws Throwable {
ExportImportConfig.setProvider(SingleFileExportProviderFactory.PROVIDER_ID);
String targetFilePath = getExportImportTestDirectory() + File.separator + "singleFile-realm.json";
@@ -127,7 +148,7 @@ public class ExportImportTest {
testRealmExportImport();
}
- //@Test
+ @Test
public void testZipFullExportImport() throws Throwable {
ExportImportConfig.setProvider(ZipExportProviderFactory.PROVIDER_ID);
String zipFilePath = getExportImportTestDirectory() + File.separator + "export-full.zip";
@@ -139,7 +160,7 @@ public class ExportImportTest {
testFullExportImport();
}
- //@Test
+ @Test
public void testZipRealmExportImport() throws Throwable {
ExportImportConfig.setProvider(ZipExportProviderFactory.PROVIDER_ID);
String zipFilePath = getExportImportTestDirectory() + File.separator + "export-realm.zip";
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java
index 8deadb7..14a106c 100755
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java
@@ -6,6 +6,7 @@ import org.apache.log.Logger;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
+import org.keycloak.models.utils.RepresentationToModel;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.managers.RealmManager;
@@ -77,9 +78,9 @@ public class CreateRealmsWorker implements Worker {
// Add required credentials
if (createRequiredCredentials) {
- realmManager.addRequiredCredential(realm, CredentialRepresentation.PASSWORD);
- realmManager.addRequiredCredential(realm, CredentialRepresentation.TOTP);
- realmManager.addRequiredCredential(realm, CredentialRepresentation.CLIENT_CERT);
+ RepresentationToModel.addRequiredCredential(realm, CredentialRepresentation.PASSWORD);
+ RepresentationToModel.addRequiredCredential(realm, CredentialRepresentation.TOTP);
+ RepresentationToModel.addRequiredCredential(realm, CredentialRepresentation.CLIENT_CERT);
}
log.info("Finished creation of realm " + realmName);
testsuite/tools/pom.xml 12(+11 -1)
diff --git a/testsuite/tools/pom.xml b/testsuite/tools/pom.xml
index c630624..d3b9867 100755
--- a/testsuite/tools/pom.xml
+++ b/testsuite/tools/pom.xml
@@ -283,7 +283,17 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
- <artifactId>keycloak-export-import-impl</artifactId>
+ <artifactId>keycloak-export-import-dir</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-export-import-zip</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-export-import-single-file</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git a/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java b/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java
index 4077f6b..793c8c3 100644
--- a/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java
+++ b/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java
@@ -1,6 +1,7 @@
package org.keycloak.test.tools;
import org.keycloak.exportimport.ExportImportConfig;
+import org.keycloak.exportimport.ExportImportManager;
import org.keycloak.exportimport.ExportProvider;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
@@ -231,14 +232,7 @@ public class PerfTools {
ExportImportConfig.setProvider("dir");
ExportImportConfig.setDir(dir);
- Iterator<ExportProvider> providers = ProviderLoader.load(ExportProvider.class).iterator();
-
- if (providers.hasNext()) {
- ExportProvider exportImport = providers.next();
- exportImport.checkExportImport(sessionFactory);
- } else {
- throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
- }
+ new ExportImportManager().checkExportImport(sessionFactory);
}
public static class JobRepresentation {