diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/Binder.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/Binder.java index c060a92f0869..7faf3d3ee5da 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/Binder.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/Binder.java @@ -520,7 +520,10 @@ private void bindCompositeCollectionElement( final CompositeAttributeBindingContainer compositeAttributeBindingContainer = elementBinding.createCompositeAttributeBindingContainer( aggregate, - pluralAttributeBinding.getMetaAttributeContext(), // TODO: should get this from elementSource + createMetaAttributeContext( + pluralAttributeBinding.getContainer(), + elementSource.getMetaAttributeSources() + ), parentAttribute ); 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 51930f2228be..04fb7c404d8f 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 @@ -100,22 +100,22 @@ private PluralAttributeElementSource interpretElementType() { else if ( pluralAttributeElement.getCompositeElement() != null ) { return new CompositePluralAttributeElementSourceImpl( sourceMappingDocument(), - pluralAttributeElement, - pluralAttributeElement.getCompositeElement() + pluralAttributeElement.getCompositeElement(), + pluralAttributeElement.getCascade() ); } else if ( pluralAttributeElement.getOneToMany() != null ) { return new OneToManyPluralAttributeElementSourceImpl( sourceMappingDocument(), - pluralAttributeElement, - pluralAttributeElement.getOneToMany() + pluralAttributeElement.getOneToMany(), + pluralAttributeElement.getCascade() ); } else if ( pluralAttributeElement.getManyToMany() != null ) { return new ManyToManyPluralAttributeElementSourceImpl( sourceMappingDocument(), - pluralAttributeElement, - pluralAttributeElement.getManyToMany() + pluralAttributeElement.getManyToMany(), + pluralAttributeElement.getCascade() ); } else if ( pluralAttributeElement.getManyToAny() != null ) { 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 f2c39b73952e..c16ef0806cd4 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 @@ -37,11 +37,11 @@ import org.hibernate.jaxb.spi.hbm.JaxbNestedCompositeElementElement; import org.hibernate.jaxb.spi.hbm.JaxbPropertyElement; import org.hibernate.jaxb.spi.hbm.JaxbTuplizerElement; -import org.hibernate.jaxb.spi.hbm.PluralAttributeElement; import org.hibernate.metamodel.spi.binding.SingularAttributeBinding; import org.hibernate.metamodel.spi.source.AttributeSource; import org.hibernate.metamodel.spi.source.CompositePluralAttributeElementSource; import org.hibernate.metamodel.spi.source.LocalBindingContext; +import org.hibernate.metamodel.spi.source.MetaAttributeSource; import org.hibernate.metamodel.spi.source.SingularAttributeSource; /** @@ -52,17 +52,17 @@ public class CompositePluralAttributeElementSourceImpl extends AbstractHbmSourceNode implements CompositePluralAttributeElementSource { - private final PluralAttributeElement pluralAttributeElement; private final JaxbCompositeElementElement compositeElement; + private final Iterable cascadeStyles; private final List attributeSources; public CompositePluralAttributeElementSourceImpl( MappingDocument mappingDocument, - PluralAttributeElement pluralAttributeElement, - JaxbCompositeElementElement compositeElement) { + JaxbCompositeElementElement compositeElement, + String cascadeString) { super( mappingDocument ); - this.pluralAttributeElement = pluralAttributeElement; this.compositeElement = compositeElement; + this.cascadeStyles = Helper.interpretCascadeStyles( cascadeString, bindingContext() ); this.attributeSources = buildAttributeSources( mappingDocument, compositeElement ); } @@ -139,7 +139,7 @@ public LocalBindingContext getLocalBindingContext() { @Override public Iterable getCascadeStyles() { - return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext() ); + return cascadeStyles; } private static AttributeSource buildAttributeSource( @@ -178,4 +178,8 @@ private static AttributeSource buildAttributeSource( throw new NotYetImplementedException(); } + @Override + public Iterable getMetaAttributeSources() { + return compositeElement.getMeta(); + } } 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 5dd167746361..082a76c48d32 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 @@ -31,7 +31,6 @@ import org.hibernate.internal.util.StringHelper; import org.hibernate.jaxb.spi.hbm.JaxbColumnElement; import org.hibernate.jaxb.spi.hbm.JaxbManyToManyElement; -import org.hibernate.jaxb.spi.hbm.PluralAttributeElement; import org.hibernate.metamodel.spi.source.ManyToManyPluralAttributeElementSource; import org.hibernate.metamodel.spi.source.RelationalValueSource; @@ -41,18 +40,18 @@ public class ManyToManyPluralAttributeElementSourceImpl extends AbstractHbmSourceNode implements ManyToManyPluralAttributeElementSource { - private final PluralAttributeElement pluralAttributeElement; private final JaxbManyToManyElement manyToManyElement; + private final Iterable cascadeStyles; private final List valueSources; public ManyToManyPluralAttributeElementSourceImpl( MappingDocument mappingDocument, - final PluralAttributeElement pluralAttributeElement, - final JaxbManyToManyElement manyToManyElement) { + final JaxbManyToManyElement manyToManyElement, + String cascadeString) { super( mappingDocument ); - this.pluralAttributeElement = pluralAttributeElement; this.manyToManyElement = manyToManyElement; + this.cascadeStyles = Helper.interpretCascadeStyles( cascadeString, bindingContext() ); this.valueSources = Helper.buildValueSources( sourceMappingDocument(), @@ -145,7 +144,7 @@ public String getWhere() { @Override public Iterable getCascadeStyles() { - return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext() ); + return cascadeStyles; } @Override 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 66c2b9a5915f..a1b227251dac 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 @@ -26,7 +26,6 @@ import org.hibernate.engine.spi.CascadeStyle; import org.hibernate.internal.util.StringHelper; import org.hibernate.jaxb.spi.hbm.JaxbOneToManyElement; -import org.hibernate.jaxb.spi.hbm.PluralAttributeElement; import org.hibernate.metamodel.spi.source.OneToManyPluralAttributeElementSource; /** @@ -35,16 +34,16 @@ public class OneToManyPluralAttributeElementSourceImpl extends AbstractHbmSourceNode implements OneToManyPluralAttributeElementSource { - private final PluralAttributeElement pluralAttributeElement; private final JaxbOneToManyElement oneToManyElement; + private final Iterable cascadeStyles; public OneToManyPluralAttributeElementSourceImpl( MappingDocument mappingDocument, - PluralAttributeElement pluralAttributeElement, - JaxbOneToManyElement oneToManyElement) { + JaxbOneToManyElement oneToManyElement, + String cascadeString) { super( mappingDocument ); - this.pluralAttributeElement = pluralAttributeElement; this.oneToManyElement = oneToManyElement; + this.cascadeStyles = Helper.interpretCascadeStyles( cascadeString, bindingContext() ); } @Override @@ -67,6 +66,6 @@ public boolean isNotFoundAnException() { @Override public Iterable getCascadeStyles() { - return Helper.interpretCascadeStyles( pluralAttributeElement.getCascade(), bindingContext() ); + return cascadeStyles; } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/spi/binding/CompositePluralAttributeElementBinding.java b/hibernate-core/src/main/java/org/hibernate/metamodel/spi/binding/CompositePluralAttributeElementBinding.java index 65c44952dae6..efd143380cb4 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/spi/binding/CompositePluralAttributeElementBinding.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/spi/binding/CompositePluralAttributeElementBinding.java @@ -43,6 +43,7 @@ public class CompositePluralAttributeElementBinding extends AbstractPluralAttributeElementBinding implements Cascadeable { + // TODO: Come up with a more descriptive name for compositeAttributeBindingContainer. private AbstractCompositeAttributeBindingContainer compositeAttributeBindingContainer; private CascadeStyle cascadeStyle; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/spi/source/CompositePluralAttributeElementSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/spi/source/CompositePluralAttributeElementSource.java index d1c93a5b9f94..3667ccf8295c 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/spi/source/CompositePluralAttributeElementSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/spi/source/CompositePluralAttributeElementSource.java @@ -29,7 +29,7 @@ * @author Steve Ebersole */ public interface CompositePluralAttributeElementSource - extends PluralAttributeElementSource, AttributeSourceContainer, CascadeStyleSource { + extends PluralAttributeElementSource, AttributeSourceContainer, CascadeStyleSource, MetaSource { public String getClassName(); public ValueHolder> getClassReference();