keycloak-aplcache
Changes
connections/file/src/main/java/org/keycloak/connections/file/DefaultFileConnectionProviderFactory.java 13(+1 -12)
Details
diff --git a/connections/file/src/main/java/org/keycloak/connections/file/DefaultFileConnectionProviderFactory.java b/connections/file/src/main/java/org/keycloak/connections/file/DefaultFileConnectionProviderFactory.java
index 26c14de..9bfe362 100755
--- a/connections/file/src/main/java/org/keycloak/connections/file/DefaultFileConnectionProviderFactory.java
+++ b/connections/file/src/main/java/org/keycloak/connections/file/DefaultFileConnectionProviderFactory.java
@@ -90,18 +90,7 @@ public class DefaultFileConnectionProviderFactory implements FileConnectionProvi
ImportUtils.importFromStream(session, JsonSerialization.mapper, fis, Strategy.IGNORE_EXISTING);
session.realms().getMigrationModel().setStoredVersion(model.getModelVersion());
- List<RealmRepresentation> realmReps = new ArrayList<RealmRepresentation>();
- for (RealmRepresentation realmRep : model.getRealms()) {
- if (Config.getAdminRealm().equals(realmRep.getRealm())) {
- realmReps.add(0, realmRep);
- } else {
- realmReps.add(realmRep);
- }
- }
- for (RealmRepresentation realmRep : realmReps) {
- ImportUtils.importRealm(session, realmRep, Strategy.IGNORE_EXISTING);
- }
-
+ ImportUtils.importRealms(session, model.getRealms(), Strategy.IGNORE_EXISTING);
} catch (IOException ioe) {
logger.error("Unable to read model file " + kcdata.getAbsolutePath(), ioe);
} finally {
diff --git a/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java b/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java
index 4940820..2cad3c1 100755
--- a/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java
+++ b/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java
@@ -20,10 +20,8 @@ import org.keycloak.representations.idm.UserRepresentation;
import java.io.IOException;
import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
import org.keycloak.exportimport.ExportImportConfig;
/**
@@ -33,6 +31,21 @@ public class ImportUtils {
private static final Logger logger = Logger.getLogger(ImportUtils.class);
+ public static void importRealms(KeycloakSession session, Collection<RealmRepresentation> realms, Strategy strategy) {
+ // Import admin realm first
+ for (RealmRepresentation realm : realms) {
+ if (Config.getAdminRealm().equals(realm.getRealm())) {
+ importRealm(session, realm, strategy);
+ }
+ }
+
+ for (RealmRepresentation realm : realms) {
+ if (!Config.getAdminRealm().equals(realm.getRealm())) {
+ importRealm(session, realm, strategy);
+ }
+ }
+ }
+
/**
* Fully import realm from representation, save it to model and return model of newly created realm
*
@@ -41,7 +54,7 @@ public class ImportUtils {
* @param strategy specifies whether to overwrite or ignore existing realm or user entries
* @return newly imported realm (or existing realm if ignoreExisting is true and realm of this name already exists)
*/
- public static RealmModel importRealm(KeycloakSession session, RealmRepresentation rep, Strategy strategy) {
+ public static void importRealm(KeycloakSession session, RealmRepresentation rep, Strategy strategy) {
String realmName = rep.getRealm();
RealmProvider model = session.realms();
RealmModel realm = model.getRealmByName(realmName);
@@ -49,7 +62,7 @@ public class ImportUtils {
if (realm != null) {
if (strategy == Strategy.IGNORE_EXISTING) {
logger.infof("Realm '%s' already exists. Import skipped", realmName);
- return realm;
+ return;
} else {
logger.infof("Realm '%s' already exists. Removing it before import", realmName);
if (Config.getAdminRealm().equals(realm.getId())) {
@@ -73,7 +86,7 @@ public class ImportUtils {
logger.infof("Realm '%s' imported", realmName);
}
- return realm;
+ return;
}
private static void refreshMasterAdminApps(RealmProvider model, RealmModel realm) {
@@ -145,9 +158,7 @@ public class ImportUtils {
*/
public static void importFromStream(KeycloakSession session, ObjectMapper mapper, InputStream is, Strategy strategy) throws IOException {
Map<String, RealmRepresentation> realmReps = getRealmsFromStream(mapper, is);
- for (RealmRepresentation realmRep : realmReps.values()) {
- importRealm(session, realmRep, strategy);
- }
+ importRealms(session, realmReps.values(), strategy);
}
public static Map<String, RealmRepresentation> getRealmsFromStream(ObjectMapper mapper, InputStream is) throws IOException {
diff --git a/export-import/export-import-single-file/src/main/java/org/keycloak/exportimport/singlefile/SingleFileImportProvider.java b/export-import/export-import-single-file/src/main/java/org/keycloak/exportimport/singlefile/SingleFileImportProvider.java
index 62ae93b..7c600e8 100755
--- a/export-import/export-import-single-file/src/main/java/org/keycloak/exportimport/singlefile/SingleFileImportProvider.java
+++ b/export-import/export-import-single-file/src/main/java/org/keycloak/exportimport/singlefile/SingleFileImportProvider.java
@@ -42,9 +42,7 @@ public class SingleFileImportProvider implements ImportProvider {
@Override
protected void runExportImportTask(KeycloakSession session) throws IOException {
- for (RealmRepresentation realmRep : realmReps.values()) {
- ImportUtils.importRealm(session, realmRep, strategy);
- }
+ ImportUtils.importRealms(session, realmReps.values(), strategy);
}
});