private byte[] encodeTlvValue(Value<?> value) { LOG.trace("Encoding value {} in TLV", value); switch (value.type) { case STRING: return TlvEncoder.encodeString((String) value.value); case INTEGER: case LONG: return TlvEncoder.encodeInteger((Number) value.value); case FLOAT: case DOUBLE: return TlvEncoder.encodeFloat((Number) value.value); case BOOLEAN: return TlvEncoder.encodeBoolean((Boolean) value.value); case TIME: return TlvEncoder.encodeDate((Date) value.value); case OPAQUE: return (byte[]) value.value; default: throw new IllegalArgumentException("Invalid value type: " + value.type); } }