}
@Test
public void lazyComposite() throws Exception {
PersistenceSession session = persistenceManager.createSession();
try {
LazyCompEntity inst = new LazyCompEntity();
inst.setId(1);
inst.setComposite(new LazyComposite());
inst.getComposite().setStrList(Arrays.asList("one", "two", "three"));
inst.getComposite().setLazyStrList(Arrays.asList("one", "two", "three"));
inst.getComposite().setStrSet(new HashSet<String>(inst.getComposite().getStrList()));
inst.getComposite().setLazyStrSet(new HashSet<String>(inst.getComposite().getStrList()));
inst.getComposite().getStrMap().put("one", "1");
inst.getComposite().getStrMap().put("two", "2");
inst.getComposite().getStrMap().put("three", "3");
inst.getComposite().getLazyStrMap().put("one", "1");
inst.getComposite().getLazyStrMap().put("two", "2");
inst.getComposite().getLazyStrMap().put("three", "3");
session.insert(inst);
LazyCompEntity loaded = session.loadOneWithOptions(LazyCompEntity.class, PersistOption.single(PersistOption.loadEager()), 1);
Assert.assertNotNull(loaded);
Assert.assertEquals(loaded.getId(), 1);
Assert.assertNotNull(loaded.getComposite().getStrList());
Assert.assertNotNull(loaded.getComposite().getStrSet());
Assert.assertNotNull(loaded.getComposite().getStrMap());
Assert.assertNotNull(loaded.getComposite().getLazyStrList());
Assert.assertNotNull(loaded.getComposite().getLazyStrSet());
Assert.assertNotNull(loaded.getComposite().getLazyStrMap());
Assert.assertTrue(loaded.getComposite().getStrList() instanceof ArrayList);
Assert.assertTrue(loaded.getComposite().getStrSet() instanceof HashSet);
Assert.assertTrue(loaded.getComposite().getStrMap() instanceof HashMap);
Assert.assertFalse(loaded.getComposite().getLazyStrList() instanceof LazyList);
Assert.assertFalse(loaded.getComposite().getLazyStrSet() instanceof LazySet);
Assert.assertFalse(loaded.getComposite().getLazyStrMap() instanceof LazyMap);
Assert.assertEquals(loaded.getComposite().getStrList(), Arrays.asList("one", "two", "three"));
Assert.assertEquals(loaded.getComposite().getLazyStrList(), Arrays.asList("one", "two", "three"));
Assert.assertEquals(loaded.getComposite().getStrSet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getLazyStrSet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getStrMap().keySet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getLazyStrMap().keySet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
loaded = session.loadOne(LazyCompEntity.class, 1);
Assert.assertNotNull(loaded);
Assert.assertEquals(loaded.getId(), 1);
Assert.assertNotNull(loaded.getComposite().getStrList());
Assert.assertNotNull(loaded.getComposite().getStrSet());
Assert.assertNotNull(loaded.getComposite().getStrMap());
Assert.assertNotNull(loaded.getComposite().getLazyStrList());
Assert.assertNotNull(loaded.getComposite().getLazyStrSet());
Assert.assertNotNull(loaded.getComposite().getLazyStrMap());
Assert.assertTrue(loaded.getComposite().getStrList() instanceof ArrayList);
Assert.assertTrue(loaded.getComposite().getStrSet() instanceof HashSet);
Assert.assertTrue(loaded.getComposite().getStrMap() instanceof HashMap);
Assert.assertTrue(loaded.getComposite().getLazyStrList() instanceof LazyList);
Assert.assertTrue(loaded.getComposite().getLazyStrSet() instanceof LazySet);
Assert.assertTrue(loaded.getComposite().getLazyStrMap() instanceof LazyMap);
Assert.assertFalse(((AbstractLazy) loaded.getComposite().getLazyStrList()).isLoaded());
Assert.assertFalse(((AbstractLazy) loaded.getComposite().getLazyStrSet()).isLoaded());
Assert.assertFalse(((AbstractLazy) loaded.getComposite().getLazyStrMap()).isLoaded());
Assert.assertEquals(loaded.getComposite().getStrList(), Arrays.asList("one", "two", "three"));
Assert.assertEquals(loaded.getComposite().getLazyStrList(), Arrays.asList("one", "two", "three"));
Assert.assertEquals(loaded.getComposite().getStrSet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getLazyStrSet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getStrMap().keySet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getLazyStrMap().keySet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertFalse(loaded.getComposite().getLazyStrList() instanceof LazyList);
Assert.assertFalse(loaded.getComposite().getLazyStrSet() instanceof LazySet);
Assert.assertFalse(loaded.getComposite().getLazyStrMap() instanceof LazyMap);
loaded = session.loadOne(LazyCompEntity.class, 1);
Assert.assertNotNull(loaded);
Assert.assertEquals(loaded.getId(), 1);
Assert.assertNotNull(loaded.getComposite().getStrList());
Assert.assertNotNull(loaded.getComposite().getStrSet());
Assert.assertNotNull(loaded.getComposite().getStrMap());
Assert.assertNotNull(loaded.getComposite().getLazyStrList());
Assert.assertNotNull(loaded.getComposite().getLazyStrSet());
Assert.assertNotNull(loaded.getComposite().getLazyStrMap());
Assert.assertTrue(loaded.getComposite().getStrList() instanceof ArrayList);
Assert.assertTrue(loaded.getComposite().getStrSet() instanceof HashSet);
Assert.assertTrue(loaded.getComposite().getStrMap() instanceof HashMap);
Assert.assertTrue(loaded.getComposite().getLazyStrList() instanceof LazyList);
Assert.assertTrue(loaded.getComposite().getLazyStrSet() instanceof LazySet);
Assert.assertTrue(loaded.getComposite().getLazyStrMap() instanceof LazyMap);
Assert.assertFalse(((AbstractLazy) loaded.getComposite().getLazyStrList()).isLoaded());
Assert.assertFalse(((AbstractLazy) loaded.getComposite().getLazyStrSet()).isLoaded());
Assert.assertFalse(((AbstractLazy) loaded.getComposite().getLazyStrMap()).isLoaded());
session.loadLazy(loaded);
Assert.assertFalse(loaded.getComposite().getLazyStrList() instanceof LazyList);
Assert.assertFalse(loaded.getComposite().getLazyStrSet() instanceof LazySet);
Assert.assertFalse(loaded.getComposite().getLazyStrMap() instanceof LazyMap);
Assert.assertEquals(loaded.getComposite().getStrList(), Arrays.asList("one", "two", "three"));
Assert.assertEquals(loaded.getComposite().getLazyStrList(), Arrays.asList("one", "two", "three"));
Assert.assertEquals(loaded.getComposite().getStrSet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getLazyStrSet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getStrMap().keySet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
Assert.assertEquals(loaded.getComposite().getLazyStrMap().keySet(), new HashSet<String>(Arrays.asList("one", "two", "three")));
} finally {session.close();}
}