/*
* Hibernate Search, full-text search for your domain model
*
* 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.search.elasticsearch.gson.impl;
import java.util.function.Supplier;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**
* @author Guillaume Smet
*/
public class DefaultGsonProvider implements GsonProvider {
protected static final String ELASTIC_SEARCH_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ";
public static GsonProvider create(Supplier<GsonBuilder> builderBaseSupplier) {
return new DefaultGsonProvider( builderBaseSupplier );
}
private DefaultGsonProvider(Supplier<GsonBuilder> builderBaseSupplier) {
// Null serialization needs to be enabled to index null fields
gson = builderBaseSupplier.get()
.serializeNulls()
.create();
gsonPrettyPrinting = builderBaseSupplier.get()
.setPrettyPrinting()
.create();
gsonNoSerializeNulls = builderBaseSupplier.get()
.create();
}
private final Gson gson;
private final Gson gsonPrettyPrinting;
private final Gson gsonNoSerializeNulls;
@Override
public Gson getGson() {
return gson;
}
@Override
public Gson getGsonPrettyPrinting() {
return gsonPrettyPrinting;
}
@Override
public Gson getGsonNoSerializeNulls() {
return gsonNoSerializeNulls;
}
}