Skip to content

Commit 91f84c2

Browse files
committed
HHH-6480 - Develop component binding for new metamodel
1 parent e540089 commit 91f84c2

14 files changed

+186
-171
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/binding/AbstractAttributeBindingContainer.java

Lines changed: 0 additions & 114 deletions
This file was deleted.

hibernate-core/src/main/java/org/hibernate/metamodel/binding/AttributeBindingContainer.java

Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,101 @@
2626
import org.hibernate.metamodel.domain.AttributeContainer;
2727
import org.hibernate.metamodel.domain.PluralAttribute;
2828
import org.hibernate.metamodel.domain.SingularAttribute;
29-
import org.hibernate.metamodel.relational.TableSpecification;
3029
import org.hibernate.metamodel.source.MetaAttributeContext;
3130

3231
/**
32+
* Common contract for {@link EntityBinding} and {@link ComponentAttributeBinding} in so far as they are both
33+
* containers for {@link AttributeBinding} descriptors
34+
*
3335
* @author Steve Ebersole
3436
*/
3537
public interface AttributeBindingContainer {
38+
/**
39+
* Obtain the path base of this container. Intended to help uniquely identify each attribute binding.
40+
*
41+
* @return The path base for this container.
42+
*/
3643
public String getPathBase();
3744

45+
/**
46+
* Obtain the underlying domain attribute container.
47+
*
48+
* @return The attribute container
49+
*/
3850
public AttributeContainer getAttributeContainer();
3951

52+
/**
53+
* Obtain all attribute bindings
54+
*
55+
* @return All attribute bindings
56+
*/
4057
public Iterable<AttributeBinding> attributeBindings();
4158

59+
/**
60+
* Locate a specific attribute binding, by its local name.
61+
*
62+
* @param name The name of the attribute, local to this container.
63+
*
64+
* @return The attribute binding.
65+
*/
4266
public AttributeBinding locateAttributeBinding(String name);
4367

44-
public SimpleSingularAttributeBinding makeSimpleAttributeBinding(SingularAttribute attribute);
68+
/**
69+
* Factory method for basic attribute bindings.
70+
*
71+
* @param attribute The attribute for which to make a binding.
72+
*
73+
* @return The attribute binding instance.
74+
*/
75+
public BasicAttributeBinding makeBasicAttributeBinding(SingularAttribute attribute);
4576

77+
/**
78+
* Factory method for component attribute bindings.
79+
*
80+
* @param attribute The attribute for which to make a binding.
81+
*
82+
* @return The attribute binding instance.
83+
*/
4684
public ComponentAttributeBinding makeComponentAttributeBinding(SingularAttribute attribute);
4785

86+
/**
87+
* Factory method for many-to-one attribute bindings.
88+
*
89+
* @param attribute The attribute for which to make a binding.
90+
*
91+
* @return The attribute binding instance.
92+
*/
4893
public ManyToOneAttributeBinding makeManyToOneAttributeBinding(SingularAttribute attribute);
4994

95+
/**
96+
* Factory method for bag attribute bindings.
97+
*
98+
* @param attribute The attribute for which to make a binding.
99+
* @param nature The nature of the collection elements.
100+
*
101+
* @return The attribute binding instance.
102+
*/
50103
public BagBinding makeBagAttributeBinding(PluralAttribute attribute, CollectionElementNature nature);
51104

105+
/**
106+
* Seeks out the entity binding that is the root of this component path.
107+
*
108+
* @return The entity binding
109+
*/
52110
public EntityBinding seekEntityBinding();
53111

54-
public TableSpecification getPrimaryTable();
55-
56-
public TableSpecification locateTable(String containingTableName);
57-
112+
/**
113+
* Obtain the {@link Class} reference for this attribute container. Generally this is used to perform reflection
114+
* on the attributes.
115+
*
116+
* @return The {@link Class} reference
117+
*/
58118
public Class<?> getClassReference();
59119

120+
/**
121+
* Obtain the meta-attribute context for this container.
122+
*
123+
* @return The meta-attribute context.
124+
*/
60125
public MetaAttributeContext getMetaAttributeContext();
61126
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
*
4242
* @author Steve Ebersole
4343
*/
44-
public class SimpleSingularAttributeBinding
44+
public class BasicAttributeBinding
4545
extends AbstractSingularAttributeBinding
4646
implements SingularAttributeBinding, KeyValueBinding {
4747

@@ -55,7 +55,7 @@ public class SimpleSingularAttributeBinding
5555

5656
private MetaAttributeContext metaAttributeContext;
5757

58-
SimpleSingularAttributeBinding(
58+
BasicAttributeBinding(
5959
AttributeBindingContainer container,
6060
SingularAttribute attribute,
6161
boolean forceNonNullable,

hibernate-core/src/main/java/org/hibernate/metamodel/binding/CollectionKey.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class CollectionKey {
3838
private HibernateTypeDescriptor hibernateTypeDescriptor;
3939

4040
// todo : this would be nice to have but we do not always know it, especially in HBM case.
41-
// private SimpleSingularAttributeBinding otherSide;
41+
// private BasicAttributeBinding otherSide;
4242

4343
public CollectionKey(AbstractPluralAttributeBinding collection) {
4444
this.collection = collection;

hibernate-core/src/main/java/org/hibernate/metamodel/binding/ComponentAttributeBinding.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.hibernate.metamodel.domain.Component;
3232
import org.hibernate.metamodel.domain.PluralAttribute;
3333
import org.hibernate.metamodel.domain.SingularAttribute;
34-
import org.hibernate.metamodel.relational.TableSpecification;
3534
import org.hibernate.metamodel.source.MetaAttributeContext;
3635

3736
/**
@@ -83,16 +82,6 @@ public void setMetaAttributeContext(MetaAttributeContext metaAttributeContext) {
8382
this.metaAttributeContext = metaAttributeContext;
8483
}
8584

86-
@Override
87-
public TableSpecification getPrimaryTable() {
88-
return getContainer().getPrimaryTable();
89-
}
90-
91-
@Override
92-
public TableSpecification locateTable(String containingTableName) {
93-
return getContainer().locateTable( containingTableName );
94-
}
95-
9685
@Override
9786
public AttributeBinding locateAttributeBinding(String name) {
9887
return attributeBindingMap.get( name );
@@ -109,8 +98,8 @@ protected void checkValueBinding() {
10998
}
11099

111100
@Override
112-
public SimpleSingularAttributeBinding makeSimpleAttributeBinding(SingularAttribute attribute) {
113-
final SimpleSingularAttributeBinding binding = new SimpleSingularAttributeBinding(
101+
public BasicAttributeBinding makeBasicAttributeBinding(SingularAttribute attribute) {
102+
final BasicAttributeBinding binding = new BasicAttributeBinding(
114103
this,
115104
attribute,
116105
isNullable(),

0 commit comments

Comments
 (0)