Skip to content

Commit 43ef51e

Browse files
committed
HHH-16972 phase III
1 parent d4b861b commit 43ef51e

33 files changed

+176
-177
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/internal/AttributeFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
3939
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
4040
import org.hibernate.metamodel.mapping.EntityVersionMapping;
41-
import org.hibernate.metamodel.model.domain.AbstractIdentifiableType;
41+
import org.hibernate.metamodel.model.domain.internal.AbstractIdentifiableType;
4242
import org.hibernate.metamodel.model.domain.DomainType;
4343
import org.hibernate.metamodel.model.domain.EmbeddableDomainType;
4444
import org.hibernate.metamodel.model.domain.IdentifiableDomainType;

hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.hibernate.mapping.PersistentClass;
2424
import org.hibernate.mapping.Property;
2525
import org.hibernate.metamodel.MappingMetamodel;
26-
import org.hibernate.metamodel.model.domain.AbstractIdentifiableType;
26+
import org.hibernate.metamodel.model.domain.internal.AbstractIdentifiableType;
2727
import org.hibernate.metamodel.model.domain.BasicDomainType;
2828
import org.hibernate.metamodel.model.domain.EmbeddableDomainType;
2929
import org.hibernate.metamodel.model.domain.EntityDomainType;

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@
99

1010
import org.hibernate.HibernateException;
1111
import org.hibernate.query.OutputableType;
12-
import org.hibernate.query.sqm.SqmExpressible;
1312

1413
/**
1514
* Hibernate extension to the JPA {@link BasicType} contract.
1615
*
1716
* @author Steve Ebersole
1817
*/
1918
public interface BasicDomainType<J>
20-
extends ReturnableType<J>, BasicType<J>, SqmExpressible<J>, OutputableType<J> {
19+
extends ReturnableType<J>, BasicType<J>, OutputableType<J> {
2120
@Override
2221
default PersistenceType getPersistenceType() {
2322
return PersistenceType.BASIC;

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/EmbeddableDomainType.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
import java.util.Collection;
88

9-
import org.hibernate.query.sqm.SqmExpressible;
10-
119
import jakarta.persistence.metamodel.EmbeddableType;
1210

1311
/**
@@ -19,7 +17,7 @@
1917
* @author Steve Ebersole
2018
*/
2119
public interface EmbeddableDomainType<J>
22-
extends TreatableDomainType<J>, EmbeddableType<J>, SqmExpressible<J> {
20+
extends TreatableDomainType<J>, EmbeddableType<J> {
2321
@Override
2422
default EmbeddableDomainType<J> getSqmType() {
2523
return this;

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import java.util.function.Consumer;
99

1010
import org.hibernate.metamodel.RepresentationMode;
11-
import org.hibernate.query.sqm.SqmExpressible;
1211

1312
import jakarta.persistence.metamodel.ManagedType;
1413

@@ -17,7 +16,7 @@
1716
*
1817
* @author Steve Ebersole
1918
*/
20-
public interface ManagedDomainType<J> extends SqmExpressible<J>, DomainType<J>, ManagedType<J> {
19+
public interface ManagedDomainType<J> extends DomainType<J>, ManagedType<J> {
2120
/**
2221
* Get the type name.
2322
*

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/PathSource.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public interface PathSource<J> {
3131
*/
3232
PathSource<?> findSubPathSource(String name);
3333

34-
3534
/**
3635
* Find a {@link PathSource} by name relative to this source. If {@code includeSubtypes} is set
3736
* to {@code true} and this path source is polymorphic, also try finding subtype attributes.
@@ -41,7 +40,5 @@ public interface PathSource<J> {
4140
* @return null if the subPathSource is not found
4241
* @throws IllegalStateException to indicate that this source cannot be de-referenced
4342
*/
44-
default PathSource<?> findSubPathSource(String name, boolean includeSubtypes) {
45-
return findSubPathSource( name );
46-
}
43+
PathSource<?> findSubPathSource(String name, boolean includeSubtypes);
4744
}

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/PluralPersistentAttribute.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@
88

99
import org.hibernate.metamodel.CollectionClassification;
1010
import org.hibernate.query.NotIndexedCollectionException;
11-
import org.hibernate.query.sqm.SqmJoinable;
1211

1312
/**
1413
* Extension of the JPA-defined {@link PluralAttribute} interface.
1514
*
1615
* @author Steve Ebersole
1716
*/
1817
public interface PluralPersistentAttribute<D, C, E>
19-
extends PersistentAttribute<D, C>, PathSource<E>, SqmJoinable<D,E>, PluralAttribute<D, C, E> {
18+
extends PersistentAttribute<D, C>, PathSource<E>, PluralAttribute<D, C, E> {
2019
@Override
2120
ManagedDomainType<D> getDeclaringType();
2221

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SingularPersistentAttribute.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66

77
import jakarta.persistence.metamodel.SingularAttribute;
88

9-
import org.hibernate.query.sqm.SqmJoinable;
109

1110
/**
1211
* Extension of the JPA-defined {@link SingularAttribute} interface.
1312
*
1413
* @author Steve Ebersole
1514
*/
1615
public interface SingularPersistentAttribute<D,J>
17-
extends SingularAttribute<D,J>, PersistentAttribute<D,J>, PathSource<J>, SqmJoinable<D,J> {
16+
extends SingularAttribute<D,J>, PersistentAttribute<D,J>, PathSource<J> {
1817
@Override
1918
SimpleDomainType<J> getType();
2019

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/AbstractDomainType.java renamed to hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractDomainType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
5-
package org.hibernate.metamodel.model.domain;
5+
package org.hibernate.metamodel.model.domain.internal;
66

7+
import org.hibernate.metamodel.model.domain.SimpleDomainType;
78
import org.hibernate.type.descriptor.java.JavaType;
89

910
/**

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/AbstractIdentifiableType.java renamed to hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractIdentifiableType.java

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
5-
package org.hibernate.metamodel.model.domain;
5+
package org.hibernate.metamodel.model.domain.internal;
66

77
import java.io.Serializable;
88
import java.util.ArrayList;
@@ -18,11 +18,15 @@
1818
import org.hibernate.AssertionFailure;
1919
import org.hibernate.metamodel.UnsupportedMappingException;
2020
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
21-
import org.hibernate.metamodel.model.domain.internal.AbstractSqmPathSource;
22-
import org.hibernate.metamodel.model.domain.internal.BasicSqmPathSource;
23-
import org.hibernate.metamodel.model.domain.internal.EmbeddedSqmPathSource;
24-
import org.hibernate.metamodel.model.domain.internal.NonAggregatedCompositeSqmPathSource;
21+
import org.hibernate.metamodel.model.domain.BasicDomainType;
22+
import org.hibernate.metamodel.model.domain.DomainType;
23+
import org.hibernate.metamodel.model.domain.EmbeddableDomainType;
24+
import org.hibernate.metamodel.model.domain.IdentifiableDomainType;
25+
import org.hibernate.metamodel.model.domain.PersistentAttribute;
26+
import org.hibernate.metamodel.model.domain.SimpleDomainType;
27+
import org.hibernate.metamodel.model.domain.SingularPersistentAttribute;
2528
import org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor;
29+
import org.hibernate.query.sqm.SqmPathSource;
2630
import org.hibernate.query.sqm.tree.domain.SqmSingularPersistentAttribute;
2731
import org.hibernate.type.descriptor.java.JavaType;
2832
import org.hibernate.type.descriptor.java.spi.PrimitiveJavaType;
@@ -54,7 +58,7 @@ public abstract class AbstractIdentifiableType<J>
5458
private Set<SingularPersistentAttribute<? super J,?>> nonAggregatedIdAttributes;
5559
private EmbeddableDomainType<?> idClassType;
5660

57-
private PathSource<?> identifierDescriptor;
61+
private SqmPathSource<?> identifierDescriptor;
5862

5963
private final boolean isVersioned;
6064
private SingularPersistentAttribute<J, ?> versionAttribute;
@@ -80,7 +84,7 @@ protected InFlightAccess<J> createInFlightAccess() {
8084
}
8185

8286
@Override
83-
public PathSource<?> getIdentifierDescriptor() {
87+
public SqmPathSource<?> getIdentifierDescriptor() {
8488
return identifierDescriptor;
8589
}
8690

@@ -94,9 +98,9 @@ public boolean hasSingleIdAttribute() {
9498
}
9599

96100
@Override
97-
public IdentifiableDomainType<? super J> getSuperType() {
101+
public AbstractIdentifiableType<? super J> getSuperType() {
98102
// overridden simply to perform the cast
99-
return (IdentifiableDomainType<? super J>) super.getSuperType();
103+
return (AbstractIdentifiableType<? super J>) super.getSuperType();
100104
}
101105

102106
@Override
@@ -108,7 +112,7 @@ public IdentifiableDomainType<? super J> getSupertype() {
108112
@SuppressWarnings("unchecked")
109113
public <Y> SingularPersistentAttribute<? super J, Y> getId(Class<Y> javaType) {
110114
ensureNoIdClass();
111-
SingularPersistentAttribute<? super J, ?> id = findIdAttribute();
115+
final var id = findIdAttribute();
112116
if ( id != null ) {
113117
checkType( id, javaType );
114118
}
@@ -168,22 +172,22 @@ public <Y> SingularPersistentAttribute<J, Y> getDeclaredId(Class<Y> javaType) {
168172

169173
@Override
170174
public SimpleDomainType<?> getIdType() {
171-
final SingularPersistentAttribute<? super J, ?> id = findIdAttribute();
175+
final var id = findIdAttribute();
172176
if ( id != null ) {
173177
return id.getType();
174178
}
175-
176-
Set<SingularPersistentAttribute<? super J, ?>> idClassAttributes = getIdClassAttributesSafely();
177-
if ( idClassAttributes != null ) {
178-
if ( idClassAttributes.size() == 1 ) {
179-
return idClassAttributes.iterator().next().getType();
180-
}
181-
else if ( idClassType instanceof SimpleDomainType<?> simpleDomainType ) {
182-
return simpleDomainType;
179+
else {
180+
final var idClassAttributes = getIdClassAttributesSafely();
181+
if ( idClassAttributes != null ) {
182+
if ( idClassAttributes.size() == 1 ) {
183+
return idClassAttributes.iterator().next().getType();
184+
}
185+
else if ( idClassType instanceof SimpleDomainType<?> simpleDomainType ) {
186+
return simpleDomainType;
187+
}
183188
}
189+
return null;
184190
}
185-
186-
return null;
187191
}
188192

189193
/**
@@ -192,17 +196,14 @@ else if ( idClassType instanceof SimpleDomainType<?> simpleDomainType ) {
192196
* @return IdClass attributes or {@code null}
193197
*/
194198
public Set<SingularPersistentAttribute<? super J, ?>> getIdClassAttributesSafely() {
195-
if ( !hasIdClass() ) {
196-
return null;
199+
if ( hasIdClass() ) {
200+
final Set<SingularPersistentAttribute<? super J, ?>> attributes = new HashSet<>();
201+
visitIdClassAttributes( attributes::add );
202+
return attributes.isEmpty() ? null : attributes;
197203
}
198-
final Set<SingularPersistentAttribute<? super J,?>> attributes = new HashSet<>();
199-
visitIdClassAttributes( attributes::add );
200-
201-
if ( attributes.isEmpty() ) {
204+
else {
202205
return null;
203206
}
204-
205-
return attributes;
206207
}
207208

208209
@Override
@@ -213,11 +214,9 @@ else if ( idClassType instanceof SimpleDomainType<?> simpleDomainType ) {
213214

214215
final Set<SingularAttribute<? super J, ?>> attributes = new HashSet<>();
215216
visitIdClassAttributes( attributes::add );
216-
217217
if ( attributes.isEmpty() ) {
218218
throw new IllegalArgumentException( "Unable to locate IdClass attributes [" + getJavaType() + "]" );
219219
}
220-
221220
return attributes;
222221
}
223222

@@ -245,41 +244,42 @@ public boolean hasDeclaredVersionAttribute() {
245244
@Override
246245
@SuppressWarnings("unchecked")
247246
public <Y> SingularPersistentAttribute<? super J, Y> getVersion(Class<Y> javaType) {
248-
if ( ! hasVersionAttribute() ) {
249-
return null;
247+
if ( hasVersionAttribute() ) {
248+
final var version = findVersionAttribute();
249+
if ( version != null ) {
250+
checkType( version, javaType );
251+
}
252+
return (SingularPersistentAttribute<? super J, Y>) version;
250253
}
251-
252-
SingularPersistentAttribute<? super J, ?> version = findVersionAttribute();
253-
if ( version != null ) {
254-
checkType( version, javaType );
254+
else {
255+
return null;
255256
}
256-
return (SingularPersistentAttribute<? super J, Y>) version;
257257
}
258258

259259
@Override
260260
public SingularPersistentAttribute<? super J, ?> findVersionAttribute() {
261261
if ( versionAttribute != null ) {
262262
return versionAttribute;
263263
}
264-
265-
if ( getSuperType() != null ) {
264+
else if ( getSuperType() != null ) {
266265
return getSuperType().findVersionAttribute();
267266
}
268-
269-
return null;
267+
else {
268+
return null;
269+
}
270270
}
271271

272272
@Override
273273
public List<? extends PersistentAttribute<? super J, ?>> findNaturalIdAttributes() {
274274
if ( naturalIdAttributes != null ) {
275275
return naturalIdAttributes;
276276
}
277-
278-
if ( getSuperType() != null ) {
277+
else if ( getSuperType() != null ) {
279278
return getSuperType().findNaturalIdAttributes();
280279
}
281-
282-
return null;
280+
else {
281+
return null;
282+
}
283283
}
284284

285285
@Override
@@ -351,7 +351,7 @@ public void applyNonAggregatedIdAttributes(
351351
AbstractIdentifiableType.this.nonAggregatedIdAttributes = Collections.EMPTY_SET;
352352
}
353353
else {
354-
for ( SingularPersistentAttribute<? super J, ?> idAttribute : idAttributes ) {
354+
for ( var idAttribute : idAttributes ) {
355355
if ( AbstractIdentifiableType.this == idAttribute.getDeclaringType() ) {
356356
addAttribute( (PersistentAttribute<J, ?>) idAttribute );
357357
}
@@ -389,19 +389,18 @@ public void addAttribute(PersistentAttribute<J, ?> attribute) {
389389
@Override
390390
public void finishUp() {
391391
managedTypeAccess.finishUp();
392-
393392
identifierDescriptor = interpretIdDescriptor();
394393
}
395394
}
396395

397396
private static final Logger log = Logger.getLogger( AbstractIdentifiableType.class );
398397

399-
private PathSource<?> interpretIdDescriptor() {
398+
private SqmPathSource<?> interpretIdDescriptor() {
400399
log.tracef( "Interpreting domain-model identifier descriptor" );
401400

402-
final IdentifiableDomainType<? super J> superType = getSuperType();
401+
final var superType = getSuperType();
403402
if ( superType != null ) {
404-
final PathSource<?> idDescriptor = superType.getIdentifierDescriptor();
403+
final var idDescriptor = superType.getIdentifierDescriptor();
405404
if ( idDescriptor != null ) {
406405
return idDescriptor;
407406
}

0 commit comments

Comments
 (0)