mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Merge pull request #828 from FOCONIS/feature/postconstruct
Feature/postconstruct
This commit is contained in:
@@ -54,6 +54,7 @@ public class TestHistoryInsert extends BaseTestCase {
|
||||
|
||||
user.setName("Jim v3");
|
||||
user.setEmail("three@email.com");
|
||||
Thread.sleep(10); // otherwise the timestamp of "whenModified" may not change
|
||||
Ebean.save(user);
|
||||
|
||||
history = fetchHistory(user);
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.avaje.tests.lifecycle;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebeaninternal.api.SpiEbeanServer;
|
||||
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
|
||||
import com.avaje.tests.model.basic.EBasicWithLifecycle;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -101,4 +103,60 @@ public class TestLifecycleAnnotatedBean extends BaseTestCase {
|
||||
assertThat(bean.getBuffer()).contains("postRemove1");
|
||||
assertThat(bean.getBuffer()).contains("postRemove2");
|
||||
}
|
||||
@Test
|
||||
public void shouldExecutePostConstructMethodsWhenFindingBean() {
|
||||
|
||||
EBasicWithLifecycle bean = new EBasicWithLifecycle();
|
||||
bean.setName("PostConstruct");
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicWithLifecycle loaded = Ebean.find(EBasicWithLifecycle.class, bean.getId());
|
||||
assertThat(loaded.getBuffer()).contains("postConstruct1");
|
||||
assertThat(loaded.getBuffer()).contains("postConstruct2");
|
||||
// assert also that postLoad was executed
|
||||
assertThat(loaded.getBuffer()).contains("postLoad1");
|
||||
assertThat(loaded.getBuffer()).contains("postLoad2");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldExecutePostConstructMethodsWhenInstantiated() {
|
||||
EBasicWithLifecycle bean = Ebean.getDefaultServer().createEntityBean(EBasicWithLifecycle.class);
|
||||
bean.setName("PostConstruct");
|
||||
|
||||
|
||||
assertThat(bean.getBuffer()).contains("postConstruct1");
|
||||
assertThat(bean.getBuffer()).contains("postConstruct2");
|
||||
// assert also that postLoad is not executed now
|
||||
assertThat(bean.getBuffer()).doesNotContain("postLoad1");
|
||||
assertThat(bean.getBuffer()).doesNotContain("postLoad2");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testLazyLoadBehaviour() {
|
||||
|
||||
EBasicWithLifecycle bean = new EBasicWithLifecycle();
|
||||
bean.setName("LazyLoad");
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
BeanDescriptor<EBasicWithLifecycle> desc = ((SpiEbeanServer)server()).getBeanDescriptor(EBasicWithLifecycle.class);
|
||||
EBasicWithLifecycle loaded = desc.createReference(false, false, bean.getId(), null);
|
||||
|
||||
// Here you see the big difference.
|
||||
// @PostLoad is executed always, also on lazy loaded beans
|
||||
assertThat(loaded.getBuffer()).contains("postConstruct1");
|
||||
assertThat(loaded.getBuffer()).contains("postConstruct2");
|
||||
|
||||
// assert also that postLoad is not yet executed
|
||||
assertThat(loaded.getBuffer()).doesNotContain("postLoad1");
|
||||
assertThat(loaded.getBuffer()).doesNotContain("postLoad2");
|
||||
|
||||
// now read name -> will load the bean
|
||||
assertThat(loaded.getName()).isEqualTo("LazyLoad");
|
||||
assertThat(loaded.getBuffer()).contains("postLoad1");
|
||||
assertThat(loaded.getBuffer()).contains("postLoad2");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.avaje.tests.model.basic;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.PostLoad;
|
||||
@@ -96,6 +97,16 @@ public class EBasicWithLifecycle {
|
||||
buffer.append("postLoad2");
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void postConstruct1() {
|
||||
buffer.append("postConstruct1");
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void postConstruct2() {
|
||||
buffer.append("postConstruct2");
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user