private void writeTextExtraction(XMLExtendedStreamWriter writer, ModelNode repository) throws XMLStreamException { if (has(repository, ModelKeys.TEXT_EXTRACTOR)) { writer.writeStartElement(Element.TEXT_EXTRACTORS.getLocalName()); if (repository.hasDefined(ModelKeys.TEXT_EXTRACTORS_THREAD_POOL_NAME)) { writer.writeAttribute( Attribute.THREAD_POOL_NAME.getLocalName(), repository.get(ModelKeys.TEXT_EXTRACTORS_THREAD_POOL_NAME).asString()); } if (repository.hasDefined(ModelKeys.TEXT_EXTRACTORS_MAX_POOL_SIZE)) { writer.writeAttribute( Attribute.MAX_POOL_SIZE.getLocalName(), repository.get(ModelKeys.TEXT_EXTRACTORS_MAX_POOL_SIZE).asString()); } for (Property extractor : repository.get(ModelKeys.TEXT_EXTRACTOR).asPropertyList()) { writer.writeStartElement(Element.TEXT_EXTRACTOR.getLocalName()); writer.writeAttribute(Attribute.NAME.getLocalName(), extractor.getName()); ModelNode prop = extractor.getValue(); ModelAttributes.TEXT_EXTRACTOR_CLASSNAME.marshallAsAttribute(prop, writer); ModelAttributes.MODULE.marshallAsAttribute(prop, writer); // Write out the extra properties ... if (has(prop, ModelKeys.PROPERTIES)) { ModelNode properties = prop.get(ModelKeys.PROPERTIES); for (Property property : properties.asPropertyList()) { writer.writeAttribute(property.getName(), property.getValue().asString()); } } writer.writeEndElement(); } writer.writeEndElement(); } }
private void parseTextExtractor( XMLExtendedStreamReader reader, String repositoryName, final List<ModelNode> extractors) throws XMLStreamException { final ModelNode extractor = new ModelNode(); extractor.get(OP).set(ADD); String name = null; extractors.add(extractor); if (reader.getAttributeCount() > 0) { for (int i = 0; i < reader.getAttributeCount(); i++) { String attrName = reader.getAttributeLocalName(i); String attrValue = reader.getAttributeValue(i); Attribute attribute = Attribute.forName(attrName); switch (attribute) { case NAME: name = attrValue; break; case CLASSNAME: ModelAttributes.TEXT_EXTRACTOR_CLASSNAME.parseAndSetParameter( attrValue, extractor, reader); if (name == null) name = attrValue; break; case MODULE: ModelAttributes.MODULE.parseAndSetParameter(attrValue, extractor, reader); break; default: // extra attributes are allowed to set extractor-specific properties ... extractor.get(ModelKeys.PROPERTIES).add(attrName, attrValue); break; } } } extractor .get(OP_ADDR) .add(SUBSYSTEM, ModeShapeExtension.SUBSYSTEM_NAME) .add(ModelKeys.REPOSITORY, repositoryName) .add(ModelKeys.TEXT_EXTRACTOR, name); requireNoElements(reader); }