Return-Path: X-Original-To: apmail-tomee-commits-archive@www.apache.org Delivered-To: apmail-tomee-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 53B2117A34 for ; Tue, 7 Apr 2015 22:40:41 +0000 (UTC) Received: (qmail 46983 invoked by uid 500); 7 Apr 2015 22:40:41 -0000 Delivered-To: apmail-tomee-commits-archive@tomee.apache.org Received: (qmail 46956 invoked by uid 500); 7 Apr 2015 22:40:41 -0000 Mailing-List: contact commits-help@tomee.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@tomee.apache.org Delivered-To: mailing list commits@tomee.apache.org Received: (qmail 46947 invoked by uid 99); 7 Apr 2015 22:40:41 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Apr 2015 22:40:41 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D41C4E1844; Tue, 7 Apr 2015 22:40:40 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: rmannibucau@apache.org To: commits@tomee.apache.org Message-Id: <87dd12b877ee42d78f7173792a52e1eb@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: tomee git commit: allowing to deactivate jpa timer Date: Tue, 7 Apr 2015 22:40:40 +0000 (UTC) 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 Authored: Wed Apr 8 00:40:34 2015 +0200 Committer: Romain Manni-Bucau 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 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 find(final Class 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 getReference(final Class 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 TypedQuery createNamedQuery(final String name, final Class 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 TypedQuery createQuery(final CriteriaQuery 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 TypedQuery createQuery(final String qlString, final Class 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 find(final Class entityClass, final Object primaryKey, final Map 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 find(final Class 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 find(final Class entityClass, final Object primaryKey, final LockModeType lockMode, final Map 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 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 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 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 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 EntityGraph createEntityGraph(final Class 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 List> getEntityGraphs(final Class 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(); }