You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2010/08/14 21:39:01 UTC
svn commit: r985574 - in /openjpa/branches/2.0.x:
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/
openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/
Author: mikedd
Date: Sat Aug 14 19:39:01 2010
New Revision: 985574
URL: http://svn.apache.org/viewvc?rev=985574&view=rev
Log:
get lock clause from DBDictionary
Modified:
openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMFTestCase.java
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestOptimisticNamedQueryLockMode.java
Modified: openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMFTestCase.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMFTestCase.java?rev=985574&r1=985573&r2=985574&view=diff
==============================================================================
--- openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMFTestCase.java (original)
+++ openjpa/branches/2.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMFTestCase.java Sat Aug 14 19:39:01 2010
@@ -201,5 +201,16 @@ public abstract class SingleEMFTestCase
protected Log getLog() {
return emf.getConfiguration().getLog("Tests");
}
+
+ protected String getForUpdateClause() {
+ DBDictionary dict = ((JDBCConfiguration) emf.getConfiguration()).getDBDictionaryInstance();
+ if (dict.forUpdateClause != null) {
+ return dict.forUpdateClause;
+ }
+ if (dict.tableForUpdateClause != null) {
+ return dict.tableForUpdateClause;
+ }
+ return "";
+ }
}
Modified: openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java?rev=985574&r1=985573&r2=985574&view=diff
==============================================================================
--- openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java (original)
+++ openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java Sat Aug 14 19:39:01 2010
@@ -36,8 +36,7 @@ import org.apache.openjpa.persistence.Op
public class TestEmLockMode extends SequencedActionsTest {
private static String NON_SUPPORTED_OPTIMISTIC_SQL =
"SELECT .* FROM LockEmployee .*";
- private static String NON_SUPPORTED_FOR_UPDATE_SQL =
- "SELECT .* FROM LockEmployee .* FOR UPDATE.*";
+ private static String NON_SUPPORTED_FOR_UPDATE_SQL = "" ; // append lock clause from dict
private static String VERSION_UPDATE_SQL =
"UPDATE LockEmployee SET version .* WHERE .*";
private static String DB2_OPTIMISTIC_SQL =
@@ -50,6 +49,15 @@ public class TestEmLockMode extends Sequ
public void setUp() {
setUp(LockEmployee.class, "openjpa.LockManager", "mixed");
commonSetUp();
+ NON_SUPPORTED_FOR_UPDATE_SQL = NON_SUPPORTED_OPTIMISTIC_SQL + " " + escapeRegex(getForUpdateClause()) + ".*";
+ }
+
+ private String escapeRegex(String clause) {
+ // escape an update clause for use in a regex.
+ // only handling ( ) for now
+ String rval = clause.replace("(", "\\(");
+ rval = rval.replace(")", "\\)");
+ return rval;
}
/*
Modified: openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java?rev=985574&r1=985573&r2=985574&view=diff
==============================================================================
--- openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java (original)
+++ openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java Sat Aug 14 19:39:01 2010
@@ -37,23 +37,26 @@ import org.apache.openjpa.persistence.te
*
*/
public class TestNamedQueryLockMode extends SQLListenerTestCase {
+ String lockClause = "FOR UPDATE";
+
public void setUp() {
super.setUp(CLEAR_TABLES, LockEmployee.class,
"openjpa.LockManager", "pessimistic",
"openjpa.Optimistic", "false"
);
+ lockClause = getForUpdateClause();
}
public void testForUpdateClausePresentInNamedQueryWithLockMode() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
em.getTransaction().rollback();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
em.getTransaction().rollback();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
em.getTransaction().rollback();
}
@@ -72,8 +75,8 @@ public class TestNamedQueryLockMode exte
public void testForUpdateClausePresentInQueryWithDefault() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeById").setParameter("id", 0));
em.getTransaction().commit();
}
@@ -84,12 +87,12 @@ public class TestNamedQueryLockMode exte
OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0);
FetchPlan fp = q.getFetchPlan();
fp.setReadLockMode(LockModeType.NONE);
- assertClauseAbsentInSQL("FOR UPDATE", q);
+ assertClauseAbsentInSQL(lockClause, q);
q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
fp = q.getFetchPlan();
fp.setReadLockMode(LockModeType.NONE);
- assertClauseAbsentInSQL("FOR UPDATE", q);
+ assertClauseAbsentInSQL(lockClause, q);
em.getTransaction().commit();
}
@@ -98,8 +101,8 @@ public class TestNamedQueryLockMode exte
public void testForUpdateClauseAbsentInQueryWithExplictNoLock() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
- assertClauseAbsentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
- assertClauseAbsentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
+ assertClauseAbsentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
+ assertClauseAbsentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
em.getTransaction().commit();
}
Modified: openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestOptimisticNamedQueryLockMode.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestOptimisticNamedQueryLockMode.java?rev=985574&r1=985573&r2=985574&view=diff
==============================================================================
--- openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestOptimisticNamedQueryLockMode.java (original)
+++ openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestOptimisticNamedQueryLockMode.java Sat Aug 14 19:39:01 2010
@@ -22,12 +22,12 @@ import javax.persistence.EntityManager;
import javax.persistence.LockModeType;
import javax.persistence.Query;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.sql.DBDictionary;
import org.apache.openjpa.persistence.FetchPlan;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
import org.apache.openjpa.persistence.OpenJPAQuery;
-import org.apache.openjpa.persistence.TransactionRequiredException;
-import org.apache.openjpa.persistence.test.AllowFailure;
import org.apache.openjpa.persistence.test.SQLListenerTestCase;
/**
@@ -35,10 +35,13 @@ import org.apache.openjpa.persistence.te
* query when Optimistic=true (default), with pessimistic lock manager.
*/
public class TestOptimisticNamedQueryLockMode extends SQLListenerTestCase {
+ String lockClause = "FOR UPDATE";
+
public void setUp() {
super.setUp(CLEAR_TABLES, LockEmployee.class,
"openjpa.LockManager", "pessimistic"
);
+ lockClause = getForUpdateClause();
}
/*
@@ -47,13 +50,13 @@ public class TestOptimisticNamedQueryLoc
public void testForUpdateClausePresentInNamedQueryWithLockMode() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
em.getTransaction().rollback();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
em.getTransaction().rollback();
em.getTransaction().begin();
- assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
+ assertClausePresentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
em.getTransaction().rollback();
em.close();
}
@@ -64,8 +67,8 @@ public class TestOptimisticNamedQueryLoc
public void testForUpdateClausePresentInQueryWithDefault() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
- assertClauseAbsentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
- assertClauseAbsentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+ assertClauseAbsentInSQL(lockClause, em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+ assertClauseAbsentInSQL(lockClause, em.createNamedQuery("findEmployeeById").setParameter("id", 0));
OpenJPAEntityManager oem = (OpenJPAEntityManager)em;
OpenJPAQuery<?> q = oem.createNamedQuery("findEmployeeById").setParameter("id", 0);
@@ -86,12 +89,12 @@ public class TestOptimisticNamedQueryLoc
OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0);
FetchPlan fp = q.getFetchPlan();
fp.setReadLockMode(LockModeType.NONE);
- assertClauseAbsentInSQL("FOR UPDATE", q);
+ assertClauseAbsentInSQL(lockClause, q);
q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
fp = q.getFetchPlan();
fp.setReadLockMode(LockModeType.NONE);
- assertClauseAbsentInSQL("FOR UPDATE", q);
+ assertClauseAbsentInSQL(lockClause, q);
em.getTransaction().commit();
em.close();
@@ -103,8 +106,8 @@ public class TestOptimisticNamedQueryLoc
public void testForUpdateClauseAbsentInQueryWithExplictNoLock() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
- assertClauseAbsentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
- assertClauseAbsentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
+ assertClauseAbsentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
+ assertClauseAbsentInSQL(lockClause, em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
em.getTransaction().commit();
em.close();
}