org.hibernate.boot.model.source.internal.hbm.PluralAttributeElementSourceEmbeddedImpl 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.List;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmCompositeCollectionElementType;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTuplizerType;
import org.hibernate.boot.model.source.spi.AttributePath;
import org.hibernate.boot.model.source.spi.AttributeRole;
import org.hibernate.boot.model.source.spi.EmbeddableMapping;
import org.hibernate.boot.model.source.spi.EmbeddableSource;
import org.hibernate.boot.model.source.spi.NaturalIdMutability;
import org.hibernate.boot.model.source.spi.PluralAttributeElementNature;
import org.hibernate.boot.model.source.spi.PluralAttributeElementSourceEmbedded;
import org.hibernate.boot.model.source.spi.ToolingHintContext;
/**
* @author Steve Ebersole
* @author Gail Badner
*/
public class PluralAttributeElementSourceEmbeddedImpl
extends AbstractHbmSourceNode
implements PluralAttributeElementSourceEmbedded {
private final EmbeddableSourceImpl embeddableSource;
private final ToolingHintContext toolingHintContext;
public PluralAttributeElementSourceEmbeddedImpl(
MappingDocument mappingDocument,
final AbstractPluralAttributeSourceImpl pluralAttributeSource,
final JaxbHbmCompositeCollectionElementType jaxbCompositeElement) {
super( mappingDocument );
this.toolingHintContext = Helper.collectToolingHints(
pluralAttributeSource.getToolingHintContext(),
jaxbCompositeElement
);
this.embeddableSource = new EmbeddableSourceImpl(
mappingDocument,
new EmbeddableSourceContainer() {
@Override
public AttributeRole getAttributeRoleBase() {
return pluralAttributeSource.getAttributeRole().append( "element" );
}
@Override
public AttributePath getAttributePathBase() {
return pluralAttributeSource.getAttributePath().append( "element" );
}
@Override
public ToolingHintContext getToolingHintContextBaselineForEmbeddable() {
return toolingHintContext;
}
},
new EmbeddableMapping() {
@Override
public String getClazz() {
return jaxbCompositeElement.getClazz();
}
@Override
public List getTuplizer() {
return jaxbCompositeElement.getTuplizer();
}
@Override
public String getParent() {
return jaxbCompositeElement.getParent() == null
? null
: jaxbCompositeElement.getParent().getName();
}
},
jaxbCompositeElement.getAttributes(),
false,
false,
null,
NaturalIdMutability.NOT_NATURAL_ID
);
}
@Override
public PluralAttributeElementNature getNature() {
return PluralAttributeElementNature.AGGREGATE;
}
@Override
public EmbeddableSource getEmbeddableSource() {
return embeddableSource;
}
@Override
public ToolingHintContext getToolingHintContext() {
return toolingHintContext;
}
}