diff --git a/src/main/java/org/influxdb/dto/Point.java b/src/main/java/org/influxdb/dto/Point.java index b1385ac86..c59eb96cb 100644 --- a/src/main/java/org/influxdb/dto/Point.java +++ b/src/main/java/org/influxdb/dto/Point.java @@ -273,7 +273,9 @@ private void addFieldByAttribute(final Object pojo, final Field field, final Col } if (column.tag()) { - this.tags.put(fieldName, (String) fieldValue); + if (fieldValue != null && !((String) fieldValue).isEmpty()) { + this.tags.put(fieldName, (String) fieldValue); + } } else { this.fields.put(fieldName, fieldValue); } diff --git a/src/test/java/org/influxdb/dto/PointTest.java b/src/test/java/org/influxdb/dto/PointTest.java index d1a96217a..42a61705c 100644 --- a/src/test/java/org/influxdb/dto/PointTest.java +++ b/src/test/java/org/influxdb/dto/PointTest.java @@ -548,6 +548,33 @@ public void testAddFieldsFromPOJOWithTimeColumnNull() throws NoSuchFieldExceptio pojo.time = null; } + @Test + public void testAddFieldsFromPOJOWithNullTag() throws NoSuchFieldException, IllegalAccessException { + Pojo pojo = new Pojo(); + pojo.booleanObject = true; + pojo.booleanPrimitive = false; + pojo.doubleObject = 2.0; + pojo.doublePrimitive = 3.1; + pojo.integerObject = 32; + pojo.integerPrimitive = 64; + pojo.longObject = 1L; + pojo.longPrimitive = 2L; + pojo.time = Instant.now(); + + Point p = Point.measurementByPOJO(pojo.getClass()).addFieldsFromPOJO(pojo).build(); + + Assertions.assertEquals(pojo.booleanObject, p.getFields().get("booleanObject")); + Assertions.assertEquals(pojo.booleanPrimitive, p.getFields().get("booleanPrimitive")); + Assertions.assertEquals(pojo.doubleObject, p.getFields().get("doubleObject")); + Assertions.assertEquals(pojo.doublePrimitive, p.getFields().get("doublePrimitive")); + Assertions.assertEquals(pojo.integerObject, p.getFields().get("integerObject")); + Assertions.assertEquals(pojo.integerPrimitive, p.getFields().get("integerPrimitive")); + Assertions.assertEquals(pojo.longObject, p.getFields().get("longObject")); + Assertions.assertEquals(pojo.longPrimitive, p.getFields().get("longPrimitive")); + Assertions.assertEquals(pojo.time, p.getFields().get("time")); + Assertions.assertEquals(null, p.getTags().get("uuid")); + } + @Test public void testAddFieldsFromPOJOWithData() throws NoSuchFieldException, IllegalAccessException { Pojo pojo = new Pojo();