package com.bagri.client.hazelcast.serialize.query;
import java.io.IOException;
import java.util.List;
import com.bagri.client.hazelcast.serialize.DataSerializationFactoryImpl;
import com.bagri.core.query.AxisType;
import com.bagri.core.query.PathBuilder;
import com.bagri.core.query.PathSegment;
import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.StreamSerializer;
public class PathBuilderSerializer implements StreamSerializer<PathBuilder> {
@Override
public void destroy() {
}
@Override
public int getTypeId() {
return DataSerializationFactoryImpl.cli_PathBuilder;
}
@Override
public PathBuilder read(ObjectDataInput in) throws IOException {
PathBuilder pb = new PathBuilder();
int cnt = in.readInt();
for (int i=0; i < cnt; i++) {
AxisType axis = AxisType.valueOf(in.readUTF());
String namespace = in.readUTF();
String segment = in.readUTF();
pb.addPathSegment(axis, namespace, segment);
}
return pb;
}
@Override
public void write(ObjectDataOutput out, PathBuilder path) throws IOException {
List<PathSegment> segments = path.getSegments();
out.writeInt(segments.size());
for (PathSegment segment: segments) {
out.writeUTF(segment.getAxis().name());
out.writeUTF(segment.getNamespace());
out.writeUTF(segment.getSegment());
}
}
}