# HG changeset patch # User one # Date 1381483486 -32400 # Node ID f1aef52c061181dc3684b9cc17ac1c4cf3178216 # Parent 892bac9ac1183ca88f08a7f89f174c037a5989e2 Added NetworkAppendChildAtTest diff -r 892bac9ac118 -r f1aef52c0611 src/alice/jungle/datasegment/store/transformer/NetworkAppendChildAt.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/jungle/datasegment/store/transformer/NetworkAppendChildAt.java Fri Oct 11 18:24:46 2013 +0900 @@ -0,0 +1,35 @@ +package alice.jungle.datasegment.store.transformer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; + +import org.msgpack.annotation.Message; + + +/* + * This code same AppendChildAt. + */ + +@Message +public class NetworkAppendChildAt implements NodeEditor { + + private final int pos; + + public NetworkAppendChildAt(int _pos) { + pos = _pos; + } + + @Override + public > Either edit(T _e) { + Either either = _e.getChildren().addNewChildAt(pos); + if(either.isA()){ + // error + return either; + } + return DefaultEither.newB(either.b()); + } + +} diff -r 892bac9ac118 -r f1aef52c0611 src/alice/jungle/operations/NetworkAppendChildAtOperation.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/jungle/operations/NetworkAppendChildAtOperation.java Fri Oct 11 18:24:46 2013 +0900 @@ -0,0 +1,55 @@ +package alice.jungle.operations; + +import java.nio.ByteBuffer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; + +import org.msgpack.annotation.Message; + +import alice.jungle.datasegment.store.transformer.NetworkAppendChildAt; + + +@Message +public class NetworkAppendChildAtOperation implements NodeOperation { + + // private final int pos; + /* MessagePack can not handle final.*/ + private int pos; + + /* Position -1 represent root position. */ + public NetworkAppendChildAtOperation() { pos = -2; } + + public NetworkAppendChildAtOperation(int _pos) { + pos = _pos; + } + + @Override + public Command getCommand() { + return Command.APPEND_CHILD; + } + + @Override + public > Either invoke(T _target) { + NetworkAppendChildAt appendChildAt = new NetworkAppendChildAt(pos); + return appendChildAt.edit(_target); + } + + @Override + public int getPosition() { + return pos; + } + + @Override + public String getKey() { + return null; + } + + @Override + public ByteBuffer getValue() { + return null; + } +} diff -r 892bac9ac118 -r f1aef52c0611 src/test/alice/jungle/core/operations/NetworkAppendChildOperationTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/alice/jungle/core/operations/NetworkAppendChildOperationTest.java Fri Oct 11 18:24:46 2013 +0900 @@ -0,0 +1,25 @@ +package test.alice.jungle.core.operations; + +import java.io.IOException; + +import org.msgpack.MessagePack; +import org.msgpack.type.Value; + +import alice.jungle.operations.NetworkAppendChildAtOperation; +import junit.framework.TestCase; + +public class NetworkAppendChildOperationTest extends TestCase { + + public void testMsgpackConvert() throws IOException { + NetworkAppendChildAtOperation op = new NetworkAppendChildAtOperation(1); + MessagePack msgpack = new MessagePack(); + Value v = msgpack.unconvert(op); + NetworkAppendChildAtOperation mOp = msgpack.convert(v, NetworkAppendChildAtOperation.class); + assertEquals(op.getCommand(), mOp.getCommand()); + assertEquals(op.getPosition(), 1); + assertEquals(op.getPosition(), mOp.getPosition()); + + } + + +}