package org.mongodb.morphia.callbacks; import com.mongodb.DBObject; import org.bson.types.ObjectId; import org.junit.Assert; import org.junit.Test; import org.mongodb.morphia.AbstractEntityInterceptor; import org.mongodb.morphia.TestBase; import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.PrePersist; import org.mongodb.morphia.mapping.Mapper; /** * @author Uwe Schaefer, (us@thomas-daily.de) */ public class TestEntityInterceptorMoment extends TestBase { @Test public void testGlobalEntityInterceptorWorksAfterEntityCallback() { getMorphia().map(E.class); getMorphia().getMapper().addInterceptor(new Interceptor()); getDs().save(new E()); } static class E { @Id private final ObjectId id = new ObjectId(); private boolean called; @PrePersist void entityCallback() { called = true; } } public static class Interceptor extends AbstractEntityInterceptor { @Override public void postLoad(final Object ent, final DBObject dbObj, final Mapper mapper) { } @Override public void postPersist(final Object ent, final DBObject dbObj, final Mapper mapper) { } @Override public void preLoad(final Object ent, final DBObject dbObj, final Mapper mapper) { } @Override public void prePersist(final Object ent, final DBObject dbObj, final Mapper mapper) { Assert.assertTrue(((E) ent).called); } @Override public void preSave(final Object ent, final DBObject dbObj, final Mapper mapper) { } } }