Repository: syncope Updated Branches: refs/heads/2_0_X e021f8535 -> da7fe0dc7 refs/heads/master 01daf0b25 -> a2dfa8f01
SYNCOPE-1303: fix content migration from 1.2 to 2.0.9-SNAPSHOT version - This closes #71 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/a2dfa8f0 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/a2dfa8f0 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/a2dfa8f0 Branch: refs/heads/master Commit: a2dfa8f01ec6de9a2e81d9ccf0b47a3dd7162b5e Parents: 01daf0b Author: lorenzo <[email protected]> Authored: Mon Apr 23 10:27:38 2018 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Mon Apr 23 12:11:51 2018 +0200 ---------------------------------------------------------------------- .../cli/commands/migrate/MigrateConf.java | 40 +++++++++++++++----- .../client/cli/commands/MigrateTest.java | 1 - 2 files changed, 31 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/a2dfa8f0/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java index 8edf1f8..85b60df 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java @@ -24,6 +24,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.FileWriter; import java.io.InputStream; import java.io.IOException; +import java.io.PrintWriter; import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Paths; @@ -39,6 +40,7 @@ import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; +import javax.xml.transform.TransformerException; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.staxutils.PrettyPrintXMLStreamWriter; import org.apache.syncope.client.cli.Input; @@ -127,7 +129,9 @@ public class MigrateConf { } } - private static void exec(final String src, final String dst) throws XMLStreamException, IOException { + private static void exec(final String src, final String dst) + throws XMLStreamException, IOException, TransformerException { + XMLStreamWriter writer = new PrettyPrintXMLStreamWriter( OUTPUT_FACTORY.createXMLStreamWriter(new FileWriter(dst)), 2); writer.writeStartDocument("UTF-8", "1.0"); @@ -144,6 +148,8 @@ public class MigrateConf { reader.nextTag(); // root reader.nextTag(); // dataset + String realmUUID = UUID.randomUUID().toString(); + writer.writeStartElement("AnyType"); writer.writeAttribute("id", "USER"); writer.writeAttribute("kind", "USER"); @@ -179,7 +185,7 @@ public class MigrateConf { Set<String> connInstanceCapabilities = new HashSet<>(); String lastUUID; - String syncopeConf = UUID.randomUUID().toString(); + String syncopeConf = "cd64d66f-6fff-4008-b966-a06b1cc1436d"; Map<String, String> cPlainAttrs = new HashMap<>(); Map<String, String> policies = new HashMap<>(); Map<String, String> connInstances = new HashMap<>(); @@ -203,6 +209,7 @@ public class MigrateConf { case "cschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); @@ -233,6 +240,7 @@ public class MigrateConf { case "uschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); @@ -244,6 +252,7 @@ public class MigrateConf { case "uderschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("DerSchema"); copyAttrs(reader, writer); @@ -262,6 +271,7 @@ public class MigrateConf { case "rschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); @@ -273,6 +283,7 @@ public class MigrateConf { case "rderschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("DerSchema"); copyAttrs(reader, writer); @@ -291,6 +302,7 @@ public class MigrateConf { case "mschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); @@ -302,6 +314,7 @@ public class MigrateConf { case "mderschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); + writer.writeEndElement(); writer.writeStartElement("DerSchema"); copyAttrs(reader, writer); @@ -530,7 +543,7 @@ public class MigrateConf { reporter.writeEndElement(); } else { writer.writeStartElement("MappingItem"); - copyAttrs(reader, writer, + copyAttrs(reader, writer, "purpose", "accountid", "intMappingType", "mapping_id", "intMappingType", "intAttrName"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("mapping_id", mappings. @@ -540,9 +553,13 @@ public class MigrateConf { writeIntAttrName( uIntMappingType, "intAttrName", - mappings.get(getAttributeValue(reader, "intAttrName")), + getAttributeValue(reader, "intAttrName"), writer); + String purposeValue = getAttributeValue(reader, "purpose"); + writer.writeAttribute("purpose", + "SYNCHRONIZATION".equals(purposeValue) ? "PULL" : purposeValue); + writer.writeEndElement(); } break; @@ -637,6 +654,7 @@ public class MigrateConf { case "SyncTask": writer.writeAttribute("DTYPE", "PullTask"); writer.writeAttribute("syncStatus", getAttributeValue(reader, "syncStatus")); + writer.writeAttribute("destinationRealm_id", realmUUID); String fullReconciliation = getAttributeValue(reader, "fullReconciliation"); if ("1".equals(fullReconciliation)) { @@ -673,6 +691,7 @@ public class MigrateConf { writer.writeAttribute("template", template.toString()); writer.writeEndElement(); } + break; case "SchedTask": @@ -731,8 +750,8 @@ public class MigrateConf { String syncActionClassName = getAttributeValue(reader, "element"); switch (syncActionClassName) { case "org.apache.syncope.core.sync.impl.LDAPMembershipSyncActions": - syncActionClassName = - "org.apache.syncope.core.provisioning.java.pushpull.LDAPMembershipPullActions"; + syncActionClassName = "org.apache.syncope.core.provisioning." + + "java.pushpull.LDAPMembershipPullActions"; break; case "org.apache.syncope.core.sync.impl.LDAPPasswordSyncActions": @@ -804,7 +823,7 @@ public class MigrateConf { "notification_id", notifications.get(getAttributeValue(reader, "notification_id"))); writer.writeAttribute( "event", getAttributeValue(reader, "events"). - replaceAll("Controller", "Logic")); + replaceAll("Controller", "Logic")); writer.writeEndElement(); break; @@ -865,7 +884,7 @@ public class MigrateConf { } writer.writeStartElement("Realm"); - writer.writeAttribute("id", UUID.randomUUID().toString()); + writer.writeAttribute("id", realmUUID); writer.writeAttribute("name", "/"); if (globalAccountPolicy != null) { writer.writeAttribute("accountPolicy_id", globalAccountPolicy); @@ -897,7 +916,10 @@ public class MigrateConf { "Migration completed; file successfully created under " + input.secondParameter()); } catch (Exception e) { LOG.error("Error migrating configuration from {}", input.firstParameter(), e); - migrateResultManager.genericError("Error performing configuration migration: " + e.getMessage()); + StringWriter errors = new StringWriter(); + e.printStackTrace(new PrintWriter(errors)); + migrateResultManager.genericError("Error performing configuration migration: " + + errors.toString()); } } else { migrateResultManager.commandOptionError(HELP_MESSAGE); http://git-wip-us.apache.org/repos/asf/syncope/blob/a2dfa8f0/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java ---------------------------------------------------------------------- diff --git a/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java b/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java index cdf83b1..0b1c749 100644 --- a/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java +++ b/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java @@ -76,7 +76,6 @@ public class MigrateTest { // 3. attempt to set initial content from the migrated MasterContent.xml SAXParserFactory factory = SAXParserFactory.newInstance(); try (InputStream in = new FileInputStream(args[3])) { - SAXParser parser = factory.newSAXParser(); parser.parse(in, new ContentLoaderHandler(dataSource, ROOT_ELEMENT, false)); }
