# HG changeset patch # User one # Date 1373698787 -32400 # Node ID 9e782b4eb06efeb5ff94453e17b63bd6ac6ce6bd # Parent 459b50f1a6eedee61d30a18fe59d707047285b32 add HashSetConvertDataSegment diff -r 459b50f1a6ee -r 9e782b4eb06e src/alice/jungle/codesegment/LogUpdateCodeSegment.java --- a/src/alice/jungle/codesegment/LogUpdateCodeSegment.java Fri Jul 12 20:39:02 2013 +0900 +++ b/src/alice/jungle/codesegment/LogUpdateCodeSegment.java Sat Jul 13 15:59:47 2013 +0900 @@ -30,11 +30,12 @@ } public void run() { + System.out.println("--LogUpdateCodeSegment--"); int index = arg1.index; String h = host.asString(); DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class); if(updaterIsMe(h, container)) { - new LogUpdateCodeSegment(index+1); + new LogUpdateCodeSegment(index); return; } DefaultTreeOperationLog log = null; @@ -43,7 +44,13 @@ } catch (IOException e) { e.printStackTrace(); } - JungleTree tree = JungleManager.getJungle().getTreeByName("boards"); + String treeName = container.getTreeName(); + if (JungleManager.getJungle().getTreeByName(treeName) == null) { + if(null == JungleManager.getJungle().createNewTree(treeName)){ + throw new IllegalStateException(); + } + } + JungleTree tree = JungleManager.getJungle().getTreeByName(treeName); JungleTreeEditor editor = tree.getTreeEditor(); Either either = JungleManager.edit(editor, log); if(either.isA()) { @@ -55,7 +62,7 @@ throw new IllegalStateException(); } ods.put("log", container); - new LogUpdateCodeSegment(index+1); + new LogUpdateCodeSegment(index); } private boolean updaterIsMe(String host, DefaultTreeOperationLogContainer container) { diff -r 459b50f1a6ee -r 9e782b4eb06e src/jungle/test/bbs/NetworkJungleBulletinBoard.java --- a/src/jungle/test/bbs/NetworkJungleBulletinBoard.java Fri Jul 12 20:39:02 2013 +0900 +++ b/src/jungle/test/bbs/NetworkJungleBulletinBoard.java Sat Jul 13 15:59:47 2013 +0900 @@ -27,15 +27,13 @@ public class NetworkJungleBulletinBoard implements BulletinBoard { - private JungleManager jm; private final Jungle jungle; public NetworkJungleBulletinBoard(String _serverName) { - Jungle _j = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), _serverName); - JungleManager.setJungle(_j); - jungle = JungleManager.getJungle(); + jungle = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), _serverName); jungle.createNewTree("boards"); + JungleManager.setJungle(jungle); } public Iterable getBoards() @@ -137,7 +135,6 @@ throw new IllegalStateException(); } editor = either.b(); - NodeEditor e = new NodeEditor(){ public > Either edit(T _e){ _e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b(); @@ -146,28 +143,26 @@ return DefaultEither.newB(_e); } }; - path = path.add(size); either = editor.edit(path,e); if(either.isA()){ throw new IllegalStateException(); } editor = either.b(); - either = editor.success(); - /* Put DataSegment */ try { putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor); } catch (IOException e1) { e1.printStackTrace(); } }while(either.isA()); + /* Put DataSegment */ } public void editMessage(String _board,String _uuid,final String _author,final String _message,final String _editKey) { JungleTreeEditor editor = null; - Either either = null; + Either either = null; do{ DefaultNodePath path = new DefaultNodePath(); path = path.add(Integer.parseInt(_uuid)); @@ -189,7 +184,6 @@ } editor = either.b(); either = editor.success(); - /* Put DataSegment */ try { putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor); } catch (IOException e1) { @@ -238,7 +232,7 @@ cs.ods.put("log", container); /* If this node isn't Root node, push log to parent node's DS */ if(!_updaterName.equals("node0")) { - cs.ods.put("parent", "childLog"); + cs.ods.put("parent", "childLog", container); } } diff -r 459b50f1a6ee -r 9e782b4eb06e src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java --- a/src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java Fri Jul 12 20:39:02 2013 +0900 +++ b/src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java Sat Jul 13 15:59:47 2013 +0900 @@ -16,12 +16,16 @@ public class ChildLogCheckCodeSegment extends CodeSegment { Receiver childLog = ids.create(CommandType.TAKE); + Receiver host = ids.create(CommandType.PEEK); public ChildLogCheckCodeSegment() { - childLog.setKey("childLog"); + host.setKey("host"); + childLog.setKey("local","childLog"); } public void run() { + System.out.println("--ChildLogCheckCodeSegment--"); + String hostName = host.asString(); DefaultTreeOperationLogContainer container = childLog.asClass(DefaultTreeOperationLogContainer.class); DefaultTreeOperationLog log = null; try { @@ -29,7 +33,13 @@ } catch (IOException e) { e.printStackTrace(); } - JungleTree tree = JungleManager.getJungle().getTreeByName("boards"); + String treeName = container.getTreeName(); + if (JungleManager.getJungle().getTreeByName(treeName) == null) { + if(null == JungleManager.getJungle().createNewTree(treeName)){ + throw new IllegalStateException(); + } + } + JungleTree tree = JungleManager.getJungle().getTreeByName(treeName); JungleTreeEditor editor = tree.getTreeEditor(); Either either = JungleManager.edit(editor, log); if(either.isA()) { @@ -42,6 +52,10 @@ } ods.put("log", container); new ChildLogCheckCodeSegment(); + if(!hostName.equals("node0")) { + + ods.put("parent", "childLog", container); + } } diff -r 459b50f1a6ee -r 9e782b4eb06e src/jungle/test/codesegment/persistence/AliceJournal.java --- a/src/jungle/test/codesegment/persistence/AliceJournal.java Fri Jul 12 20:39:02 2013 +0900 +++ b/src/jungle/test/codesegment/persistence/AliceJournal.java Sat Jul 13 15:59:47 2013 +0900 @@ -33,7 +33,6 @@ @Override public Result write(ChangeList _operations) { -/* for(TreeOperation op : _operations){ NodePath p = op.getNodePath(); NodeOperation nodeOp = op.getNodeOperation(); @@ -61,7 +60,6 @@ } System.out.println(String.format("[%s:%s:%s]",c,p,args)); } -*/ return Result.SUCCESS; } } diff -r 459b50f1a6ee -r 9e782b4eb06e src/test/alice/jungle/codesegment/HashSetConvertTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/alice/jungle/codesegment/HashSetConvertTest.java Sat Jul 13 15:59:47 2013 +0900 @@ -0,0 +1,41 @@ +package test.alice.jungle.codesegment; + +import java.util.HashSet; + +import org.msgpack.annotation.Message; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; + +public class HashSetConvertTest extends CodeSegment { + + Receiver hash = ids.create(CommandType.TAKE); + + public HashSetConvertTest() { + hash.setKey("hash"); + } + + public static void main(String[] args) { + HashSetDataSegment h = new HashSetDataSegment(); + h.hash.add("test1"); + h.hash.add("test2"); + + HashSetConvertTest cs = new HashSetConvertTest(); + cs.ods.put("hash", h); + } + + public void run() { + HashSetDataSegment h = hash.asClass(HashSetDataSegment.class); + for(String s : h.hash ) { + System.out.println("s : "+s); + } + System.exit(0); + } + + @Message + private static class HashSetDataSegment { + public HashSet hash = new HashSet(); + public HashSetDataSegment() {} + } +}