openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ppod...@apache.org
Subject svn commit: r681747 - in /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle: ./ PObject.java PObjectNative.java TestAutoIncrement.java
Date Fri, 01 Aug 2008 16:57:53 GMT
Author: ppoddar
Date: Fri Aug  1 09:57:52 2008
New Revision: 681747

URL: http://svn.apache.org/viewvc?rev=681747&view=rev
Log:
Add test case for IDENTITY generation strategy

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObject.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObjectNative.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObject.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObject.java?rev=681747&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObject.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObject.java
Fri Aug  1 09:57:52 2008
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.openjpa.persistence.jdbc.oracle;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+/**
+ * A persistent entity to verify IDENTITY strategy for primary key value
+ * generation with Oracle Database.
+ * 
+ * @author Pinaki Poddar
+ *
+ */
+@Entity
+public class PObject {
+	@Id
+	@GeneratedValue(strategy=GenerationType.IDENTITY)
+	private long id;
+	
+	private String name;
+	
+	public long getId() {
+		return id;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String s) {
+		this.name = s;
+	}
+	
+	
+}

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObjectNative.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObjectNative.java?rev=681747&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObjectNative.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/PObjectNative.java
Fri Aug  1 09:57:52 2008
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.openjpa.persistence.jdbc.oracle;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+/**
+ * A persistent entity to verify IDENTITY strategy for primary key value
+ * generation with Oracle Database.
+ * 
+ * @author Pinaki Poddar
+ *
+ */
+@Entity
+public class PObjectNative {
+	@Id
+	@GeneratedValue(strategy=GenerationType.IDENTITY)
+	private long id;
+	
+	private String name;
+	
+	public long getId() {
+		return id;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String s) {
+		this.name = s;
+	}
+	
+	
+}

Added: 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=681747&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/oracle/TestAutoIncrement.java
Fri Aug  1 09:57:52 2008
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.openjpa.persistence.jdbc.oracle;
+
+import javax.persistence.EntityManager;
+
+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
+ * 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.
+ * 
+ * [1] http://jen.fluxcapacitor.net/geek/autoincr.html
+ * 
+ * @author Pinaki Poddar
+ * 
+ */
+public class TestAutoIncrement extends SingleEMFTestCase {
+	private static String PLATFORM = "oracle";
+
+	public void setUp() throws Exception {
+		if (!isTargetPlatform(PLATFORM)) {
+			System.err.println("*** " + getName() + " skipped. Run with "
+					+ "-Dplatform=" + PLATFORM + " to activate");
+			return;
+		}
+		if ("testAutoIncrementIdentityWithNamedSequence".equals(getName())) {
+			super.setUp(CLEAR_TABLES, PObject.class,
+			    "openjpa.jdbc.DBDictionary",
+			    "oracle(UseTriggersForAutoAssign=true,autoAssignSequenceName=autoIncrementSequence)",
+			    "openjpa.Log", "SQL=TRACE");
+		} else {
+			super.setUp(CLEAR_TABLES, PObjectNative.class,
+					"openjpa.jdbc.DBDictionary",
+					"oracle(UseTriggersForAutoAssign=true)",
+					"openjpa.Log", "SQL=TRACE");
+		}
+	}
+
+	boolean isTargetPlatform(String target) {
+		String url = getPlatform();
+		return url != null && url.indexOf(target) != -1;
+	}
+
+	public String getPlatform() {
+		return System.getProperty("platform", "derby");
+	}
+
+	public void testAutoIncrementIdentityWithNamedSequence() {
+		if (!isTargetPlatform(PLATFORM))
+			return;
+
+		EntityManager em = emf.createEntityManager();
+		em.getTransaction().begin();
+		PObject pc1 = new PObject();
+		PObject pc2 = new PObject();
+		em.persist(pc1);
+		em.persist(pc2);
+		em.getTransaction().commit();
+
+		assertEquals(1, Math.abs(pc1.getId() - pc2.getId()));
+	}
+
+	public void testAutoIncrementIdentityWithNativeSequence() {
+		if (!isTargetPlatform(PLATFORM))
+			return;
+
+		EntityManager em = emf.createEntityManager();
+		em.getTransaction().begin();
+		PObjectNative pc1 = new PObjectNative();
+		PObjectNative pc2 = new PObjectNative();
+		em.persist(pc1);
+		em.persist(pc2);
+		em.getTransaction().commit();
+
+		assertEquals(1, Math.abs(pc1.getId() - pc2.getId()));
+	}
+}



Mime
View raw message