diff --git a/src/main/java/com/redhat/pctsec/model/api/request/ComponentJsonDeserializer.java b/src/main/java/com/redhat/pctsec/model/api/request/ComponentJsonDeserializer.java new file mode 100644 index 0000000..d1b3699 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/api/request/ComponentJsonDeserializer.java @@ -0,0 +1,31 @@ +package com.redhat.pctsec.model.api.request; + +import com.fasterxml.jackson.core.JacksonException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; + +import java.io.IOException; +import java.net.URI; + +public class ComponentJsonDeserializer extends JsonDeserializer { + + @Override + public Component deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JacksonException { + + JsonNode node = jsonParser.readValueAsTree(); + JsonNode componentT = node.get("type"); + if(componentT.asText().equals("git")) + { + URI repo = URI.create(node.get("repo").asText()); + String ref = node.get("ref").asText(); + return new git(repo, ref); + } + else + { + return new build(componentT.asText(), node.get("build-id").asText()); + } + + } +}