You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2016/02/13 06:35:05 UTC
olingo-odata2 git commit: [OLINGO-882] Added option to set CMP to
prevent EM close.
Repository: olingo-odata2
Updated Branches:
refs/heads/OLINGO-882_EnableContainerManagedPersistence [created] 185e97f28
[OLINGO-882] Added option to set CMP to prevent EM close.
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/185e97f2
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/185e97f2
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/185e97f2
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 185e97f2854a52fd0f1e7cb6ddb12d21c7aa65a6
Parents: f582a80
Author: mibo <mi...@mirb.de>
Authored: Sat Feb 13 06:34:40 2016 +0100
Committer: mibo <mi...@mirb.de>
Committed: Sat Feb 13 06:34:40 2016 +0100
----------------------------------------------------------------------
.../odata2/jpa/processor/api/ODataJPAContext.java | 16 ++++++++++++++++
.../jpa/processor/api/ODataJPAProcessor.java | 17 +++++++++++------
.../jpa/processor/core/ODataJPAContextImpl.java | 11 +++++++++++
.../core/ODataJPAProcessorDefaultTest.java | 2 ++
4 files changed, 40 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/185e97f2/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
index 220c08f..7cb54d9 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
@@ -239,4 +239,20 @@ public interface ODataJPAContext {
* @return ODataJPATransaction
*/
public ODataJPATransaction getODataJPATransaction();
+
+ /**
+ * Set the state whether the underlying entity manager is container managed (or not).
+ * (Default is <code>false</code>)
+ *
+ * @param containerManaged <code>true</code> for container managed entity manager
+ */
+ void setContainerManaged(boolean containerManaged);
+
+ /**
+ * The method returns <code>true</code> if the underlying entity manager is container managed.
+ * (Default is <code>false</code>)
+ *
+ * @return <code>true</code> if the underlying entity manger is container manged.
+ */
+ boolean isContainerManaged();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/185e97f2/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAProcessor.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAProcessor.java
index dc29caa..0c355f5 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAProcessor.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAProcessor.java
@@ -77,15 +77,20 @@ public abstract class ODataJPAProcessor extends ODataSingleProcessor {
}
/**
- * The method closes ThreadContext. It is mandatory to call this method to
- * avoid memory leaks.
+ * The method closes ThreadContext.
+ * It is mandatory to call this method to avoid memory leaks.
+ * <p/>
+ * <b>ATTENTION:</b> If <code>isContainerManaged</code> is set to <code>true</code> at
+ * the ODataJPAContext only the cleanup is run but the EntityManager is not closed.
*/
public void close(boolean forceClose) {
ODataJPATombstoneContext.cleanup();
- EntityManager em = oDataJPAContext.getEntityManager();
- if (!oDataJPAContext.getODataContext().isInBatchMode() || forceClose) {
- if (em.isOpen()) {
- em.close();
+ if(!oDataJPAContext.isContainerManaged()) {
+ EntityManager em = oDataJPAContext.getEntityManager();
+ if (!oDataJPAContext.getODataContext().isInBatchMode() || forceClose) {
+ if (em.isOpen()) {
+ em.close();
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/185e97f2/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
index 5fd9ab3..75e5174 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
@@ -44,6 +44,7 @@ public class ODataJPAContextImpl implements ODataJPAContext {
private static final ThreadLocal<ODataContext> oDataContextThreadLocal = new ThreadLocal<ODataContext>();
private boolean defaultNaming = true;
private ODataJPATransaction transaction = null;
+ private boolean containerManaged = false;
@Override
public String getPersistenceUnitName() {
@@ -181,6 +182,16 @@ public class ODataJPAContextImpl implements ODataJPAContext {
}
@Override
+ public boolean isContainerManaged() {
+ return this.containerManaged;
+ }
+
+ @Override
+ public void setContainerManaged(boolean containerManaged) {
+ this.containerManaged = containerManaged;
+ }
+
+ @Override
public void setEntityManager(EntityManager em) {
this.em = em;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/185e97f2/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
index 9e4ced5..14cb5d3 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
@@ -333,6 +333,8 @@ public class ODataJPAProcessorDefaultTest extends JPAEdmTestModelView {
odataJPAContext.setODataContext((ODataContext) EasyMock.anyObject());
EasyMock.expectLastCall().anyTimes();
EasyMock.expect(odataJPAContext.getEntityManager()).andStubReturn(getLocalEntityManager());
+ EasyMock.expect(odataJPAContext.isContainerManaged()).andReturn(false);
+ EasyMock.expectLastCall().anyTimes();
EasyMock.replay(odataJPAContext);
return odataJPAContext;
}