2323 */
2424package org .hibernate .jpa .test .convert ;
2525
26- import javax .persistence .Convert ;
27- import javax .persistence .Entity ;
28- import javax .persistence .EntityManagerFactory ;
29- import javax .persistence .Id ;
30- import javax .persistence .MappedSuperclass ;
31-
3226import java .util .Arrays ;
3327import java .util .Collections ;
3428import java .util .HashMap ;
3529import java .util .List ;
3630import java .util .Map ;
31+ import javax .persistence .Convert ;
32+ import javax .persistence .Entity ;
33+ import javax .persistence .EntityManagerFactory ;
34+ import javax .persistence .Id ;
3735
38- import org .hibernate .cfg .AvailableSettings ;
3936import org .hibernate .engine .spi .SessionFactoryImplementor ;
4037import org .hibernate .jpa .boot .spi .Bootstrap ;
4138import org .hibernate .jpa .test .PersistenceUnitDescriptorAdapter ;
4239import org .hibernate .persister .entity .EntityPersister ;
4340import org .hibernate .type .StringType ;
4441import org .hibernate .type .Type ;
42+ import org .hibernate .type .descriptor .converter .AttributeConverterTypeAdapter ;
4543
46- import org .junit .Test ;
47-
48- import org .hibernate .testing .FailureExpected ;
4944import org .hibernate .testing .junit4 .BaseUnitTestCase ;
45+ import org .junit .Test ;
5046
5147import static org .hibernate .testing .junit4 .ExtraAssertions .assertTyping ;
52- import static org .junit .Assert .fail ;
5348
5449/**
5550 * Test simple application of Convert annotation via XML.
5651 *
5752 * @author Steve Ebersole
5853 */
5954public class SimpleXmlOverriddenTest extends BaseUnitTestCase {
55+ /**
56+ * A baseline test, with an explicit @Convert annotation that should be in effect
57+ */
6058 @ Test
6159 public void baseline () {
6260 final PersistenceUnitDescriptorAdapter pu = new PersistenceUnitDescriptorAdapter () {
6361 @ Override
6462 public List <String > getManagedClassNames () {
65- return Arrays .asList ( Super . class . getName (), Sub .class .getName () );
63+ return Arrays .asList ( TheEntity .class .getName () );
6664 }
6765
6866 // No mapping file should mean that the converter is applied
@@ -74,30 +72,26 @@ public List<String> getManagedClassNames() {
7472
7573 final SessionFactoryImplementor sfi = emf .unwrap ( SessionFactoryImplementor .class );
7674 try {
77- final EntityPersister ep = sfi .getEntityPersister ( Sub .class .getName () );
75+ final EntityPersister ep = sfi .getEntityPersister ( TheEntity .class .getName () );
7876
7977 Type type = ep .getPropertyType ( "it" );
80- try {
81- assertTyping ( StringType .class , type );
82- fail ( "Expected AttributeConverter to be applied" );
83- }
84- catch (AssertionError expected ) {
85- }
78+ AttributeConverterTypeAdapter adapter = assertTyping ( AttributeConverterTypeAdapter .class , type );
79+ assertTyping ( SillyStringConverter .class , adapter .getAttributeConverter () );
8680 }
8781 finally {
8882 emf .close ();
8983 }
9084 }
9185
9286 /**
93- * Test outcome of applying overrides via orm.xml, specifically at the entity level
87+ * Test outcome of applying overrides via orm.xml, specifically at the attribute level
9488 */
9589 @ Test
96- public void testDefinitionAtEntityLevel () {
90+ public void testDefinitionAtAttributeLevel () {
9791 final PersistenceUnitDescriptorAdapter pu = new PersistenceUnitDescriptorAdapter () {
9892 @ Override
9993 public List <String > getManagedClassNames () {
100- return Arrays .asList ( Super . class . getName (), Sub .class .getName () );
94+ return Arrays .asList ( TheEntity .class .getName () );
10195 }
10296
10397 @ Override
@@ -107,13 +101,11 @@ public List<String> getMappingFileNames() {
107101 };
108102
109103 final Map settings = new HashMap ();
110- // settings.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" );
111-
112104 EntityManagerFactory emf = Bootstrap .getEntityManagerFactoryBuilder ( pu , settings ).build ();
113105
114106 final SessionFactoryImplementor sfi = emf .unwrap ( SessionFactoryImplementor .class );
115107 try {
116- final EntityPersister ep = sfi .getEntityPersister ( Sub .class .getName () );
108+ final EntityPersister ep = sfi .getEntityPersister ( TheEntity .class .getName () );
117109
118110 Type type = ep .getPropertyType ( "it" );
119111 assertTyping ( StringType .class , type );
@@ -127,11 +119,11 @@ public List<String> getMappingFileNames() {
127119 * Test outcome of applying overrides via orm.xml, specifically at the entity level
128120 */
129121 @ Test
130- public void testDefinitionAtAttributeLevel () {
122+ public void testDefinitionAtEntityLevel () {
131123 final PersistenceUnitDescriptorAdapter pu = new PersistenceUnitDescriptorAdapter () {
132124 @ Override
133125 public List <String > getManagedClassNames () {
134- return Arrays .asList ( Super . class . getName (), Sub .class .getName () );
126+ return Arrays .asList ( TheEntity2 .class .getName () );
135127 }
136128
137129 @ Override
@@ -141,13 +133,11 @@ public List<String> getMappingFileNames() {
141133 };
142134
143135 final Map settings = new HashMap ();
144- // settings.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" );
145-
146136 EntityManagerFactory emf = Bootstrap .getEntityManagerFactoryBuilder ( pu , settings ).build ();
147137
148138 final SessionFactoryImplementor sfi = emf .unwrap ( SessionFactoryImplementor .class );
149139 try {
150- final EntityPersister ep = sfi .getEntityPersister ( Sub .class .getName () );
140+ final EntityPersister ep = sfi .getEntityPersister ( TheEntity2 .class .getName () );
151141
152142 Type type = ep .getPropertyType ( "it" );
153143 assertTyping ( StringType .class , type );
@@ -157,18 +147,19 @@ public List<String> getMappingFileNames() {
157147 }
158148 }
159149
160- @ MappedSuperclass
161- public static class Super {
150+ @ Entity ( name = "TheEntity" )
151+ public static class TheEntity {
162152 @ Id
163153 public Integer id ;
164154 @ Convert (converter = SillyStringConverter .class )
165155 public String it ;
166156 }
167157
168- @ Entity (name = "Sub" )
169- // the xml disabled conversion on the Sub#it attribute
170- // Essentially the same test as org.hibernate.jpa.test.convert.SimpleOverriddenConverterTest, but through XML
171- //@Convert( attributeName = "it", disableConversion = true )
172- public static class Sub extends Super {
158+ @ Entity (name ="TheEntity2" )
159+ @ Convert ( attributeName = "it" , converter = SillyStringConverter .class )
160+ public static class TheEntity2 {
161+ @ Id
162+ public Integer id ;
163+ public String it ;
173164 }
174165}
0 commit comments