@@ -132,35 +132,62 @@ public JpaCompliance getJpaCompliance() {
132132 }
133133
134134 @ Override
135- public <X > ManagedDomainType <X > managedType ( String typeName ) {
135+ public @ Nullable <X > ManagedDomainType <X > findManagedType ( @ Nullable String typeName ) {
136136 //noinspection unchecked
137137 return typeName == null ? null : (ManagedDomainType <X >) managedTypeByName .get ( typeName );
138138 }
139139
140140 @ Override
141- public <X > EntityDomainType <X > entity (String entityName ) {
141+ public <X > ManagedDomainType <X > managedType (String typeName ) {
142+ final ManagedDomainType <X > managedType = findManagedType ( typeName );
143+ if ( managedType == null ) {
144+ throw new IllegalArgumentException ("Not a managed type: " + typeName );
145+ }
146+ return managedType ;
147+ }
148+
149+ @ Override
150+ @ Nullable public EntityDomainType <?> findEntityType (@ Nullable String entityName ) {
142151 if ( entityName == null ) {
143152 return null ;
144153 }
145154 final ManagedDomainType <?> managedType = managedTypeByName .get ( entityName );
146- if ( !( managedType instanceof EntityDomainType <?> ) ) {
155+ if ( !(managedType instanceof EntityDomainType <?>) ) {
147156 return null ;
148157 }
149158 //noinspection unchecked
150- return (EntityDomainType <X >) managedType ;
159+ return (EntityDomainType <? >) managedType ;
151160 }
152161
153162 @ Override
154- public <X > EmbeddableDomainType <X > embeddable (String embeddableName ) {
163+ public <X > EntityDomainType <X > entity (String entityName ) {
164+ final EntityDomainType <?> entityType = findEntityType ( entityName );
165+ if ( entityType == null ) {
166+ // per JPA
167+ throw new IllegalArgumentException ("Not an entity: " + entityName );
168+ }
169+ return (EntityDomainType <X >) entityType ;
170+ }
171+
172+ @ Override
173+ @ Nullable public EmbeddableDomainType <?> findEmbeddableType (@ Nullable String embeddableName ) {
155174 if ( embeddableName == null ) {
156175 return null ;
157176 }
158177 final ManagedDomainType <?> managedType = managedTypeByName .get ( embeddableName );
159- if ( !( managedType instanceof EmbeddableDomainType <?> ) ) {
178+ if ( !(managedType instanceof EmbeddableDomainType <?>) ) {
160179 return null ;
161180 }
162- //noinspection unchecked
163- return (EmbeddableDomainType <X >) managedType ;
181+ return (EmbeddableDomainType <?>) managedType ;
182+ }
183+
184+ @ Override
185+ public <X > EmbeddableDomainType <X > embeddable (String embeddableName ) {
186+ final EmbeddableDomainType <?> embeddableType = findEmbeddableType ( embeddableName );
187+ if ( embeddableType == null ) {
188+ throw new IllegalArgumentException ("Not an embeddable: " + embeddableName );
189+ }
190+ return (EmbeddableDomainType <X >) embeddableType ;
164191 }
165192
166193 @ Override
@@ -172,9 +199,9 @@ public <X> EntityDomainType<X> getHqlEntityReference(String entityName) {
172199 entityName = importInfo .importedName ;
173200 }
174201
175- final EntityDomainType <X > entityDescriptor = entity ( entityName );
202+ final EntityDomainType <? > entityDescriptor = findEntityType ( entityName );
176203 if ( entityDescriptor != null ) {
177- return entityDescriptor ;
204+ return ( EntityDomainType < X >) entityDescriptor ;
178205 }
179206
180207 if ( loadedClass == null ) {
@@ -200,13 +227,23 @@ public <X> EntityDomainType<X> resolveHqlEntityReference(String entityName) {
200227 }
201228
202229 @ Override
203- public <X > ManagedDomainType <X > findManagedType (Class <X > cls ) {
230+ @ Nullable public <X > ManagedDomainType <X > findManagedType (Class <X > cls ) {
204231 //noinspection unchecked
205232 return (ManagedDomainType <X >) managedTypeByClass .get ( cls );
206233 }
207234
208235 @ Override
209- public <X > EntityDomainType <X > findEntityType (Class <X > cls ) {
236+ public <X > ManagedDomainType <X > managedType (Class <X > cls ) {
237+ final ManagedDomainType <X > type = findManagedType ( cls );
238+ if ( type == null ) {
239+ // per JPA
240+ throw new IllegalArgumentException ( "Not a managed type: " + cls );
241+ }
242+ return type ;
243+ }
244+
245+ @ Override
246+ @ Nullable public <X > EntityDomainType <X > findEntityType (Class <X > cls ) {
210247 final ManagedType <?> type = managedTypeByClass .get ( cls );
211248 if ( !( type instanceof EntityDomainType <?> ) ) {
212249 return null ;
@@ -216,35 +253,31 @@ public <X> EntityDomainType<X> findEntityType(Class<X> cls) {
216253 }
217254
218255 @ Override
219- public <X > ManagedDomainType <X > managedType (Class <X > cls ) {
220- final ManagedType <?> type = managedTypeByClass .get ( cls );
221- if ( type == null ) {
222- // per JPA
223- throw new IllegalArgumentException ( "Not a managed type: " + cls );
256+ public <X > EntityDomainType <X > entity (Class <X > cls ) {
257+ final EntityDomainType <X > entityType = findEntityType ( cls );
258+ if ( entityType == null ) {
259+ throw new IllegalArgumentException ( "Not an entity: " + cls .getName () );
224260 }
225-
226- //noinspection unchecked
227- return (ManagedDomainType <X >) type ;
261+ return entityType ;
228262 }
229263
230264 @ Override
231- public <X > EntityDomainType <X > entity (Class <X > cls ) {
265+ public @ Nullable <X > EmbeddableDomainType <X > findEmbeddableType (Class <X > cls ) {
232266 final ManagedType <?> type = managedTypeByClass .get ( cls );
233- if ( !( type instanceof EntityDomainType <?> ) ) {
234- throw new IllegalArgumentException ( "Not an entity: " + cls . getName () ) ;
267+ if ( !( type instanceof EmbeddableDomainType <?> ) ) {
268+ return null ;
235269 }
236270 //noinspection unchecked
237- return (EntityDomainType <X >) type ;
271+ return (EmbeddableDomainType <X >) type ;
238272 }
239273
240274 @ Override
241275 public <X > EmbeddableDomainType <X > embeddable (Class <X > cls ) {
242- final ManagedType <?> type = managedTypeByClass . get ( cls );
243- if ( !( type instanceof EmbeddableDomainType <?> ) ) {
276+ final EmbeddableDomainType < X > embeddableType = findEmbeddableType ( cls );
277+ if ( embeddableType == null ) {
244278 throw new IllegalArgumentException ( "Not an embeddable: " + cls .getName () );
245279 }
246- //noinspection unchecked
247- return (EmbeddableDomainType <X >) type ;
280+ return embeddableType ;
248281 }
249282
250283 private Collection <ManagedDomainType <?>> getAllManagedTypes () {
@@ -428,7 +461,7 @@ private void applyNamedEntityGraphs(Collection<NamedEntityGraphDefinition> named
428461 definition .getEntityName (),
429462 definition .getJpaEntityName ()
430463 );
431- final EntityDomainType <Object > entityType = entity ( definition .getEntityName () );
464+ final EntityDomainType <Object > entityType = ( EntityDomainType < Object >) findEntityType ( definition .getEntityName () );
432465 if ( entityType == null ) {
433466 throw new IllegalArgumentException (
434467 "Attempted to register named entity graph [" + definition .getRegisteredName ()
@@ -442,7 +475,7 @@ private void applyNamedEntityGraphs(Collection<NamedEntityGraphDefinition> named
442475 final NamedEntityGraph namedEntityGraph = definition .getAnnotation ();
443476
444477 if ( namedEntityGraph .includeAllAttributes () ) {
445- for ( Attribute <? super Object , ?> attribute : entityType .getAttributes () ) {
478+ for ( Attribute <Object , ?> attribute : entityType .getAttributes () ) {
446479 entityGraph .addAttributeNodes ( attribute );
447480 }
448481 }
0 commit comments