package net.ion.bleujin.bean; import java.lang.reflect.Proxy; import java.util.Date; import net.ion.craken.node.ReadNode; import net.ion.craken.node.TransactionJob; import net.ion.craken.node.WriteSession; import net.ion.craken.node.convert.bean.ProxyBean; import net.ion.craken.node.convert.bean.TypeStrategy; import net.ion.craken.node.convert.sample.Dept; import net.ion.craken.node.convert.sample.Employee; import net.ion.craken.node.convert.sample.FlatPerson; import net.ion.craken.node.crud.TestBaseCrud; import net.ion.framework.util.Debug; public class TestProxy extends TestBaseCrud { public void testCall() throws Exception { session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.pathBy("/bleujin").property("name", "bleujin").property("age", 20) ; return null; } }).get() ; ReadNode node = session.pathBy("/bleujin"); ProxyHandler handler = new ProxyHandler(FlatPerson.class, node) ; ProxyIf bean = (ProxyIf) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] { ProxyIf.class }, handler); Debug.line(bean, bean.getClass().getDeclaredFields()) ; // Debug.line(JsonParser.fromObject(bean).getAsJsonObject()) ; } public void testCGLib() throws Exception { session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.pathBy("/depts/dev").property("deptno", 20).property("name", "dev") .child("manager").property("name", "bleujin").property("age", 20).property("created", new Date()) ; return null; } }).get() ; ReadNode node = session.pathBy("/depts/dev"); Dept dept = ProxyBean.create(TypeStrategy.DEFAULT, node, Dept.class) ; assertEquals(20, dept.deptNo()) ; assertEquals("dev", dept.name().toString()) ; Employee manager = dept.manager(); assertEquals("bleujin", manager.name()) ; assertEquals(20, manager.age()) ; assertEquals(true, manager.created() != null) ; } }