package com.bagri.client.hazelcast.serialize.model;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bagri.client.hazelcast.serialize.DataSerializationFactoryImpl;
import com.bagri.core.model.NodeKind;
import com.bagri.core.model.Occurrence;
import com.bagri.core.model.Path;
import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.StreamSerializer;
public class PathSerializer implements StreamSerializer<Path> {
private static final transient Logger logger = LoggerFactory.getLogger(PathSerializer.class);
@Override
public int getTypeId() {
return DataSerializationFactoryImpl.cli_XDMPath;
}
@Override
public void destroy() {
}
@Override
public Path read(ObjectDataInput in) throws IOException {
//logger.trace("read;");
return new Path(
in.readUTF(),
in.readUTF(),
NodeKind.values()[in.readInt()],
in.readInt(),
in.readInt(),
in.readInt(),
in.readInt(),
Occurrence.getOccurrence(
in.readInt(),
in.readInt()));
}
@Override
public void write(ObjectDataOutput out, Path xPath) throws IOException {
//logger.trace("write;");
out.writeUTF(xPath.getPath());
out.writeUTF(xPath.getRoot());
out.writeInt(xPath.getNodeKind().ordinal());
out.writeInt(xPath.getPathId());
out.writeInt(xPath.getParentId());
out.writeInt(xPath.getPostId());
out.writeInt(xPath.getDataType());
out.writeInt(xPath.getOccurrence().getLowBound());
out.writeInt(xPath.getOccurrence().getHighBound());
}
}