Skip to content

Commit ecd7318

Browse files
3402 (#3403)
Co-authored-by: hgklohr <hgklohr@gmail.com>
1 parent d6e4188 commit ecd7318

2 files changed

Lines changed: 27 additions & 3 deletions

File tree

warehouse/query-core/src/main/java/datawave/query/transformer/annotation/TermExtractor.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.List;
66
import java.util.Objects;
77
import java.util.Set;
8+
import java.util.stream.Collectors;
89

910
import org.apache.commons.jexl3.parser.ASTEQNode;
1011
import org.apache.commons.jexl3.parser.ASTERNode;
@@ -19,10 +20,14 @@
1920
import datawave.query.parser.JavaRegexAnalyzer;
2021

2122
public class TermExtractor implements Serializable {
22-
private Set<String> fields;
23+
final private Set<String> fields;
2324

2425
public TermExtractor(Set<String> fields) {
25-
this.fields = fields;
26+
if (fields == null) {
27+
this.fields = null;
28+
} else {
29+
this.fields = fields.stream().map(String::toUpperCase).collect(Collectors.toSet());
30+
}
2631
}
2732

2833
@Override
@@ -61,7 +66,7 @@ private boolean acceptNode(JexlNode node) {
6166
return false;
6267
}
6368

64-
return fields == null || fields.contains(identifier);
69+
return fields == null || fields.contains(identifier.toUpperCase());
6570
}
6671

6772
/**

warehouse/query-core/src/test/java/datawave/query/transformer/annotation/TermExtractorTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,25 @@ public void extractTargetFieldsTest(String query, String terms) throws ParseExce
102102
test(query, terms);
103103
}
104104

105+
// test term extraction with case-sensitive limited fields
106+
// @formatter:off
107+
@CsvSource({
108+
"a=='abc',abc",
109+
"b=='abc',abc",
110+
"c=='abc',abc",
111+
"A=='abc',abc",
112+
"B=='abc',abc",
113+
"C=='abc',abc",
114+
})
115+
// @formatter:on
116+
@ParameterizedTest(name = "extract {0}")
117+
public void extractTargetCaseSensitiveFieldsTest(String query, String terms) throws ParseException, JavaRegexAnalyzer.JavaRegexParseException {
118+
termExtractor = new TermExtractor(Set.of("A", "B", "C"));
119+
test(query, terms);
120+
termExtractor = new TermExtractor(Set.of("a", "b", "c"));
121+
test(query, terms);
122+
}
123+
105124
// test normalization is applied
106125
// @formatter:on
107126
@CsvSource({"UUID=='AbC',abc", "UUID=='ABC' || UUID=='dEf',abc;def", "UUID='A',", "UUID=='A' || UUID=='B' && UUID=='C',a;b;c;", "UUID=~'.*ABC.*',.*abc.*"})

0 commit comments

Comments
 (0)