You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2015/04/08 00:40:40 UTC
tomee git commit: allowing to deactivate jpa timer
Repository: tomee
Updated Branches:
refs/heads/master f9495336b -> 4d6deb59a
allowing to deactivate jpa timer
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/4d6deb59
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/4d6deb59
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/4d6deb59
Branch: refs/heads/master
Commit: 4d6deb59a0c78043eaf8cd94cba38163fd665793
Parents: f949533
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Apr 8 00:40:34 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Apr 8 00:40:34 2015 +0200
----------------------------------------------------------------------
.../openejb/persistence/JtaEntityManager.java | 115 +++++++++++--------
1 file changed, 64 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/4d6deb59/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
index 12c5cbc..918331b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
@@ -20,6 +20,7 @@ package org.apache.openejb.persistence;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory;
import org.apache.openejb.core.ivm.IntraVmArtifact;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.reflection.Reflections;
@@ -86,6 +87,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
private final String unitName;
private final Logger logger;
private final boolean wrapNoTxQueries;
+ private final boolean timer;
public JtaEntityManager(final JtaEntityManagerRegistry registry, final EntityManagerFactory entityManagerFactory,
final Map properties, final String unitName, final String synchronizationType) {
@@ -105,7 +107,11 @@ public class JtaEntityManager implements EntityManager, Serializable {
this.entityManagerFactory = entityManagerFactory;
this.properties = properties;
this.extended = extended;
- this.synchronizationType = !isJPA21(entityManagerFactory) || synchronizationType == null ? null : SynchronizationType.valueOf(synchronizationType.toUpperCase(Locale.ENGLISH));
+ this.synchronizationType = !isJPA21(entityManagerFactory) || synchronizationType == null ?
+ null : SynchronizationType.valueOf(synchronizationType.toUpperCase(Locale.ENGLISH));
+ final String globalTimerConfig = SystemInstance.get().getProperty("openejb.jpa.timer");
+ final Object localTimerConfig = properties == null ? null : properties.get("openejb.jpa.timer");
+ this.timer = localTimerConfig == null ? (globalTimerConfig == null || Boolean.parseBoolean(globalTimerConfig)) : Boolean.parseBoolean(localTimerConfig.toString());
logger = unitName == null ? baseLogger : baseLogger.getChildLogger(unitName);
final String wrapConfig = ReloadableEntityManagerFactory.class.isInstance(entityManagerFactory) ?
ReloadableEntityManagerFactory.class.cast(entityManagerFactory).getUnitProperties().getProperty("openejb.jpa.query.wrap-no-tx", "true") : "true";
@@ -169,7 +175,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public EntityManager getDelegate() {
- final Timer timer = Op.getDelegate.start(this);
+ final Timer timer = Op.getDelegate.start(this.timer, this);
try {
final EntityManager em = getEntityManager();
em.getDelegate(); // exception if not open etc... to respect the spec
@@ -181,7 +187,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void persist(final Object entity) {
assertTransactionActive();
- final Timer timer = Op.persist.start(this);
+ final Timer timer = Op.persist.start(this.timer, this);
try {
getEntityManager().persist(entity);
} finally {
@@ -191,7 +197,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public <T> T merge(final T entity) {
assertTransactionActive();
- final Timer timer = Op.merge.start(this);
+ final Timer timer = Op.merge.start(this.timer, this);
try {
return getEntityManager().merge(entity);
} finally {
@@ -201,7 +207,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void remove(final Object entity) {
assertTransactionActive();
- final Timer timer = Op.remove.start(this);
+ final Timer timer = Op.remove.start(this.timer, this);
try {
getEntityManager().remove(entity);
} finally {
@@ -212,7 +218,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public <T> T find(final Class<T> entityClass, final Object primaryKey) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.find.start(this);
+ final Timer timer = Op.find.start(this.timer, this);
try {
return entityManager.find(entityClass, primaryKey);
} finally {
@@ -226,7 +232,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public <T> T getReference(final Class<T> entityClass, final Object primaryKey) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.getReference.start(this);
+ final Timer timer = Op.getReference.start(this.timer, this);
try {
return entityManager.getReference(entityClass, primaryKey);
} finally {
@@ -239,7 +245,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void flush() {
assertTransactionActive();
- final Timer timer = Op.flush.start(this);
+ final Timer timer = Op.flush.start(this.timer, this);
try {
getEntityManager().flush();
} finally {
@@ -250,7 +256,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void setFlushMode(final FlushModeType flushMode) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.setFlushMode.start(this);
+ final Timer timer = Op.setFlushMode.start(this.timer, this);
try {
entityManager.setFlushMode(flushMode);
} finally {
@@ -264,7 +270,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public FlushModeType getFlushMode() {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.getFlushMode.start(this);
+ final Timer timer = Op.getFlushMode.start(this.timer, this);
try {
return entityManager.getFlushMode();
} finally {
@@ -277,7 +283,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void lock(final Object entity, final LockModeType lockMode) {
assertTransactionActive();
- final Timer timer = Op.lock.start(this);
+ final Timer timer = Op.lock.start(this.timer, this);
try {
getEntityManager().lock(entity, lockMode);
} finally {
@@ -287,7 +293,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void refresh(final Object entity) {
assertTransactionActive();
- final Timer timer = Op.refresh.start(this);
+ final Timer timer = Op.refresh.start(this.timer, this);
try {
getEntityManager().refresh(entity);
} finally {
@@ -299,7 +305,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
if (!extended && !isTransactionActive()) {
return;
}
- final Timer timer = Op.clear.start(this);
+ final Timer timer = Op.clear.start(this.timer, this);
try {
getEntityManager().clear();
} finally {
@@ -308,7 +314,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public boolean contains(final Object entity) {
- final Timer timer = Op.contains.start(this);
+ final Timer timer = Op.contains.start(this.timer, this);
try {
return !(!extended && !isTransactionActive()) && getEntityManager().contains(entity);
} finally {
@@ -317,7 +323,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public Query createQuery(final String qlString) {
- final Timer timer = Op.createQuery.start(this);
+ final Timer timer = Op.createQuery.start(this.timer, this);
try {
return proxyIfNoTx(CREATE_QUERY_FROM_NAME, qlString);
} finally {
@@ -326,7 +332,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public Query createNamedQuery(final String name) {
- final Timer timer = Op.createNamedQuery.start(this);
+ final Timer timer = Op.createNamedQuery.start(this.timer, this);
try {
return proxyIfNoTx(CREATE_NAMED_QUERY_FROM_NAME, name);
} finally {
@@ -335,7 +341,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public Query createNativeQuery(final String sqlString) {
- final Timer timer = Op.createNativeQuery.start(this);
+ final Timer timer = Op.createNativeQuery.start(this.timer, this);
try {
return proxyIfNoTx(CREATE_NATIVE_FROM_NAME, sqlString);
} finally {
@@ -344,7 +350,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public Query createNativeQuery(final String sqlString, final Class resultClass) {
- final Timer timer = Op.createNativeQuery.start(this);
+ final Timer timer = Op.createNativeQuery.start(this.timer, this);
try {
return proxyIfNoTx(CREATE_NATIVE_FROM_NAME_CLASS, sqlString, resultClass);
} finally {
@@ -353,7 +359,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public Query createNativeQuery(final String sqlString, final String resultSetMapping) {
- final Timer timer = Op.createNativeQuery.start(this);
+ final Timer timer = Op.createNativeQuery.start(this.timer, this);
try {
return proxyIfNoTx(CREATE_NATIVE_FROM_NAME_MAPPING, sqlString, resultSetMapping);
} finally {
@@ -390,7 +396,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
public void joinTransaction() {
- final Timer timer = Op.joinTransaction.start(this);
+ final Timer timer = Op.joinTransaction.start(this.timer, this);
try {
getDelegate().joinTransaction();
} finally {
@@ -418,7 +424,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
* @see javax.persistence.EntityManager#createNamedQuery(java.lang.String, java.lang.Class)
*/
public <T> TypedQuery<T> createNamedQuery(final String name, final Class<T> resultClass) {
- final Timer timer = Op.createNamedQuery.start(this);
+ final Timer timer = Op.createNamedQuery.start(this.timer, this);
try {
return typedProxyIfNoTx(CREATE_NAMED_QUERY_FROM_NAME_CLASS, name, resultClass);
} finally {
@@ -430,7 +436,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
* @see javax.persistence.EntityManager#createQuery(javax.persistence.criteria.CriteriaQuery)
*/
public <T> TypedQuery<T> createQuery(final CriteriaQuery<T> criteriaQuery) {
- final Timer timer = Op.createQuery.start(this);
+ final Timer timer = Op.createQuery.start(this.timer, this);
try {
return typedProxyIfNoTx(CREATE_QUERY_FROM_CRITERIA, criteriaQuery);
} finally {
@@ -442,7 +448,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
* @see javax.persistence.EntityManager#createQuery(java.lang.String, java.lang.Class)
*/
public <T> TypedQuery<T> createQuery(final String qlString, final Class<T> resultClass) {
- final Timer timer = Op.createQuery.start(this);
+ final Timer timer = Op.createQuery.start(this.timer, this);
try {
return typedProxyIfNoTx(CREATE_QUERY_FROM_NAME_CLASS, qlString, resultClass);
} finally {
@@ -454,7 +460,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
* @see javax.persistence.EntityManager#detach(java.lang.Object)
*/
public void detach(final Object entity) {
- final Timer timer = Op.detach.start(this);
+ final Timer timer = Op.detach.start(this.timer, this);
try {
if (!extended && isTransactionActive()) {
getEntityManager().detach(entity);
@@ -470,7 +476,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public <T> T find(final Class<T> entityClass, final Object primaryKey, final Map<String, Object> properties) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.find.start(this);
+ final Timer timer = Op.find.start(this.timer, this);
try {
return entityManager.find(entityClass, primaryKey, properties);
} finally {
@@ -487,7 +493,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public <T> T find(final Class<T> entityClass, final Object primaryKey, final LockModeType lockMode) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.find.start(this);
+ final Timer timer = Op.find.start(this.timer, this);
try {
return entityManager.find(entityClass, primaryKey, lockMode);
} finally {
@@ -504,7 +510,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public <T> T find(final Class<T> entityClass, final Object primaryKey, final LockModeType lockMode, final Map<String, Object> properties) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.find.start(this);
+ final Timer timer = Op.find.start(this.timer, this);
try {
return entityManager.find(entityClass, primaryKey, lockMode, properties);
} finally {
@@ -527,7 +533,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
*/
public LockModeType getLockMode(final Object entity) {
assertTransactionActive();
- final Timer timer = Op.getLockMode.start(this);
+ final Timer timer = Op.getLockMode.start(this.timer, this);
try {
return getEntityManager().getLockMode(entity);
} finally {
@@ -541,7 +547,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public Metamodel getMetamodel() {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.getMetamodel.start(this);
+ final Timer timer = Op.getMetamodel.start(this.timer, this);
try {
return entityManager.getMetamodel();
} finally {
@@ -558,7 +564,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public Map<String, Object> getProperties() {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.getProperties.start(this);
+ final Timer timer = Op.getProperties.start(this.timer, this);
try {
return entityManager.getProperties();
} finally {
@@ -575,7 +581,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public CriteriaBuilder getCriteriaBuilder() {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.getCriteriaBuilder.start(this);
+ final Timer timer = Op.getCriteriaBuilder.start(this.timer, this);
try {
return entityManager.getCriteriaBuilder();
} finally {
@@ -591,7 +597,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
*/
public void lock(final Object entity, final LockModeType lockMode, final Map<String, Object> properties) {
assertTransactionActive();
- final Timer timer = Op.lock.start(this);
+ final Timer timer = Op.lock.start(this.timer, this);
try {
getEntityManager().lock(entity, lockMode, properties);
} finally {
@@ -604,7 +610,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
*/
public void refresh(final Object entity, final Map<String, Object> properties) {
assertTransactionActive();
- final Timer timer = Op.refresh.start(this);
+ final Timer timer = Op.refresh.start(this.timer, this);
try {
getEntityManager().refresh(entity, properties);
} finally {
@@ -617,7 +623,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
*/
public void refresh(final Object entity, final LockModeType lockMode) {
assertTransactionActive();
- final Timer timer = Op.refresh.start(this);
+ final Timer timer = Op.refresh.start(this.timer, this);
try {
getEntityManager().refresh(entity, lockMode);
} finally {
@@ -630,7 +636,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
*/
public void refresh(final Object entity, final LockModeType lockMode, final Map<String, Object> properties) {
assertTransactionActive();
- final Timer timer = Op.refresh.start(this);
+ final Timer timer = Op.refresh.start(this.timer, this);
try {
getEntityManager().refresh(entity, lockMode, properties);
} finally {
@@ -644,7 +650,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
public void setProperty(final String name, final Object value) {
final EntityManager entityManager = getEntityManager();
try {
- final Timer timer = Op.setProperty.start(this);
+ final Timer timer = Op.setProperty.start(this.timer, this);
try {
entityManager.setProperty(name, value);
} finally {
@@ -683,13 +689,20 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
}
- private static enum Op {
+ private enum Op {
clear, close, contains, createNamedQuery, createNativeQuery, createQuery, find, flush, getFlushMode, getReference, getTransaction, lock, merge, refresh, remove, setFlushMode, persist, detach, getLockMode, unwrap, setProperty, getCriteriaBuilder, getProperties, getMetamodel, joinTransaction, getDelegate,
// JPA 2.1
createNamedStoredProcedureQuery, createStoredProcedureQuery, createEntityGraph, getEntityGraph, getEntityGraphs, isJoinedToTransaction;
- public Timer start(final JtaEntityManager em) {
- return new Timer(this, em);
+ private static final Timer NOOP = new Timer(null, null) {
+ @Override
+ public void stop() {
+ // no-op
+ }
+ };
+
+ public Timer start(final boolean timer, final JtaEntityManager em) {
+ return timer ? new Timer(this, em) : NOOP;
}
}
@@ -702,7 +715,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public StoredProcedureQuery createNamedStoredProcedureQuery(final String name) {
- final Timer timer = Op.createNamedStoredProcedureQuery.start(this);
+ final Timer timer = Op.createNamedStoredProcedureQuery.start(this.timer, this);
try {
return getEntityManager().createNamedStoredProcedureQuery(name);
} finally {
@@ -712,7 +725,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public StoredProcedureQuery createStoredProcedureQuery(final String procedureName) {
- final Timer timer = Op.createNamedStoredProcedureQuery.start(this);
+ final Timer timer = Op.createNamedStoredProcedureQuery.start(this.timer, this);
try {
return getEntityManager().createStoredProcedureQuery(procedureName);
} finally {
@@ -722,7 +735,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public StoredProcedureQuery createStoredProcedureQuery(final String procedureName, final Class... resultClasses) {
- final Timer timer = Op.createStoredProcedureQuery.start(this);
+ final Timer timer = Op.createStoredProcedureQuery.start(this.timer, this);
try {
return getEntityManager().createStoredProcedureQuery(procedureName, resultClasses);
} finally {
@@ -732,7 +745,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public StoredProcedureQuery createStoredProcedureQuery(final String procedureName, final String... resultSetMappings) {
- final Timer timer = Op.createStoredProcedureQuery.start(this);
+ final Timer timer = Op.createStoredProcedureQuery.start(this.timer, this);
try {
return getEntityManager().createStoredProcedureQuery(procedureName, resultSetMappings);
} finally {
@@ -742,7 +755,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public Query createQuery(final CriteriaUpdate updateQuery) {
- final Timer timer = Op.createQuery.start(this);
+ final Timer timer = Op.createQuery.start(this.timer, this);
try {
return getEntityManager().createQuery(updateQuery);
} finally {
@@ -752,7 +765,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public Query createQuery(final CriteriaDelete deleteQuery) {
- final Timer timer = Op.createQuery.start(this);
+ final Timer timer = Op.createQuery.start(this.timer, this);
try {
return getEntityManager().createQuery(deleteQuery);
} finally {
@@ -762,7 +775,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public <T> EntityGraph<T> createEntityGraph(final Class<T> rootType) {
- final Timer timer = Op.createEntityGraph.start(this);
+ final Timer timer = Op.createEntityGraph.start(this.timer, this);
try {
return getEntityManager().createEntityGraph(rootType);
} finally {
@@ -772,7 +785,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public EntityGraph<?> createEntityGraph(final String graphName) {
- final Timer timer = Op.createEntityGraph.start(this);
+ final Timer timer = Op.createEntityGraph.start(this.timer, this);
try {
return getEntityManager().createEntityGraph(graphName);
} finally {
@@ -782,7 +795,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public EntityGraph<?> getEntityGraph(final String graphName) {
- final Timer timer = Op.getEntityGraph.start(this);
+ final Timer timer = Op.getEntityGraph.start(this.timer, this);
try {
return getEntityManager().getEntityGraph(graphName);
} finally {
@@ -792,7 +805,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public <T> List<EntityGraph<? super T>> getEntityGraphs(final Class<T> entityClass) {
- final Timer timer = Op.getEntityGraphs.start(this);
+ final Timer timer = Op.getEntityGraphs.start(this.timer, this);
try {
return getEntityManager().getEntityGraphs(entityClass);
} finally {
@@ -802,9 +815,9 @@ public class JtaEntityManager implements EntityManager, Serializable {
@Override
public boolean isJoinedToTransaction() {
- final Timer timer = Op.isJoinedToTransaction.start(this);
+ final Timer timer = Op.isJoinedToTransaction.start(this.timer, this);
try {
- return getEntityManager().isJoinedToTransaction();
+ return synchronizationType == null /* JPA < 2.1 */ || getEntityManager().isJoinedToTransaction();
} finally {
timer.stop();
}