diff --git a/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/GlobUtil.java b/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/GlobUtil.java index fcc002585ec..7a8394ad363 100644 --- a/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/GlobUtil.java +++ b/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/GlobUtil.java @@ -98,8 +98,8 @@ public boolean test(String s) { if (pattern != null) { return pattern.matcher(s).matches(); } - // Exact match, ignoring case - return globPattern.equalsIgnoreCase(s); + // Exact match + return globPattern.equals(s); } @Override diff --git a/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicate.java b/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicate.java index a98efa69769..dd6ba4e63b4 100644 --- a/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicate.java +++ b/sdk/common/src/main/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicate.java @@ -21,7 +21,7 @@ * *

Supports optional glob pattern matching. See {@link GlobUtil}. * - *

String equality is evaluated using {@link String#equalsIgnoreCase(String)}. + *

String equality is evaluated using {@link String#equals(Object)}. * *

This class is internal and is hence not for public use. Its APIs are unstable and can change * at any time. @@ -55,7 +55,7 @@ private IncludeExcludePredicate( } /** - * Create a (case-insensitive) exact matching include exclude predicate. + * Create a (case-sensitive) exact matching include exclude predicate. * * @throws IllegalArgumentException if {@code included} AND {@code excluded} are null. */ @@ -101,7 +101,7 @@ private static Predicate includedPredicate( if (globMatchingEnabled) { result = result.or(createGlobPatternPredicate(include)); } else { - result = result.or(include::equalsIgnoreCase); + result = result.or(include::equals); } } return result; @@ -114,7 +114,7 @@ private static Predicate excludedPredicate( if (globMatchingEnabled) { result = result.and(createGlobPatternPredicate(exclude).negate()); } else { - result = result.and(s -> !exclude.equalsIgnoreCase(s)); + result = result.and(s -> !exclude.equals(s)); } } return result; diff --git a/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/GlobUtilTest.java b/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/GlobUtilTest.java index 448ef39655b..1d8fb2a9bd8 100644 --- a/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/GlobUtilTest.java +++ b/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/GlobUtilTest.java @@ -24,7 +24,7 @@ void matchesName(String globPattern, String testString, boolean isMatchExpected) private static Stream globPatternPredicateArgs() { return Stream.of( Arguments.of("foo", "foo", true), - Arguments.of("foo", "Foo", true), + Arguments.of("foo", "Foo", false), Arguments.of("foo", "bar", false), Arguments.of("fo?", "foo", true), Arguments.of("fo??", "fooo", true), @@ -38,6 +38,8 @@ private static Stream globPatternPredicateArgs() { Arguments.of("*", "", true), Arguments.of("fo*", "fo", true), Arguments.of("fo*", "foo", true), + Arguments.of("fo*", "foO", true), + Arguments.of("fo*", "FOO", false), Arguments.of("fo*", "fooo", true), Arguments.of("fo*", "foo.bar.baz", true), Arguments.of("*bar", "sandbar", true), @@ -45,6 +47,8 @@ private static Stream globPatternPredicateArgs() { Arguments.of("fo*b*", "foob", true), Arguments.of("fo*b*", "foo bar", true), Arguments.of("fo? b??", "foo bar", true), + Arguments.of("fo? b??", "foO bAR", true), + Arguments.of("fo? b??", "FOO BAR", false), Arguments.of("fo? b??", "fooo bar", false), Arguments.of("fo* ba?", "foo is not bar", true), Arguments.of("fo? b*", "fox beetles for lunch", true), diff --git a/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicateTest.java b/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicateTest.java index e5f38a61962..2340d1009b0 100644 --- a/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicateTest.java +++ b/sdk/common/src/test/java/io/opentelemetry/sdk/common/internal/IncludeExcludePredicateTest.java @@ -48,38 +48,57 @@ private static Stream testArgs() { Arguments.of(EXACT_INCLUDE, "foo", true), Arguments.of(EXACT_INCLUDE, "bar", false), Arguments.of(EXACT_INCLUDE, "baz", false), + Arguments.of(EXACT_INCLUDE, "Foo", false), + Arguments.of(EXACT_INCLUDE, "FOO", false), // exclude only Arguments.of(EXACT_EXCLUDE, "foo", true), Arguments.of(EXACT_EXCLUDE, "bar", false), Arguments.of(EXACT_EXCLUDE, "baz", true), + Arguments.of(EXACT_EXCLUDE, "Bar", true), + Arguments.of(EXACT_EXCLUDE, "BAR", true), // include and exclude Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "foo", true), + Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "Foo", false), + Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "FOO", false), Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "bar", false), Arguments.of(EXACT_INCLUDE_AND_EXCLUDE, "baz", false), // multi Arguments.of(EXACT_MULTI, "foo", true), Arguments.of(EXACT_MULTI, "fooo", true), + Arguments.of(EXACT_MULTI, "Foo", false), + Arguments.of(EXACT_MULTI, "FOO", false), Arguments.of(EXACT_MULTI, "bar", false), Arguments.of(EXACT_MULTI, "barr", false), Arguments.of(EXACT_MULTI, "baz", false), // pattern matching // include only Arguments.of(PATTERN_INCLUDE, "foo", true), + Arguments.of(PATTERN_INCLUDE, "fOo", true), + Arguments.of(PATTERN_INCLUDE, "Foo", false), Arguments.of(PATTERN_INCLUDE, "bar", false), Arguments.of(PATTERN_INCLUDE, "baz", false), // exclude only Arguments.of(PATTERN_EXCLUDE, "foo", true), Arguments.of(PATTERN_EXCLUDE, "bar", false), + Arguments.of(PATTERN_EXCLUDE, "bAr", false), + Arguments.of(PATTERN_EXCLUDE, "Bar", true), + Arguments.of(PATTERN_EXCLUDE, "BAR", true), Arguments.of(PATTERN_EXCLUDE, "baz", true), // include and exclude Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "foo", true), + Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "fOo", true), + Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "FOO", false), Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "bar", false), Arguments.of(PATTERN_INCLUDE_AND_EXCLUDE, "baz", false), // multi Arguments.of(PATTERN_MULTI, "foo", true), Arguments.of(PATTERN_MULTI, "fooo", true), + Arguments.of(PATTERN_MULTI, "fOo", true), + Arguments.of(PATTERN_MULTI, "FOO", false), Arguments.of(PATTERN_MULTI, "bar", false), + Arguments.of(PATTERN_MULTI, "bAr", false), Arguments.of(PATTERN_MULTI, "barr", false), + Arguments.of(PATTERN_MULTI, "bArr", false), Arguments.of(PATTERN_MULTI, "baz", false)); }