@Override public byte[] getSerializedEvent() { if (serializedEvent == null) { // can we not avoid serializing it if we already have bytes? try { serializedEvent = getObjectMapper().writeValueAsBytes(root); } catch (IOException e) { // would rather this was thrown, but signature won't allow it: return null; } } return serializedEvent; }
private JsonNode parseAsTree(final byte[] smilePayload) throws IOException { return getObjectMapper().readTree(new ByteArrayInputStream(smilePayload)); }
public void writeToJsonGenerator(final JsonGenerator gen) throws IOException { // writes '{eventName:<name>,payload:{<data>}}' --it's kind of silly but ultimately inconsequential to nest them like this. gen.writeStartObject(); gen.writeStringField("eventName", eventName); gen.writeFieldName("payload"); /* Note: output format used depends completely on generator we are being passed * and NOT on which mapper we use -- mappers are format independent and rely * on underlying JsonParser/JsonGenerator for low-level handling. */ getObjectMapper().writeTree(gen, root); gen.writeEndObject(); }
public SmileEnvelopeEvent(final String eventName, final Granularity granularity, final DateTime eventDateTime, final Map<String, Object> map) throws IOException { this.eventName = eventName; this.eventDateTime = eventDateTime; this.granularity = granularity; ObjectNode root = getObjectMapper().createObjectNode(); root.put(SMILE_EVENT_DATETIME_TOKEN_NAME, eventDateTime.getMillis()); root.put(SMILE_EVENT_GRANULARITY_TOKEN_NAME, granularity.toString()); for (Map.Entry<String, Object> entry : map.entrySet()) { addToTree(root, entry.getKey(), entry.getValue()); } this.root = root; }