All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kiwiproject.spring.data.KiwiMongoConverters Maven / Gradle / Ivy

Go to download

Kiwi is a utility library. We really like Google's Guava, and also use Apache Commons. But if they don't have something we need, and we think it is useful, this is where we put it.

There is a newer version: 4.5.2
Show newest version
package org.kiwiproject.spring.data;

import static com.google.common.base.Preconditions.checkArgument;

import com.google.common.collect.Lists;
import lombok.experimental.UtilityClass;
import org.bson.BsonUndefined;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.CustomConversions;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;

/**
 * A few utilities related to Spring Data Mongo and custom {@link Converter}s.
 */
@UtilityClass
public class KiwiMongoConverters {

    /**
     * Create a new {@link BsonUndefinedToNullStringConverter}.
     *
     * @return new BsonUndefinedToNullStringConverter instance
     */
    public static Converter newBsonUndefinedToNullObjectConverter() {
        return new BsonUndefinedToNullStringConverter();
    }

    /**
     * Adds one or more custom converters to a {@link MongoTemplate} instance.
     * 

* The MongoTemplate is assumed to have a {@link Converter} of type {@link MappingMongoConverter}. * * @param template the MongoTemplate * @param converters the converters to add to MongoTemplate's existing converter * @return the template instance, for method chaining * @throws IllegalArgumentException if the given MongoTemplate's {@link Converter} is not * a {@link MappingMongoConverter} * @see org.springframework.data.mongodb.core.convert.AbstractMongoConverter#setCustomConversions(CustomConversions) */ public static MongoTemplate addCustomConverters(MongoTemplate template, Converter... converters) { checkArgument(template.getConverter() instanceof MappingMongoConverter, "Currently a MappingMongoConverter is required as the MongoTemplate's converter"); var converter = (MappingMongoConverter) template.getConverter(); converter.setCustomConversions(new MongoCustomConversions(Lists.newArrayList(converters))); converter.afterPropertiesSet(); return template; } /** * A {@link Converter} that maps from the JS 'undefined' type to a 'null' value. */ public static class BsonUndefinedToNullStringConverter implements Converter { @SuppressWarnings("NullableProblems") @Override public String convert(BsonUndefined bsonUndefined) { return null; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy