@Override public XResource nextResource() { try { while (reader.hasNext() && reader.nextTag() != END_ELEMENT) { Element element = Element.forName(reader.getLocalName()); switch (element) { case RESOURCE: { return readResourceElement(reader); } } } } catch (XMLStreamException ex) { throw MESSAGES.cannotReadResourceElement(ex, reader.getLocation()); } return null; }
private RepositoryXMLReader(InputStream input) { try { reader = XMLInputFactory.newInstance().createXMLStreamReader(input); } catch (Exception ex) { throw MESSAGES.cannotInitializeRepositoryReader(ex); } try { reader.require(START_DOCUMENT, null, null); reader.nextTag(); reader.require(START_ELEMENT, REPOSITORY_NAMESPACE, REPOSITORY.getLocalName()); for (int i = 0; i < reader.getAttributeCount(); i++) { attributes.put(reader.getAttributeLocalName(i), reader.getAttributeValue(i)); } } catch (Exception ex) { throw MESSAGES.cannotReadResourceElement(ex, reader.getLocation()); } }
Element element = Element.forName(reader.getLocalName()); switch (element) { case CAPABILITY: {
@Override public void writeResource(XResource resource) { try { writer.writeStartElement(RESOURCE.getLocalName()); for (Entry<String, Object> entry : resource.getAttributes().entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); writer.writeAttribute(key, "" + value); } for (Capability cap : resource.getCapabilities(null)) { writer.writeStartElement(CAPABILITY.getLocalName()); writer.writeAttribute(NAMESPACE.getLocalName(), cap.getNamespace()); writeAttributes(cap.getAttributes()); writeDirectives(cap.getDirectives()); writer.writeEndElement(); } for (Requirement req : resource.getRequirements(null)) { writer.writeStartElement(REQUIREMENT.getLocalName()); writer.writeAttribute(NAMESPACE.getLocalName(), req.getNamespace()); writeAttributes(req.getAttributes()); writeDirectives(req.getDirectives()); writer.writeEndElement(); } writer.writeEndElement(); } catch (XMLStreamException ex) { throw MESSAGES.cannotWriteRepositoryElement(ex); } }
private void writeAttributes(Map<String, Object> attributes) throws XMLStreamException { for (Entry<String, Object> entry : attributes.entrySet()) { AttributeValue attval = AttributeValue.create(entry.getValue()); writer.writeStartElement(ATTRIBUTE.getLocalName()); writer.writeAttribute(NAME.getLocalName(), entry.getKey()); if (attval.isListType()) { writer.writeAttribute(VALUE.getLocalName(), attval.getValueString()); writer.writeAttribute(TYPE.getLocalName(), "List<" + attval.getType() + ">"); } else { writer.writeAttribute(VALUE.getLocalName(), attval.getValueString()); if (attval.getType() != Type.String) { writer.writeAttribute(TYPE.getLocalName(), attval.getType().toString()); } } writer.writeEndElement(); } }
private void readAttributesAndDirectives(XMLStreamReader reader, Map<String, Object> atts, Map<String, String> dirs) throws XMLStreamException { while (reader.hasNext() && reader.nextTag() != END_ELEMENT) { Element element = Element.forName(reader.getLocalName()); switch (element) { case ATTRIBUTE: { readAttributeElement(reader, atts); break; } case DIRECTIVE: { readDirectiveElement(reader, dirs); break; } } } }
@Override public void writeRepositoryElement(Map<String, String> attributes) { try { writer.writeStartDocument(); writer.setDefaultNamespace(REPOSITORY_NAMESPACE); writer.writeStartElement(REPOSITORY.getLocalName()); writer.writeDefaultNamespace(REPOSITORY_NAMESPACE); for (Entry<String, String> entry : attributes.entrySet()) { writer.writeAttribute(entry.getKey(), entry.getValue()); } } catch (XMLStreamException ex) { throw MESSAGES.cannotWriteRepositoryElement(ex); } }
private void writeDirectives(Map<String, String> directives) throws XMLStreamException { for (Entry<String, String> entry : directives.entrySet()) { writer.writeStartElement(DIRECTIVE.getLocalName()); writer.writeAttribute(NAME.getLocalName(), entry.getKey()); writer.writeAttribute(VALUE.getLocalName(), entry.getValue()); writer.writeEndElement(); } } }