/*
* 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.util.impl.gson;
import java.io.IOException;
import org.hibernate.search.elasticsearch.schema.impl.model.IndexType;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
/**
* @author Yoann Rodiere
*/
@SuppressWarnings("deprecation")
public class ES2IndexTypeJsonAdapter extends TypeAdapter<IndexType> {
private static final String ANALYZED_STRING = "analyzed";
private static final String NOT_ANALYZED_STRING = "not_analyzed";
private static final String NO_STRING = "no";
@Override
public void write(JsonWriter out, IndexType value) throws IOException {
switch ( value ) {
case ANALYZED:
out.value( ANALYZED_STRING );
break;
case NOT_ANALYZED:
out.value( NOT_ANALYZED_STRING );
break;
case NO:
out.value( NO_STRING );
break;
default:
throw new IllegalStateException( "Invalid value for IndexType in ES2: " + value );
}
}
@Override
public IndexType read(JsonReader in) throws IOException {
String value = in.nextString();
switch ( value ) {
case ANALYZED_STRING:
return IndexType.ANALYZED;
case NOT_ANALYZED_STRING:
return IndexType.NOT_ANALYZED;
case NO_STRING:
return IndexType.NO;
default:
throw new IllegalStateException( "Invalid value for IndexType in ES2: " + value );
}
}
}