package com.spbsu.crawl.data; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; import java.util.stream.Stream; /** * Experts League * Created by solar on 23/03/16. */ @JsonIgnoreProperties(ignoreUnknown = true) public interface Message { default Protocol type() { return Stream.of(Protocol.values()) .filter(t -> getClass().equals(t.clazz())) .findFirst() .orElse(null); } ObjectMapper mapper = new ObjectMapper(); default String json() { final ObjectNode node = mapper.valueToTree(this); node.set("msg", new TextNode(type().name().toLowerCase())); try { return mapper.writeValueAsString(node); } catch (JsonProcessingException e) { throw new RuntimeException(e); } } }