Skip to content

Commit 17b3ee3

Browse files
committed
Refactor DateProcessor to encapsulate the templates
1 parent f68acae commit 17b3ee3

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateProcessor.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ public IngestDocument execute(IngestDocument document) {
116116
final ZoneId documentTimezone;
117117
final Locale documentLocale;
118118
try {
119-
documentTimezone = newDateTimeZone(timezone == null ? null : document.renderTemplate(timezone));
120-
documentLocale = newLocale(locale == null ? null : document.renderTemplate(locale));
119+
documentTimezone = getTimezone(document);
120+
documentLocale = getLocale(document);
121121
} catch (Exception e) {
122122
throw new IllegalArgumentException("unable to parse date [" + value + "]", e);
123123
}
@@ -147,12 +147,14 @@ public String getType() {
147147
return TYPE;
148148
}
149149

150-
TemplateScript.Factory getTimezone() {
151-
return timezone;
150+
// visible for testing
151+
ZoneId getTimezone(IngestDocument document) {
152+
return newDateTimeZone(timezone == null ? null : document.renderTemplate(timezone));
152153
}
153154

154-
TemplateScript.Factory getLocale() {
155-
return locale;
155+
// visible for testing
156+
Locale getLocale(IngestDocument document) {
157+
return newLocale(locale == null ? null : document.renderTemplate(locale));
156158
}
157159

158160
String getField() {

modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/DateProcessorFactoryTests.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
package org.elasticsearch.ingest.common;
1111

1212
import org.elasticsearch.ElasticsearchParseException;
13+
import org.elasticsearch.ingest.IngestDocument;
14+
import org.elasticsearch.ingest.RandomDocumentPicks;
1315
import org.elasticsearch.ingest.TestTemplateService;
1416
import org.elasticsearch.test.ESTestCase;
1517
import org.junit.Before;
1618

1719
import java.time.ZoneId;
20+
import java.time.ZoneOffset;
1821
import java.util.HashMap;
1922
import java.util.List;
2023
import java.util.Locale;
@@ -43,8 +46,8 @@ public void testBuildDefaults() throws Exception {
4346
assertThat(processor.getField(), equalTo(sourceField));
4447
assertThat(processor.getTargetField(), equalTo(DateProcessor.DEFAULT_TARGET_FIELD));
4548
assertThat(processor.getFormats(), equalTo(List.of("dd/MM/yyyyy")));
46-
assertNull(processor.getLocale());
47-
assertNull(processor.getTimezone());
49+
assertThat(processor.getTimezone(null), equalTo(ZoneOffset.UTC));
50+
assertThat(processor.getLocale(null), equalTo(Locale.ENGLISH));
4851
}
4952

5053
public void testMatchFieldIsMandatory() throws Exception {
@@ -85,7 +88,8 @@ public void testParseLocale() throws Exception {
8588
config.put("locale", locale.toLanguageTag());
8689

8790
DateProcessor processor = factory.create(null, null, null, config, null);
88-
assertThat(processor.getLocale().newInstance(Map.of()).execute(), equalTo(locale.toLanguageTag()));
91+
IngestDocument document = RandomDocumentPicks.randomIngestDocument(random(), Map.of());
92+
assertThat(processor.getLocale(document), equalTo(locale));
8993
}
9094

9195
public void testParseTimezone() throws Exception {
@@ -97,7 +101,8 @@ public void testParseTimezone() throws Exception {
97101
ZoneId timezone = randomZone();
98102
config.put("timezone", timezone.getId());
99103
DateProcessor processor = factory.create(null, null, null, config, null);
100-
assertThat(processor.getTimezone().newInstance(Map.of()).execute(), equalTo(timezone.getId()));
104+
IngestDocument document = RandomDocumentPicks.randomIngestDocument(random(), Map.of());
105+
assertThat(processor.getTimezone(document), equalTo(timezone));
101106
}
102107

103108
public void testParseMatchFormats() throws Exception {

0 commit comments

Comments
 (0)