List of usage examples for javax.xml.stream XMLStreamReader getLocalName
public String getLocalName();
From source file:org.apache.syncope.client.cli.commands.migrate.MigrateConf.java
private static void exec(final String src, final String dst) throws XMLStreamException, IOException { XMLStreamWriter writer = new PrettyPrintXMLStreamWriter( OUTPUT_FACTORY.createXMLStreamWriter(new FileWriter(dst)), 2); writer.writeStartDocument("UTF-8", "1.0"); writer.writeStartElement("dataset"); StringWriter reporterSW = new StringWriter(); XMLStreamWriter reporter = new PrettyPrintXMLStreamWriter(OUTPUT_FACTORY.createXMLStreamWriter(reporterSW), 2);/*from ww w. j a v a2s . co m*/ reporter.writeStartDocument("UTF-8", "1.0"); reporter.writeStartElement("dataset"); InputStream inputStream = Files.newInputStream(Paths.get(src)); XMLStreamReader reader = INPUT_FACTORY.createXMLStreamReader(inputStream); reader.nextTag(); // root reader.nextTag(); // dataset writer.writeStartElement("AnyType"); writer.writeAttribute("id", "USER"); writer.writeAttribute("kind", "USER"); writer.writeEndElement(); writer.writeStartElement("AnyTypeClass"); writer.writeAttribute("id", "BaseUser"); writer.writeEndElement(); writer.writeStartElement("AnyType_AnyTypeClass"); writer.writeAttribute("anyType_id", "USER"); writer.writeAttribute("anyTypeClass_id", "BaseUser"); writer.writeEndElement(); writer.writeStartElement("AnyType"); writer.writeAttribute("id", "GROUP"); writer.writeAttribute("kind", "GROUP"); writer.writeEndElement(); writer.writeStartElement("AnyTypeClass"); writer.writeAttribute("id", "BaseGroup"); writer.writeEndElement(); writer.writeStartElement("AnyType_AnyTypeClass"); writer.writeAttribute("anyType_id", "GROUP"); writer.writeAttribute("anyTypeClass_id", "BaseGroup"); writer.writeEndElement(); writer.writeStartElement("AnyTypeClass"); writer.writeAttribute("id", "BaseUMembership"); writer.writeEndElement(); Set<String> connInstanceCapabilities = new HashSet<>(); String lastUUID; String syncopeConf = UUID.randomUUID().toString(); Map<String, String> cPlainAttrs = new HashMap<>(); Map<String, String> policies = new HashMap<>(); Map<String, String> connInstances = new HashMap<>(); Map<String, String> provisions = new HashMap<>(); Map<String, String> mappings = new HashMap<>(); Map<String, String> tasks = new HashMap<>(); Map<String, String> notifications = new HashMap<>(); Map<String, String> reports = new HashMap<>(); String globalAccountPolicy = null; String globalPasswordPolicy = null; while (reader.hasNext()) { if (reader.isStartElement()) { switch (reader.getLocalName().toLowerCase()) { case "syncopeconf": writer.writeStartElement("SyncopeConf"); writer.writeAttribute("id", syncopeConf); writer.writeEndElement(); break; case "cschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeEndElement(); break; case "cattr": writer.writeStartElement("CPlainAttr"); copyAttrs(reader, writer, "owner_id", "schema_name"); lastUUID = UUID.randomUUID().toString(); writer.writeAttribute("id", lastUUID); writer.writeAttribute("owner_id", syncopeConf); writer.writeAttribute("schema_id", getAttributeValue(reader, "schema_name")); writer.writeEndElement(); cPlainAttrs.put(getAttributeValue(reader, "id"), lastUUID); break; case "cattrvalue": writer.writeStartElement("CPlainAttrValue"); copyAttrs(reader, writer, "attribute_id"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("attribute_id", cPlainAttrs.get(getAttributeValue(reader, "attribute_id"))); writer.writeEndElement(); break; case "uschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("anyTypeClass_id", "BaseUser"); writer.writeEndElement(); break; case "uderschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("DerSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("anyTypeClass_id", "BaseUser"); writer.writeEndElement(); break; case "uvirschema": reporter.writeStartElement("VirSchema"); copyAttrs(reader, reporter); reporter.writeAttribute("key", getAttributeValue(reader, "name")); reporter.writeEndElement(); break; case "rschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("anyTypeClass_id", "BaseGroup"); writer.writeEndElement(); break; case "rderschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("DerSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("anyTypeClass_id", "BaseGroup"); writer.writeEndElement(); break; case "rvirschema": reporter.writeStartElement("VirSchema"); reporter.writeAttribute("key", getAttributeValue(reader, "name")); copyAttrs(reader, reporter); reporter.writeEndElement(); break; case "mschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("PlainSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("anyTypeClass_id", "BaseUMembership"); writer.writeEndElement(); break; case "mderschema": writer.writeStartElement("SyncopeSchema"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeStartElement("DerSchema"); copyAttrs(reader, writer); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("anyTypeClass_id", "BaseUMembership"); writer.writeEndElement(); break; case "mvirschema": reporter.writeStartElement("VirSchema"); copyAttrs(reader, reporter); reporter.writeAttribute("key", getAttributeValue(reader, "name")); reporter.writeEndElement(); break; case "policy": String policyId = getAttributeValue(reader, "id"); lastUUID = UUID.randomUUID().toString(); policies.put(policyId, lastUUID); ObjectNode specification = (ObjectNode) OBJECT_MAPPER .readTree(getAttributeValue(reader, "specification")); switch (getAttributeValue(reader, "DTYPE")) { case "SyncPolicy": writer.writeStartElement("PullPolicy"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("description", getAttributeValue(reader, "description")); writer.writeEndElement(); break; case "PasswordPolicy": writer.writeStartElement("PasswordPolicy"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("description", getAttributeValue(reader, "description")); if ("GLOBAL_PASSWORD".equalsIgnoreCase(getAttributeValue(reader, "type"))) { globalPasswordPolicy = lastUUID; } JsonNode allowNullPassword = specification.get("allowNullPassword"); if (allowNullPassword != null) { writer.writeAttribute("allowNullPassword", allowNullPassword.asBoolean() ? "1" : "0"); specification.remove("allowNullPassword"); } JsonNode historyLength = specification.get("historyLength"); if (historyLength != null) { writer.writeAttribute("historyLength", historyLength.asText()); specification.remove("historyLength"); } specification.put("@class", "org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf"); writer.writeEndElement(); writer.writeStartElement("PasswordRuleConfInstance"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("passwordPolicy_id", lastUUID); writer.writeAttribute("serializedInstance", specification.toString()); writer.writeEndElement(); break; case "AccountPolicy": writer.writeStartElement("AccountPolicy"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("description", getAttributeValue(reader, "description")); if ("GLOBAL_ACCOUNT".equalsIgnoreCase(getAttributeValue(reader, "type"))) { globalAccountPolicy = lastUUID; } JsonNode propagateSuspension = specification.get("propagateSuspension"); if (propagateSuspension != null) { writer.writeAttribute("propagateSuspension", propagateSuspension.asBoolean() ? "1" : "0"); specification.remove("propagateSuspension"); } JsonNode permittedLoginRetries = specification.get("permittedLoginRetries"); if (permittedLoginRetries != null) { writer.writeAttribute("maxAuthenticationAttempts", permittedLoginRetries.asText()); specification.remove("permittedLoginRetries"); } specification.put("@class", "org.apache.syncope.common.lib.policy.DefaultAccountRuleConf"); writer.writeEndElement(); writer.writeStartElement("AccountRuleConfInstance"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("accountPolicy_id", lastUUID); writer.writeAttribute("serializedInstance", specification.toString()); writer.writeEndElement(); break; default: } break; case "conninstance": lastUUID = UUID.randomUUID().toString(); connInstances.put(getAttributeValue(reader, "id"), lastUUID); writer.writeStartElement("ConnInstance"); copyAttrs(reader, writer); writer.writeAttribute("id", lastUUID); writer.writeEndElement(); break; case "conninstance_capabilities": String connInstanceId = getAttributeValue(reader, "connInstance_id"); String connInstanceKey = connInstances.get(connInstanceId); String capabilities = getAttributeValue(reader, "capabilities"); if (capabilities.startsWith("ONE_PHASE_")) { capabilities = capabilities.substring(10); } else if (capabilities.startsWith("TWO_PHASES_")) { capabilities = capabilities.substring(11); } if (!connInstanceCapabilities.contains(connInstanceId + capabilities)) { writer.writeStartElement("ConnInstance_capabilities"); writer.writeAttribute("connInstance_id", connInstanceKey); writer.writeAttribute("capability", capabilities); writer.writeEndElement(); connInstanceCapabilities.add(connInstanceId + capabilities); } break; case "externalresource": writer.writeStartElement("ExternalResource"); copyAttrs(reader, writer, "syncTraceLevel", "userializedSyncToken", "rserializedSyncToken", "propagationMode", "propagationPrimary", "connector_id", "syncPolicy_id", "passwordPolicy_id", "creator", "lastModifier", "creationDate", "lastChangeDate"); writer.writeAttribute("id", getAttributeValue(reader, "name")); writer.writeAttribute("connector_id", connInstances.get(getAttributeValue(reader, "connector_id"))); writer.writeAttribute("provisioningTraceLevel", getAttributeValue(reader, "syncTraceLevel")); String syncPolicyKey = policies.get(getAttributeValue(reader, "syncPolicy_id")); if (StringUtils.isNotBlank(syncPolicyKey)) { writer.writeAttribute("pullPolicy_id", syncPolicyKey); } String passwordPolicyKey = policies.get(getAttributeValue(reader, "passwordPolicy_id")); if (StringUtils.isNotBlank(passwordPolicyKey)) { writer.writeAttribute("passwordPolicy_id", passwordPolicyKey); } writer.writeEndElement(); break; case "externalresource_propactions": writer.writeStartElement("ExternalResource_PropActions"); writer.writeAttribute("resource_id", getAttributeValue(reader, "externalResource_name")); String propActionClassName = getAttributeValue(reader, "element"); switch (propActionClassName) { case "org.apache.syncope.core.propagation.impl.LDAPMembershipPropagationActions": propActionClassName = "org.apache.syncope.core.provisioning.java.propagation." + "LDAPMembershipPropagationActions"; break; case "org.apache.syncope.core.propagation.impl.LDAPPasswordPropagationActions": propActionClassName = "org.apache.syncope.core.provisioning.java.propagation." + "LDAPPasswordPropagationActions"; break; case "org.apache.syncope.core.propagation.impl.DBPasswordPropagationActions": propActionClassName = "org.apache.syncope.core.provisioning.java.propagation." + "DBPasswordPropagationActions"; break; default: } writer.writeAttribute("actionClassName", propActionClassName); writer.writeEndElement(); break; case "policy_externalresource": writer.writeStartElement("AccountPolicy_ExternalResource"); writer.writeAttribute("accountPolicy_id", policies.get(getAttributeValue(reader, "account_policy_id"))); writer.writeAttribute("resource_id", getAttributeValue(reader, "resource_name")); writer.writeEndElement(); break; case "umapping": String umappingId = getAttributeValue(reader, "id"); lastUUID = UUID.randomUUID().toString(); provisions.put(umappingId, lastUUID); writer.writeStartElement("Provision"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("resource_id", getAttributeValue(reader, "resource_name")); writer.writeAttribute("anyType_id", "USER"); writer.writeAttribute("objectClass", "__ACCOUNT__"); writer.writeEndElement(); lastUUID = UUID.randomUUID().toString(); mappings.put(umappingId, lastUUID); writer.writeStartElement("Mapping"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("provision_id", provisions.get(umappingId)); String uaccountLink = getAttributeValue(reader, "accountlink"); if (StringUtils.isNotBlank(uaccountLink)) { writer.writeAttribute("connObjectLink", uaccountLink); } writer.writeEndElement(); break; case "umappingitem": String uIntMappingType = getAttributeValue(reader, "intMappingType"); if (uIntMappingType.endsWith("VirtualSchema")) { reporter.writeStartElement("MappingItem"); copyAttrs(reader, reporter, "accountid", "intMappingType"); reporter.writeEndElement(); } else { writer.writeStartElement("MappingItem"); copyAttrs(reader, writer, "accountid", "intMappingType", "mapping_id", "intMappingType", "intAttrName"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("mapping_id", mappings.get(getAttributeValue(reader, "mapping_id"))); writer.writeAttribute("connObjectKey", getAttributeValue(reader, "accountid")); writeIntAttrName(uIntMappingType, "intAttrName", mappings.get(getAttributeValue(reader, "intAttrName")), writer); writer.writeEndElement(); } break; case "rmapping": String rmappingId = "10" + getAttributeValue(reader, "id"); lastUUID = UUID.randomUUID().toString(); provisions.put(rmappingId, lastUUID); writer.writeStartElement("Provision"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("resource_id", getAttributeValue(reader, "resource_name")); writer.writeAttribute("anyType_id", "GROUP"); writer.writeAttribute("objectClass", "__GROUP__"); writer.writeEndElement(); lastUUID = UUID.randomUUID().toString(); mappings.put(rmappingId, lastUUID); writer.writeStartElement("Mapping"); writer.writeAttribute("id", lastUUID); writer.writeAttribute("provision_id", provisions.get(rmappingId)); String raccountLink = getAttributeValue(reader, "accountlink"); if (StringUtils.isNotBlank(raccountLink)) { writer.writeAttribute("connObjectLink", raccountLink); } writer.writeEndElement(); break; case "rmappingitem": String rIntMappingType = getAttributeValue(reader, "intMappingType"); if (rIntMappingType.endsWith("VirtualSchema")) { reporter.writeStartElement("MappingItem"); copyAttrs(reader, reporter, "accountid", "intMappingType"); reporter.writeEndElement(); } else { writer.writeStartElement("MappingItem"); copyAttrs(reader, writer, "accountid", "intMappingType", "mapping_id", "intAttrName"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("mapping_id", mappings.get("10" + getAttributeValue(reader, "mapping_id"))); writer.writeAttribute("connObjectKey", getAttributeValue(reader, "accountid")); writeIntAttrName(rIntMappingType, "intAttrName", mappings.get(getAttributeValue(reader, "intAttrName")), writer); writer.writeEndElement(); } break; case "task": writer.writeStartElement("Task"); copyAttrs(reader, writer, "DTYPE", "propagationMode", "subjectType", "subjectId", "xmlAttributes", "jobClassName", "userTemplate", "roleTemplate", "userFilter", "roleFilter", "propagationOperation", "syncStatus", "fullReconciliation", "resource_name"); lastUUID = UUID.randomUUID().toString(); tasks.put(getAttributeValue(reader, "id"), lastUUID); writer.writeAttribute("id", lastUUID); String resourceName = getAttributeValue(reader, "resource_name"); if (StringUtils.isNotBlank(resourceName)) { writer.writeAttribute("resource_id", resourceName); } String name = getAttributeValue(reader, "name"); if (StringUtils.isNotBlank(name)) { writer.writeAttribute("name", name); } switch (getAttributeValue(reader, "DTYPE")) { case "PropagationTask": writer.writeAttribute("DTYPE", "PropagationTask"); writer.writeAttribute("anyTypeKind", getAttributeValue(reader, "subjectType")); writer.writeAttribute("anyKey", getAttributeValue(reader, "subjectId")); writer.writeAttribute("attributes", getAttributeValue(reader, "xmlAttributes")); writer.writeAttribute("operation", getAttributeValue(reader, "propagationOperation")); writer.writeEndElement(); break; case "SyncTask": writer.writeAttribute("DTYPE", "PullTask"); writer.writeAttribute("syncStatus", getAttributeValue(reader, "syncStatus")); String fullReconciliation = getAttributeValue(reader, "fullReconciliation"); if ("1".equals(fullReconciliation)) { writer.writeAttribute("pullMode", "FULL_RECONCILIATION"); } else if ("0".equals(fullReconciliation)) { writer.writeAttribute("pullMode", "INCREMENTAL"); } writer.writeEndElement(); String userTemplate = getAttributeValue(reader, "userTemplate"); if (StringUtils.isNotBlank(userTemplate)) { ObjectNode template = (ObjectNode) OBJECT_MAPPER.readTree(userTemplate); JsonNode plainAttrs = template.remove("attrs"); template.set("plainAttrs", plainAttrs); writer.writeStartElement("AnyTemplatePullTask"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("pullTask_id", lastUUID); writer.writeAttribute("anyType_id", "USER"); writer.writeAttribute("template", template.toString()); writer.writeEndElement(); } String roleTemplate = getAttributeValue(reader, "roleTemplate"); if (StringUtils.isNotBlank(roleTemplate)) { ObjectNode template = (ObjectNode) OBJECT_MAPPER.readTree(roleTemplate); JsonNode plainAttrs = template.remove("attrs"); template.set("plainAttrs", plainAttrs); writer.writeStartElement("AnyTemplatePullTask"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("pullTask_id", lastUUID); writer.writeAttribute("anyType_id", "GROUP"); writer.writeAttribute("template", template.toString()); writer.writeEndElement(); } break; case "SchedTask": writer.writeAttribute("DTYPE", "SchedTask"); writer.writeAttribute("jobDelegateClassName", getAttributeValue(reader, "jobClassName")); writer.writeEndElement(); break; case "NotificationTask": writer.writeAttribute("DTYPE", "NotificationTask"); writer.writeEndElement(); break; case "PushTask": writer.writeAttribute("DTYPE", "PushTask"); writer.writeEndElement(); String userFilter = getAttributeValue(reader, "userFilter"); if (StringUtils.isNotBlank(userFilter)) { writer.writeStartElement("PushTaskAnyFilter"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("pushTask_id", lastUUID); writer.writeAttribute("anyType_id", "USER"); writer.writeAttribute("fiql", userFilter); writer.writeEndElement(); } String roleFilter = getAttributeValue(reader, "roleFilter"); if (StringUtils.isNotBlank(roleFilter)) { writer.writeStartElement("PushTaskAnyFilter"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("pushTask_id", lastUUID); writer.writeAttribute("anyType_id", "GROUP"); writer.writeAttribute("fiql", roleFilter); writer.writeEndElement(); } break; default: } break; case "taskexec": writer.writeStartElement("TaskExec"); copyAttrs(reader, writer, "task_id"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("task_id", tasks.get(getAttributeValue(reader, "task_id"))); writer.writeEndElement(); break; case "synctask_actionsclassnames": writer.writeStartElement("PullTask_actionsClassNames"); writer.writeAttribute("pullTask_id", tasks.get(getAttributeValue(reader, "syncTask_id"))); String syncActionClassName = getAttributeValue(reader, "element"); switch (syncActionClassName) { case "org.apache.syncope.core.sync.impl.LDAPMembershipSyncActions": syncActionClassName = "org.apache.syncope.core.provisioning.java.pushpull.LDAPMembershipPullActions"; break; case "org.apache.syncope.core.sync.impl.LDAPPasswordSyncActions": syncActionClassName = "org.apache.syncope.core.provisioning.java.pushpull.LDAPPasswordPullActions"; break; case "org.apache.syncope.core.sync.impl.DBPasswordSyncActions": syncActionClassName = "org.apache.syncope.core.provisioning.java.pushpull.DBPasswordPullActions"; break; default: } writer.writeAttribute("actionClassName", syncActionClassName); writer.writeEndElement(); break; case "notification": writer.writeStartElement("Notification"); lastUUID = UUID.randomUUID().toString(); notifications.put(getAttributeValue(reader, "id"), lastUUID); writer.writeAttribute("id", lastUUID); copyAttrs(reader, writer, "recipientAttrType", "template", "userAbout", "roleAbout", "recipients", "recipientAttrName"); String recipientAttrType = getAttributeValue(reader, "recipientAttrType"); writeIntAttrName(recipientAttrType, "recipientAttrName", mappings.get(getAttributeValue(reader, "recipientAttrName")), writer); String recipients = getAttributeValue(reader, "recipients"); if (StringUtils.isNotBlank(recipients)) { writer.writeAttribute("recipientsFIQL", getAttributeValue(reader, "recipients")); } writer.writeAttribute("template_id", getAttributeValue(reader, "template")); writer.writeEndElement(); String userAbout = getAttributeValue(reader, "userAbout"); if (StringUtils.isNotBlank(userAbout)) { writer.writeStartElement("AnyAbout"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("notification_id", lastUUID); writer.writeAttribute("anyType_id", "USER"); writer.writeAttribute("filter", userAbout); writer.writeEndElement(); } String roleAbout = getAttributeValue(reader, "roleAbout"); if (StringUtils.isNotBlank(roleAbout)) { writer.writeStartElement("AnyAbout"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("notification_id", lastUUID); writer.writeAttribute("anyType_id", "GROUP"); writer.writeAttribute("filter", roleAbout); writer.writeEndElement(); } break; case "notification_events": writer.writeStartElement("Notification_events"); copyAttrs(reader, writer, "notification_id", "events"); writer.writeAttribute("notification_id", notifications.get(getAttributeValue(reader, "notification_id"))); writer.writeAttribute("event", getAttributeValue(reader, "events").replaceAll("Controller", "Logic")); writer.writeEndElement(); break; case "notificationtask_recipients": writer.writeStartElement("NotificationTask_recipients"); copyAttrs(reader, writer, "notificationTask_id"); writer.writeAttribute("notificationTask_id", tasks.get(getAttributeValue(reader, "notificationTask_id"))); writer.writeEndElement(); break; case "report": writer.writeStartElement("Report"); copyAttrs(reader, writer); lastUUID = UUID.randomUUID().toString(); reports.put(getAttributeValue(reader, "id"), lastUUID); writer.writeAttribute("id", lastUUID); writer.writeAttribute("name", getAttributeValue(reader, "name")); writer.writeEndElement(); break; case "reportletconfinstance": writer.writeStartElement("ReportletConfInstance"); copyAttrs(reader, writer, "report_id"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("report_id", reports.get(getAttributeValue(reader, "report_id"))); writer.writeEndElement(); break; case "reportexec": writer.writeStartElement("ReportExec"); copyAttrs(reader, writer, "report_id"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("report_id", reports.get(getAttributeValue(reader, "report_id"))); writer.writeEndElement(); break; case "securityquestion": writer.writeStartElement("SecurityQuestion"); copyAttrs(reader, writer); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeEndElement(); break; default: } } reader.next(); } writer.writeStartElement("Realm"); writer.writeAttribute("id", UUID.randomUUID().toString()); writer.writeAttribute("name", "/"); if (globalAccountPolicy != null) { writer.writeAttribute("accountPolicy_id", globalAccountPolicy); } if (globalPasswordPolicy != null) { writer.writeAttribute("passwordPolicy_id", globalPasswordPolicy); } writer.writeEndElement(); writer.writeEndElement(); writer.writeEndDocument(); writer.close(); reporter.writeEndElement(); reporter.writeEndDocument(); reporter.close(); System.out.println("\nVirtual items, require manual intervention:\n" + reporterSW.toString()); }
From source file:org.apache.syncope.client.console.widgets.reconciliation.ReconciliationReportParser.java
public static ReconciliationReport parse(final Date run, final InputStream in) throws XMLStreamException { XMLStreamReader streamReader = INPUT_FACTORY.createXMLStreamReader(in); streamReader.nextTag(); // root streamReader.nextTag(); // report streamReader.nextTag(); // reportlet ReconciliationReport report = new ReconciliationReport(run); List<Missing> missing = new ArrayList<>(); List<Misaligned> misaligned = new ArrayList<>(); Set<String> onSyncope = null; Set<String> onResource = null; Any user = null;/*from w w w . j a va 2 s . co m*/ Any group = null; Any anyObject = null; String lastAnyType = null; while (streamReader.hasNext()) { if (streamReader.isStartElement()) { switch (streamReader.getLocalName()) { case "users": Anys users = new Anys(); users.setTotal(Integer.valueOf(streamReader.getAttributeValue("", "total"))); report.setUsers(users); break; case "user": user = new Any(); user.setType(AnyTypeKind.USER.name()); user.setKey(streamReader.getAttributeValue("", "key")); user.setName(streamReader.getAttributeValue("", "username")); report.getUsers().getAnys().add(user); break; case "groups": Anys groups = new Anys(); groups.setTotal(Integer.valueOf(streamReader.getAttributeValue("", "total"))); report.setGroups(groups); break; case "group": group = new Any(); group.setType(AnyTypeKind.GROUP.name()); group.setKey(streamReader.getAttributeValue("", "key")); group.setName(streamReader.getAttributeValue("", "groupName")); report.getGroups().getAnys().add(group); break; case "anyObjects": lastAnyType = streamReader.getAttributeValue("", "type"); Anys anyObjects = new Anys(); anyObjects.setAnyType(lastAnyType); anyObjects.setTotal(Integer.valueOf(streamReader.getAttributeValue("", "total"))); report.getAnyObjects().add(anyObjects); break; case "anyObject": anyObject = new Any(); anyObject.setType(lastAnyType); anyObject.setKey(streamReader.getAttributeValue("", "key")); final String anyType = lastAnyType; IterableUtils.find(report.getAnyObjects(), new Predicate<Anys>() { @Override public boolean evaluate(final Anys anys) { return anyType.equals(anys.getAnyType()); } }).getAnys().add(anyObject); break; case "missing": missing.add(new Missing(streamReader.getAttributeValue("", "resource"), streamReader.getAttributeValue("", "connObjectKeyValue"))); break; case "misaligned": misaligned.add(new Misaligned(streamReader.getAttributeValue("", "resource"), streamReader.getAttributeValue("", "connObjectKeyValue"), streamReader.getAttributeValue("", "name"))); break; case "onSyncope": onSyncope = new HashSet<>(); break; case "onResource": onResource = new HashSet<>(); break; case "value": Set<String> set = onSyncope == null ? onResource : onSyncope; set.add(streamReader.getElementText()); break; default: } } else if (streamReader.isEndElement()) { switch (streamReader.getLocalName()) { case "user": user.getMissing().addAll(missing); user.getMisaligned().addAll(misaligned); missing.clear(); misaligned.clear(); break; case "group": group.getMissing().addAll(missing); group.getMisaligned().addAll(misaligned); missing.clear(); misaligned.clear(); break; case "anyObject": anyObject.getMissing().addAll(missing); anyObject.getMisaligned().addAll(misaligned); missing.clear(); misaligned.clear(); break; case "onSyncope": misaligned.get(misaligned.size() - 1).getOnSyncope().addAll(onSyncope); onSyncope = null; break; case "onResource": misaligned.get(misaligned.size() - 1).getOnResource().addAll(onResource); onResource = null; break; default: } } streamReader.next(); } return report; }
From source file:org.apache.tajo.catalog.store.XMLCatalogSchemaManager.java
protected void loadFromXmlFile(XMLInputFactory xmlIf, URL filePath, List<StoreObject> storeObjects) throws IOException, XMLStreamException { XMLStreamReader xmlReader; xmlReader = xmlIf.createXMLStreamReader(filePath.openStream()); try {/*from ww w .ja v a 2 s . c o m*/ while (xmlReader.hasNext()) { if (xmlReader.next() == XMLStreamConstants.START_ELEMENT && "store".equals(xmlReader.getLocalName())) { StoreObject catalogStore = loadCatalogStore(xmlReader); if (catalogStore != null) { storeObjects.add(catalogStore); } } } } finally { try { xmlReader.close(); } catch (XMLStreamException ignored) { } } }
From source file:org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.java
protected StandardContext parseContextFile(File file) throws MojoExecutionException { try {// w w w .ja v a 2s .c om StandardContext standardContext = new StandardContext(); XMLStreamReader reader = XMLInputFactory.newFactory().createXMLStreamReader(new FileInputStream(file)); int tag = reader.next(); while (true) { if (tag == XMLStreamConstants.START_ELEMENT && StringUtils.equals("Context", reader.getLocalName())) { String path = reader.getAttributeValue(null, "path"); if (StringUtils.isNotBlank(path)) { standardContext.setPath(path); } String docBase = reader.getAttributeValue(null, "docBase"); if (StringUtils.isNotBlank(docBase)) { standardContext.setDocBase(docBase); } } if (!reader.hasNext()) { break; } tag = reader.next(); } return standardContext; } catch (XMLStreamException e) { throw new MojoExecutionException(e.getMessage(), e); } catch (FileNotFoundException e) { throw new MojoExecutionException(e.getMessage(), e); } }
From source file:org.atomserver.core.validators.SimpleXMLContentValidator.java
private void touchEvent(XMLStreamReader reader) throws XMLStreamException { int eventCode = reader.next(); String val = null; switch (eventCode) { case XMLStreamReader.START_ELEMENT: val = reader.getLocalName(); if (log.isTraceEnabled()) { log.trace("event = START_ELEMENT"); log.trace("Localname = " + val); }/* ww w . ja va2s . c om*/ break; case XMLStreamReader.END_ELEMENT: val = reader.getLocalName(); if (log.isTraceEnabled()) { log.trace("event = END_ELEMENT"); log.trace("Localname = " + val); } break; case XMLStreamReader.PROCESSING_INSTRUCTION: val = reader.getPIData(); if (log.isTraceEnabled()) { log.trace("event = PROCESSING_INSTRUCTION"); log.trace("PIData = " + val); } break; case XMLStreamReader.CHARACTERS: val = reader.getText(); if (log.isTraceEnabled()) { log.trace("event = CHARACTERS"); log.trace("Characters = " + val); } break; case XMLStreamReader.COMMENT: val = reader.getText(); if (log.isTraceEnabled()) { log.trace("event = COMMENT"); log.trace("Comment = " + val); } break; case XMLStreamReader.SPACE: val = reader.getText(); if (log.isTraceEnabled()) { log.trace("event = SPACE"); log.trace("Space = " + val); } break; case XMLStreamReader.START_DOCUMENT: if (log.isTraceEnabled()) { log.trace("event = START_DOCUMENT"); log.trace("Document Started."); } break; case XMLStreamReader.END_DOCUMENT: if (log.isTraceEnabled()) { log.trace("event = END_DOCUMENT"); log.trace("Document Ended"); } break; case XMLStreamReader.ENTITY_REFERENCE: val = reader.getText(); if (log.isTraceEnabled()) { log.trace("event = ENTITY_REFERENCE"); log.trace("Text = " + val); } break; case XMLStreamReader.DTD: val = reader.getText(); if (log.isTraceEnabled()) { log.trace("event = DTD"); log.trace("DTD = " + val); } break; case XMLStreamReader.CDATA: val = reader.getText(); if (log.isTraceEnabled()) { log.trace("event = CDATA"); log.trace("CDATA = " + val); } break; } }
From source file:org.commonjava.maven.ext.manip.util.PomPeek.java
private void parseCoordElements(final File pom) { Reader reader = null;/*www. java2s . c om*/ XMLStreamReader xml = null; try { reader = new FileReader(pom); xml = XMLInputFactory.newFactory().createXMLStreamReader(reader); final Stack<String> path = new Stack<String>(); while (xml.hasNext()) { final int evt = xml.next(); switch (evt) { case START_ELEMENT: { final String elem = xml.getLocalName(); path.push(elem); if (captureValue(elem, path, xml)) { // seems like xml.getElementText() traverses the END_ELEMENT event... path.pop(); } break; } case END_ELEMENT: { final String elem = xml.getLocalName(); if (MODULES_ELEM.equals(elem)) { modulesDone = true; } path.pop(); break; } default: { } } if (foundAll()) { return; } } } catch (final IOException e) { logger.warn("Failed to peek at POM coordinate for: " + pom + " Reason: " + e.getMessage() + "\nThis POM will NOT be available as an ancestor to other models during effective-model building.", e); } catch (final XMLStreamException e) { logger.warn("Failed to peek at POM coordinate for: " + pom + " Reason: " + e.getMessage() + "\nThis POM will NOT be available as an ancestor to other models during effective-model building.", e); } catch (final FactoryConfigurationError e) { logger.warn("Failed to peek at POM coordinate for: " + pom + " Reason: " + e.getMessage() + "\nThis POM will NOT be available as an ancestor to other models during effective-model building.", e); } finally { if (xml != null) { try { xml.close(); } catch (final XMLStreamException e) { } } try { reader.close(); } catch (final IOException ioe) { } } }
From source file:org.commonjava.maven.galley.maven.parse.PomPeek.java
private void parseCoordElements() { InputStream in = null;/*from w w w . j a va2 s . c o m*/ XMLStreamReader xml = null; try { if (pom != null) { in = new FileInputStream(pom); } else if (transfer != null) { in = transfer.openInputStream(false); } else { in = stream; } xml = XMLInputFactory.newFactory().createXMLStreamReader(in); final Stack<String> path = new Stack<>(); while (xml.hasNext()) { final int evt = xml.next(); switch (evt) { case START_ELEMENT: { final String elem = xml.getLocalName(); if (captureValue(elem, path, xml)) { // seems like xml.getElementText() traverses the END_ELEMENT event... path.pop(); } break; } case END_ELEMENT: { path.pop(); break; } default: { } } if (foundAll()) { return; } } } catch (final IOException | FactoryConfigurationError | XMLStreamException e) { logger.warn("Failed to peek at POM coordinate for: " + pom + " Reason: " + e.getMessage() + "\nThis POM will NOT be available as an ancestor to other models during effective-model building.", e); } finally { if (xml != null) { try { xml.close(); } catch (final XMLStreamException e) { logger.warn("Failed to close XMLStreamReader: " + e.getMessage(), e); } } closeQuietly(in); } }
From source file:org.deegree.client.core.renderer.OutputXMLRenderer.java
private void encodeXML(ResponseWriter writer, String value) throws IOException { int depth = 0; try {//from w ww . j a v a 2s . c o m XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(value)); boolean lastWasEndElement = false; boolean lastWasComment = false; while (reader.hasNext()) { switch (reader.getEventType()) { case XMLStreamConstants.START_ELEMENT: if (!lastWasComment) { writer.startElement("br", null); writer.endElement("br"); } writer.write(getSpaces(depth)); writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write("<"); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "tag", null); String prefix = reader.getPrefix(); writer.write( (prefix != null && prefix.length() > 0 ? prefix + ":" : "") + reader.getLocalName()); writer.endElement("span"); for (int i = 0; i < reader.getAttributeCount(); i++) { writer.startElement("span", null); writer.writeAttribute("class", "attributeName", null); writer.write(" "); String attributePrefix = reader.getAttributePrefix(i); writer.write( (attributePrefix != null && attributePrefix.length() > 0 ? attributePrefix + ":" : "") + reader.getAttributeLocalName(i)); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write("=\""); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "text", null); writer.write(encodeString(reader.getAttributeValue(i))); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write("\""); writer.endElement("span"); } for (int i = 0; i < reader.getNamespaceCount(); i++) { writer.startElement("span", null); writer.writeAttribute("class", "attributeName", null); writer.write(" "); String nsPrefix = reader.getNamespacePrefix(i); writer.write("xmlns"); if (nsPrefix != null && !nsPrefix.isEmpty()) { writer.write(":" + nsPrefix); } writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write("=\""); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "text", null); writer.write(reader.getNamespaceURI(i)); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write("\""); writer.endElement("span"); } writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write(">"); writer.endElement("span"); depth++; lastWasEndElement = false; lastWasComment = false; break; case XMLStreamConstants.CHARACTERS: String text = reader.getText(); if (text.trim().length() > 0) { writer.startElement("span", null); writer.writeAttribute("class", "text", null); writer.write(encodeString(text)); writer.endElement("span"); lastWasEndElement = false; lastWasComment = false; } break; case XMLStreamConstants.END_ELEMENT: depth--; if (lastWasEndElement) { writer.startElement("br", null); writer.endElement("br"); writer.write(getSpaces(depth)); } writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write("</"); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "tag", null); prefix = reader.getPrefix(); writer.write( (prefix != null && prefix.length() > 0 ? prefix + ":" : "") + reader.getLocalName()); writer.endElement("span"); writer.startElement("span", null); writer.writeAttribute("class", "sign", null); writer.write(">"); writer.endElement("span"); lastWasEndElement = true; lastWasComment = false; break; case XMLStreamConstants.COMMENT: writer.startElement("div", null); writer.writeAttribute("class", "comment", null); writer.write("</!--" + reader.getText() + "-->"); writer.endElement("div"); lastWasEndElement = false; lastWasComment = true; break; default: break; } reader.next(); } reader.close(); } catch (Throwable e) { if (depth == 0) { writer.writeText("Response could not parsed as XML.", null); } else { writer.writeText("... (if you want the complete document, please click the download button)", null); } } }
From source file:org.deegree.maven.ithelper.ServiceIntegrationTestHelper.java
public void testCapabilities(String service) throws MojoFailureException { String address = createBaseURL() + "services/" + service.toLowerCase() + "?request=GetCapabilities&service=" + service;//from w w w . j a v a2s. c o m try { log.info("Reading capabilities from " + address); String input = IOUtils.toString(new URL(address).openStream(), "UTF-8"); XMLInputFactory fac = XMLInputFactory.newInstance(); XMLStreamReader in = fac.createXMLStreamReader(new StringReader(input)); in.next(); if (in.getLocalName().toLowerCase().contains("exception")) { log.error("Actual response was:"); log.error(input); throw new MojoFailureException("Retrieving capabilities from " + address + " failed."); } } catch (Throwable e) { log.debug("Failed to retrieve capabilities.", e); throw new MojoFailureException( "Retrieving capabilities for " + service + " failed: " + e.getLocalizedMessage(), e); } }
From source file:org.deegree.services.controller.OGCFrontController.java
/** * Dispatches an XML request to the responsible {@link OWS}. Both GET and POST are handled by this method. * <p>/*from w w w. j a va2 s. co m*/ * The responsible {@link OWS} is identified by the namespace of the root element. * * @param xmlStream * provides access to the XML request, cursor points to the START_ELEMENT event of the root element * @param requestWrapper * @param response * @param multiParts * @throws ServletException * @throws IOException */ private void dispatchXMLRequest(XMLStreamReader xmlStream, HttpServletRequest requestWrapper, HttpResponseBuffer response, List<FileItem> multiParts) throws ServletException, IOException { OWS ows = null; try { ows = determineOWSByPath(requestWrapper); } catch (OWSException e) { sendException(null, e, response, null); return; } CredentialsProvider credentialsProvider = securityConfiguration == null ? null : securityConfiguration.getCredentialsProvider(); try { // TODO handle multiple authentication methods Credentials cred = null; if (credentialsProvider != null) { cred = credentialsProvider.doXML(xmlStream, requestWrapper, response); response.setCredentials(cred); } LOG.debug("credentials: " + cred); bindContextToThread(requestWrapper, cred); // AbstractOGCServiceController subController = null; // extract (deegree specific) security information and bind to current thread // String user = xmlStream.getAttributeValue( XMLConstants.NULL_NS_URI, "user" ); // String password = xmlStream.getAttributeValue( XMLConstants.NULL_NS_URI, "password" ); // String sessionId = xmlStream.getAttributeValue( XMLConstants.NULL_NS_URI, "sessionId" ); String ns = xmlStream.getNamespaceURI(); if (ows == null) { List<OWS> services = serviceConfiguration.getByRequestNS(ns); if (services == null || services.isEmpty()) { String msg = "Cannot dispatch XML request with namespace '" + ns + "' -- currently, no service for this request namespace is configured / active."; throw new ServletException(msg); } if (services.size() > 1) { String msg = "Cannot dispatch XML request with namespace '" + ns + "' -- currently, multiple services for this namespace " + "are active. Please add the service id to the URL to " + "choose one of the services."; throw new ServletException(msg); } ows = services.get(0); } if (ows != null) { LOG.debug("Dispatching request to OWS: " + ows.getClass().getName()); long dispatchTime = FrontControllerStats.requestDispatched(); try { watchTimeout(ows, xmlStream.getLocalName()); ows.doXML(xmlStream, requestWrapper, response, multiParts); } finally { FrontControllerStats.requestFinished(dispatchTime); unwatchTimeout(); } } } catch (SecurityException e) { if (credentialsProvider != null) { LOG.debug("A security exception was thrown, let the credential provider handle the job."); credentialsProvider.handleException(response, e); } else { LOG.debug("A security exception was thrown ( " + e.getLocalizedMessage() + " but no credentials provider was configured, sending generic ogc exception."); sendException(ows, new OWSException(e.getLocalizedMessage(), OWSException.NO_APPLICABLE_CODE), response, null); } } }