@Override public ObjectNode encode(PacketRequest packetRequest, CodecContext context) { checkNotNull(packetRequest, NULL_OBJECT_MSG); final JsonCodec<TrafficSelector> trafficSelectorCodec = context.codec(TrafficSelector.class); final ObjectNode result = context.mapper().createObjectNode() .put(NODE_ID, packetRequest.nodeId().toString()) .put(PRIORITY, packetRequest.priority().name()) .put(APP_ID, packetRequest.appId().toString()); if (packetRequest.deviceId().isPresent()) { result.put(DEVICE_ID, packetRequest.deviceId().get().toString()); } result.set(TRAFFIC_SELECTOR, trafficSelectorCodec.encode(packetRequest.selector(), context)); return result; }