From a582db910185521b6dfb2e8eeead4a57b3f7aafd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20P=C3=B6hler?= Date: Mon, 13 Sep 2021 17:04:22 +0200 Subject: [PATCH] Re-add test and fix compile error --- .../server/core/PersistRequestBean.java | 2 +- .../java/org/tests/basic/TestIUDVanilla.java | 29 ++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java index fd4f8e555..dc14a15ae 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java @@ -293,7 +293,7 @@ public final class PersistRequestBean extends PersistRequest implements BeanP private void onFailedUpdateUndoGeneratedProperties() { for (BeanProperty prop : beanDescriptor.propertiesGenUpdate()) { - Object oldVal = intercept.getOrigValue(prop.getPropertyIndex()); + Object oldVal = intercept.getOrigValue(prop.propertyIndex()); prop.setValue(entityBean, oldVal); } } diff --git a/ebean-test/src/test/java/org/tests/basic/TestIUDVanilla.java b/ebean-test/src/test/java/org/tests/basic/TestIUDVanilla.java index bdc902609..ad7605162 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestIUDVanilla.java +++ b/ebean-test/src/test/java/org/tests/basic/TestIUDVanilla.java @@ -9,7 +9,11 @@ import org.tests.model.basic.UTMaster; import javax.persistence.OptimisticLockException; import java.sql.Timestamp; -import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertThrows; public class TestIUDVanilla extends BaseTestCase { @@ -79,4 +83,27 @@ public class TestIUDVanilla extends BaseTestCase { e0.setVersion(42); assertThrows(OptimisticLockException.class, () -> e0.update()); } + + @Test + public void testOptimisticLockException() { + UTMaster e0 = new UTMaster("optLock"); + DB.save(e0); + + e0 = DB.find(UTMaster.class).where().eq("name", "optLock").findOne(); + UTMaster e1 = DB.find(UTMaster.class).where().eq("name", "optLock").findOne(); + + int oldVersion = e0.getVersion(); + e0.setDescription("foo"); + e0.save(); + assertThat(e0.getVersion()).isGreaterThan(oldVersion); + + e1.setDescription("bar"); + oldVersion = e1.getVersion(); + assertThatThrownBy(e1::save).isInstanceOf(OptimisticLockException.class); + // after optimisticLockExecption, a restore of version is expected + assertThat(e1.getVersion()).isEqualTo(oldVersion); + // and subsequent saves must fail + assertThatThrownBy(e1::save).isInstanceOf(OptimisticLockException.class); + } + }