package org.infinispan.persistence.rocksdb.configuration; import javax.xml.stream.XMLStreamException; import org.infinispan.commons.configuration.attributes.AttributeSet; import org.infinispan.configuration.serializing.AbstractStoreSerializer; import org.infinispan.configuration.serializing.ConfigurationSerializer; import org.infinispan.configuration.serializing.XMLExtendedStreamWriter; /** * RocksDBStoreConfigurationSerializer. * * @author Tristan Tarrant * @since 9.0 */ public class RocksDBStoreConfigurationSerializer extends AbstractStoreSerializer implements ConfigurationSerializer<RocksDBStoreConfiguration> { @Override public void serialize(XMLExtendedStreamWriter writer, RocksDBStoreConfiguration configuration) throws XMLStreamException { AttributeSet attributes = configuration.attributes(); writer.writeStartElement(Element.ROCKSDB_STORE); configuration.attributes().write(writer); writeCommonStoreSubAttributes(writer, configuration); if (attributes.attribute(RocksDBStoreConfiguration.COMPRESSION_TYPE).isModified()) { writer.writeStartElement(Element.COMPRESSION); attributes.write(writer, RocksDBStoreConfiguration.COMPRESSION_TYPE, Attribute.TYPE); writer.writeEndElement(); } if (attributes.attribute(RocksDBStoreConfiguration.EXPIRED_LOCATION).isModified() || attributes.attribute(RocksDBStoreConfiguration.EXPIRY_QUEUE_SIZE).isModified()) { writer.writeStartElement(Element.EXPIRATION); attributes.write(writer, RocksDBStoreConfiguration.EXPIRED_LOCATION, Attribute.PATH); attributes.write(writer, RocksDBStoreConfiguration.EXPIRY_QUEUE_SIZE, Attribute.QUEUE_SIZE); writer.writeEndElement(); } writeCommonStoreElements(writer, configuration); writer.writeEndElement(); } }