package org.neo4j.smack.serialization.strategy;
import org.neo4j.graphdb.Relationship;
import org.neo4j.smack.api.UrlReverseLookerUpper;
import org.neo4j.smack.serialization.SerializationException;
import org.neo4j.smack.serialization.SerializationStrategy;
import org.neo4j.smack.serialization.Serializer;
public class RelationshipSerializationStrategy implements SerializationStrategy<Relationship> {
private static final String END_FIELD = "end";
private static final String START_FIELD = "start";
private static final String TYPE_FIELD = "type";
private static final String SELF_FIELD = "self";
private static final String DATA_FIELD = "data";
private static final String EXTENSIONS_FIELD = "extensions";
private static final UrlReverseLookerUpper url = new UrlReverseLookerUpper();
private static final PropertyContainerSerializationStrategy propertySerialization = new PropertyContainerSerializationStrategy();
@Override
public void serialize(Relationship rel, Serializer out) throws SerializationException {
out.startMap();
out.putMapPropertyName(SELF_FIELD);
out.putString(url.reverse(rel));
out.putMapPropertyName(TYPE_FIELD);
out.putString(rel.getType().name());
out.putMapPropertyName(START_FIELD);
out.putString(url.reverse(rel.getStartNode()));
out.putMapPropertyName(END_FIELD);
out.putString(url.reverse(rel.getEndNode()));
out.putMapPropertyName(DATA_FIELD);
propertySerialization.serialize(rel, out);
out.putMapPropertyName(EXTENSIONS_FIELD);
out.startMap();
out.endMap();
out.endMap();
}
}