blob: 8d81f7c9f6c53f569d73abfe37b202eb5a2f653c [file] [log] [blame]
/*
* 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.kernel;
import javax.persistence.EntityManager;
import org.apache.openjpa.persistence.kernel.common.apps.Entity1;
import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
public class Test2EJBConcurrency extends AbstractTestCase {
private Object _id = null;
public Test2EJBConcurrency(String name) {
super(name, "kernelcactusapp");
}
public void setUp() throws Exception {
deleteAll(Entity1.class);
EntityManager em = currentEntityManager();
startTx(em);
Entity1 b = new Entity1(3, "STRING", 10);
em.persist(b);
em.flush();
endTx(em);
endEm(em);
}
/**
* Test optimistic concurrency.
*/
public void testOptConcurrency1()
throws Exception {
EntityManager em1 = currentEntityManager();
startTx(em1);
EntityManager em2 = currentEntityManager();
startTx(em2);
Entity1 b1 = (Entity1) em1.find(Entity1.class, 3);
b1.setStringField("STRING2");
endTx(em1);
assertEquals("b1.getstringField is not STRING2 as exp.", "STRING2",
b1.getStringField());
Entity1 b2 = (Entity1) em2.find(Entity1.class, 3);
assertEquals("b2.getstringField is not STRING2 as exp.", "STRING2",
b2.getStringField());
b2.setStringField("STRING3");
endTx(em2);
assertEquals("b2.getstringField is not STRING3 as exp.", "STRING3",
b2.getStringField());
startTx(em1);
b1 = (Entity1) em1.find(Entity1.class, 3);
em1.refresh(b1);
assertEquals("b1.getstringField is not STRING3 as exp.", "STRING2",
b1.getStringField());
b1.setStringField("STRING4");
endTx(em1);
b2 = (Entity1) em2.find(Entity1.class, 3);
assertEquals("b2.getstringField is not STRING3 as exp.", "STRING3",
b2.getStringField());
endEm(em1);
endEm(em2);
}
/**
* Test optimistic concurrency.
*/
// public void testOptConcurrency2 ()
// throws Exception
// {
// EntityManager em1 = currentEntityManager();
// startTx(em1);
//
// EntityManager em2 = currentEntityManager();
// startTx(em2);
//
// Entity1 b1 = (Entity1) em1.find (Entity1.class, 3);
// Entity1 b2 = (Entity1) em2.find (Entity1.class, 3);
//
// assertEquals ("b1.getstringField is not STRING as exp.","STRING", b1.getStringField ());
// assertEquals ("b2.getstringField is not STRING as exp.","STRING", b2.getStringField ());
//
// b1.setStringField ("STRING2");
// endTx(em1);
// assertEquals ("b1.getstringField is not STRING as exp.","STRING2", b1.getStringField ());
//
// assertEquals ("b2.getstringField is not STRING as exp.","STRING", b2.getStringField ());
// b2.setStringField ("STRING3");
//
// try
// {
// endTx(em2);
// fail ("OL Violation");
// }
// catch (Exception ole)
// {
// // expected
// }
//
// rollbackTx(em2);
//
//
// b2 = (Entity1) em2.find (Entity1.class, 3);
// assertEquals ("b2.getstringField is not STRING2 as exp.","STRING2", b2.getStringField ());
//
// endEm(em1);
// endEm(em2);
// }
}