Skip to content

Commit 49767a1

Browse files
committed
HHH-19312 Test for 'Index out of bounds' in org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.encodeName(java.util.List<java.lang.String>, java.util.List<java.lang.reflect.Member>, java.util.List<java.lang.reflect.Member>)
1 parent 00e552e commit 49767a1

File tree

4 files changed

+133
-0
lines changed

4 files changed

+133
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds;
6+
7+
import org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds.base.EmbeddableType;
8+
import org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds.derived.TestEntity;
9+
import org.hibernate.testing.bytecode.enhancement.EnhancementOptions;
10+
import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced;
11+
import org.hibernate.testing.orm.junit.DomainModel;
12+
import org.hibernate.testing.orm.junit.JiraKey;
13+
import org.hibernate.testing.orm.junit.SessionFactory;
14+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
15+
import org.junit.jupiter.api.Test;
16+
17+
import static org.assertj.core.api.Assertions.assertThat;
18+
19+
@DomainModel(
20+
annotatedClasses = {
21+
TestEntity.class
22+
}
23+
)
24+
@SessionFactory
25+
@BytecodeEnhanced
26+
@EnhancementOptions(lazyLoading = true, inlineDirtyChecking = true)
27+
@JiraKey( "HHH-19312" )
28+
public class BytecodeProviderIndexOutOfBoundsTest {
29+
30+
@Test
31+
public void testIt(SessionFactoryScope scope) {
32+
// Just a smoke test; the original failure happened during bytecode enhancement.
33+
Long id = scope.fromTransaction( s -> {
34+
TestEntity testEntity = new TestEntity();
35+
EmbeddableType embedded = new EmbeddableType();
36+
embedded.setField( "someValue" );
37+
testEntity.setEmbeddedField( embedded );
38+
s.persist( testEntity );
39+
return testEntity.getId();
40+
} );
41+
scope.inTransaction( s -> {
42+
TestEntity testEntity = s.find( TestEntity.class, id );
43+
assertThat( testEntity.getEmbeddedField().getField() ).isEqualTo( "someValue" );
44+
} );
45+
}
46+
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds.base;
6+
7+
import jakarta.persistence.Embedded;
8+
import jakarta.persistence.GeneratedValue;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.MappedSuperclass;
11+
12+
@MappedSuperclass
13+
public abstract class BaseEntity {
14+
15+
private Long id;
16+
17+
protected EmbeddableType embeddedField;
18+
19+
private Long dummyField;
20+
21+
@Id
22+
@GeneratedValue
23+
public Long getId() {
24+
return id;
25+
}
26+
27+
public void setId(final Long id) {
28+
this.id = id;
29+
}
30+
31+
@Embedded
32+
public EmbeddableType getEmbeddedField() {
33+
return embeddedField;
34+
}
35+
36+
public void setEmbeddedField(final EmbeddableType embeddedField) {
37+
this.embeddedField = embeddedField;
38+
}
39+
40+
public Long getDummyField() {
41+
return dummyField;
42+
}
43+
44+
void setDummyField(Long dummyField) {
45+
this.dummyField = dummyField;
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds.base;
6+
7+
import jakarta.persistence.Column;
8+
import jakarta.persistence.Embeddable;
9+
10+
@Embeddable
11+
public class EmbeddableType {
12+
13+
@Column
14+
private String field;
15+
16+
public String getField() {
17+
return field;
18+
}
19+
20+
public void setField(final String field) {
21+
this.field = field;
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds.derived;
6+
7+
import jakarta.persistence.Access;
8+
import jakarta.persistence.AccessType;
9+
import jakarta.persistence.Entity;
10+
import org.hibernate.orm.test.bytecode.enhancement.lazy.proxy.index_out_of_bounds.base.BaseEntity;
11+
12+
@Entity
13+
@Access(AccessType.PROPERTY)
14+
public class TestEntity extends BaseEntity {
15+
16+
}

0 commit comments

Comments
 (0)