org.hibernate.boot.model.source.internal.hbm.HibernateTypeSourceImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
Hibernate's core ORM functionality
/*
* 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 .
*/
package org.hibernate.boot.model.source.internal.hbm;
import java.util.Collections;
import java.util.Map;
import org.hibernate.boot.jaxb.hbm.spi.TypeContainer;
import org.hibernate.boot.model.JavaTypeDescriptor;
import org.hibernate.boot.model.source.spi.HibernateTypeSource;
import org.hibernate.boot.model.source.spi.JavaTypeDescriptorResolvable;
/**
* @author Steve Ebersole
*/
public class HibernateTypeSourceImpl implements HibernateTypeSource, JavaTypeDescriptorResolvable {
private final String name;
private final Map parameters;
private JavaTypeDescriptor javaTypeDescriptor;
public HibernateTypeSourceImpl(TypeContainer typeContainer) {
if ( typeContainer.getTypeAttribute() != null ) {
name = typeContainer.getTypeAttribute();
parameters = null;
}
else if ( typeContainer.getType() != null ) {
name = typeContainer.getType().getName();
parameters = Helper.extractParameters( typeContainer.getType().getConfigParameters() );
}
else {
name = null;
parameters = null;
}
}
public HibernateTypeSourceImpl(String name) {
this( name, Collections.emptyMap() );
}
public HibernateTypeSourceImpl(String name, Map parameters) {
this.name = name;
this.parameters = parameters;
}
public HibernateTypeSourceImpl(JavaTypeDescriptor javaTypeDescriptor) {
this( null, javaTypeDescriptor );
}
public HibernateTypeSourceImpl(String name, JavaTypeDescriptor javaTypeDescriptor) {
this( name );
this.javaTypeDescriptor = javaTypeDescriptor;
}
@Override
public String getName() {
return name;
}
@Override
public Map getParameters() {
return parameters;
}
@Override
public JavaTypeDescriptor getJavaType() {
return javaTypeDescriptor;
}
@Override
public void resolveJavaTypeDescriptor(JavaTypeDescriptor descriptor) {
if ( this.javaTypeDescriptor != null ) {
if ( this.javaTypeDescriptor != descriptor ) {
throw new IllegalStateException( "Attempt to resolve an already resolved JavaTypeDescriptor" );
}
}
this.javaTypeDescriptor = descriptor;
}
}