Skip to content

Commit f13d10d

Browse files
authored
Merge pull request influxdata#364 from fmachado/origin/fixed-nanosecond-parser
Fixed DateTimeFormatterBuilder to properly parse nanoseconds
2 parents ee64454 + d4c74ee commit f13d10d

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/main/java/org/influxdb/impl/InfluxDBResultMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public class InfluxDBResultMapper {
5252
ConcurrentMap<String, ConcurrentMap<String, Field>> CLASS_FIELD_CACHE = new ConcurrentHashMap<>();
5353

5454
private static final int FRACTION_MIN_WIDTH = 0;
55-
private static final int FRACTION_MAX_WIDTH = 6;
55+
private static final int FRACTION_MAX_WIDTH = 9;
5656
private static final boolean ADD_DECIMAL_POINT = true;
5757

5858
/**
@@ -61,7 +61,7 @@ public class InfluxDBResultMapper {
6161
*/
6262
private static final DateTimeFormatter ISO8601_FORMATTER = new DateTimeFormatterBuilder()
6363
.appendPattern("yyyy-MM-dd'T'HH:mm:ss")
64-
.appendFraction(ChronoField.MICRO_OF_SECOND, FRACTION_MIN_WIDTH, FRACTION_MAX_WIDTH, ADD_DECIMAL_POINT)
64+
.appendFraction(ChronoField.NANO_OF_SECOND, FRACTION_MIN_WIDTH, FRACTION_MAX_WIDTH, ADD_DECIMAL_POINT)
6565
.appendPattern("X")
6666
.toFormatter();
6767

src/test/java/org/influxdb/impl/InfluxDBResultMapperTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,27 @@ public void testToPOJO_QueryResultCreatedByGroupByClause() {
300300
assertEquals("field 'deviceOsVersion' does not match", "9.3.5", secondGroupByEntry.deviceOsVersion);
301301
}
302302

303+
@Test
304+
public void testToPOJO_ticket363() {
305+
// Given...
306+
mapper.cacheMeasurementClass(MyCustomMeasurement.class);
307+
308+
List<String> columnList = Arrays.asList("time");
309+
List<Object> firstSeriesResult = Arrays.asList("2000-01-01T00:00:00.000000001Z");
310+
311+
QueryResult.Series series = new QueryResult.Series();
312+
series.setColumns(columnList);
313+
series.setValues(Arrays.asList(firstSeriesResult));
314+
315+
// When...
316+
List<MyCustomMeasurement> result = new LinkedList<>();
317+
mapper.parseSeriesAs(series, MyCustomMeasurement.class, result);
318+
319+
// Then...
320+
assertEquals("incorrect number of elemets", 1, result.size());
321+
assertEquals("incorrect value for the nanoseconds field", 1, result.get(0).time.getNano());
322+
}
323+
303324
@Measurement(name = "CustomMeasurement")
304325
static class MyCustomMeasurement {
305326

0 commit comments

Comments
 (0)