From 8afab9f25554c91a3b5a69f061174aebeba5f7a5 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Tue, 21 Feb 2012 19:55:53 -0600 Subject: [PATCH] HHH-7088 - Implement secondary table support in new metamodel code --- .../source/hbm/AbstractEntitySourceImpl.java | 13 +++----- .../AbstractPluralAttributeSourceImpl.java | 32 +++++++++++-------- .../source/hbm/BagAttributeSourceImpl.java | 7 ++-- ...BasicPluralAttributeElementSourceImpl.java | 14 ++++---- .../source/hbm/ColumnAttributeSourceImpl.java | 9 ++++-- .../internal/source/hbm/ColumnSourceImpl.java | 9 ++++-- ...ositePluralAttributeElementSourceImpl.java | 18 ++++++----- .../source/hbm/FetchProfileSourceImpl.java | 10 ++++-- .../hbm/FilterDefinitionSourceImpl.java | 9 ++++-- .../internal/source/hbm/FilterSourceImpl.java | 9 ++++-- .../internal/source/hbm/FormulaImpl.java | 8 +++-- .../metamodel/internal/source/hbm/Helper.java | 26 ++++++++------- .../source/hbm/HibernateMappingProcessor.java | 2 +- .../internal/source/hbm/HierarchyBuilder.java | 5 ++- .../source/hbm/InLineViewSourceImpl.java | 6 +++- ...oManyPluralAttributeElementSourceImpl.java | 24 +++++++------- .../hbm/ManyToOneAttributeSourceImpl.java | 4 +-- ...oManyPluralAttributeElementSourceImpl.java | 15 +++++---- .../hbm/PluralAttributeKeySourceImpl.java | 10 ++++-- .../hbm/PropertyAttributeSourceImpl.java | 4 +-- .../source/hbm/RootEntitySourceImpl.java | 29 +++++++++++------ .../source/hbm/SecondaryTableSourceImpl.java | 2 +- .../source/hbm/SetAttributeSourceImpl.java | 7 ++-- ...SingularIdentifierAttributeSourceImpl.java | 13 +++++--- .../source/hbm/SubclassEntitySourceImpl.java | 6 ++-- .../internal/source/hbm/TableSourceImpl.java | 7 ++-- .../hbm/TimestampAttributeSourceImpl.java | 22 ++++++------- .../hbm/VersionAttributeSourceImpl.java | 22 ++++++------- 28 files changed, 199 insertions(+), 143 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractEntitySourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractEntitySourceImpl.java index e7cf0b26d1..6b7ca89976 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractEntitySourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractEntitySourceImpl.java @@ -66,16 +66,18 @@ public abstract class AbstractEntitySourceImpl extends AbstractHbmSourceNode implements EntitySource, Helper.InLineViewNameInferrer { + private final EntityElement entityElement; private final String className; private final String entityName; + private List subclassEntitySources = new ArrayList(); + private int inLineViewCount = 0; // logically final, but built during 'afterInstantiation' callback private List attributeSources; private Set secondaryTableSources; - private List subclassEntitySources; protected AbstractEntitySourceImpl(MappingDocument sourceMappingDocument, EntityElement entityElement) { super( sourceMappingDocument ); @@ -95,8 +97,6 @@ public String inferInLineViewName() { protected void afterInstantiation() { this.attributeSources = buildAttributeSources(); this.secondaryTableSources = buildSecondaryTables(); - - this.subclassEntitySources = buildSubClassSources(); } protected List buildAttributeSources() { @@ -161,6 +161,7 @@ else if ( JaxbAnyElement.class.isInstance( attributeElement ) ) { else if ( JaxbBagElement.class.isInstance( attributeElement ) ) { results.add( new BagAttributeSourceImpl( + sourceMappingDocument(), JaxbBagElement.class.cast( attributeElement ), this ) @@ -172,6 +173,7 @@ else if ( JaxbIdbagElement.class.isInstance( attributeElement ) ) { else if ( JaxbSetElement.class.isInstance( attributeElement ) ) { results.add( new SetAttributeSourceImpl( + sourceMappingDocument(), JaxbSetElement.class.cast( attributeElement ), this ) @@ -189,11 +191,6 @@ else if ( JaxbMapElement.class.isInstance( attributeElement ) ) { } } - protected List buildSubClassSources() { - // todo : implement subclass processing - return Collections.emptyList(); - } - private Set buildSecondaryTables() { if ( ! JoinElementSource.class.isInstance( entityElement ) ) { return Collections.emptySet(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractPluralAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractPluralAttributeSourceImpl.java index d8168157e6..711bf60f62 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractPluralAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/AbstractPluralAttributeSourceImpl.java @@ -38,7 +38,6 @@ import org.hibernate.metamodel.spi.binding.CustomSQL; import org.hibernate.metamodel.spi.source.AttributeSourceContainer; import org.hibernate.metamodel.spi.source.ExplicitHibernateTypeSource; -import org.hibernate.metamodel.spi.source.LocalBindingContext; import org.hibernate.metamodel.spi.source.MappingException; import org.hibernate.metamodel.spi.source.MetaAttributeSource; import org.hibernate.metamodel.spi.source.PluralAttributeElementSource; @@ -50,6 +49,7 @@ * @author Steve Ebersole */ public abstract class AbstractPluralAttributeSourceImpl + extends AbstractHbmSourceNode implements PluralAttributeSource, Helper.InLineViewNameInferrer { private final PluralAttributeElement pluralAttributeElement; private final AttributeSourceContainer container; @@ -60,12 +60,18 @@ public abstract class AbstractPluralAttributeSourceImpl private final PluralAttributeElementSource elementSource; protected AbstractPluralAttributeSourceImpl( + MappingDocument sourceMappingDocument, final PluralAttributeElement pluralAttributeElement, AttributeSourceContainer container) { + super( sourceMappingDocument ); this.pluralAttributeElement = pluralAttributeElement; this.container = container; - this.keySource = new PluralAttributeKeySourceImpl( pluralAttributeElement.getKey(), container ); + this.keySource = new PluralAttributeKeySourceImpl( + sourceMappingDocument(), + pluralAttributeElement.getKey(), + container + ); this.elementSource = interpretElementType(); this.typeInformation = new ExplicitHibernateTypeSource() { @@ -84,26 +90,28 @@ public Map getParameters() { private PluralAttributeElementSource interpretElementType() { if ( pluralAttributeElement.getElement() != null ) { return new BasicPluralAttributeElementSourceImpl( - pluralAttributeElement.getElement(), container.getLocalBindingContext() + sourceMappingDocument(), + pluralAttributeElement.getElement() ); } else if ( pluralAttributeElement.getCompositeElement() != null ) { return new CompositePluralAttributeElementSourceImpl( - pluralAttributeElement.getCompositeElement(), container.getLocalBindingContext() + sourceMappingDocument(), + pluralAttributeElement.getCompositeElement() ); } else if ( pluralAttributeElement.getOneToMany() != null ) { return new OneToManyPluralAttributeElementSourceImpl( + sourceMappingDocument(), pluralAttributeElement, - pluralAttributeElement.getOneToMany(), - container.getLocalBindingContext() + pluralAttributeElement.getOneToMany() ); } else if ( pluralAttributeElement.getManyToMany() != null ) { return new ManyToManyPluralAttributeElementSourceImpl( + sourceMappingDocument(), pluralAttributeElement, - pluralAttributeElement.getManyToMany(), - container.getLocalBindingContext() + pluralAttributeElement.getManyToMany() ); } else if ( pluralAttributeElement.getManyToAny() != null ) { @@ -126,10 +134,6 @@ protected AttributeSourceContainer container() { return container; } - protected LocalBindingContext bindingContext() { - return container().getLocalBindingContext(); - } - @Override public PluralAttributeKeySource getKeySource() { return keySource; @@ -147,7 +151,7 @@ public String inferInLineViewName() { @Override public TableSpecificationSource getCollectionTableSpecificationSource() { - return Helper.createTableSource( pluralAttributeElement, this ); + return Helper.createTableSource( sourceMappingDocument(), pluralAttributeElement, this ); } @Override @@ -302,7 +306,7 @@ else if ( "false".equals( lazySelection ) ) { lazySelection, pluralAttributeElement.getName() ), - bindingContext().getOrigin() + origin() ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BagAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BagAttributeSourceImpl.java index 87b43a2bf9..be38d13465 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BagAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BagAttributeSourceImpl.java @@ -33,8 +33,11 @@ * @author Steve Ebersole */ public class BagAttributeSourceImpl extends AbstractPluralAttributeSourceImpl implements Orderable { - public BagAttributeSourceImpl(JaxbBagElement bagElement, AttributeSourceContainer container) { - super( bagElement, container ); + public BagAttributeSourceImpl( + MappingDocument sourceMappingDocument, + JaxbBagElement bagElement, + AttributeSourceContainer container) { + super( sourceMappingDocument, bagElement, container ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BasicPluralAttributeElementSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BasicPluralAttributeElementSourceImpl.java index b16f8df661..5dc8babcf2 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BasicPluralAttributeElementSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/BasicPluralAttributeElementSourceImpl.java @@ -28,7 +28,6 @@ import org.hibernate.internal.jaxb.mapping.hbm.JaxbElementElement; import org.hibernate.metamodel.spi.source.BasicPluralAttributeElementSource; -import org.hibernate.metamodel.spi.source.LocalBindingContext; import org.hibernate.metamodel.spi.source.ExplicitHibernateTypeSource; import org.hibernate.metamodel.spi.source.PluralAttributeElementNature; import org.hibernate.metamodel.spi.source.RelationalValueSource; @@ -36,14 +35,18 @@ /** * @author Steve Ebersole */ -public class BasicPluralAttributeElementSourceImpl implements BasicPluralAttributeElementSource { +public class BasicPluralAttributeElementSourceImpl + extends AbstractHbmSourceNode + implements BasicPluralAttributeElementSource { private final List valueSources; private final ExplicitHibernateTypeSource typeSource; public BasicPluralAttributeElementSourceImpl( - final JaxbElementElement elementElement, - LocalBindingContext bindingContext) { + MappingDocument sourceMappingDocument, + final JaxbElementElement elementElement) { + super( sourceMappingDocument ); this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getContainingTableName() { @@ -74,8 +77,7 @@ public String getFormulaAttribute() { public List getColumnOrFormulaElements() { return elementElement.getColumnOrFormula(); } - }, - bindingContext + } ); this.typeSource = new ExplicitHibernateTypeSource() { diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnAttributeSourceImpl.java index 08212cefe1..c78e5234e1 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnAttributeSourceImpl.java @@ -34,7 +34,9 @@ * * @author Steve Ebersole */ -class ColumnAttributeSourceImpl implements ColumnSource { +class ColumnAttributeSourceImpl + extends AbstractHbmSourceNode + implements ColumnSource { private final String tableName; private final String columnName; private TruthValue includedInInsert; @@ -42,19 +44,22 @@ class ColumnAttributeSourceImpl implements ColumnSource { private TruthValue nullable; ColumnAttributeSourceImpl( + MappingDocument mappingDocument, String tableName, String columnName, TruthValue includedInInsert, TruthValue includedInUpdate) { - this( tableName, columnName, includedInInsert, includedInUpdate, TruthValue.UNKNOWN ); + this( mappingDocument, tableName, columnName, includedInInsert, includedInUpdate, TruthValue.UNKNOWN ); } ColumnAttributeSourceImpl( + MappingDocument mappingDocument, String tableName, String columnName, TruthValue includedInInsert, TruthValue includedInUpdate, TruthValue nullable) { + super( mappingDocument ); this.tableName = tableName; this.columnName = columnName; this.includedInInsert = includedInInsert; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnSourceImpl.java index bfb54f0fac..efc349faa9 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ColumnSourceImpl.java @@ -32,7 +32,9 @@ /** * @author Steve Ebersole */ -class ColumnSourceImpl implements ColumnSource { +class ColumnSourceImpl + extends AbstractHbmSourceNode + implements ColumnSource { private final String tableName; private final JaxbColumnElement columnElement; private final TruthValue includedInInsert; @@ -40,19 +42,22 @@ class ColumnSourceImpl implements ColumnSource { private final TruthValue nullable; ColumnSourceImpl( + MappingDocument mappingDocument, String tableName, JaxbColumnElement columnElement, TruthValue isIncludedInInsert, TruthValue isIncludedInUpdate) { - this( tableName, columnElement, isIncludedInInsert, isIncludedInUpdate, TruthValue.UNKNOWN ); + this( mappingDocument, tableName, columnElement, isIncludedInInsert, isIncludedInUpdate, TruthValue.UNKNOWN ); } ColumnSourceImpl( + MappingDocument mappingDocument, String tableName, JaxbColumnElement columnElement, TruthValue isIncludedInInsert, TruthValue isIncludedInUpdate, TruthValue nullable) { + super( mappingDocument ); this.tableName = tableName; this.columnElement = columnElement; this.nullable = nullable; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/CompositePluralAttributeElementSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/CompositePluralAttributeElementSourceImpl.java index e681cdeebf..fb616096de 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/CompositePluralAttributeElementSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/CompositePluralAttributeElementSourceImpl.java @@ -39,15 +39,17 @@ /** * @author Steve Ebersole */ -public class CompositePluralAttributeElementSourceImpl implements CompositePluralAttributeElementSource { +public class CompositePluralAttributeElementSourceImpl + extends AbstractHbmSourceNode + implements CompositePluralAttributeElementSource { + private final JaxbCompositeElementElement compositeElement; - private final LocalBindingContext bindingContext; public CompositePluralAttributeElementSourceImpl( - JaxbCompositeElementElement compositeElement, - LocalBindingContext bindingContext) { + MappingDocument mappingDocument, + JaxbCompositeElementElement compositeElement) { + super( mappingDocument ); this.compositeElement = compositeElement; - this.bindingContext = bindingContext; } @Override @@ -57,12 +59,12 @@ public PluralAttributeElementNature getNature() { @Override public String getClassName() { - return bindingContext.qualifyClassName( compositeElement.getClazz() ); + return bindingContext().qualifyClassName( compositeElement.getClazz() ); } @Override public Value> getClassReference() { - return bindingContext.makeClassReference( getClassName() ); + return bindingContext().makeClassReference( getClassName() ); } @Override @@ -103,6 +105,6 @@ public List attributeSources() { @Override public LocalBindingContext getLocalBindingContext() { - return bindingContext; + return bindingContext(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FetchProfileSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FetchProfileSourceImpl.java index 89c0ce4874..7259be2462 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FetchProfileSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FetchProfileSourceImpl.java @@ -32,11 +32,17 @@ /** * @author Steve Ebersole */ -public class FetchProfileSourceImpl implements FetchProfileSource { +public class FetchProfileSourceImpl + extends AbstractHbmSourceNode + implements FetchProfileSource { + private final String name; private final List associationOverrideSources; - public FetchProfileSourceImpl(JaxbFetchProfileElement fetchProfileElement) { + public FetchProfileSourceImpl( + MappingDocument mappingDocument, + JaxbFetchProfileElement fetchProfileElement) { + super( mappingDocument ); this.name = fetchProfileElement.getName(); this.associationOverrideSources = buildAssociationOverrideSources( fetchProfileElement ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java index 71c73b4519..6c0d8614de 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java @@ -33,12 +33,17 @@ /** * @author Steve Ebersole */ -public class FilterDefinitionSourceImpl implements FilterDefinitionSource { +public class FilterDefinitionSourceImpl + extends AbstractHbmSourceNode + implements FilterDefinitionSource { private final String name; private final String condition; private List parameterSources; - public FilterDefinitionSourceImpl(JaxbHibernateMapping.JaxbFilterDef filterDefElement) { + public FilterDefinitionSourceImpl( + MappingDocument mappingDocument, + JaxbHibernateMapping.JaxbFilterDef filterDefElement) { + super( mappingDocument ); this.name = filterDefElement.getName(); String conditionAttribute = filterDefElement.getCondition(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java index 47527db2f3..f89b41d979 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java @@ -29,11 +29,16 @@ /** * @author Steve Ebersole */ -public class FilterSourceImpl implements FilterSource { +public class FilterSourceImpl + extends AbstractHbmSourceNode + implements FilterSource { private final String name; private final String condition; - public FilterSourceImpl(JaxbFilterElement filterElement) { + public FilterSourceImpl( + MappingDocument mappingDocument, + JaxbFilterElement filterElement) { + super( mappingDocument ); this.name = filterElement.getName(); String conditionAttribute = filterElement.getCondition(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FormulaImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FormulaImpl.java index 383b7c65b8..6f74e92dab 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FormulaImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FormulaImpl.java @@ -24,16 +24,18 @@ package org.hibernate.metamodel.internal.source.hbm; import org.hibernate.metamodel.spi.source.DerivedValueSource; -import org.hibernate.metamodel.spi.source.RelationalValueSource; /** * @author Steve Ebersole */ -class FormulaImpl implements DerivedValueSource { +class FormulaImpl + extends AbstractHbmSourceNode + implements DerivedValueSource { private String tableName; private final String expression; - FormulaImpl(String tableName, String expression) { + FormulaImpl(MappingDocument mappingDocument, String tableName, String expression) { + super( mappingDocument ); this.tableName = tableName; this.expression = expression; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/Helper.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/Helper.java index e768ec913d..a61dcdb793 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/Helper.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/Helper.java @@ -294,10 +294,12 @@ public static interface InLineViewNameInferrer { } public static TableSpecificationSource createTableSource( + MappingDocument mappingDocument, TableInformationSource jaxbTableSource, InLineViewNameInferrer inLineViewNameInferrer) { if ( jaxbTableSource.getSubselectAttribute() == null && jaxbTableSource.getSubselect() == null ) { return new TableSourceImpl( + mappingDocument, jaxbTableSource.getSchema(), jaxbTableSource.getCatalog(), jaxbTableSource.getTable() @@ -305,6 +307,7 @@ public static TableSpecificationSource createTableSource( } else { return new InLineViewSourceImpl( + mappingDocument, jaxbTableSource.getSchema(), jaxbTableSource.getCatalog(), jaxbTableSource.getSubselectAttribute() != null @@ -372,8 +375,8 @@ public boolean isForceNotNull() { * @return The corresponding list. */ public static List buildValueSources( - ValueSourcesAdapter valueSourcesAdapter, - LocalBindingContext bindingContext) { + MappingDocument mappingDocument, + ValueSourcesAdapter valueSourcesAdapter) { List result = new ArrayList(); if ( StringHelper.isNotEmpty( valueSourcesAdapter.getColumnAttribute() ) ) { @@ -381,21 +384,20 @@ public static List buildValueSources( // it is therefore illegal for there to also be any nested formula or column elements if ( valueSourcesAdapter.getColumnOrFormulaElements() != null && ! valueSourcesAdapter.getColumnOrFormulaElements().isEmpty() ) { - throw new MappingException( - "column/formula attribute may not be used together with / subelement", - bindingContext.getOrigin() + throw mappingDocument.getMappingLocalBindingContext().makeMappingException( + "column/formula attribute may not be used together with / subelement" ); } // it is also illegal for there to also be a formula attribute if ( StringHelper.isNotEmpty( valueSourcesAdapter.getFormulaAttribute() ) ) { - throw new MappingException( - "column and formula attributes may not be used together", - bindingContext.getOrigin() + throw mappingDocument.getMappingLocalBindingContext().makeMappingException( + "column and formula attributes may not be used together" ); } result.add( new ColumnAttributeSourceImpl( + mappingDocument, valueSourcesAdapter.getContainingTableName(), valueSourcesAdapter.getColumnAttribute(), valueSourcesAdapter.isIncludedInInsertByDefault() ? TruthValue.TRUE : TruthValue.FALSE, @@ -409,15 +411,15 @@ else if ( StringHelper.isNotEmpty( valueSourcesAdapter.getFormulaAttribute() ) ) // it is therefore illegal for there to also be any nested formula or column elements if ( valueSourcesAdapter.getColumnOrFormulaElements() != null && ! valueSourcesAdapter.getColumnOrFormulaElements().isEmpty() ) { - throw new MappingException( - "column/formula attribute may not be used together with / subelement", - bindingContext.getOrigin() + throw mappingDocument.getMappingLocalBindingContext().makeMappingException( + "column/formula attribute may not be used together with / subelement" ); } // column/formula attribute combo checked already result.add( new FormulaImpl( + mappingDocument, valueSourcesAdapter.getContainingTableName(), valueSourcesAdapter.getFormulaAttribute() ) @@ -430,6 +432,7 @@ else if ( valueSourcesAdapter.getColumnOrFormulaElements() != null if ( JaxbColumnElement.class.isInstance( columnOrFormulaElement ) ) { result.add( new ColumnSourceImpl( + mappingDocument, valueSourcesAdapter.getContainingTableName(), (JaxbColumnElement) columnOrFormulaElement, valueSourcesAdapter.isIncludedInInsertByDefault() ? TruthValue.TRUE : TruthValue.FALSE, @@ -441,6 +444,7 @@ else if ( valueSourcesAdapter.getColumnOrFormulaElements() != null else { result.add( new FormulaImpl( + mappingDocument, valueSourcesAdapter.getContainingTableName(), (String) columnOrFormulaElement ) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HibernateMappingProcessor.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HibernateMappingProcessor.java index 21b62be2fc..45897a142f 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HibernateMappingProcessor.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HibernateMappingProcessor.java @@ -142,7 +142,7 @@ public void collectFilterDefSources(List filterDefinitio } for ( JaxbHibernateMapping.JaxbFilterDef filterDefElement : mappingRoot().getFilterDef() ) { - filterDefinitionSources.add( new FilterDefinitionSourceImpl( filterDefElement ) ); + filterDefinitionSources.add( new FilterDefinitionSourceImpl( mappingDocument, filterDefElement ) ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HierarchyBuilder.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HierarchyBuilder.java index 3c5f7bed95..15c9c14ec4 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HierarchyBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/HierarchyBuilder.java @@ -82,9 +82,8 @@ private void processCurrentMappingDocument() { else { // we have to see if this things super-type has been found yet, and if not add it to the // extends queue - final String entityItExtends = - currentMappingDocument.getMappingLocalBindingContext(). - qualifyClassName( ( (SubEntityElement) entityElement ).getExtends() ); + final String entityItExtends = currentMappingDocument.getMappingLocalBindingContext() + .qualifyClassName( ( (SubEntityElement) entityElement ).getExtends() ); final SubclassEntityContainer container = subEntityContainerMap.get( entityItExtends ); final SubclassEntitySourceImpl subClassEntitySource = new SubclassEntitySourceImpl( currentMappingDocument, entityElement, ( EntitySource ) container ); final String entityName = subClassEntitySource.getEntityName(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/InLineViewSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/InLineViewSourceImpl.java index 3778f75917..479077ddf6 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/InLineViewSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/InLineViewSourceImpl.java @@ -28,16 +28,20 @@ /** * @author Steve Ebersole */ -public class InLineViewSourceImpl implements InLineViewSource { +public class InLineViewSourceImpl + extends AbstractHbmSourceNode + implements InLineViewSource { private final String schemaName; private final String catalogName; private final String selectStatement; private final String logicalName; public InLineViewSourceImpl( + MappingDocument mappingDocument, String schemaName, String catalogName, String selectStatement, String logicalName) { + super( mappingDocument ); this.schemaName = schemaName; this.catalogName = catalogName; this.selectStatement = selectStatement; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToManyPluralAttributeElementSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToManyPluralAttributeElementSourceImpl.java index d49c3c3b85..1db831416c 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToManyPluralAttributeElementSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToManyPluralAttributeElementSourceImpl.java @@ -27,12 +27,10 @@ import java.util.Collections; import java.util.List; -import org.hibernate.FetchMode; import org.hibernate.engine.spi.CascadeStyle; import org.hibernate.internal.jaxb.mapping.hbm.JaxbManyToManyElement; import org.hibernate.internal.jaxb.mapping.hbm.PluralAttributeElement; import org.hibernate.internal.util.StringHelper; -import org.hibernate.metamodel.spi.source.LocalBindingContext; import org.hibernate.metamodel.spi.source.ManyToManyPluralAttributeElementSource; import org.hibernate.metamodel.spi.source.PluralAttributeElementNature; import org.hibernate.metamodel.spi.source.RelationalValueSource; @@ -40,22 +38,24 @@ /** * @author Steve Ebersole */ -public class ManyToManyPluralAttributeElementSourceImpl implements ManyToManyPluralAttributeElementSource { +public class ManyToManyPluralAttributeElementSourceImpl + extends AbstractHbmSourceNode + implements ManyToManyPluralAttributeElementSource { private final PluralAttributeElement pluralAttributeElement; private final JaxbManyToManyElement manyToManyElement; - private final LocalBindingContext bindingContext; private final List valueSources; public ManyToManyPluralAttributeElementSourceImpl( + MappingDocument mappingDocument, final PluralAttributeElement pluralAttributeElement, - final JaxbManyToManyElement manyToManyElement, - final LocalBindingContext bindingContext) { + final JaxbManyToManyElement manyToManyElement) { + super( mappingDocument ); this.pluralAttributeElement = pluralAttributeElement; this.manyToManyElement = manyToManyElement; - this.bindingContext = bindingContext; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getContainingTableName() { @@ -86,8 +86,7 @@ public String getFormulaAttribute() { public List getColumnOrFormulaElements() { return manyToManyElement.getColumnOrFormula(); } - }, - bindingContext + } ); } @@ -100,7 +99,7 @@ public PluralAttributeElementNature getNature() { public String getReferencedEntityName() { return StringHelper.isNotEmpty( manyToManyElement.getEntityName() ) ? manyToManyElement.getEntityName() - : bindingContext.qualifyClassName( manyToManyElement.getClazz() ); + : bindingContext().qualifyClassName( manyToManyElement.getClazz() ); } @Override @@ -146,7 +145,7 @@ public String getWhere() { @Override public Iterable getCascadeStyles() { - return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext ); + return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext() ); } @Override @@ -158,12 +157,11 @@ public boolean fetchImmediately() { } if ( manyToManyElement.getOuterJoin() == null ) { - return !bindingContext.getMappingDefaults().areAssociationsLazy(); + return !bindingContext().getMappingDefaults().areAssociationsLazy(); } else { final String value = manyToManyElement.getOuterJoin().value(); if ( "auto".equals( value ) ) { - return !bindingContext.getMappingDefaults().areAssociationsLazy(); } return "true".equals( value ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToOneAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToOneAttributeSourceImpl.java index 1ea32e582b..2e00e8986d 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToOneAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/ManyToOneAttributeSourceImpl.java @@ -57,6 +57,7 @@ class ManyToOneAttributeSourceImpl extends AbstractHbmSourceNode implements ToOn this.manyToOneElement = manyToOneElement; this.naturalIdMutability = naturalIdMutability; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getColumnAttribute() { @@ -87,8 +88,7 @@ public boolean isIncludedInInsertByDefault() { public boolean isIncludedInUpdateByDefault() { return manyToOneElement.isUpdate(); } - }, - bindingContext() + } ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/OneToManyPluralAttributeElementSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/OneToManyPluralAttributeElementSourceImpl.java index 68e63c0141..cfd7137740 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/OneToManyPluralAttributeElementSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/OneToManyPluralAttributeElementSourceImpl.java @@ -34,18 +34,19 @@ /** * @author Steve Ebersole */ -public class OneToManyPluralAttributeElementSourceImpl implements OneToManyPluralAttributeElementSource { +public class OneToManyPluralAttributeElementSourceImpl + extends AbstractHbmSourceNode + implements OneToManyPluralAttributeElementSource { private final PluralAttributeElement pluralAttributeElement; private final JaxbOneToManyElement oneToManyElement; - private final LocalBindingContext bindingContext; public OneToManyPluralAttributeElementSourceImpl( + MappingDocument mappingDocument, PluralAttributeElement pluralAttributeElement, - JaxbOneToManyElement oneToManyElement, - LocalBindingContext bindingContext) { + JaxbOneToManyElement oneToManyElement) { + super( mappingDocument ); this.pluralAttributeElement = pluralAttributeElement; this.oneToManyElement = oneToManyElement; - this.bindingContext = bindingContext; } @Override @@ -57,7 +58,7 @@ public PluralAttributeElementNature getNature() { public String getReferencedEntityName() { return StringHelper.isNotEmpty( oneToManyElement.getEntityName() ) ? oneToManyElement.getEntityName() - : bindingContext.qualifyClassName( oneToManyElement.getClazz() ); + : bindingContext().qualifyClassName( oneToManyElement.getClazz() ); } @Override @@ -68,6 +69,6 @@ public boolean isNotFoundAnException() { @Override public Iterable getCascadeStyles() { - return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext ); + return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext() ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PluralAttributeKeySourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PluralAttributeKeySourceImpl.java index dc06154ba6..30234b4ffd 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PluralAttributeKeySourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PluralAttributeKeySourceImpl.java @@ -34,17 +34,22 @@ /** * @author Steve Ebersole */ -public class PluralAttributeKeySourceImpl implements PluralAttributeKeySource { +public class PluralAttributeKeySourceImpl + extends AbstractHbmSourceNode + implements PluralAttributeKeySource { private final JaxbKeyElement keyElement; private final List valueSources; public PluralAttributeKeySourceImpl( + MappingDocument mappingDocument, final JaxbKeyElement keyElement, final AttributeSourceContainer container) { + super( mappingDocument ); this.keyElement = keyElement; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getContainingTableName() { @@ -75,8 +80,7 @@ public String getFormulaAttribute() { public List getColumnOrFormulaElements() { return keyElement.getColumn(); } - }, - container.getLocalBindingContext() + } ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PropertyAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PropertyAttributeSourceImpl.java index 627ab1623a..4b2fb61d73 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PropertyAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/PropertyAttributeSourceImpl.java @@ -73,6 +73,7 @@ public Map getParameters() { } }; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getColumnAttribute() { @@ -103,8 +104,7 @@ public boolean isIncludedInInsertByDefault() { public boolean isIncludedInUpdateByDefault() { return Helper.getBooleanValue( propertyElement.isUpdate(), true ); } - }, - bindingContext() + } ); this.naturalIdMutability = naturalIdMutability; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/RootEntitySourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/RootEntitySourceImpl.java index 813ef78d30..738ced13fa 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/RootEntitySourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/RootEntitySourceImpl.java @@ -43,7 +43,6 @@ import org.hibernate.metamodel.spi.source.RootEntitySource; import org.hibernate.metamodel.spi.source.SimpleIdentifierSource; import org.hibernate.metamodel.spi.source.SingularAttributeSource; -import org.hibernate.metamodel.spi.source.SubclassEntitySource; import org.hibernate.metamodel.spi.source.TableSpecificationSource; import org.hibernate.metamodel.spi.source.VersionAttributeSource; @@ -57,7 +56,7 @@ protected RootEntitySourceImpl( MappingDocument sourceMappingDocument, JaxbHibernateMapping.JaxbClass entityElement) { super( sourceMappingDocument, entityElement ); - this.primaryTable = Helper.createTableSource( entityElement, this ); + this.primaryTable = Helper.createTableSource( sourceMappingDocument(), entityElement, this ); afterInstantiation(); } @@ -74,8 +73,8 @@ public IdentifierSource getIdentifierSource() { @Override public SingularAttributeSource getIdentifierAttributeSource() { return new SingularIdentifierAttributeSourceImpl( - entityElement().getId(), - sourceMappingDocument().getMappingLocalBindingContext() + sourceMappingDocument(), + entityElement().getId() ); } @@ -111,14 +110,14 @@ public Nature getNature() { public VersionAttributeSource getVersioningAttributeSource() { if ( entityElement().getVersion() != null ) { return new VersionAttributeSourceImpl( - entityElement().getVersion(), - sourceMappingDocument().getMappingLocalBindingContext() + sourceMappingDocument(), + entityElement().getVersion() ); } else if ( entityElement().getTimestamp() != null ) { return new TimestampAttributeSourceImpl( - entityElement().getTimestamp(), - sourceMappingDocument().getMappingLocalBindingContext() + sourceMappingDocument(), + entityElement().getTimestamp() ); } return null; @@ -222,6 +221,7 @@ public DiscriminatorSource getDiscriminatorSource() { public RelationalValueSource getDiscriminatorRelationalValueSource() { if ( StringHelper.isNotEmpty( discriminatorElement.getColumnAttribute() ) ) { return new ColumnAttributeSourceImpl( + sourceMappingDocument(), null, // root table discriminatorElement.getColumnAttribute(), discriminatorElement.isInsert() ? TruthValue.TRUE : TruthValue.FALSE, @@ -229,10 +229,15 @@ public RelationalValueSource getDiscriminatorRelationalValueSource() { ); } else if ( StringHelper.isNotEmpty( discriminatorElement.getFormulaAttribute() ) ) { - return new FormulaImpl( null, discriminatorElement.getFormulaAttribute() ); + return new FormulaImpl( + sourceMappingDocument(), + null, + discriminatorElement.getFormulaAttribute() + ); } else if ( discriminatorElement.getColumn() != null ) { return new ColumnSourceImpl( + sourceMappingDocument(), null, // root table discriminatorElement.getColumn(), discriminatorElement.isInsert() ? TruthValue.TRUE : TruthValue.FALSE, @@ -240,7 +245,11 @@ else if ( discriminatorElement.getColumn() != null ) { ); } else if ( StringHelper.isNotEmpty( discriminatorElement.getFormula() ) ) { - return new FormulaImpl( null, discriminatorElement.getFormula() ); + return new FormulaImpl( + sourceMappingDocument(), + null, + discriminatorElement.getFormula() + ); } else { throw new MappingException( "could not determine source of discriminator mapping", getOrigin() ); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SecondaryTableSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SecondaryTableSourceImpl.java index b7aaaa793a..1043c58224 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SecondaryTableSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SecondaryTableSourceImpl.java @@ -48,7 +48,7 @@ public SecondaryTableSourceImpl( Helper.InLineViewNameInferrer inLineViewNameInferrer) { super( sourceMappingDocument ); this.joinElement = joinElement; - this.joinTable = Helper.createTableSource( joinElement, inLineViewNameInferrer ); + this.joinTable = Helper.createTableSource( sourceMappingDocument(), joinElement, inLineViewNameInferrer ); joinColumns = new ArrayList(); if ( joinElement.getKey().getColumnAttribute() != null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SetAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SetAttributeSourceImpl.java index 3fe2b99f3f..643d224f4c 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SetAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SetAttributeSourceImpl.java @@ -34,8 +34,11 @@ * @author Steve Ebersole */ public class SetAttributeSourceImpl extends AbstractPluralAttributeSourceImpl implements Orderable, Sortable { - public SetAttributeSourceImpl(JaxbSetElement setElement, AttributeSourceContainer container) { - super( setElement, container ); + public SetAttributeSourceImpl( + MappingDocument sourceMappingDocument, + JaxbSetElement setElement, + AttributeSourceContainer container) { + super( sourceMappingDocument, setElement, container ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SingularIdentifierAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SingularIdentifierAttributeSourceImpl.java index a28de2452f..fef1e3a8da 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SingularIdentifierAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SingularIdentifierAttributeSourceImpl.java @@ -40,14 +40,17 @@ * * @author Steve Ebersole */ -class SingularIdentifierAttributeSourceImpl implements SingularAttributeSource { +class SingularIdentifierAttributeSourceImpl + extends AbstractHbmSourceNode + implements SingularAttributeSource { private final JaxbHibernateMapping.JaxbClass.JaxbId idElement; private final ExplicitHibernateTypeSource typeSource; private final List valueSources; public SingularIdentifierAttributeSourceImpl( - final JaxbHibernateMapping.JaxbClass.JaxbId idElement, - LocalBindingContext bindingContext) { + MappingDocument mappingDocument, + final JaxbHibernateMapping.JaxbClass.JaxbId idElement) { + super( mappingDocument ); this.idElement = idElement; this.typeSource = new ExplicitHibernateTypeSource() { private final String name = idElement.getTypeAttribute() != null @@ -70,6 +73,7 @@ public Map getParameters() { } }; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getColumnAttribute() { @@ -106,8 +110,7 @@ public boolean isIncludedInUpdateByDefault() { public boolean isForceNotNull() { return true; } - }, - bindingContext + } ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SubclassEntitySourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SubclassEntitySourceImpl.java index 3a00a51027..93881dd0ec 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SubclassEntitySourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/SubclassEntitySourceImpl.java @@ -23,8 +23,6 @@ */ package org.hibernate.metamodel.internal.source.hbm; -import java.util.List; - import org.hibernate.internal.jaxb.mapping.hbm.EntityElement; import org.hibernate.internal.jaxb.mapping.hbm.JaxbSubclassElement; import org.hibernate.internal.jaxb.mapping.hbm.TableInformationSource; @@ -46,8 +44,10 @@ protected SubclassEntitySourceImpl( super( sourceMappingDocument, entityElement ); this.container = container; this.primaryTable = TableInformationSource.class.isInstance( entityElement ) - ? Helper.createTableSource( (TableInformationSource) entityElement, this ) + ? Helper.createTableSource( sourceMappingDocument(), (TableInformationSource) entityElement, this ) : null; + + afterInstantiation(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TableSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TableSourceImpl.java index ef211a2765..acce4380c6 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TableSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TableSourceImpl.java @@ -28,12 +28,15 @@ /** * @author Steve Ebersole */ -public class TableSourceImpl implements TableSource { +public class TableSourceImpl + extends AbstractHbmSourceNode + implements TableSource { private final String schema; private final String catalog; private final String tableName; - TableSourceImpl(String schema, String catalog, String tableName) { + TableSourceImpl(MappingDocument mappingDocument, String schema, String catalog, String tableName) { + super( mappingDocument ); this.schema = schema; this.catalog = catalog; this.tableName = tableName; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TimestampAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TimestampAttributeSourceImpl.java index f89b745807..f01e8b2055 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TimestampAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/TimestampAttributeSourceImpl.java @@ -30,8 +30,6 @@ import org.hibernate.internal.util.Value; import org.hibernate.mapping.PropertyGeneration; import org.hibernate.metamodel.spi.source.ExplicitHibernateTypeSource; -import org.hibernate.metamodel.spi.source.LocalBindingContext; -import org.hibernate.metamodel.spi.source.MappingException; import org.hibernate.metamodel.spi.source.MetaAttributeSource; import org.hibernate.metamodel.spi.source.RelationalValueSource; import org.hibernate.metamodel.spi.source.SingularAttributeNature; @@ -42,17 +40,19 @@ * * @author Steve Ebersole */ -class TimestampAttributeSourceImpl implements VersionAttributeSource { +class TimestampAttributeSourceImpl + extends AbstractHbmSourceNode + implements VersionAttributeSource { private final JaxbHibernateMapping.JaxbClass.JaxbTimestamp timestampElement; - private final LocalBindingContext bindingContext; private final List valueSources; TimestampAttributeSourceImpl( - final JaxbHibernateMapping.JaxbClass.JaxbTimestamp timestampElement, - LocalBindingContext bindingContext) { + MappingDocument mappingDocument, + final JaxbHibernateMapping.JaxbClass.JaxbTimestamp timestampElement) { + super( mappingDocument ); this.timestampElement = timestampElement; - this.bindingContext = bindingContext; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getColumnAttribute() { @@ -84,8 +84,7 @@ public boolean isIncludedInInsertByDefault() { public boolean isIncludedInUpdateByDefault() { return true; } - }, - bindingContext + } ); } @@ -124,10 +123,7 @@ public PropertyGeneration initialize() { ? PropertyGeneration.NEVER : PropertyGeneration.parse( timestampElement.getGenerated().value() ); if ( propertyGeneration == PropertyGeneration.INSERT ) { - throw new MappingException( - "'generated' attribute cannot be 'insert' for versioning property", - bindingContext.getOrigin() - ); + throw makeMappingException( "'generated' attribute cannot be 'insert' for versioning property" ); } return propertyGeneration; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/VersionAttributeSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/VersionAttributeSourceImpl.java index f789f92e3a..76e4e7e6a8 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/VersionAttributeSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/VersionAttributeSourceImpl.java @@ -29,8 +29,6 @@ import org.hibernate.internal.jaxb.mapping.hbm.JaxbHibernateMapping; import org.hibernate.internal.util.Value; import org.hibernate.mapping.PropertyGeneration; -import org.hibernate.metamodel.spi.source.LocalBindingContext; -import org.hibernate.metamodel.spi.source.MappingException; import org.hibernate.metamodel.spi.source.ExplicitHibernateTypeSource; import org.hibernate.metamodel.spi.source.MetaAttributeSource; import org.hibernate.metamodel.spi.source.RelationalValueSource; @@ -43,17 +41,19 @@ * * @author Steve Ebersole */ -class VersionAttributeSourceImpl implements VersionAttributeSource { +class VersionAttributeSourceImpl + extends AbstractHbmSourceNode + implements VersionAttributeSource { private final JaxbHibernateMapping.JaxbClass.JaxbVersion versionElement; - private final LocalBindingContext bindingContext; private final List valueSources; VersionAttributeSourceImpl( - final JaxbHibernateMapping.JaxbClass.JaxbVersion versionElement, - LocalBindingContext bindingContext) { + MappingDocument mappingDocument, + final JaxbHibernateMapping.JaxbClass.JaxbVersion versionElement) { + super( mappingDocument ); this.versionElement = versionElement; - this.bindingContext = bindingContext; this.valueSources = Helper.buildValueSources( + sourceMappingDocument(), new Helper.ValueSourcesAdapter() { @Override public String getColumnAttribute() { @@ -85,8 +85,7 @@ public boolean isIncludedInInsertByDefault() { public boolean isIncludedInUpdateByDefault() { return true; } - }, - bindingContext + } ); } @@ -130,10 +129,7 @@ public PropertyGeneration initialize() { ? PropertyGeneration.NEVER : PropertyGeneration.parse( versionElement.getGenerated().value() ); if ( propertyGeneration == PropertyGeneration.INSERT ) { - throw new MappingException( - "'generated' attribute cannot be 'insert' for versioning property", - bindingContext.getOrigin() - ); + throw makeMappingException( "'generated' attribute cannot be 'insert' for versioning property" ); } return propertyGeneration; }