Skip to content

Commit c1820bf

Browse files
authored
Change GlobUtil, IncludeExcludePredicate to use case sensitive matching consistently (#8152)
1 parent bc73a5e commit c1820bf

File tree

4 files changed

+30
-7
lines changed

4 files changed

+30
-7
lines changed

sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/GlobUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ public boolean test(String s) {
9898
if (pattern != null) {
9999
return pattern.matcher(s).matches();
100100
}
101-
// Exact match, ignoring case
102-
return globPattern.equalsIgnoreCase(s);
101+
// Exact match
102+
return globPattern.equals(s);
103103
}
104104

105105
@Override

sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicate.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*
2222
* <p>Supports optional glob pattern matching. See {@link GlobUtil}.
2323
*
24-
* <p>String equality is evaluated using {@link String#equalsIgnoreCase(String)}.
24+
* <p>String equality is evaluated using {@link String#equals(Object)}.
2525
*
2626
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
2727
* at any time.
@@ -55,7 +55,7 @@ private IncludeExcludePredicate(
5555
}
5656

5757
/**
58-
* Create a (case-insensitive) exact matching include exclude predicate.
58+
* Create a (case-sensitive) exact matching include exclude predicate.
5959
*
6060
* @throws IllegalArgumentException if {@code included} AND {@code excluded} are null.
6161
*/
@@ -101,7 +101,7 @@ private static Predicate<String> includedPredicate(
101101
if (globMatchingEnabled) {
102102
result = result.or(createGlobPatternPredicate(include));
103103
} else {
104-
result = result.or(include::equalsIgnoreCase);
104+
result = result.or(include::equals);
105105
}
106106
}
107107
return result;
@@ -114,7 +114,7 @@ private static Predicate<String> excludedPredicate(
114114
if (globMatchingEnabled) {
115115
result = result.and(createGlobPatternPredicate(exclude).negate());
116116
} else {
117-
result = result.and(s -> !exclude.equalsIgnoreCase(s));
117+
result = result.and(s -> !exclude.equals(s));
118118
}
119119
}
120120
return result;

sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/GlobUtilTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void matchesName(String globPattern, String testString, boolean isMatchExpected)
2424
private static Stream<Arguments> globPatternPredicateArgs() {
2525
return Stream.of(
2626
Arguments.of("foo", "foo", true),
27-
Arguments.of("foo", "Foo", true),
27+
Arguments.of("foo", "Foo", false),
2828
Arguments.of("foo", "bar", false),
2929
Arguments.of("fo?", "foo", true),
3030
Arguments.of("fo??", "fooo", true),
@@ -38,13 +38,17 @@ private static Stream<Arguments> globPatternPredicateArgs() {
3838
Arguments.of("*", "", true),
3939
Arguments.of("fo*", "fo", true),
4040
Arguments.of("fo*", "foo", true),
41+
Arguments.of("fo*", "foO", true),
42+
Arguments.of("fo*", "FOO", false),
4143
Arguments.of("fo*", "fooo", true),
4244
Arguments.of("fo*", "foo.bar.baz", true),
4345
Arguments.of("*bar", "sandbar", true),
4446
Arguments.of("fo*b*", "foobar", true),
4547
Arguments.of("fo*b*", "foob", true),
4648
Arguments.of("fo*b*", "foo bar", true),
4749
Arguments.of("fo? b??", "foo bar", true),
50+
Arguments.of("fo? b??", "foO bAR", true),
51+
Arguments.of("fo? b??", "FOO BAR", false),
4852
Arguments.of("fo? b??", "fooo bar", false),
4953
Arguments.of("fo* ba?", "foo is not bar", true),
5054
Arguments.of("fo? b*", "fox beetles for lunch", true),

sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicateTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,38 +48,57 @@ private static Stream<Arguments> testArgs() {
4848
Arguments.of(EXACT_INCLUDE, "foo", true),
4949
Arguments.of(EXACT_INCLUDE, "bar", false),
5050
Arguments.of(EXACT_INCLUDE, "baz", false),
51+
Arguments.of(EXACT_INCLUDE, "Foo", false),
52+
Arguments.of(EXACT_INCLUDE, "FOO", false),
5153
// exclude only
5254
Arguments.of(EXACT_EXCLUDE, "foo", true),
5355
Arguments.of(EXACT_EXCLUDE, "bar", false),
5456
Arguments.of(EXACT_EXCLUDE, "baz", true),
57+
Arguments.of(EXACT_EXCLUDE, "Bar", true),
58+
Arguments.of(EXACT_EXCLUDE, "BAR", true),
5559
// include and exclude
5660
Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "foo", true),
61+
Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "Foo", false),
62+
Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "FOO", false),
5763
Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "bar", false),
5864
Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "baz", false),
5965
// multi
6066
Arguments.of(EXACT_MULTI, "foo", true),
6167
Arguments.of(EXACT_MULTI, "fooo", true),
68+
Arguments.of(EXACT_MULTI, "Foo", false),
69+
Arguments.of(EXACT_MULTI, "FOO", false),
6270
Arguments.of(EXACT_MULTI, "bar", false),
6371
Arguments.of(EXACT_MULTI, "barr", false),
6472
Arguments.of(EXACT_MULTI, "baz", false),
6573
// pattern matching
6674
// include only
6775
Arguments.of(PATTERN_INCLUDE, "foo", true),
76+
Arguments.of(PATTERN_INCLUDE, "fOo", true),
77+
Arguments.of(PATTERN_INCLUDE, "Foo", false),
6878
Arguments.of(PATTERN_INCLUDE, "bar", false),
6979
Arguments.of(PATTERN_INCLUDE, "baz", false),
7080
// exclude only
7181
Arguments.of(PATTERN_EXCLUDE, "foo", true),
7282
Arguments.of(PATTERN_EXCLUDE, "bar", false),
83+
Arguments.of(PATTERN_EXCLUDE, "bAr", false),
84+
Arguments.of(PATTERN_EXCLUDE, "Bar", true),
85+
Arguments.of(PATTERN_EXCLUDE, "BAR", true),
7386
Arguments.of(PATTERN_EXCLUDE, "baz", true),
7487
// include and exclude
7588
Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "foo", true),
89+
Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "fOo", true),
90+
Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "FOO", false),
7691
Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "bar", false),
7792
Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "baz", false),
7893
// multi
7994
Arguments.of(PATTERN_MULTI, "foo", true),
8095
Arguments.of(PATTERN_MULTI, "fooo", true),
96+
Arguments.of(PATTERN_MULTI, "fOo", true),
97+
Arguments.of(PATTERN_MULTI, "FOO", false),
8198
Arguments.of(PATTERN_MULTI, "bar", false),
99+
Arguments.of(PATTERN_MULTI, "bAr", false),
82100
Arguments.of(PATTERN_MULTI, "barr", false),
101+
Arguments.of(PATTERN_MULTI, "bArr", false),
83102
Arguments.of(PATTERN_MULTI, "baz", false));
84103
}
85104

0 commit comments

Comments
 (0)