static Collection<SaslQop> asQopSet(final ModelNode node) { final Set<SaslQop> set = new HashSet<SaslQop>(); for (final ModelNode element : node.asList()) { set.add(SaslQop.valueOf(element.asString())); } return set; }
void parseSaslElement( final XMLExtendedStreamReader reader, final ModelNode address, final List<ModelNode> list) throws XMLStreamException { final ModelNode saslElement = new ModelNode(); saslElement.get(OP).set(ADD); saslElement .get(OP_ADDR) .set(address) .add(SaslResource.SASL_CONFIG_PATH.getKey(), SaslResource.SASL_CONFIG_PATH.getValue()); list.add(saslElement); // No attributes final int count = reader.getAttributeCount(); if (count > 0) { throw unexpectedAttribute(reader, 0); } // Nested elements final EnumSet<Element> visited = EnumSet.noneOf(Element.class); while (reader.hasNext() && reader.nextTag() != END_ELEMENT) { final Element element = Element.forName(reader.getLocalName()); if (visited.contains(element)) { throw unexpectedElement(reader); } visited.add(element); switch (element) { case INCLUDE_MECHANISMS: { final ModelNode includes = saslElement.get(INCLUDE_MECHANISMS); for (final String s : readArrayAttributeElement(reader, "value", String.class)) { includes.add().set(s); } break; } case POLICY: { parsePolicyElement(reader, saslElement.get(OP_ADDR), list); break; } case PROPERTIES: { parseProperties(reader, saslElement.get(OP_ADDR), list); break; } case QOP: { String[] qop = readArrayAttributeElement(reader, "value", String.class); for (String q : qop) { try { saslElement.get(QOP).add(SaslQop.fromString(q).getString().toLowerCase()); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Invalid QOP value: " + q); } } break; } case REUSE_SESSION: { saslElement.get(REUSE_SESSION).set(readBooleanAttributeElement(reader, "value")); break; } case SERVER_AUTH: { saslElement.get(SERVER_AUTH).set(readBooleanAttributeElement(reader, "value")); break; } case STRENGTH: { // FIXME is this really an xml attribute? String[] strength = readArrayAttributeElement(reader, "value", String.class); for (String s : strength) { try { saslElement .get(STRENGTH) .add(SaslStrength.valueOf(s.toUpperCase()).name().toLowerCase()); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Invalid Strength value: " + s); } } break; } default: { throw unexpectedElement(reader); } } } }