diff --git a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/DateProcessor.java b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/DateProcessor.java index 31828f4b84c..4d4beed1dda 100644 --- a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/DateProcessor.java +++ b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/DateProcessor.java @@ -20,7 +20,7 @@ package org.elasticsearch.ingest.processor.date; import org.elasticsearch.ingest.Data; -import org.elasticsearch.ingest.Processor; +import org.elasticsearch.ingest.processor.Processor; import org.joda.time.DateTimeZone; import java.util.ArrayList; @@ -42,7 +42,7 @@ public final class DateProcessor implements Processor { private final List parserList; public DateProcessor(String timezone, String locale, String matchField, List matchFormats, String targetField) { - this.timezone = DateTimeZone.forID(timezone); + this.timezone = (timezone == null) ? DateTimeZone.UTC : DateTimeZone.forID(timezone); this.locale = Locale.forLanguageTag(locale); this.matchField = matchField; this.matchFormats = matchFormats; @@ -68,11 +68,11 @@ public final class DateProcessor implements Processor { return new ISO8601DateParser(timezone); } } else if ("UNIX".equals(format)) { - return new UnixDateParser(); + return new UnixDateParser(timezone); } else if ("UNIX_MS".equals(format)) { - return new UnixMsDateParser(); + return new UnixMsDateParser(timezone); } else if ("TAI64N".equals(format)) { - return new TAI64NDateParser(); + return new TAI64NDateParser(timezone); } else { if (timezone != null && locale != null) { return new JodaPatternDateParser(format, timezone, locale); @@ -95,7 +95,7 @@ public final class DateProcessor implements Processor { private String targetField; public Builder() { - matchFormats = new ArrayList(); + matchFormats = new ArrayList(); } public void setTimezone(String timezone) { @@ -118,6 +118,7 @@ public final class DateProcessor implements Processor { this.targetField = targetField; } + @SuppressWarnings("unchecked") public void fromMap(Map config) { this.timezone = (String) config.get("timezone"); this.locale = (String) config.get("locale"); diff --git a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParser.java b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParser.java index 029cfe2cdbd..03afe781cdd 100644 --- a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParser.java +++ b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParser.java @@ -32,25 +32,25 @@ public class JodaPatternDateParser implements DateParser { public JodaPatternDateParser(String format) { formatter = DateTimeFormat.forPattern(format) - .withDefaultYear((new DateTime()).getYear()) + .withDefaultYear((new DateTime(DateTimeZone.UTC)).getYear()) .withOffsetParsed(); } public JodaPatternDateParser(String format, DateTimeZone timezone) { formatter = DateTimeFormat.forPattern(format) - .withDefaultYear((new DateTime()).getYear()) + .withDefaultYear((new DateTime(timezone)).getYear()) .withZone(timezone); } public JodaPatternDateParser(String format, Locale locale) { formatter = DateTimeFormat.forPattern(format) - .withDefaultYear((new DateTime()).getYear()) + .withDefaultYear((new DateTime(DateTimeZone.UTC)).getYear()) .withLocale(locale); } public JodaPatternDateParser(String format, DateTimeZone timezone, Locale locale) { formatter = DateTimeFormat.forPattern(format) - .withDefaultYear((new DateTime()).getYear()) + .withDefaultYear((new DateTime(DateTimeZone.UTC)).getYear()) .withZone(timezone).withLocale(locale); } diff --git a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/TAI64NDateParser.java b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/TAI64NDateParser.java index 3ee32508a3a..f51269b5b48 100644 --- a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/TAI64NDateParser.java +++ b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/TAI64NDateParser.java @@ -20,8 +20,14 @@ package org.elasticsearch.ingest.processor.date; import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; public class TAI64NDateParser implements DateParser { + private DateTimeZone timezone; + + public TAI64NDateParser(DateTimeZone timezone) { + this.timezone = timezone; + } @Override public long parseMillis(String date) { @@ -37,6 +43,6 @@ public class TAI64NDateParser implements DateParser { @Override public DateTime parseDateTime(String date) { - return new DateTime(parseMillis(date)); + return new DateTime(parseMillis(date), timezone); } } diff --git a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixDateParser.java b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixDateParser.java index 6439ac1564e..1fa9c836a2d 100644 --- a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixDateParser.java +++ b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixDateParser.java @@ -20,8 +20,14 @@ package org.elasticsearch.ingest.processor.date; import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; public class UnixDateParser implements DateParser { + private final DateTimeZone timezone; + + public UnixDateParser(DateTimeZone timezone) { + this.timezone = timezone; + } @Override public long parseMillis(String date) { @@ -30,6 +36,6 @@ public class UnixDateParser implements DateParser { @Override public DateTime parseDateTime(String date) { - return new DateTime(parseMillis(date)); + return new DateTime(parseMillis(date), timezone); } } diff --git a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixMsDateParser.java b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixMsDateParser.java index c56b558afd8..640fb52fe32 100644 --- a/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixMsDateParser.java +++ b/plugins/ingest/src/main/java/org/elasticsearch/ingest/processor/date/UnixMsDateParser.java @@ -20,8 +20,14 @@ package org.elasticsearch.ingest.processor.date; import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; public class UnixMsDateParser implements DateParser { + private final DateTimeZone timezone; + + public UnixMsDateParser(DateTimeZone timezone) { + this.timezone = timezone; + } @Override public long parseMillis(String date) { @@ -30,6 +36,6 @@ public class UnixMsDateParser implements DateParser { @Override public DateTime parseDateTime(String date) { - return new DateTime(parseMillis(date)); + return new DateTime(parseMillis(date), timezone); } } diff --git a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParserTests.java b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParserTests.java index 214459fa03a..268222feb35 100644 --- a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParserTests.java +++ b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/JodaPatternDateParserTests.java @@ -20,6 +20,7 @@ package org.elasticsearch.ingest.processor.date; import org.elasticsearch.test.ESTestCase; +import org.joda.time.DateTimeZone; import java.time.Instant; import java.time.ZoneId; @@ -31,11 +32,12 @@ import static org.hamcrest.core.IsEqual.equalTo; public class JodaPatternDateParserTests extends ESTestCase { public void testParse() { - JodaPatternDateParser parser = new JodaPatternDateParser("MMM dd HH:mm:ss Z", Locale.ENGLISH); + JodaPatternDateParser parser = new JodaPatternDateParser("MMM dd HH:mm:ss Z", + DateTimeZone.forOffsetHours(-8), Locale.ENGLISH); assertThat(Instant.ofEpochMilli(parser.parseMillis("Nov 24 01:29:01 -0800")) .atZone(ZoneId.of("GMT-8")) - .format(DateTimeFormatter.ofPattern("MM dd HH:mm:ss")), + .format(DateTimeFormatter.ofPattern("MM dd HH:mm:ss", Locale.ENGLISH)), equalTo("11 24 01:29:01")); } } diff --git a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/TAI64NDateParserTests.java b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/TAI64NDateParserTests.java index 0e4cab841df..d0007cfa5d7 100644 --- a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/TAI64NDateParserTests.java +++ b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/TAI64NDateParserTests.java @@ -20,13 +20,14 @@ package org.elasticsearch.ingest.processor.date; import org.elasticsearch.test.ESTestCase; +import org.joda.time.DateTimeZone; import static org.hamcrest.core.IsEqual.equalTo; public class TAI64NDateParserTests extends ESTestCase { public void testParse() { - TAI64NDateParser parser = new TAI64NDateParser(); + TAI64NDateParser parser = new TAI64NDateParser(DateTimeZone.forOffsetHours(2)); String input = "4000000050d506482dbdf024"; String expected = "2012-12-22T03:00:46.767+02:00"; assertThat(parser.parseDateTime("@" + input).toString(), equalTo(expected)); diff --git a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixDateParserTests.java b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixDateParserTests.java index 4a3025fae9f..68636d88811 100644 --- a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixDateParserTests.java +++ b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixDateParserTests.java @@ -20,13 +20,14 @@ package org.elasticsearch.ingest.processor.date; import org.elasticsearch.test.ESTestCase; +import org.joda.time.DateTimeZone; import static org.hamcrest.core.IsEqual.equalTo; public class UnixDateParserTests extends ESTestCase { public void testParse() { - UnixDateParser parser = new UnixDateParser(); + UnixDateParser parser = new UnixDateParser(DateTimeZone.UTC); assertThat(parser.parseMillis("1000.5"), equalTo(1000500L)); } } diff --git a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixMsDateParserTests.java b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixMsDateParserTests.java index 1ffaf251819..db2fa506e5e 100644 --- a/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixMsDateParserTests.java +++ b/plugins/ingest/src/test/java/org/elasticsearch/ingest/processor/date/UnixMsDateParserTests.java @@ -20,13 +20,14 @@ package org.elasticsearch.ingest.processor.date; import org.elasticsearch.test.ESTestCase; +import org.joda.time.DateTimeZone; import static org.hamcrest.core.IsEqual.equalTo; public class UnixMsDateParserTests extends ESTestCase { public void testParse() { - UnixMsDateParser parser = new UnixMsDateParser(); + UnixMsDateParser parser = new UnixMsDateParser(DateTimeZone.UTC); assertThat(parser.parseMillis("1000500"), equalTo(1000500L)); } }