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(); } } }
private void readCapabilityElement(XMLStreamReader reader, XResourceBuilder<XResource> builder) throws XMLStreamException { String namespace = reader.getAttributeValue(null, Attribute.NAMESPACE.toString()); Map<String, Object> atts = new HashMap<String, Object>(); Map<String, String> dirs = new HashMap<String, String>(); readAttributesAndDirectives(reader, atts, dirs); try { builder.addCapability(namespace, atts, dirs); } catch (RuntimeException ex) { throw MESSAGES.cannotReadResourceElement(ex, reader.getLocation()); } }
public FileBasedRepositoryStorage(XRepository repository, File storageDir, ConfigurationPropertyProvider propProvider) { super(repository); if (storageDir == null) throw MESSAGES.illegalArgumentNull("storageDir"); if (propProvider == null) throw MESSAGES.illegalArgumentNull("propProvider"); this.storageDir = storageDir; String filename = propProvider.getProperty(XRepository.PROPERTY_REPOSITORY_STORAGE_FILE, REPOSITORY_XML_NAME); repoFile = new File(storageDir.getAbsolutePath() + File.separator + filename).getAbsoluteFile(); // Initialize repository content if (repoFile.exists()) { RepositoryReader reader; try { reader = RepositoryXMLReader.create(new FileInputStream(repoFile)); } catch (IOException ex) { throw MESSAGES.cannotInitializeRepositoryReader(ex); } String incatt = reader.getRepositoryAttributes().get(Attribute.INCREMENT.getLocalName()); Long increment = new Long(incatt != null ? incatt : "0"); XResource res = reader.nextResource(); while(res != null) { addResourceInternal(res, false); res = reader.nextResource(); } long delta = increment - getResourceIndex().get(); getResourceIndex().addAndGet(delta); reader.close(); } }
@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 writeRepositoryXML() { RepositoryWriter writer; try { repoFile.getParentFile().mkdirs(); writer = RepositoryXMLWriter.create(new FileOutputStream(repoFile)); } catch (IOException ex) { throw MESSAGES.cannotInitializeRepositoryWriter(ex); } Map<String, String> attributes = new HashMap<String, String>(); attributes.put(Attribute.NAME.getLocalName(), getRepository().getName()); attributes.put(Attribute.INCREMENT.getLocalName(), new Long(getResourceIndex().get()).toString()); writer.writeRepositoryElement(attributes); RepositoryReader reader = getRepositoryReader(); XResource resource = reader.nextResource(); while(resource != null) { writer.writeResource(resource); resource = reader.nextResource(); } writer.close(); }
public String toString() { return getLocalName(); } }
private void readDirectiveElement(XMLStreamReader reader, Map<String, String> directives) throws XMLStreamException { String name = reader.getAttributeValue(null, Attribute.NAME.toString()); String value = reader.getAttributeValue(null, Attribute.VALUE.toString()); directives.put(name, value); while (reader.hasNext() && reader.nextTag() != END_ELEMENT) { } } }
private void readRequirementElement(XMLStreamReader reader, XResourceBuilder<XResource> builder) throws XMLStreamException { String namespace = reader.getAttributeValue(null, Attribute.NAMESPACE.toString()); Map<String, Object> atts = new HashMap<String, Object>(); Map<String, String> dirs = new HashMap<String, String>(); readAttributesAndDirectives(reader, atts, dirs); try { builder.addRequirement(namespace, atts, dirs); } catch (RuntimeException ex) { throw MESSAGES.cannotReadResourceElement(ex, reader.getLocation()); } }
private void readAttributeElement(XMLStreamReader reader, Map<String, Object> attributes) throws XMLStreamException { String name = reader.getAttributeValue(null, Attribute.NAME.toString()); String valstr = reader.getAttributeValue(null, Attribute.VALUE.toString()); String typespec = reader.getAttributeValue(null, Attribute.TYPE.toString()); AttributeValue value = AttributeValueHandler.readAttributeValue(typespec, valstr); attributes.put(name, value.getValue()); while (reader.hasNext() && reader.nextTag() != END_ELEMENT); }