/* * Hibernate, Relational Persistence for Idiomatic Java * * 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.orm.type.internal; import java.util.Comparator; import org.hibernate.orm.type.descriptor.java.spi.JavaTypeDescriptor; import org.hibernate.orm.type.descriptor.java.spi.MutabilityPlan; import org.hibernate.orm.type.spi.Type; /** * Abstract support for all Type implementations. Mainly adds "type name" handling. * * @author Steve Ebersole */ public abstract class AbstractTypeImpl<T> implements Type<T> { private final String typeName; private final JavaTypeDescriptor javaTypeDescriptor; private final MutabilityPlan mutabilityPlan; private final Comparator comparator; public AbstractTypeImpl( String typeName, JavaTypeDescriptor javaTypeDescriptor, MutabilityPlan mutabilityPlan, Comparator comparator) { this.typeName = typeName; this.javaTypeDescriptor = javaTypeDescriptor; this.mutabilityPlan = mutabilityPlan == null ? javaTypeDescriptor.getMutabilityPlan() : mutabilityPlan; this.comparator = comparator == null ? javaTypeDescriptor.getComparator() : comparator; } @Override public String getTypeName() { return typeName; } @Override public JavaTypeDescriptor getJavaTypeDescriptor() { return javaTypeDescriptor; } @Override public MutabilityPlan getMutabilityPlan() { return mutabilityPlan; } @Override public Comparator getComparator() { return comparator; } }