Move dynamic template matching logic to the MatchType enum. #17281
This commit is contained in:
parent
b139f4e0bf
commit
940fc3f864
|
@ -41,12 +41,20 @@ public class DynamicTemplate implements ToXContent {
|
||||||
|
|
||||||
public static enum MatchType {
|
public static enum MatchType {
|
||||||
SIMPLE {
|
SIMPLE {
|
||||||
|
@Override
|
||||||
|
public boolean matches(String pattern, String value) {
|
||||||
|
return Regex.simpleMatch(pattern, value);
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "simple";
|
return "simple";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
REGEX {
|
REGEX {
|
||||||
|
@Override
|
||||||
|
public boolean matches(String pattern, String value) {
|
||||||
|
return value.matches(pattern);
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "regex";
|
return "regex";
|
||||||
|
@ -61,6 +69,9 @@ public class DynamicTemplate implements ToXContent {
|
||||||
}
|
}
|
||||||
throw new IllegalArgumentException("No matching pattern matched on [" + value + "]");
|
throw new IllegalArgumentException("No matching pattern matched on [" + value + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Whether {@code value} matches {@code regex}. */
|
||||||
|
public abstract boolean matches(String regex, String value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DynamicTemplate parse(String name, Map<String, Object> conf,
|
public static DynamicTemplate parse(String name, Map<String, Object> conf,
|
||||||
|
@ -137,23 +148,23 @@ public class DynamicTemplate implements ToXContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean match(ContentPath path, String name, String dynamicType) {
|
public boolean match(ContentPath path, String name, String dynamicType) {
|
||||||
if (pathMatch != null && !patternMatch(pathMatch, path.pathAsText(name))) {
|
if (pathMatch != null && !matchType.matches(pathMatch, path.pathAsText(name))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (match != null && !patternMatch(match, name)) {
|
if (match != null && !matchType.matches(match, name)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (pathUnmatch != null && patternMatch(pathUnmatch, path.pathAsText(name))) {
|
if (pathUnmatch != null && matchType.matches(pathUnmatch, path.pathAsText(name))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (unmatch != null && patternMatch(unmatch, name)) {
|
if (unmatch != null && matchType.matches(unmatch, name)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (matchMappingType != null) {
|
if (matchMappingType != null) {
|
||||||
if (dynamicType == null) {
|
if (dynamicType == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!patternMatch(matchMappingType, dynamicType)) {
|
if (!matchType.matches(matchMappingType, dynamicType)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,13 +197,6 @@ public class DynamicTemplate implements ToXContent {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean patternMatch(String pattern, String str) {
|
|
||||||
if (matchType == MatchType.SIMPLE) {
|
|
||||||
return Regex.simpleMatch(pattern, str);
|
|
||||||
}
|
|
||||||
return str.matches(pattern);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> mappingForName(String name, String dynamicType) {
|
public Map<String, Object> mappingForName(String name, String dynamicType) {
|
||||||
return processMap(mapping, name, dynamicType);
|
return processMap(mapping, name, dynamicType);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue