From ab727331cdb3a762bc0e0b0a2281955c2eacb964 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Sun, 4 Sep 2011 14:24:47 +0200 Subject: [PATCH] DATAJPA-93 - Don't catch IllegalArgumentExceptions raised by missing domain class in JPA Metamodel. We now don't catch an IllegalArgumentException being thrown in case a domain class is not found in the metamodel. If it occurs there's nothing we can do about it as we can't come up with an EntityInformation instance then and the persistence provider couldn't handle it anyway. --- .../support/JpaEntityInformationSupport.java | 6 +----- .../JpaEntityInformationSupportUnitTests.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupport.java b/src/main/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupport.java index 887414474..2d86ee422 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupport.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupport.java @@ -58,11 +58,7 @@ public abstract class JpaEntityInformationSupport ex if (Persistable.class.isAssignableFrom(domainClass)) { return new JpaPersistableEntityInformation(domainClass, metamodel); } else { - try { - return new JpaMetamodelEntityInformation(domainClass, metamodel); - } catch (IllegalArgumentException e) { - return null; - } + return new JpaMetamodelEntityInformation(domainClass, metamodel); } } diff --git a/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java index fd474dc13..0b2bb84fd 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java @@ -16,14 +16,18 @@ package org.springframework.data.jpa.repository.support; import static org.junit.Assert.*; +import static org.mockito.Mockito.*; import java.io.Serializable; import javax.persistence.Entity; +import javax.persistence.EntityManager; +import javax.persistence.metamodel.Metamodel; import javax.persistence.metamodel.SingularAttribute; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; /** @@ -34,6 +38,11 @@ import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class JpaEntityInformationSupportUnitTests { + @Mock + EntityManager em; + @Mock + Metamodel metaModel; + @Test public void usesSimpleClassNameIfNoEntityNameGiven() throws Exception { @@ -44,6 +53,16 @@ public class JpaEntityInformationSupportUnitTests { assertEquals("AnotherNamedUser", second.getEntityName()); } + /** + * @see DATAJPA-93 + */ + @Test(expected = IllegalArgumentException.class) + public void rejectsClassNotBeingFoundInMetamodel() { + + when(em.getMetamodel()).thenReturn(metaModel); + JpaEntityInformationSupport.getMetadata(User.class, em); + } + static class User { }