Adds support to multiple methods as event listeners

Fixes #244
This commit is contained in:
Megazord
2015-02-07 01:26:03 -02:00
parent 4ab2f0df3c
commit c140574eba
3 changed files with 168 additions and 70 deletions
@@ -1,5 +1,6 @@
package com.avaje.tests.lifecycle;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
@@ -10,25 +11,95 @@ import com.avaje.tests.model.basic.EBasicWithLifecycle;
public class TestLifecyleAnnotatedBean extends BaseTestCase {
@Test
public void test() {
public void shouldExecutePrePersistMethodsWhenSavingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("hello there");
bean.setName("PrePersist");
Ebean.getServerCacheManager();
Ebean.save(bean);
Assert.assertEquals("prePersist,postPersist,", bean.getBuffer());
EBasicWithLifecycle beanWasLoaded = Ebean.find(EBasicWithLifecycle.class, bean.getId());
Assert.assertEquals("postLoad", beanWasLoaded.getBuffer().toString());
bean.setName("Changed");
Assert.assertThat(bean.getBuffer(), Matchers.containsString("prePersist1"));
Assert.assertThat(bean.getBuffer(), Matchers.containsString("prePersist2"));
}
@Test
public void shouldExecutePostPersistMethodsWhenSavingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("PostPersist");
Ebean.getServerCacheManager();
Ebean.save(bean);
Assert.assertThat(bean.getBuffer(), Matchers.containsString("postPersist1"));
Assert.assertThat(bean.getBuffer(), Matchers.containsString("postPersist2"));
}
@Test
public void shouldExecutePostLoadMethodsWhenFindingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("PostLoad");
Ebean.getServerCacheManager();
Ebean.save(bean);
EBasicWithLifecycle loaded = Ebean.find(EBasicWithLifecycle.class, bean.getId());
Assert.assertThat(loaded.getBuffer(), Matchers.containsString("postLoad1"));
Assert.assertThat(loaded.getBuffer(), Matchers.containsString("postLoad2"));
}
@Test
public void shouldExecutePreUpdateMethodsWhenUpdatingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("Persisted");
Ebean.getServerCacheManager();
Ebean.save(bean);
bean.setName("PreUpdate");
Ebean.save(bean);
Assert.assertThat(bean.getBuffer(), Matchers.containsString("preUpdate1"));
Assert.assertThat(bean.getBuffer(), Matchers.containsString("preUpdate2"));
}
@Test
public void shouldExecutePostUpdateMethodsWhenUpdatingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("Persisted");
Ebean.getServerCacheManager();
Ebean.save(bean);
bean.setName("PostUpdate");
Ebean.save(bean);
Assert.assertThat(bean.getBuffer(), Matchers.containsString("postUpdate1"));
Assert.assertThat(bean.getBuffer(), Matchers.containsString("postUpdate2"));
}
@Test
public void shouldExecutePreRemoveMethodsWhenRemovingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("Persisted");
Ebean.getServerCacheManager();
Ebean.save(bean);
Ebean.delete(bean);
Assert.assertEquals("prePersist,postPersist,preUpdate,postUpdate,preRemove,postRemove", bean.getBuffer());
Assert.assertThat(bean.getBuffer(), Matchers.containsString("preRemove1"));
Assert.assertThat(bean.getBuffer(), Matchers.containsString("preRemove2"));
}
@Test
public void shouldExecutePostRemoveMethodsWhenRemovingBean() {
EBasicWithLifecycle bean = new EBasicWithLifecycle();
bean.setName("Persisted");
Ebean.getServerCacheManager();
Ebean.save(bean);
Ebean.delete(bean);
Assert.assertThat(bean.getBuffer(), Matchers.containsString("postRemove1"));
Assert.assertThat(bean.getBuffer(), Matchers.containsString("postRemove2"));
}
}
@@ -27,38 +27,73 @@ public class EBasicWithLifecycle {
transient StringBuilder buffer = new StringBuilder();
@PrePersist
public void prePersist() {
buffer.append("prePersist,");
public void prePersist1() {
buffer.append("prePersist1");
}
@PrePersist
public void prePersist2() {
buffer.append("prePersist2");
}
@PostPersist
public void postPersist() {
buffer.append("postPersist,");
public void postPersist1() {
buffer.append("postPersist1");
}
@PostPersist
public void postPersist2() {
buffer.append("postPersist2");
}
@PreUpdate
public void preUpdate() {
buffer.append("preUpdate,");
public void preUpdate1() {
buffer.append("preUpdate1");
}
@PreUpdate
public void preUpdate2() {
buffer.append("preUpdate2");
}
@PostUpdate
public void postUpdate() {
buffer.append("postUpdate,");
public void postUpdate1() {
buffer.append("postUpdate1");
}
@PostUpdate
public void postUpdate2() {
buffer.append("postUpdate2");
}
@PreRemove
public void preRemove1() {
buffer.append("preRemove1");
}
@PreRemove
public void preRemove() {
buffer.append("preRemove,");
public void preRemove2() {
buffer.append("preRemove2");
}
@PostRemove
public void postRemove() {
buffer.append("postRemove");
public void postRemove1() {
buffer.append("postRemove1");
}
@PostRemove
public void postRemove2() {
buffer.append("postRemove2");
}
@PostLoad
public void postLoad() {
buffer.append("postLoad");
public void postLoad1() {
buffer.append("postLoad1");
}
@PostLoad
public void postLoad2() {
buffer.append("postLoad2");
}
public Long getId() {