package io.ebean.event; import io.ebean.BaseTestCase; import io.ebean.BeanState; import io.ebean.Ebean; import io.ebean.EbeanServer; import io.ebean.EbeanServerFactory; import io.ebean.config.ServerConfig; import org.tests.model.basic.EBasicVer; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; public class BeanPostLoadTest extends BaseTestCase { PostLoad postLoad = new PostLoad(false); @Test public void testPostLoad() { EbeanServer ebeanServer = getEbeanServer(); EBasicVer bean = new EBasicVer("testPostLoad"); bean.setDescription("someDescription"); bean.setOther("other"); ebeanServer.save(bean); EBasicVer found = ebeanServer.find(EBasicVer.class) .select("name, other") .setId(bean.getId()) .findOne(); assertThat(postLoad.methodsCalled).hasSize(1); assertThat(postLoad.methodsCalled).containsExactly("postLoad"); assertThat(postLoad.beanState.getLoadedProps()).containsExactly("id", "name", "other"); assertThat(postLoad.bean).isSameAs(found); ebeanServer.delete(bean); } private EbeanServer getEbeanServer() { System.setProperty("ebean.ignoreExtraDdl", "true"); ServerConfig config = new ServerConfig(); config.setName("h2ebasicver"); config.loadFromProperties(); config.setH2ProductionMode(true); config.setDdlGenerate(true); config.setDdlRun(true); config.setRegister(false); config.setDefaultServer(false); config.getClasses().add(EBasicVer.class); config.add(postLoad); return EbeanServerFactory.create(config); } static class PostLoad implements BeanPostLoad { boolean dummy; List<String> methodsCalled = new ArrayList<>(); Object bean; BeanState beanState; /** * No default constructor so only registered manually. */ PostLoad(boolean dummy) { this.dummy = dummy; } @Override public boolean isRegisterFor(Class<?> cls) { return true; } @Override public void postLoad(Object bean) { this.methodsCalled.add("postLoad"); this.bean = bean; this.beanState = Ebean.getBeanState(bean); } } }