package net.ion.craken.node.ref; import java.util.List; import net.ion.craken.node.IteratorList; import net.ion.craken.node.ReadNode; import net.ion.craken.node.TransactionJob; import net.ion.craken.node.WriteSession; import net.ion.craken.node.crud.TestBaseCrud; import net.ion.craken.node.crud.util.TransactionJobs; import net.ion.framework.util.Debug; public class TestRefNode extends TestBaseCrud { public void testUsing() throws Exception { session.tranSync(TransactionJobs.dummy("/emp", 10)) ; session.tranSync(TransactionJobs.dummy("/dept", 5)) ; session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.pathBy("/emp/1").refTos("dept", "/dept/1").refTos("dept", "/dept/2") ; return null; } }).get() ; ReadNode refNode = session.pathBy("/emp/1").ref("dept") ; assertEquals(1, refNode.property("dummy").value()) ; } public void testRefsOrder() throws Exception { session.tranSync(TransactionJobs.dummy("/emp", 10)) ; session.tranSync(TransactionJobs.dummy("/dept", 5)) ; session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.pathBy("/emp/1").refTos("dept", "/dept/1").refTos("dept", "/dept/2") ; return null; } }).get() ; List<ReadNode> refs = session.pathBy("/emp/1").refs("dept").toList() ; assertEquals(2, refs.size()) ; assertEquals(1, refs.get(0).property("dummy").value()) ; assertEquals(2, refs.get(1).property("dummy").value()) ; } public void testRef() throws Exception { session.tranSync(TransactionJobs.dummy("/emp", 10)) ; session.tranSync(TransactionJobs.dummy("/dept", 5)) ; session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.pathBy("/emp/1").refTos("dept", "/dept/1").refTos("dept", "/dept/2").refTo("dept", "/dept/3").refTos("dept", "/dept/4") ; return null; } }).get() ; IteratorList<ReadNode> refs = session.pathBy("/emp/1").refs("dept") ; Debug.line(refs.count()); while(refs.hasNext()){ refs.next().debugPrint(); } } }