private static void writeAddressSettings( final XMLExtendedStreamWriter writer, final ModelNode node) throws XMLStreamException { if (!node.isDefined()) { return; } List<Property> properties = node.asPropertyList(); if (!properties.isEmpty()) { writer.writeStartElement(Element.ADDRESS_SETTINGS.getLocalName()); for (Property matchSetting : properties) { writer.writeStartElement(Element.ADDRESS_SETTING.getLocalName()); writer.writeAttribute(Attribute.MATCH.getLocalName(), matchSetting.getName()); final ModelNode setting = matchSetting.getValue(); for (AttributeDefinition attribute : AddressSettingDefinition.ATTRIBUTES) { attribute.marshallAsElement(setting, writer); } writer.writeEndElement(); } writer.writeEndElement(); writeNewLine(writer); } }
private static void writeSecuritySettings( final XMLExtendedStreamWriter writer, final ModelNode node) throws XMLStreamException { if (!node.isDefined()) { return; } List<Property> properties = node.asPropertyList(); if (!properties.isEmpty()) { writer.writeStartElement(Element.SECURITY_SETTINGS.getLocalName()); for (Property matchRoles : properties) { writer.writeStartElement(Element.SECURITY_SETTING.getLocalName()); writer.writeAttribute(Attribute.MATCH.getLocalName(), matchRoles.getName()); // TODO use a custom attribute marshaller if (matchRoles.getValue().hasDefined(ROLE)) { ArrayList<String> send = new ArrayList<String>(); ArrayList<String> consume = new ArrayList<String>(); ArrayList<String> createDurableQueue = new ArrayList<String>(); ArrayList<String> deleteDurableQueue = new ArrayList<String>(); ArrayList<String> createNonDurableQueue = new ArrayList<String>(); ArrayList<String> deleteNonDurableQueue = new ArrayList<String>(); ArrayList<String> manageRoles = new ArrayList<String>(); for (Property rolePerms : matchRoles.getValue().get(ROLE).asPropertyList()) { final String role = rolePerms.getName(); final ModelNode perms = rolePerms.getValue(); if (perms.get(SecurityRoleDefinition.SEND.getName()).asBoolean(false)) { send.add(role); } if (perms.get(SecurityRoleDefinition.CONSUME.getName()).asBoolean(false)) { consume.add(role); } if (perms.get(SecurityRoleDefinition.CREATE_DURABLE_QUEUE.getName()).asBoolean(false)) { createDurableQueue.add(role); } if (perms.get(SecurityRoleDefinition.DELETE_DURABLE_QUEUE.getName()).asBoolean(false)) { deleteDurableQueue.add(role); } if (perms .get(SecurityRoleDefinition.CREATE_NON_DURABLE_QUEUE.getName()) .asBoolean(false)) { createNonDurableQueue.add(role); } if (perms .get(SecurityRoleDefinition.DELETE_NON_DURABLE_QUEUE.getName()) .asBoolean(false)) { deleteNonDurableQueue.add(role); } if (perms.get(SecurityRoleDefinition.MANAGE.getName()).asBoolean(false)) { manageRoles.add(role); } } writePermission(writer, SecurityRoleDefinition.SEND.getXmlName(), send); writePermission(writer, SecurityRoleDefinition.CONSUME.getXmlName(), consume); writePermission( writer, SecurityRoleDefinition.CREATE_DURABLE_QUEUE.getXmlName(), createDurableQueue); writePermission( writer, SecurityRoleDefinition.DELETE_DURABLE_QUEUE.getXmlName(), deleteDurableQueue); writePermission( writer, SecurityRoleDefinition.CREATE_NON_DURABLE_QUEUE.getXmlName(), createNonDurableQueue); writePermission( writer, SecurityRoleDefinition.DELETE_NON_DURABLE_QUEUE.getXmlName(), deleteNonDurableQueue); writePermission(writer, SecurityRoleDefinition.MANAGE.getXmlName(), manageRoles); } writer.writeEndElement(); } writer.writeEndElement(); writeNewLine(writer); } }