Skip to content

Commit b4209c1

Browse files
committed
HHH-18693 Test case with inner classes
Test case for Jakarta Data processing with inner classes Changed existing test class to properly check generated metamodel class @Exclude-ing "troublemakers" with illegal URI character(s) in entity name
1 parent de82a2d commit b4209c1

File tree

11 files changed

+439
-1
lines changed

11 files changed

+439
-1
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/collection/bag/PersistentBagContainsTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import jakarta.persistence.ManyToOne;
1717
import jakarta.persistence.OneToMany;
1818

19+
import org.hibernate.annotations.processing.Exclude;
1920
import org.hibernate.testing.TestForIssue;
2021
import org.hibernate.testing.orm.junit.DomainModel;
2122
import org.hibernate.testing.orm.junit.SessionFactory;
@@ -36,6 +37,7 @@
3637
}
3738
)
3839
@SessionFactory
40+
@Exclude
3941
public class PersistentBagContainsTest {
4042

4143
/**

hibernate-core/src/test/java/org/hibernate/orm/test/event/entity/MergeListPreAndPostPersistTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import jakarta.persistence.OneToMany;
1616

1717
import org.hibernate.Session;
18+
import org.hibernate.annotations.processing.Exclude;
1819
import org.hibernate.event.service.spi.EventListenerRegistry;
1920
import org.hibernate.event.spi.EventType;
2021
import org.hibernate.event.spi.PostInsertEvent;
@@ -33,6 +34,7 @@
3334
* @author Gail Badner
3435
*/
3536
@TestForIssue( jiraKey = "HHH-9979")
37+
@Exclude
3638
public class MergeListPreAndPostPersistTest extends BaseCoreFunctionalTestCase {
3739

3840
protected Class[] getAnnotatedClasses() {

hibernate-core/src/test/java/org/hibernate/orm/test/hql/QuotedIdentifierTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import java.util.List;
1010

11+
import org.hibernate.annotations.processing.Exclude;
1112
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
1213
import org.junit.After;
1314
import org.junit.Before;
@@ -26,6 +27,7 @@
2627
/**
2728
* @author Christian Beikov
2829
*/
30+
@Exclude
2931
public class QuotedIdentifierTest extends BaseCoreFunctionalTestCase {
3032

3133
private Person person;

hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseAndQuotedNameTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import jakarta.persistence.Entity;
1717
import jakarta.persistence.Id;
1818

19+
import org.hibernate.annotations.processing.Exclude;
1920
import org.hibernate.boot.MetadataSources;
2021
import org.hibernate.boot.registry.StandardServiceRegistry;
2122
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
@@ -38,6 +39,7 @@
3839
import static org.junit.Assert.assertThat;
3940

4041
@TestForIssue(jiraKey = "HHH-13788")
42+
@Exclude
4143
public class SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseAndQuotedNameTest {
4244

4345
private File updateOutputFile;
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.processor.test.data.innerclass;
8+
9+
import jakarta.persistence.Embeddable;
10+
import jakarta.persistence.Entity;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.MappedSuperclass;
13+
import jakarta.persistence.NamedQuery;
14+
15+
public class Dummy {
16+
@Entity(name = "Inner")
17+
@NamedQuery(name = "allInner", query = "from Inner")
18+
public static class Inner extends Persona {
19+
@Id
20+
Integer id;
21+
22+
String name;
23+
24+
public Integer getId() {
25+
return id;
26+
}
27+
28+
@Override
29+
public void setId(Integer id) {
30+
this.id = id;
31+
}
32+
33+
@Override
34+
public String getName() {
35+
return name;
36+
}
37+
38+
@Override
39+
public void setName(String name) {
40+
this.name = name;
41+
}
42+
}
43+
44+
@Embeddable
45+
public static class DummyEmbeddable {
46+
private String name;
47+
private int value;
48+
49+
public String getName() {
50+
return name;
51+
}
52+
53+
public void setName(String name) {
54+
this.name = name;
55+
}
56+
57+
public int getValue() {
58+
return value;
59+
}
60+
61+
public void setValue(int value) {
62+
this.value = value;
63+
}
64+
}
65+
66+
@MappedSuperclass
67+
public abstract static class Persona {
68+
private String city;
69+
70+
public String getCity() {
71+
return city;
72+
}
73+
74+
public void setCity(String city) {
75+
this.city = city;
76+
}
77+
78+
public abstract void setId(Integer id);
79+
80+
public abstract String getName();
81+
82+
public abstract void setName(String name);
83+
}
84+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.processor.test.data.innerclass;
8+
9+
import jakarta.persistence.Entity;
10+
import jakarta.persistence.Id;
11+
import jakarta.persistence.NamedQuery;
12+
import org.hibernate.processor.test.data.innerclass.InnerClassTest.One.Two;
13+
import org.hibernate.processor.test.util.CompilationTest;
14+
import org.hibernate.processor.test.util.WithClasses;
15+
import org.junit.Test;
16+
17+
import static org.hibernate.processor.test.util.TestUtil.assertMetamodelClassGeneratedFor;
18+
import static org.hibernate.processor.test.util.TestUtil.assertNoMetamodelClassGeneratedFor;
19+
import static org.hibernate.processor.test.util.TestUtil.getMetaModelSourceAsString;
20+
import static org.junit.Assert.assertEquals;
21+
22+
public class InnerClassTest extends CompilationTest {
23+
24+
@WithClasses({Person.class, Dummy.class, Inner.class, Two.class})
25+
@Test
26+
public void test() {
27+
System.out.println( getMetaModelSourceAsString( InnerClassTest.class ) );
28+
System.out.println( getMetaModelSourceAsString( Dummy.class ) );
29+
System.out.println( getMetaModelSourceAsString( Person.class ) );
30+
System.out.println( getMetaModelSourceAsString( InnerClassTest.class, true ) );
31+
System.out.println( getMetaModelSourceAsString( Dummy.class, true ) );
32+
System.out.println( getMetaModelSourceAsString( Person.class, true ) );
33+
assertEquals(
34+
getMetaModelSourceAsString( Inner.class ),
35+
getMetaModelSourceAsString( Two.class )
36+
);
37+
assertEquals(
38+
getMetaModelSourceAsString( Inner.class, true ),
39+
getMetaModelSourceAsString( Two.class, true )
40+
);
41+
assertMetamodelClassGeneratedFor( Inner.class );
42+
assertMetamodelClassGeneratedFor( Inner.class, true );
43+
assertMetamodelClassGeneratedFor( Two.class );
44+
assertMetamodelClassGeneratedFor( Two.class, true );
45+
assertMetamodelClassGeneratedFor( Dummy.Inner.class );
46+
assertMetamodelClassGeneratedFor( Dummy.Inner.class, true );
47+
assertMetamodelClassGeneratedFor( Person.class );
48+
assertMetamodelClassGeneratedFor( Person.class, true );
49+
assertMetamodelClassGeneratedFor( Person.PersonId.class );
50+
assertNoMetamodelClassGeneratedFor( Dummy.class );
51+
assertMetamodelClassGeneratedFor( Dummy.DummyEmbeddable.class );
52+
/*assertNoMetamodelClassGeneratedFor( Dummy.class );*/
53+
}
54+
55+
@Entity(name = "Inner")
56+
@NamedQuery(name = "allInner", query = "from Inner")
57+
public static class Inner {
58+
@Id
59+
Integer id;
60+
61+
String address;
62+
63+
public Integer getId() {
64+
return id;
65+
}
66+
67+
public void setId(Integer id) {
68+
this.id = id;
69+
}
70+
71+
public String getAddress() {
72+
return address;
73+
}
74+
75+
public void setAddress(String address) {
76+
this.address = address;
77+
}
78+
}
79+
80+
static class One {
81+
@Entity
82+
static class Two {
83+
@Id
84+
Integer id;
85+
String value;
86+
}
87+
}
88+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.processor.test.data.innerclass;
8+
9+
import jakarta.persistence.Embeddable;
10+
import jakarta.persistence.EmbeddedId;
11+
import jakarta.persistence.Entity;
12+
13+
/**
14+
* @author Hardy Ferentschik
15+
*/
16+
@Entity
17+
public class Person {
18+
@EmbeddedId
19+
private PersonId id;
20+
21+
private String address;
22+
23+
@Embeddable
24+
public static class PersonId {
25+
private String name;
26+
private String snn;
27+
28+
public String getName() {
29+
return name;
30+
}
31+
32+
public void setName(String name) {
33+
this.name = name;
34+
}
35+
36+
public String getSnn() {
37+
return snn;
38+
}
39+
40+
public void setSnn(String snn) {
41+
this.snn = snn;
42+
}
43+
}
44+
45+
46+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.processor.test.innerclass;
8+
9+
import jakarta.persistence.Embeddable;
10+
import jakarta.persistence.Entity;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.MappedSuperclass;
13+
import jakarta.persistence.NamedQuery;
14+
15+
public class Dummy {
16+
@Entity(name = "Inner")
17+
@NamedQuery(name = "allInner", query = "from Inner")
18+
public static class Inner extends Persona {
19+
@Id
20+
Integer id;
21+
22+
String name;
23+
24+
public Integer getId() {
25+
return id;
26+
}
27+
28+
@Override
29+
public void setId(Integer id) {
30+
this.id = id;
31+
}
32+
33+
@Override
34+
public String getName() {
35+
return name;
36+
}
37+
38+
@Override
39+
public void setName(String name) {
40+
this.name = name;
41+
}
42+
}
43+
44+
@Embeddable
45+
public static class DummyEmbeddable {
46+
private String name;
47+
private int value;
48+
49+
public String getName() {
50+
return name;
51+
}
52+
53+
public void setName(String name) {
54+
this.name = name;
55+
}
56+
57+
public int getValue() {
58+
return value;
59+
}
60+
61+
public void setValue(int value) {
62+
this.value = value;
63+
}
64+
}
65+
66+
@MappedSuperclass
67+
public abstract static class Persona {
68+
private String city;
69+
70+
public String getCity() {
71+
return city;
72+
}
73+
74+
public void setCity(String city) {
75+
this.city = city;
76+
}
77+
78+
public abstract void setId(Integer id);
79+
80+
public abstract String getName();
81+
82+
public abstract void setName(String name);
83+
}
84+
}

0 commit comments

Comments
 (0)