package org.infinispan.persistence.rest.configuration;
import javax.xml.stream.XMLStreamException;
import org.infinispan.configuration.serializing.AbstractStoreSerializer;
import org.infinispan.configuration.serializing.ConfigurationSerializer;
import org.infinispan.configuration.serializing.XMLExtendedStreamWriter;
/**
* RestStoreConfigurationSerializer.
*
* @author Tristan Tarrant
* @since 9.0
*/
public class RestStoreConfigurationSerializer extends AbstractStoreSerializer implements ConfigurationSerializer<RestStoreConfiguration> {
@Override
public void serialize(XMLExtendedStreamWriter writer, RestStoreConfiguration configuration) throws XMLStreamException {
writer.writeStartElement(Element.REST_STORE);
configuration.attributes().write(writer);
writeCommonStoreSubAttributes(writer, configuration);
writeServer(writer, configuration);
writeConnectionPool(writer, configuration.connectionPool());
writeCommonStoreElements(writer, configuration);
writer.writeEndElement();
}
private void writeConnectionPool(XMLExtendedStreamWriter writer, ConnectionPoolConfiguration configuration) throws XMLStreamException {
writer.writeStartElement(Element.CONNECTION_POOL);
writer.writeAttribute(Attribute.BUFFER_SIZE, Integer.toString(configuration.bufferSize()));
writer.writeAttribute(Attribute.MAX_CONNECTIONS_PER_HOST, Integer.toString(configuration.maxConnectionsPerHost()));
writer.writeAttribute(Attribute.MAX_TOTAL_CONNECTIONS, Integer.toString(configuration.maxTotalConnections()));
writer.writeAttribute(Attribute.CONNECTION_TIMEOUT, Integer.toString(configuration.connectionTimeout()));
writer.writeAttribute(Attribute.SOCKET_TIMEOUT, Integer.toString(configuration.socketTimeout()));
writer.writeAttribute(Attribute.TCP_NO_DELAY, Boolean.toString(configuration.tcpNoDelay()));
writer.writeEndElement();
}
private void writeServer(XMLExtendedStreamWriter writer, RestStoreConfiguration configuration) throws XMLStreamException {
writer.writeStartElement(Element.SERVER);
writer.writeAttribute(Attribute.HOST, configuration.host());
writer.writeAttribute(Attribute.PORT, Integer.toString(configuration.port()));
writer.writeEndElement();
}
}