Merge pull request #16132 from talevy/holdmytag

[Ingest] add an AbstractProcessor to help hold the re-used processorTag variable
This commit is contained in:
Tal Levy 2016-01-21 07:30:29 -08:00
commit c55f9bbd9b
18 changed files with 100 additions and 139 deletions

View File

@ -0,0 +1,38 @@
/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.elasticsearch.ingest.core;
/**
* An Abstract Processor that holds a processorTag field to be used
* by other processors.
*/
public abstract class AbstractProcessor implements Processor {
protected final String tag;
protected AbstractProcessor(String tag) {
this.tag = tag;
}
@Override
public String getTag() {
return tag;
}
}

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.IngestDocument;
@ -30,13 +31,11 @@ import java.util.Map;
* Base class for processors that manipulate strings and require a single "fields" array config value, which
* holds a list of field names in string format.
*/
public abstract class AbstractStringProcessor implements Processor {
private final String processorTag;
public abstract class AbstractStringProcessor extends AbstractProcessor {
private final String field;
protected AbstractStringProcessor(String processorTag, String field) {
this.processorTag = processorTag;
protected AbstractStringProcessor(String tag, String field) {
super(tag);
this.field = field;
}
@ -53,11 +52,6 @@ public abstract class AbstractStringProcessor implements Processor {
document.setFieldValue(field, process(val));
}
@Override
public String getTag() {
return processorTag;
}
protected abstract String process(String value);
public static abstract class Factory<T extends AbstractStringProcessor> extends AbstractProcessorFactory<T> {

View File

@ -19,12 +19,12 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.TemplateService;
import org.elasticsearch.ingest.core.ValueSource;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.Processor;
import java.util.Map;
@ -33,16 +33,15 @@ import java.util.Map;
* provided values will be added. If the field is a scalar it will be converted to a single item list and the provided
* values will be added to the newly created list.
*/
public class AppendProcessor implements Processor {
public class AppendProcessor extends AbstractProcessor {
public static final String TYPE = "append";
private final String processorTag;
private final TemplateService.Template field;
private final ValueSource value;
AppendProcessor(String processorTag, TemplateService.Template field, ValueSource value) {
this.processorTag = processorTag;
AppendProcessor(String tag, TemplateService.Template field, ValueSource value) {
super(tag);
this.field = field;
this.value = value;
}
@ -65,11 +64,6 @@ public class AppendProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static final class Factory extends AbstractProcessorFactory<AppendProcessor> {
private final TemplateService templateService;

View File

@ -19,10 +19,10 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.Processor;
import java.util.ArrayList;
import java.util.List;
@ -33,7 +33,7 @@ import java.util.Map;
* Processor that converts fields content to a different type. Supported types are: integer, float, boolean and string.
* Throws exception if the field is not there or the conversion fails.
*/
public class ConvertProcessor implements Processor {
public class ConvertProcessor extends AbstractProcessor {
enum Type {
INTEGER {
@ -91,12 +91,11 @@ public class ConvertProcessor implements Processor {
public static final String TYPE = "convert";
private final String processorTag;
private final String field;
private final Type convertType;
ConvertProcessor(String processorTag, String field, Type convertType) {
this.processorTag = processorTag;
ConvertProcessor(String tag, String field, Type convertType) {
super(tag);
this.field = field;
this.convertType = convertType;
}
@ -135,11 +134,6 @@ public class ConvertProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<ConvertProcessor> {
@Override
public ConvertProcessor doCreate(String processorTag, Map<String, Object> config) throws Exception {

View File

@ -20,10 +20,10 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ExceptionsHelper;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.Processor;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.ISODateTimeFormat;
@ -36,12 +36,11 @@ import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
public final class DateProcessor implements Processor {
public final class DateProcessor extends AbstractProcessor {
public static final String TYPE = "date";
static final String DEFAULT_TARGET_FIELD = "@timestamp";
private final String processorTag;
private final DateTimeZone timezone;
private final Locale locale;
private final String matchField;
@ -49,8 +48,8 @@ public final class DateProcessor implements Processor {
private final List<String> matchFormats;
private final List<Function<String, DateTime>> dateParsers;
DateProcessor(String processorTag, DateTimeZone timezone, Locale locale, String matchField, List<String> matchFormats, String targetField) {
this.processorTag = processorTag;
DateProcessor(String tag, DateTimeZone timezone, Locale locale, String matchField, List<String> matchFormats, String targetField) {
super(tag);
this.timezone = timezone;
this.locale = locale;
this.matchField = matchField;
@ -97,11 +96,6 @@ public final class DateProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
DateTimeZone getTimezone() {
return timezone;
}

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.IngestDocument;
@ -33,16 +34,15 @@ import java.util.Map;
* Processor that replaces dots in document field names with a
* specified separator.
*/
public class DeDotProcessor implements Processor {
public class DeDotProcessor extends AbstractProcessor {
public static final String TYPE = "dedot";
static final String DEFAULT_SEPARATOR = "_";
private final String processorTag;
private final String separator;
DeDotProcessor(String processorTag, String separator) {
this.processorTag = processorTag;
DeDotProcessor(String tag, String separator) {
super(tag);
this.separator = separator;
}
@ -60,11 +60,6 @@ public class DeDotProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
/**
* Recursively iterates through Maps and Lists in search of map entries with
* keys containing dots. The dots in these fields are replaced with {@link #separator}.

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.IngestDocument;
@ -31,15 +32,14 @@ import java.util.Map;
* Processor that raises a runtime exception with a provided
* error message.
*/
public class FailProcessor implements Processor {
public class FailProcessor extends AbstractProcessor {
public static final String TYPE = "fail";
private final String processorTag;
private final TemplateService.Template message;
FailProcessor(String processorTag, TemplateService.Template message) {
this.processorTag = processorTag;
FailProcessor(String tag, TemplateService.Template message) {
super(tag);
this.message = message;
}
@ -57,11 +57,6 @@ public class FailProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<FailProcessor> {
private final TemplateService templateService;

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.ConfigurationUtils;
@ -32,17 +33,16 @@ import java.util.regex.Pattern;
* Processor that allows to search for patterns in field content and replace them with corresponding string replacement.
* Support fields of string type only, throws exception if a field is of a different type.
*/
public class GsubProcessor implements Processor {
public class GsubProcessor extends AbstractProcessor {
public static final String TYPE = "gsub";
private final String processorTag;
private final String field;
private final Pattern pattern;
private final String replacement;
GsubProcessor(String processorTag, String field, Pattern pattern, String replacement) {
this.processorTag = processorTag;
GsubProcessor(String tag, String field, Pattern pattern, String replacement) {
super(tag);
this.field = field;
this.pattern = pattern;
this.replacement = replacement;
@ -77,11 +77,6 @@ public class GsubProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<GsubProcessor> {
@Override
public GsubProcessor doCreate(String processorTag, Map<String, Object> config) throws Exception {

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.ConfigurationUtils;
@ -32,16 +33,15 @@ import java.util.stream.Collectors;
* Processor that joins the different items of an array into a single string value using a separator between each item.
* Throws exception is the specified field is not an array.
*/
public class JoinProcessor implements Processor {
public class JoinProcessor extends AbstractProcessor {
public static final String TYPE = "join";
private final String processorTag;
private final String field;
private final String separator;
JoinProcessor(String processorTag, String field, String separator) {
this.processorTag = processorTag;
JoinProcessor(String tag, String field, String separator) {
super(tag);
this.field = field;
this.separator = separator;
}
@ -71,11 +71,6 @@ public class JoinProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<JoinProcessor> {
@Override
public JoinProcessor doCreate(String processorTag, Map<String, Object> config) throws Exception {

View File

@ -46,8 +46,8 @@ public class LowercaseProcessor extends AbstractStringProcessor {
public static class Factory extends AbstractStringProcessor.Factory<LowercaseProcessor> {
@Override
protected LowercaseProcessor newProcessor(String processorTag, String field) {
return new LowercaseProcessor(processorTag, field);
protected LowercaseProcessor newProcessor(String tag, String field) {
return new LowercaseProcessor(tag, field);
}
}
}

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.TemplateService;
@ -30,15 +31,14 @@ import java.util.Map;
/**
* Processor that removes existing fields. Nothing happens if the field is not present.
*/
public class RemoveProcessor implements Processor {
public class RemoveProcessor extends AbstractProcessor {
public static final String TYPE = "remove";
private final String processorTag;
private final TemplateService.Template field;
RemoveProcessor(String processorTag, TemplateService.Template field) {
this.processorTag = processorTag;
RemoveProcessor(String tag, TemplateService.Template field) {
super(tag);
this.field = field;
}
@ -56,10 +56,6 @@ public class RemoveProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<RemoveProcessor> {
private final TemplateService templateService;

View File

@ -19,6 +19,7 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.ConfigurationUtils;
@ -29,16 +30,15 @@ import java.util.Map;
/**
* Processor that allows to rename existing fields. Will throw exception if the field is not present.
*/
public class RenameProcessor implements Processor {
public class RenameProcessor extends AbstractProcessor {
public static final String TYPE = "rename";
private final String processorTag;
private final String oldFieldName;
private final String newFieldName;
RenameProcessor(String processorTag, String oldFieldName, String newFieldName) {
this.processorTag = processorTag;
RenameProcessor(String tag, String oldFieldName, String newFieldName) {
super(tag);
this.oldFieldName = oldFieldName;
this.newFieldName = newFieldName;
}
@ -76,11 +76,6 @@ public class RenameProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<RenameProcessor> {
@Override
public RenameProcessor doCreate(String processorTag, Map<String, Object> config) throws Exception {

View File

@ -19,12 +19,12 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.TemplateService;
import org.elasticsearch.ingest.core.ValueSource;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.Processor;
import java.util.Map;
@ -32,16 +32,15 @@ import java.util.Map;
* Processor that adds new fields with their corresponding values. If the field is already present, its value
* will be replaced with the provided one.
*/
public class SetProcessor implements Processor {
public class SetProcessor extends AbstractProcessor {
public static final String TYPE = "set";
private final String processorTag;
private final TemplateService.Template field;
private final ValueSource value;
SetProcessor(String processorTag, TemplateService.Template field, ValueSource value) {
this.processorTag = processorTag;
SetProcessor(String tag, TemplateService.Template field, ValueSource value) {
super(tag);
this.field = field;
this.value = value;
}
@ -64,11 +63,6 @@ public class SetProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static final class Factory extends AbstractProcessorFactory<SetProcessor> {
private final TemplateService templateService;

View File

@ -19,10 +19,10 @@
package org.elasticsearch.ingest.processor;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.Processor;
import java.util.Arrays;
import java.util.Map;
@ -32,16 +32,15 @@ import java.util.Map;
* New field value will be an array containing all of the different extracted items.
* Throws exception if the field is null or a type other than string.
*/
public class SplitProcessor implements Processor {
public class SplitProcessor extends AbstractProcessor {
public static final String TYPE = "split";
private final String processorTag;
private final String field;
private final String separator;
SplitProcessor(String processorTag, String field, String separator) {
this.processorTag = processorTag;
SplitProcessor(String tag, String field, String separator) {
super(tag);
this.field = field;
this.separator = separator;
}
@ -68,11 +67,6 @@ public class SplitProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
public static class Factory extends AbstractProcessorFactory<SplitProcessor> {
@Override
public SplitProcessor doCreate(String processorTag, Map<String, Object> config) throws Exception {

View File

@ -43,8 +43,8 @@ public class TrimProcessor extends AbstractStringProcessor {
public static class Factory extends AbstractStringProcessor.Factory<TrimProcessor> {
@Override
protected TrimProcessor newProcessor(String processorTag, String field) {
return new TrimProcessor(processorTag, field);
protected TrimProcessor newProcessor(String tag, String field) {
return new TrimProcessor(tag, field);
}
}
}

View File

@ -45,8 +45,8 @@ public class UppercaseProcessor extends AbstractStringProcessor {
public static class Factory extends AbstractStringProcessor.Factory<UppercaseProcessor> {
@Override
protected UppercaseProcessor newProcessor(String processorTag, String field) {
return new UppercaseProcessor(processorTag, field);
protected UppercaseProcessor newProcessor(String tag, String field) {
return new UppercaseProcessor(tag, field);
}
}
}

View File

@ -19,24 +19,23 @@
package org.elasticsearch.ingest.grok;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.ConfigurationUtils;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.Processor;
import java.util.HashMap;
import java.util.Map;
public final class GrokProcessor implements Processor {
public final class GrokProcessor extends AbstractProcessor {
public static final String TYPE = "grok";
private final String processorTag;
private final String matchField;
private final Grok grok;
public GrokProcessor(String processorTag, Grok grok, String matchField) {
this.processorTag = processorTag;
public GrokProcessor(String tag, Grok grok, String matchField) {
super(tag);
this.matchField = matchField;
this.grok = grok;
}
@ -57,11 +56,6 @@ public final class GrokProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
String getMatchField() {
return matchField;
}

View File

@ -32,9 +32,9 @@ import org.apache.lucene.util.IOUtils;
import org.elasticsearch.SpecialPermission;
import org.elasticsearch.common.network.InetAddresses;
import org.elasticsearch.common.network.NetworkAddress;
import org.elasticsearch.ingest.core.AbstractProcessor;
import org.elasticsearch.ingest.core.AbstractProcessorFactory;
import org.elasticsearch.ingest.core.IngestDocument;
import org.elasticsearch.ingest.core.Processor;
import java.io.Closeable;
import java.io.IOException;
@ -53,18 +53,17 @@ import java.util.Set;
import static org.elasticsearch.ingest.core.ConfigurationUtils.readOptionalList;
import static org.elasticsearch.ingest.core.ConfigurationUtils.readStringProperty;
public final class GeoIpProcessor implements Processor {
public final class GeoIpProcessor extends AbstractProcessor {
public static final String TYPE = "geoip";
private final String processorTag;
private final String sourceField;
private final String targetField;
private final DatabaseReader dbReader;
private final Set<Field> fields;
GeoIpProcessor(String processorTag, String sourceField, DatabaseReader dbReader, String targetField, Set<Field> fields) throws IOException {
this.processorTag = processorTag;
GeoIpProcessor(String tag, String sourceField, DatabaseReader dbReader, String targetField, Set<Field> fields) throws IOException {
super(tag);
this.sourceField = sourceField;
this.targetField = targetField;
this.dbReader = dbReader;
@ -103,11 +102,6 @@ public final class GeoIpProcessor implements Processor {
return TYPE;
}
@Override
public String getTag() {
return processorTag;
}
String getSourceField() {
return sourceField;
}