/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.datastore.mongodb.options.impl; import org.hibernate.ogm.datastore.mongodb.logging.impl.Log; import org.hibernate.ogm.datastore.mongodb.logging.impl.LoggerFactory; import org.hibernate.ogm.datastore.mongodb.options.WriteConcern; import org.hibernate.ogm.datastore.mongodb.options.WriteConcernType; import org.hibernate.ogm.options.spi.AnnotationConverter; import org.hibernate.ogm.options.spi.OptionValuePair; /** * Converts {@link WriteConcern} instances into an equivalent option value pair. * * @author Gunnar Morling */ public class WriteConcernConverter implements AnnotationConverter<WriteConcern> { private static final Log log = LoggerFactory.getLogger(); @Override public OptionValuePair<?> convert(WriteConcern annotation) { com.mongodb.WriteConcern writeConcern = null; if ( annotation.value() == WriteConcernType.CUSTOM ) { try { writeConcern = annotation.type().newInstance(); } catch (Exception e) { throw log.unableToInstantiateType( annotation.type(), e ); } } else { writeConcern = annotation.value().getWriteConcern(); } return OptionValuePair.getInstance( new WriteConcernOption(), writeConcern ); } }