fix forbiddenapis

This commit is contained in:
Tal Levy 2015-10-26 22:50:58 -07:00
parent 80849bbd6b
commit e204671aa9
9 changed files with 42 additions and 18 deletions

View File

@ -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<DateParser> parserList;
public DateProcessor(String timezone, String locale, String matchField, List<String> 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<String>();
}
public void setTimezone(String timezone) {
@ -118,6 +118,7 @@ public final class DateProcessor implements Processor {
this.targetField = targetField;
}
@SuppressWarnings("unchecked")
public void fromMap(Map<String, Object> config) {
this.timezone = (String) config.get("timezone");
this.locale = (String) config.get("locale");

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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"));
}
}

View File

@ -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));

View File

@ -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));
}
}

View File

@ -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));
}
}