package net.ion.bleujin;
import java.util.Map;
import junit.framework.TestCase;
import net.ion.craken.aradon.bean.CrakenEntry;
import net.ion.craken.listener.CDDHandler;
import net.ion.craken.listener.CDDModifiedEvent;
import net.ion.craken.listener.CDDRemovedEvent;
import net.ion.craken.node.ReadSession;
import net.ion.craken.node.TransactionJob;
import net.ion.craken.node.WriteSession;
import net.ion.craken.node.crud.store.WorkspaceConfigBuilder;
import net.ion.framework.util.Debug;
/**
* Created with IntelliJ IDEA. User: Ryun Date: 2014. 2. 25. Time: 오후 4:05 To change this template use File | Settings | File Templates.
*/
public class TestRemovedProperty extends TestCase {
private CrakenEntry rentry;
private ReadSession rsession;
@Override
public void setUp() throws Exception {
super.setUp();
rentry = CrakenEntry.test();
rentry.getCraken().createWorkspace("test", WorkspaceConfigBuilder.memoryDir()) ;
rsession = rentry.login("test");
}
@Override
public void tearDown() throws Exception {
rentry.shutdown() ;
super.tearDown();
}
private static final String prefix = "/test" ;
public void testFirst() throws Exception {
rsession.workspace().cddm().add(new TestListener());
rsession.tranSync(new TransactionJob<Object>() {
@Override
public Object handle(WriteSession wsession) throws Exception {
wsession.pathBy("/connections/users/ryun").property("message", "hello");
wsession.pathBy(prefix + "/ryun").property("message", "hello");
return null;
}
});
Thread.sleep(500);
assertEquals("hello", rsession.pathBy(prefix + "/ryun").property("message").stringValue());
}
public void testRemoveNotExists() throws Exception {
rsession.tran(new TransactionJob<Void>() {
@Override
public Void handle(WriteSession wsession) throws Exception {
wsession.pathBy("/emps/bleujin").removeSelf() ;
wsession.pathBy("/emps/bleujin").removeSelf() ;
return null;
}
}) ;
rsession.root().debugPrint();
}
public class TestListener implements CDDHandler {
@Override
public String pathPattern() {
return prefix + "/{node}";
}
@Override
public TransactionJob<Void> modified(Map<String, String> resolveMap, CDDModifiedEvent event) {
return new TransactionJob<Void>() {
@Override
public Void handle(WriteSession wsession) throws Exception {
Debug.line(wsession.pathBy(prefix + "/ryun").property("message").stringValue());
return null;
}
};
}
@Override
public TransactionJob<Void> deleted(Map<String, String> stringStringMap, CDDRemovedEvent event) {
return null;
}
}
}