package com.chap.memo.memoNodes.bus.json; import java.io.IOException; import com.chap.memo.memoNodes.model.ArcOp; import com.chap.memo.memoNodes.model.OpsType; import com.eaio.uuid.UUID; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; public class ImportArcOpDeserializer extends StdDeserializer<ArcOp> { public ImportArcOpDeserializer() { super(ArcOp.class); } @Override public ArcOp deserialize(JsonParser jp, DeserializationContext context) throws IOException, JsonProcessingException { OpsType type = null; UUID parent=null; UUID child=null; long timestamp=0; boolean skip=false; JsonToken token = jp.nextToken(); if (token != JsonToken.START_OBJECT) { skip=true; } while (skip || (token = jp.nextToken()) != JsonToken.END_OBJECT) { skip=false; String fieldName = jp.getCurrentName(); jp.nextToken(); if (fieldName.equals("type")){ type=OpsType.valueOf(jp.getText()); } if (fieldName.equals("parentString")){ parent=new UUID(jp.getText()); } if (fieldName.equals("childString")){ child=new UUID(jp.getText()); } if (fieldName.equals("timestamp_long")){ timestamp=jp.getLongValue(); } } try { return new ArcOp(type,parent,child,timestamp); } catch (Exception e){ throw new IOException("Something went wrong deserializing nodeValues:"+e.getLocalizedMessage()); } } }