ObjectContentManager ocm = getObjectContentManager();
B expB = new B();
expB.setB1("b1value");
expB.setB2("b2value");
E expE = new E();
expE.setPath("/someD");
expE.setD1("d1value");
expE.setB1(expB);
ocm.insert( expE);
ocm.save();
E actE = (E) ocm.getObject( "/someD");
assertEquals(expE.getD1(), actE.getD1());
expE.setD1("updatedvalueD1");
expB.setB1("updatedvalue1");
ocm.update( expE);
ocm.save();
actE = (E) ocm.getObject( "/someD");
assertEquals(expE.getD1(), actE.getD1());
expE.setB1(null);
ocm.update( expE);
ocm.save();
actE = (E) ocm.getObject( "/someD");
assertEquals(expE.getD1(), actE.getD1());
List messages = FakeBeanConverter.getLog();
assertEquals(6, messages.size());
assertEquals("insert at path /someD", messages.get(0));