in data-prepper-plugins/key-value-processor/src/main/java/com/amazon/dataprepper/plugins/processor/keyvalue/KeyValueProcessor.java [37:90]
public KeyValueProcessor(final PluginMetrics pluginMetrics, final KeyValueProcessorConfig keyValueProcessorConfig) {
super(pluginMetrics);
this.keyValueProcessorConfig = keyValueProcessorConfig;
if(keyValueProcessorConfig.getFieldDelimiterRegex() != null
&& !keyValueProcessorConfig.getFieldDelimiterRegex().isEmpty()) {
if(keyValueProcessorConfig.getFieldSplitCharacters() != null
&& !keyValueProcessorConfig.getFieldSplitCharacters().isEmpty()) {
throw new IllegalArgumentException("field_delimiter_regex and field_split_characters cannot both be defined.");
} else if(!validateRegex(keyValueProcessorConfig.getFieldDelimiterRegex())) {
throw new PatternSyntaxException("field_delimiter_regex is not a valid regex string", keyValueProcessorConfig.getFieldDelimiterRegex(), -1);
}
fieldDelimiterPattern = Pattern.compile(keyValueProcessorConfig.getFieldDelimiterRegex());
} else {
String regex;
if(keyValueProcessorConfig.getFieldSplitCharacters().isEmpty()) {
regex = KeyValueProcessorConfig.DEFAULT_FIELD_SPLIT_CHARACTERS;
} else {
regex = buildRegexFromCharacters(keyValueProcessorConfig.getFieldSplitCharacters());
}
fieldDelimiterPattern = Pattern.compile(regex);
}
if(keyValueProcessorConfig.getKeyValueDelimiterRegex() != null
&& !keyValueProcessorConfig.getKeyValueDelimiterRegex().isEmpty()) {
if(keyValueProcessorConfig.getValueSplitCharacters() != null
&& !keyValueProcessorConfig.getValueSplitCharacters().isEmpty()) {
throw new IllegalArgumentException("key_value_delimiter_regex and value_split_characters cannot both be defined.");
} else if (!validateRegex(keyValueProcessorConfig.getKeyValueDelimiterRegex())) {
throw new PatternSyntaxException("key_value_delimiter_regex is not a valid regex string", keyValueProcessorConfig.getKeyValueDelimiterRegex(), -1);
}
keyValueDelimiterPattern = Pattern.compile(keyValueProcessorConfig.getKeyValueDelimiterRegex());
} else {
String regex;
if(keyValueProcessorConfig.getValueSplitCharacters().isEmpty()) {
regex = KeyValueProcessorConfig.DEFAULT_VALUE_SPLIT_CHARACTERS;
} else {
regex = buildRegexFromCharacters(keyValueProcessorConfig.getValueSplitCharacters());
}
keyValueDelimiterPattern = Pattern.compile(regex);
}
if(!validateRegex(keyValueProcessorConfig.getDeleteKeyRegex())) {
throw new PatternSyntaxException("delete_key_regex is not a valid regex string", keyValueProcessorConfig.getDeleteKeyRegex(), -1);
}
if(!validateRegex(keyValueProcessorConfig.getDeleteValueRegex())) {
throw new PatternSyntaxException("delete_value_regex is not a valid regex string", keyValueProcessorConfig.getDeleteValueRegex(), -1);
}
}