From 23056e6f202eba1e5be0992a2eb0212970ddea7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 24 Jul 2012 20:21:45 +0300 Subject: [PATCH] #201 simplified JPAProvider to use delegate instead of entity manager class --- .../mysema/query/jpa/impl/JPAProvider.java | 28 ++++++------------- .../com/mysema/query/jpa/JPAProviderTest.java | 25 ++++++++++------- .../test/resources/META-INF/persistence.xml | 5 +--- 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/JPAProvider.java b/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/JPAProvider.java index 0214dd319..231599cab 100644 --- a/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/JPAProvider.java +++ b/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/JPAProvider.java @@ -31,38 +31,31 @@ public enum JPAProvider { /** * Hibernate */ - HIBERNATE("org.hibernate.ejb.HibernateEntityManager", HQLTemplates.DEFAULT, "hibernate"), + HIBERNATE("org.hibernate.Session", HQLTemplates.DEFAULT), /** * EclipseLink */ - ECLIPSELINK("org.eclipse.persistence.jpa.JpaEntityManager", EclipseLinkTemplates.DEFAULT, "eclipselink"), + ECLIPSELINK("org.eclipse.persistence.jpa.JpaEntityManager", EclipseLinkTemplates.DEFAULT), /** * OpenJPA */ - OPEN_JPA("org.apache.openjpa.persistence.OpenJPAEntityManager", OpenJPATemplates.DEFAULT, "openjpa"), + OPEN_JPA("org.apache.openjpa.persistence.OpenJPAEntityManager", OpenJPATemplates.DEFAULT), /** * Generic JPA provider */ - GENERIC("javax.persistence.EntityManager", JPQLTemplates.DEFAULT, ""); + GENERIC("javax.persistence.EntityManager", JPQLTemplates.DEFAULT); - private Class emClass; + private Class delegateClass; private final JPQLTemplates templates; - private final String searchKey; - - /** - * @param emClassName class name of EntityManager implementation - * @param templates - */ - JPAProvider(String emClassName, JPQLTemplates templates, String searchKey) { + JPAProvider(String emClassName, JPQLTemplates templates) { this.templates = templates; - this.searchKey = searchKey; try { - this.emClass = Class.forName(emClassName); + this.delegateClass = Class.forName(emClassName); } catch (ClassNotFoundException e) {} } @@ -71,12 +64,9 @@ public enum JPAProvider { } public static JPAProvider get(EntityManager em) { - String propsToString = em.getEntityManagerFactory().getProperties().toString(); for (JPAProvider provider : values()) { - if (provider.emClass != null && provider.emClass.isAssignableFrom(em.getClass())) { - return provider; - } - if (propsToString.contains(provider.searchKey)) { + if (provider.delegateClass != null + && provider.delegateClass.isAssignableFrom(em.getDelegate().getClass())) { return provider; } } diff --git a/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAProviderTest.java b/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAProviderTest.java index b5b83a72d..ba41f1e9d 100644 --- a/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAProviderTest.java +++ b/querydsl-jpa/src/test/java/com/mysema/query/jpa/JPAProviderTest.java @@ -5,7 +5,6 @@ import static org.junit.Assert.assertEquals; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -36,7 +35,8 @@ public class JPAProviderTest { public void Hibernate() { factory = Persistence.createEntityManagerFactory("h2"); em = factory.createEntityManager(); - println(em.getEntityManagerFactory().getProperties()); + System.out.println(em.getDelegate().getClass()); +// println(em.getEntityManagerFactory().getProperties()); assertEquals(JPAProvider.HIBERNATE, JPAProvider.get(em)); } @@ -61,7 +61,8 @@ public class JPAProviderTest { public void EclipseLink() { factory = Persistence.createEntityManagerFactory("h2-eclipselink"); em = factory.createEntityManager(); - println(em.getEntityManagerFactory().getProperties()); + System.out.println(em.getDelegate().getClass()); +// println(em.getEntityManagerFactory().getProperties()); assertEquals(JPAProvider.ECLIPSELINK, JPAProvider.get(em)); } @@ -84,14 +85,18 @@ public class JPAProviderTest { @Test public void OpenJPA() { - // TODO + factory = Persistence.createEntityManagerFactory("derby-openjpa"); + em = factory.createEntityManager(); + System.out.println(em.getDelegate().getClass()); +// println(em.getEntityManagerFactory().getProperties()); + assertEquals(JPAProvider.OPEN_JPA, JPAProvider.get(em)); } - private void println(Map properties) { - for (Map.Entry entry : properties.entrySet()) { - System.out.println(entry.getKey() + " = " + entry.getValue()); - } - System.out.println(); - } +// private void println(Map properties) { +// for (Map.Entry entry : properties.entrySet()) { +// System.out.println(entry.getKey() + " = " + entry.getValue()); +// } +// System.out.println(); +// } } diff --git a/querydsl-jpa/src/test/resources/META-INF/persistence.xml b/querydsl-jpa/src/test/resources/META-INF/persistence.xml index 86857ea0f..0d0ce16d0 100644 --- a/querydsl-jpa/src/test/resources/META-INF/persistence.xml +++ b/querydsl-jpa/src/test/resources/META-INF/persistence.xml @@ -34,7 +34,6 @@ - @@ -147,7 +144,7 @@ - +