refactor: unwrap invocationTargetException (#1718)

This commit is contained in:
Roland Praml
2019-05-21 00:37:03 +12:00
committed by Rob Bygrave
parent dcd81a857d
commit cf4d45befb
3 changed files with 194 additions and 3 deletions
@@ -0,0 +1,47 @@
package org.tests.lifecycle;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import org.tests.model.basic.EBasicWithLifecycleExceptions;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.io.IOException;
import javax.persistence.PersistenceException;
public class TestLifecycleExceptions extends BaseTestCase {
@Test
public void prePersist_unchecked() {
EBasicWithLifecycleExceptions bean = new EBasicWithLifecycleExceptions();
bean.preException = new IndexOutOfBoundsException();
assertThatThrownBy(() -> DB.save(bean)).isInstanceOf(IndexOutOfBoundsException.class);
}
@Test
public void prepersist_checked() {
EBasicWithLifecycleExceptions bean = new EBasicWithLifecycleExceptions();
bean.preException = new IOException();
assertThatThrownBy(() -> DB.save(bean))
.isInstanceOf(PersistenceException.class)
.hasCauseInstanceOf(IOException.class);
}
@Test
public void postPersist_unchecked() {
EBasicWithLifecycleExceptions bean = new EBasicWithLifecycleExceptions();
bean.postException = new IndexOutOfBoundsException();
assertThatThrownBy(() -> DB.save(bean)).isInstanceOf(IndexOutOfBoundsException.class);
}
@Test
public void postpersist_checked() {
EBasicWithLifecycleExceptions bean = new EBasicWithLifecycleExceptions();
bean.postException = new IOException();
assertThatThrownBy(() -> DB.save(bean))
.isInstanceOf(PersistenceException.class)
.hasCauseInstanceOf(IOException.class);
}
}
@@ -0,0 +1,130 @@
package org.tests.model.basic;
import io.ebean.annotation.PostSoftDelete;
import io.ebean.annotation.PreSoftDelete;
import io.ebean.annotation.SoftDelete;
import javax.annotation.PostConstruct;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.PostLoad;
import javax.persistence.PostPersist;
import javax.persistence.PostRemove;
import javax.persistence.PostUpdate;
import javax.persistence.PrePersist;
import javax.persistence.PreRemove;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Version;
@Entity
@Table(name = "e_basic_with_ex")
public class EBasicWithLifecycleExceptions {
@Id
Long id;
@SoftDelete
boolean deleted;
@Version
Long version;
public transient Throwable preException;
public transient Throwable postException;
@PrePersist
public void prePersist() throws Throwable {
if (preException != null) {
throw preException;
}
}
@PostPersist
public void postPersist() throws Throwable {
if (postException != null) {
throw postException;
}
}
@PreUpdate
public void preUpdate() throws Throwable {
if (preException != null) {
throw preException;
}
}
@PostUpdate
public void postUpdate() throws Throwable {
if (postException != null) {
throw postException;
}
}
@PreRemove
public void preRemove() throws Throwable {
if (preException != null) {
throw preException;
}
}
@PostRemove
public void postRemove() throws Throwable {
if (postException != null) {
throw postException;
}
}
@PreSoftDelete
public void preSoftDelete() throws Throwable {
if (preException != null) {
throw preException;
}
}
@PostSoftDelete
public void postSoftDelete() throws Throwable {
if (postException != null) {
throw postException;
}
}
@PostLoad
public void postLoad1() throws Throwable {
if (postException != null) {
throw postException;
}
}
@PostConstruct
public void postConstruct1() throws Throwable {
if (postException != null) {
throw postException;
}
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
}