/* * 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.schema.impl.model; import java.util.Collections; import java.util.Map; import java.util.TreeMap; import com.google.gson.GsonBuilder; /** * An object representic Elasticsearch type mappings. * * See https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#mapping-type * @author Yoann Rodiere */ public class TypeMapping { /** * Must be null when we don't want to include it in JSON serialization. */ private Map<String, PropertyMapping> properties; private DynamicType dynamic; public Map<String, PropertyMapping> getProperties() { return properties == null ? null : Collections.unmodifiableMap( properties ); } private Map<String, PropertyMapping> getInitializedProperties() { if ( properties == null ) { properties = new TreeMap<>(); } return properties; } public void addProperty(String name, PropertyMapping mapping) { getInitializedProperties().put(name, mapping); } public void removeProperty(String name) { getInitializedProperties().remove( name ); } public DynamicType getDynamic() { return dynamic; } public void setDynamic(DynamicType dynamic) { this.dynamic = dynamic; } @Override public String toString() { return new GsonBuilder().setPrettyPrinting().create().toJson( this ); } }