Skip to content

Commit a7d76b2

Browse files
committed
more @NotImplementedYet clean-up
1 parent 37094e3 commit a7d76b2

File tree

3 files changed

+81
-67
lines changed

3 files changed

+81
-67
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/entitygraph/ast/LoadPlanBuilderTest.java

Lines changed: 62 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
import java.util.List;
1010

1111
import org.hibernate.LockOptions;
12-
import org.hibernate.NotYetImplementedFor6Exception;
12+
import org.hibernate.engine.FetchTiming;
1313
import org.hibernate.engine.spi.LoadQueryInfluencers;
1414
import org.hibernate.engine.spi.SessionFactoryImplementor;
1515
import org.hibernate.loader.ast.internal.CollectionLoaderSingleKey;
1616
import org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl;
1717
import org.hibernate.loader.ast.internal.SingleIdLoadPlan;
18+
import org.hibernate.loader.ast.spi.CascadingFetchProfile;
1819
import org.hibernate.metamodel.mapping.PluralAttributeMapping;
1920
import org.hibernate.persister.entity.EntityPersister;
2021
import org.hibernate.sql.results.graph.DomainResult;
@@ -24,22 +25,19 @@
2425
import org.hibernate.sql.results.graph.entity.EntityResult;
2526

2627
import org.hibernate.testing.orm.junit.DomainModel;
27-
import org.hibernate.testing.orm.junit.NotImplementedYet;
2828
import org.hibernate.testing.orm.junit.SessionFactory;
2929
import org.hibernate.testing.orm.junit.SessionFactoryScope;
3030
import org.junit.jupiter.api.Test;
3131

3232
import jakarta.persistence.CascadeType;
3333
import jakarta.persistence.Entity;
34+
import jakarta.persistence.FetchType;
3435
import jakarta.persistence.Id;
3536
import jakarta.persistence.JoinColumn;
3637
import jakarta.persistence.ManyToOne;
3738
import jakarta.persistence.OneToMany;
3839

39-
import static org.hamcrest.CoreMatchers.instanceOf;
40-
import static org.hibernate.testing.hamcrest.CollectionMatchers.hasSize;
41-
import static org.hibernate.testing.hamcrest.CollectionMatchers.isEmpty;
42-
import static org.junit.Assert.assertThat;
40+
import static org.assertj.core.api.Assertions.assertThat;
4341

4442
/**
4543
* @author Steve Ebersole
@@ -54,62 +52,75 @@ public void testSimpleBuild(SessionFactoryScope scope) {
5452
final SessionFactoryImplementor sessionFactory = scope.getSessionFactory();
5553
final EntityPersister entityDescriptor = sessionFactory.getDomainModel().getEntityDescriptor( Message.class );
5654

57-
final SingleIdEntityLoaderStandardImpl loader = new SingleIdEntityLoaderStandardImpl(
58-
entityDescriptor,
59-
sessionFactory
60-
);
55+
final SingleIdEntityLoaderStandardImpl<?> loader = new SingleIdEntityLoaderStandardImpl<>( entityDescriptor, sessionFactory );
6156

62-
final SingleIdLoadPlan loadPlan = loader.resolveLoadPlan(
57+
final SingleIdLoadPlan<?> loadPlan = loader.resolveLoadPlan(
6358
LockOptions.READ,
6459
LoadQueryInfluencers.NONE,
6560
sessionFactory
6661
);
6762

68-
assertThat(
69-
loadPlan.getJdbcSelect()
70-
.getJdbcValuesMappingProducer()
71-
.resolve( null, sessionFactory )
72-
.getDomainResults(),
73-
hasSize( 1 )
74-
75-
);
76-
final DomainResult domainResult = loadPlan.getJdbcSelect().getJdbcValuesMappingProducer()
63+
final List<DomainResult<?>> domainResults = loadPlan.getJdbcSelect()
64+
.getJdbcValuesMappingProducer()
7765
.resolve( null, sessionFactory )
78-
.getDomainResults()
79-
.get( 0 );
80-
assertThat( domainResult, instanceOf( EntityResult.class ) );
66+
.getDomainResults();
67+
68+
assertThat( domainResults ).hasSize( 1 );
69+
final DomainResult<?> domainResult = domainResults.get( 0 );
70+
assertThat( domainResult ).isInstanceOf( EntityResult.class );
8171
final EntityResult entityResult = (EntityResult) domainResult;
82-
assertThat( entityResult.getFetches(), hasSize( 2 ) );
72+
assertThat( entityResult.getFetches() ).hasSize( 2 );
8373

8474
final Fetch txtFetch = entityResult.getFetches().get( 0 );
75+
assertThat( txtFetch ).isNotNull();
76+
assertThat( txtFetch.getFetchedMapping().getFetchableName() ).isEqualTo( "msgTxt" );
77+
assertThat( txtFetch.getTiming() ).isEqualTo( FetchTiming.IMMEDIATE );
8578

8679
final Fetch posterFetch = entityResult.getFetches().get( 1 );
80+
assertThat( posterFetch ).isNotNull();
81+
assertThat( posterFetch.getFetchedMapping().getFetchableName() ).isEqualTo( "poster" );
82+
assertThat( posterFetch.getTiming() ).isEqualTo( FetchTiming.DELAYED );
8783
}
8884

8985
@Test
90-
@NotImplementedYet(reason = "Cascade-driven DomainResult graph building not yet implemented")
91-
public void testCascadeBasedBuild() {
92-
throw new NotYetImplementedFor6Exception( "Cascade-driven DomainResult graph building not yet implemented" );
93-
// EntityPersister ep = (EntityPersister) sessionFactory().getClassMetadata(Message.class);
94-
// CascadeStyleLoadPlanBuildingAssociationVisitationStrategy strategy = new CascadeStyleLoadPlanBuildingAssociationVisitationStrategy(
95-
// CascadingActions.MERGE,
96-
// sessionFactory(),
97-
// LoadQueryInfluencers.NONE,
98-
// LockMode.NONE
99-
// );
100-
// LoadPlan plan = MetamodelDrivenLoadPlanBuilder.buildRootEntityLoadPlan( strategy, ep );
101-
// assertFalse( plan.hasAnyScalarReturns() );
102-
// assertEquals( 1, plan.getReturns().size() );
103-
// Return rtn = plan.getReturns().get( 0 );
104-
// EntityReturn entityReturn = ExtraAssertions.assertTyping( EntityReturn.class, rtn );
105-
// assertNotNull( entityReturn.getFetches() );
106-
// assertEquals( 1, entityReturn.getFetches().length );
107-
// Fetch fetch = entityReturn.getFetches()[0];
108-
// EntityFetch entityFetch = ExtraAssertions.assertTyping( EntityFetch.class, fetch );
109-
// assertNotNull( entityFetch.getFetches() );
110-
// assertEquals( 0, entityFetch.getFetches().length );
111-
//
112-
// LoadPlanTreePrinter.INSTANCE.logTree( plan, new AliasResolutionContextImpl( sessionFactory() ) );
86+
public void testCascadeBasedBuild(SessionFactoryScope scope) {
87+
final SessionFactoryImplementor sessionFactory = scope.getSessionFactory();
88+
final EntityPersister entityDescriptor = (EntityPersister) sessionFactory.getRuntimeMetamodels().getEntityMappingType( Message.class );
89+
90+
final SingleIdEntityLoaderStandardImpl<?> loader = new SingleIdEntityLoaderStandardImpl<>( entityDescriptor, sessionFactory );
91+
92+
final LoadQueryInfluencers influencers = new LoadQueryInfluencers() {
93+
@Override
94+
public CascadingFetchProfile getEnabledCascadingFetchProfile() {
95+
return CascadingFetchProfile.MERGE;
96+
}
97+
};
98+
99+
final SingleIdLoadPlan<?> loadPlan = loader.resolveLoadPlan(
100+
LockOptions.READ,
101+
influencers,
102+
sessionFactory
103+
);
104+
final List<DomainResult<?>> domainResults = loadPlan.getJdbcSelect()
105+
.getJdbcValuesMappingProducer()
106+
.resolve( null, sessionFactory )
107+
.getDomainResults();
108+
109+
assertThat( domainResults ).hasSize( 1 );
110+
final DomainResult<?> domainResult = domainResults.get( 0 );
111+
assertThat( domainResult ).isInstanceOf( EntityResult.class );
112+
final EntityResult entityResult = (EntityResult) domainResult;
113+
assertThat( entityResult.getFetches() ).hasSize( 2 );
114+
115+
final Fetch txtFetch = entityResult.getFetches().get( 0 );
116+
assertThat( txtFetch ).isNotNull();
117+
assertThat( txtFetch.getFetchedMapping().getFetchableName() ).isEqualTo( "msgTxt" );
118+
assertThat( txtFetch.getTiming() ).isEqualTo( FetchTiming.IMMEDIATE );
119+
120+
final Fetch posterFetch = entityResult.getFetches().get( 1 );
121+
assertThat( posterFetch ).isNotNull();
122+
assertThat( posterFetch.getFetchedMapping().getFetchableName() ).isEqualTo( "poster" );
123+
assertThat( posterFetch.getTiming() ).isEqualTo( FetchTiming.IMMEDIATE );
113124
}
114125

115126
@Test
@@ -124,23 +135,23 @@ public void testCollectionInitializerCase(SessionFactoryScope scope) {
124135
sessionFactory
125136
);
126137

127-
assertThat( loader.getSqlAst().getDomainResultDescriptors(), hasSize( 1 ) );
128-
assertThat( loader.getSqlAst().getDomainResultDescriptors().get( 0 ), instanceOf( CollectionDomainResult.class ) );
138+
assertThat( loader.getSqlAst().getDomainResultDescriptors() ).hasSize( 1 );
139+
assertThat( loader.getSqlAst().getDomainResultDescriptors().get( 0 ) ).isInstanceOf( CollectionDomainResult.class );
129140
final CollectionDomainResult domainResult = (CollectionDomainResult) loader.getSqlAst()
130141
.getDomainResultDescriptors()
131142
.get( 0 );
132143

133144
DomainResultGraphPrinter.logDomainResultGraph( loader.getSqlAst().getDomainResultDescriptors() );
134145

135-
assertThat( domainResult.getFetches(), isEmpty() );
146+
assertThat( domainResult.getFetches() ).isEmpty();
136147
}
137148

138149
@Entity( name = "Message" )
139150
public static class Message {
140151
@Id
141152
private Integer mid;
142153
private String msgTxt;
143-
@ManyToOne( cascade = CascadeType.MERGE )
154+
@ManyToOne( fetch = FetchType.LAZY, cascade = CascadeType.MERGE )
144155
@JoinColumn
145156
private Poster poster;
146157
}

hibernate-core/src/test/java/org/hibernate/orm/test/internal/util/MaskSensitiveInformationTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
1414
import org.hibernate.testing.orm.junit.Jpa;
15-
import org.hibernate.testing.orm.junit.NotImplementedYet;
15+
import org.hibernate.testing.orm.junit.Setting;
1616
import org.junit.jupiter.api.Test;
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
@@ -22,12 +22,16 @@
2222
*
2323
* @author Bruno P. Kinoshita
2424
*/
25-
@Jpa
25+
@Jpa(
26+
integrationSettings = {
27+
@Setting( name = AvailableSettings.USER, value = "user" ),
28+
@Setting( name = AvailableSettings.PASS, value = "pass" )
29+
}
30+
)
2631
public class MaskSensitiveInformationTest {
2732
private static final String EXPECTED_MASKED_VALUE = "****";
2833

2934
@Test
30-
@NotImplementedYet( strict = false, reason = "Setting `" + AvailableSettings.PASS + "` does not propagate to `" + AvailableSettings.JPA_JDBC_PASSWORD + "`" )
3135
public void testMaskOutSensitiveInformation(EntityManagerFactoryScope scope) {
3236
Map<String, Object> properties = scope.getEntityManagerFactory().getProperties();
3337
assertThat( properties.get( AvailableSettings.USER ) ).isEqualTo( EXPECTED_MASKED_VALUE );

hibernate-core/src/test/java/org/hibernate/orm/test/jpa/criteria/basic/BasicCriteriaUsageTest.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@
66
*/
77
package org.hibernate.orm.test.jpa.criteria.basic;
88

9-
import static org.junit.Assert.assertEquals;
10-
import static org.junit.Assert.assertNotNull;
11-
129
import java.math.BigDecimal;
10+
import java.time.Instant;
1311
import java.util.Date;
1412
import java.util.List;
1513

14+
import org.hibernate.orm.test.jpa.BaseEntityManagerFunctionalTestCase;
15+
16+
import org.hibernate.testing.TestForIssue;
17+
import org.junit.Test;
18+
1619
import jakarta.persistence.EntityManager;
1720
import jakarta.persistence.TypedQuery;
1821
import jakarta.persistence.criteria.CriteriaBuilder;
@@ -22,11 +25,8 @@
2225
import jakarta.persistence.criteria.Root;
2326
import jakarta.persistence.metamodel.SingularAttribute;
2427

25-
import org.hibernate.orm.test.jpa.BaseEntityManagerFunctionalTestCase;
26-
import org.hibernate.testing.TestForIssue;
27-
import org.hibernate.testing.orm.junit.NotImplementedYet;
28-
import org.junit.Ignore;
29-
import org.junit.Test;
28+
import static org.junit.Assert.assertEquals;
29+
import static org.junit.Assert.assertNotNull;
3030

3131
/**
3232
* @author Steve Ebersole
@@ -67,20 +67,19 @@ public void testTrivialCompilation() {
6767

6868
@Test
6969
@TestForIssue(jiraKey = "HHH-8283")
70-
@Ignore( "Missing support for composite user types" )
71-
@NotImplementedYet
7270
public void testDateCompositeCustomType() {
73-
Payment payment = new Payment();
71+
final Date date = Date.from( Instant.now() );
72+
final Payment payment = new Payment();
7473
payment.setAmount( new BigDecimal( 1000 ) );
75-
payment.setDate( new Date() );
74+
payment.setDate( date );
7675

7776
EntityManager em = getOrCreateEntityManager();
7877
em.getTransaction().begin();
7978
em.persist( payment );
8079

8180
CriteriaQuery<Payment> criteria = em.getCriteriaBuilder().createQuery( Payment.class );
8281
Root<Payment> rp = criteria.from( Payment.class );
83-
Predicate predicate = em.getCriteriaBuilder().equal( rp.get( Payment_.date ), new Date() );
82+
Predicate predicate = em.getCriteriaBuilder().equal( rp.get( Payment_.date ), date );
8483
criteria.where( predicate );
8584

8685
TypedQuery<Payment> q = em.createQuery( criteria );

0 commit comments

Comments
 (0)