[OLINGO-971] Improve CMP Support
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
index 64444b5..6089be0 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
@@ -219,7 +219,7 @@
private void validatePreConditions() throws ODataJPARuntimeException {
- if (oDataJPAContext.getEntityManagerFactory() == null) {
+ if (oDataJPAContext.getEntityManager() == null) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.ENTITY_MANAGER_NOT_INITIALIZED, null);
}
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmBaseViewImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmBaseViewImpl.java
index ee6f083..80d9d75 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmBaseViewImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmBaseViewImpl.java
@@ -47,7 +47,7 @@
public JPAEdmBaseViewImpl(final ODataJPAContext context) {
pUnitName = context.getPersistenceUnitName();
- metaModel = context.getEntityManagerFactory().getMetamodel();
+ metaModel = context.getEntityManager().getMetamodel();
jpaEdmMappingModelAccess =
ODataJPAFactory.createFactory().getJPAAccessFactory().getJPAEdmMappingModelAccess(context);
jpaEdmExtension = context.getJPAEdmExtension();
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLBuilderFactoryTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLBuilderFactoryTest.java
index 58082b9..318c167 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLBuilderFactoryTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLBuilderFactoryTest.java
@@ -248,58 +248,34 @@
} catch (IllegalAccessException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2);
}
- EntityManagerFactory emf = new EntityManagerFactory() {
+ final EntityManager em = EasyMock.createMock(EntityManager.class);
+ EasyMock.expect(em.getMetamodel()).andReturn(null);
+ EasyMock.expect(em.isOpen()).andReturn(true).anyTimes();
+ EasyMock.replay(em);
- @Override
- public boolean isOpen() {
- return false;
- }
-
- @Override
- public Map<String, Object> getProperties() {
- return null;
- }
-
- @Override
- public PersistenceUnitUtil getPersistenceUnitUtil() {
- return null;
- }
-
- @Override
- public Metamodel getMetamodel() {
- return null;
- }
-
- @Override
- public CriteriaBuilder getCriteriaBuilder() {
- return null;
- }
-
- @Override
- public Cache getCache() {
- return null;
- }
-
- @SuppressWarnings("rawtypes")
- @Override
- public EntityManager createEntityManager(final Map arg0) {
- return null;
- }
-
- @Override
- public EntityManager createEntityManager() {
- return null;
- }
-
- @Override
- public void close() {}
- };
- oDataJPAContextImpl.setEntityManagerFactory(emf);
+ oDataJPAContextImpl.setEntityManagerFactory(new TestEntityManagerFactory(em));
oDataJPAContextImpl.setPersistenceUnitName("pUnit");
assertNotNull(jpaAccessFactory.getJPAProcessor(oDataJPAContextImpl));
assertNotNull(jpaAccessFactory.getJPAEdmModelView(oDataJPAContextImpl));
+ }
+
+ @Test
+ public void testJPAAccessFactoryEntityManagerOnly() {
+ ODataJPAFactoryImpl oDataJPAFactoryImpl = new ODataJPAFactoryImpl();
+ JPAAccessFactory jpaAccessFactory = oDataJPAFactoryImpl.getJPAAccessFactory();
+ ODataJPAContextImpl oDataJPAContextImpl = new ODataJPAContextImpl();
+
+ final EntityManager em = EasyMock.createMock(EntityManager.class);
+ EasyMock.expect(em.getMetamodel()).andReturn(null);
+ EasyMock.expect(em.isOpen()).andReturn(true).anyTimes();
+ EasyMock.replay(em);
+
+ oDataJPAContextImpl.setEntityManager(em);
+
+ assertNotNull(jpaAccessFactory.getJPAProcessor(oDataJPAContextImpl));
+ assertNotNull(jpaAccessFactory.getJPAEdmModelView(oDataJPAContextImpl));
}
@Test
@@ -309,70 +285,92 @@
ODataJPAAccessFactory jpaAccessFactory = oDataJPAFactoryImpl.getODataJPAAccessFactory();
ODataJPAContextImpl oDataJPAContextImpl = new ODataJPAContextImpl();
- EntityManagerFactory emf = new EntityManagerFactory() {
+ final EntityManager em = EasyMock.createMock(EntityManager.class);
+ EasyMock.expect(em.getMetamodel()).andReturn(null);
+ EasyMock.expect(em.isOpen()).andReturn(true).anyTimes();
+ EasyMock.replay(em);
- @Override
- public boolean isOpen() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public Map<String, Object> getProperties() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public PersistenceUnitUtil getPersistenceUnitUtil() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Metamodel getMetamodel() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public CriteriaBuilder getCriteriaBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Cache getCache() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @SuppressWarnings("rawtypes")
- @Override
- public EntityManager createEntityManager(final Map arg0) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public EntityManager createEntityManager() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void close() {
- // TODO Auto-generated method stub
-
- }
- };
- oDataJPAContextImpl.setEntityManagerFactory(emf);
+ oDataJPAContextImpl.setEntityManagerFactory(new TestEntityManagerFactory(em));
oDataJPAContextImpl.setPersistenceUnitName("pUnit");
assertNotNull(jpaAccessFactory.getODataJPAMessageService(new Locale("en")));
assertNotNull(jpaAccessFactory.createODataJPAContext());
assertNotNull(jpaAccessFactory.createJPAEdmProvider(oDataJPAContextImpl));
assertNotNull(jpaAccessFactory.createODataProcessor(oDataJPAContextImpl));
-
}
+
+ @Test
+ public void testOdataJpaAccessFactoryEntityManagerOnly() {
+ ODataJPAFactoryImpl oDataJPAFactoryImpl = new ODataJPAFactoryImpl();
+ ODataJPAAccessFactory jpaAccessFactory = oDataJPAFactoryImpl.getODataJPAAccessFactory();
+ ODataJPAContextImpl oDataJPAContextImpl = new ODataJPAContextImpl();
+
+ EntityManager em = EasyMock.createMock(EntityManager.class);
+ EasyMock.expect(em.getMetamodel()).andReturn(null);
+ EasyMock.expect(em.isOpen()).andReturn(true).anyTimes();
+ EasyMock.replay(em);
+
+ oDataJPAContextImpl.setEntityManager(em);
+ oDataJPAContextImpl.setPersistenceUnitName("pUnit");
+
+ assertNotNull(jpaAccessFactory.getODataJPAMessageService(new Locale("en")));
+ assertNotNull(jpaAccessFactory.createODataJPAContext());
+ assertNotNull(jpaAccessFactory.createJPAEdmProvider(oDataJPAContextImpl));
+ assertNotNull(jpaAccessFactory.createODataProcessor(oDataJPAContextImpl));
+ }
+
+ private static class TestEntityManagerFactory implements EntityManagerFactory {
+
+ private EntityManager em;
+
+ public TestEntityManagerFactory(EntityManager entityManager) {
+ em = entityManager;
+ }
+
+ @Override
+ public boolean isOpen() {
+ return false;
+ }
+
+ @Override
+ public Map<String, Object> getProperties() {
+ return null;
+ }
+
+ @Override
+ public PersistenceUnitUtil getPersistenceUnitUtil() {
+ return null;
+ }
+
+ @Override
+ public Metamodel getMetamodel() {
+ return null;
+ }
+
+ @Override
+ public CriteriaBuilder getCriteriaBuilder() {
+ return null;
+ }
+
+ @Override
+ public Cache getCache() {
+ return null;
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public EntityManager createEntityManager(final Map arg0) {
+ return em;
+ }
+
+ @Override
+ public EntityManager createEntityManager() {
+ return em;
+ }
+
+ @Override
+ public void close() {
+ }
+ };
+
}
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
index 9e03c86..83cb0d3 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
@@ -62,6 +62,8 @@
private static EntityManager mockEntityManager() {
EntityManager em = EasyMock.createMock(EntityManager.class);
+ EasyMock.expect(em.getMetamodel()).andReturn(null);
+ EasyMock.expect(em.isOpen()).andReturn(true).anyTimes();
EasyMock.replay(em);
return em;