Export/import refactoring to use same representation as admin endpoints

This commit is contained in:
mposolda committed 2014-07-15 05:35:24 +02:00
1 parent c4ff4e030a
commit 24a492ffe0
79 files changed
+3120 -1103

No files matched your search

@@ -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);
}
}
@@ -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;
}
}
@@ -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() {
}
}
@@ -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;
}
}
@@ -0,0 +1 @@
org.keycloak.exportimport.singlefile.SingleFileExportProviderFactory
@@ -0,0 +1 @@
org.keycloak.exportimport.singlefile.SingleFileImportProviderFactory