Author: mtylenda
Date: Thu Jul  2 16:20:30 2009
New Revision: 790645

URL: http://svn.apache.org/viewvc?rev=790645&view=rev
Log:
OPENJPA-1147: Remove isTargetPlatform calls from TestAutoIncrement, add 
sequence creation statement

Modified:
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java?rev=790645&r1=790644&r2=790645&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java
 Thu Jul  2 16:20:30 2009
@@ -19,19 +19,23 @@
 package org.apache.openjpa.persistence.jdbc.oracle;
 
 import javax.persistence.EntityManager;
+import javax.persistence.PersistenceException;
+import javax.persistence.Query;
 
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
 import org.apache.openjpa.persistence.test.DatabasePlatform;
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
 /**
  * Tests identity value assignment with IDENTITY strategy specifically for
- * Oracle database. IDENTITY strategy for most database platform is supported
+ * Oracle database. IDENTITY strategy for most database platforms is supported
  * with auto-increment capabilities. As Oracle does not natively support
  * auto-increment, the same effect is achieved by a combination of a database
  * sequence and a pre-insert database trigger [1].
  * 
- * This test verifies that a persistence entity using IDENTITY generation type
- * is allocated identities in monotonic sequence on Oracle platform.
+ * This test verifies that a persistent entity using IDENTITY generation type
+ * is allocating identities in monotonic sequence on Oracle platform.
  * 
  * [1] http://jen.fluxcapacitor.net/geek/autoincr.html
  * 
@@ -41,14 +45,14 @@
 
 @DatabasePlatform("oracle.jdbc.driver.OracleDriver")
 public class TestAutoIncrement extends SingleEMFTestCase {
-       private static String PLATFORM = "oracle";
 
        public void setUp() throws Exception {
         if ("testAutoIncrementIdentityWithNamedSequence".equals(getName())) {
+            String sequence = "autoIncrementSequence";
+            createSequence(sequence);
                        super.setUp(CLEAR_TABLES, PObject.class,
                            "openjpa.jdbc.DBDictionary",
-                           "oracle(UseTriggersForAutoAssign=true," + 
-                           "autoAssignSequenceName=autoIncrementSequence)");
+                           
"oracle(UseTriggersForAutoAssign=true,autoAssignSequenceName=" + sequence + 
")");
                } else {
                        super.setUp(CLEAR_TABLES, PObjectNative.class,
                                        "openjpa.jdbc.DBDictionary",
@@ -56,10 +60,7 @@
                }
        }
 
-       public void testAutoIncrementIdentityWithNamedSequence() {
-               if (!isTargetPlatform(PLATFORM))
-                       return;
-
+    public void testAutoIncrementIdentityWithNamedSequence() {
                EntityManager em = emf.createEntityManager();
                em.getTransaction().begin();
                PObject pc1 = new PObject();
@@ -72,9 +73,6 @@
        }
 
        public void testAutoIncrementIdentityWithNativeSequence() {
-               if (!isTargetPlatform(PLATFORM))
-                       return;
-
                EntityManager em = emf.createEntityManager();
                em.getTransaction().begin();
                PObjectNative pc1 = new PObjectNative();
@@ -85,4 +83,23 @@
 
                assertEquals(1, Math.abs(pc1.getId() - pc2.getId()));
        }
+
+    /**
+     * Create sequence so that the test does not require manual intervention 
in database.
+     */
+    private void createSequence(String sequence) {
+        OpenJPAEntityManagerFactorySPI factorySPI = createEMF();
+        OpenJPAEntityManagerSPI em = factorySPI.createEntityManager();
+
+        try {
+            em.getTransaction().begin();
+            Query q = em.createNativeQuery("CREATE SEQUENCE " + sequence + " 
START WITH 1");
+            q.executeUpdate();
+            em.getTransaction().commit();
+        } catch (PersistenceException e) {          
+            // Sequence probably exists.
+            em.getTransaction().rollback();
+        }
+        closeEMF(factorySPI);
+    }
 }


Reply via email to