Export/import refactoring to use same representation as admin endpoints
This commit is contained in:
1 parent
c4ff4e030a
commit
24a492ffe0
79 files changed
+3120
-1103
No files matched your search
+84
@@ -0,0 +1,84 @@
|
||||
package org.keycloak.exportimport.singlefile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.codehaus.jackson.map.ObjectMapper;
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.exportimport.ExportProvider;
|
||||
import org.keycloak.exportimport.util.ExportImportJob;
|
||||
import org.keycloak.exportimport.util.ExportImportUtils;
|
||||
import org.keycloak.exportimport.util.ExportUtils;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
public class SingleFileExportProvider implements ExportProvider {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(SingleFileExportProvider.class);
|
||||
|
||||
private File file;
|
||||
|
||||
public SingleFileExportProvider(File file) {
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
public void setFile(File file) {
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportModel(final KeycloakSession session) throws IOException {
|
||||
logger.infof("Exporting model into file %s", this.file.getAbsolutePath());
|
||||
ExportImportUtils.runJobInTransaction(session, new ExportImportJob() {
|
||||
|
||||
@Override
|
||||
public void run() throws IOException {
|
||||
List<RealmModel> realms = session.getModel().getRealms();
|
||||
List<RealmRepresentation> reps = new ArrayList<RealmRepresentation>();
|
||||
for (RealmModel realm : realms) {
|
||||
reps.add(ExportUtils.exportRealm(realm, true));
|
||||
}
|
||||
|
||||
writeToFile(reps);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportRealm(final KeycloakSession session, final String realmName) throws IOException {
|
||||
logger.infof("Exporting realm '%s' into file %s", realmName, this.file.getAbsolutePath());
|
||||
ExportImportUtils.runJobInTransaction(session, new ExportImportJob() {
|
||||
|
||||
@Override
|
||||
public void run() throws IOException {
|
||||
RealmModel realm = session.getModel().getRealmByName(realmName);
|
||||
RealmRepresentation realmRep = ExportUtils.exportRealm(realm, true);
|
||||
writeToFile(realmRep);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
private ObjectMapper getObjectMapper() {
|
||||
return JsonSerialization.prettyMapper;
|
||||
}
|
||||
|
||||
private void writeToFile(Object reps) throws IOException {
|
||||
FileOutputStream stream = new FileOutputStream(this.file);
|
||||
getObjectMapper().writeValue(stream, reps);
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package org.keycloak.exportimport.singlefile;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.keycloak.Config;
|
||||
import org.keycloak.exportimport.ExportImportConfig;
|
||||
import org.keycloak.exportimport.ExportProvider;
|
||||
import org.keycloak.exportimport.ExportProviderFactory;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
public class SingleFileExportProviderFactory implements ExportProviderFactory {
|
||||
|
||||
public static final String PROVIDER_ID = "singleFile";
|
||||
|
||||
@Override
|
||||
public ExportProvider create(KeycloakSession session) {
|
||||
String fileName = ExportImportConfig.getFile();
|
||||
return new SingleFileExportProvider(new File(fileName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Config.Scope config) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return PROVIDER_ID;
|
||||
}
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package org.keycloak.exportimport.singlefile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.exportimport.ImportProvider;
|
||||
import org.keycloak.exportimport.Strategy;
|
||||
import org.keycloak.exportimport.util.ExportImportJob;
|
||||
import org.keycloak.exportimport.util.ExportImportUtils;
|
||||
import org.keycloak.exportimport.util.ExportUtils;
|
||||
import org.keycloak.exportimport.util.ImportUtils;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
public class SingleFileImportProvider implements ImportProvider {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(SingleFileImportProvider.class);
|
||||
|
||||
private File file;
|
||||
|
||||
public SingleFileImportProvider(File file) {
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void importModel(final KeycloakSession session, final Strategy strategy) throws IOException {
|
||||
logger.infof("Full importing from file %s", this.file.getAbsolutePath());
|
||||
ExportImportUtils.runJobInTransaction(session, new ExportImportJob() {
|
||||
|
||||
@Override
|
||||
public void run() throws IOException {
|
||||
FileInputStream is = new FileInputStream(file);
|
||||
ImportUtils.importFromStream(session, JsonSerialization.mapper, is, strategy);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void importRealm(KeycloakSession session, String realmName, Strategy strategy) throws IOException {
|
||||
// TODO: just that single realm in case that file contains many realms?
|
||||
importModel(session, strategy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package org.keycloak.exportimport.singlefile;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.keycloak.Config;
|
||||
import org.keycloak.exportimport.ExportImportConfig;
|
||||
import org.keycloak.exportimport.ImportProvider;
|
||||
import org.keycloak.exportimport.ImportProviderFactory;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
public class SingleFileImportProviderFactory implements ImportProviderFactory {
|
||||
|
||||
@Override
|
||||
public ImportProvider create(KeycloakSession session) {
|
||||
String fileName = ExportImportConfig.getFile();
|
||||
return new SingleFileImportProvider(new File(fileName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Config.Scope config) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return SingleFileExportProviderFactory.PROVIDER_ID;
|
||||
}
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
org.keycloak.exportimport.singlefile.SingleFileExportProviderFactory
|
||||
+1
@@ -0,0 +1 @@
|
||||
org.keycloak.exportimport.singlefile.SingleFileImportProviderFactory
|
||||
Reference in new issue
Block a user