private static void setProtoKuraMetricValue( final KuraPayloadProto.KuraPayload.KuraMetric.Builder metric, final Object o) throws Exception { if (o instanceof String) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.STRING); metric.setStringValue((String) o); } else if (o instanceof Double) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.DOUBLE); metric.setDoubleValue((Double) o); } else if (o instanceof Integer) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.INT32); metric.setIntValue((Integer) o); } else if (o instanceof Float) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.FLOAT); metric.setFloatValue((Float) o); } else if (o instanceof Long) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.INT64); metric.setLongValue((Long) o); } else if (o instanceof Boolean) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.BOOL); metric.setBoolValue((Boolean) o); } else if (o instanceof byte[]) { metric.setType(KuraPayloadProto.KuraPayload.KuraMetric.ValueType.BYTES); metric.setBytesValue(ByteString.copyFrom((byte[]) o)); } else if (o == null) { throw new Exception("null value"); } else { throw new Exception(o.getClass().getName()); } }