@Override public boolean matches(String s) { return indexOf(s, 0) != -1; }
@Override public WildcardMatcher convert(String s) { return WildcardMatcher.valueOf(s); }
/** * Returns {@code true}, if any of the matchers match the provided string. * * @param matchers the matchers which should be used to match the provided string * @param s the string to match against * @return {@code true}, if any of the matchers match the provided string */ @Nullable public static WildcardMatcher anyMatch(List<WildcardMatcher> matchers, String s) { return anyMatch(matchers, s, null); }
@Test void testNeedleLongerThanHaystack() { assertSoftly(softly -> { softly.assertThat(WildcardMatcher.valueOf("*foo").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("*foob").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("*fooba").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("*foobar").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("foo*").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("foob*").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("fooba*").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("foobar*").matches("baz")).isFalse(); softly.assertThat(WildcardMatcher.valueOf("*foobar*").matches("baz")).isFalse(); }); }
@Test void convert() { assertThat(converter.toString(converter.convert("foo*"))).isEqualTo("foo*"); assertThat(converter.toSafeString(converter.convert("foo*"))).isEqualTo("foo*"); } }
/** * Returns {@code true}, if any of the matchers match the provided partitioned string. * * @param matchers the matchers which should be used to match the provided string * @param firstPart The first part of the string to match against. * @param secondPart The second part of the string to match against. * @return {@code true}, if any of the matchers match the provided partitioned string * @see #matches(String, String) */ @Nullable public static WildcardMatcher anyMatch(List<WildcardMatcher> matchers, String firstPart, @Nullable String secondPart) { for (int i = 0; i < matchers.size(); i++) { if (matchers.get(i).matches(firstPart, secondPart)) { return matchers.get(i); } } return null; }
int indexOf(String firstPart, @Nullable String secondPart, int offset) { if (secondPart == null) { secondPart = ""; } int totalLength = firstPart.length() + secondPart.length(); if (wildcardAtEnd && wildcardAtBeginning) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, offset, totalLength); } else if (wildcardAtEnd) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, 0, 1); } else if (wildcardAtBeginning) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, totalLength - matcher.length(), totalLength); } else if (totalLength == matcher.length()) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, 0, totalLength); } else { return -1; } }
@BeforeEach void setUp() { converter = new WildcardMatcherValueConverter(); }
@Test void testCharAt() { assertSoftly(softly -> { softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(0, "foo", "bar", "foo".length())).isEqualTo('f'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(1, "foo", "bar", "foo".length())).isEqualTo('o'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(2, "foo", "bar", "foo".length())).isEqualTo('o'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(3, "foo", "bar", "foo".length())).isEqualTo('b'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(4, "foo", "bar", "foo".length())).isEqualTo('a'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(5, "foo", "bar", "foo".length())).isEqualTo('r'); }); }
public static WildcardMatcher caseSensitiveMatcher(String matcher) { return valueOf(CASE_SENSITIVE_PREFIX + matcher); }
private boolean isDisabled(String name) { return WildcardMatcher.anyMatch(config.getDisableMetrics(), name) != null; }
int indexOf(final String s, final int offset) { return indexOf(s, "", offset); }
@Test void testMatchesPartitionedStringEndsWith() { final WildcardMatcher matcher = WildcardMatcher.valueOf("*/bar/baz"); assertSoftly(softly -> { softly.assertThat(matcher.matches("/foo/bar/baz", "")).isTrue(); softly.assertThat(matcher.matches("", "/foo/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/foo/bar", "/baz")).isTrue(); softly.assertThat(matcher.matches("/foo", "/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/foo", "/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/bar", "/foo/baz")).isFalse(); softly.assertThat(matcher.matches("/foo", "/foo/baz")).isFalse(); }); }
@Override public boolean matches(String firstPart, @Nullable String secondPart) { return indexOf(firstPart, secondPart, 0) != -1; }
@Test void testMatchesPartitionedStringEndsWith_ignoreCase() { final WildcardMatcher matcher = WildcardMatcher.valueOf("*/bar/baz"); assertSoftly(softly -> { softly.assertThat(matcher.matches("/foO/BAR/Baz", "")).isTrue(); softly.assertThat(matcher.matches("", "/foO/Bar/baz")).isTrue(); softly.assertThat(matcher.matches("/FOo/bar", "/baz")).isTrue(); softly.assertThat(matcher.matches("/foo", "/bar/BAZ")).isTrue(); softly.assertThat(matcher.matches("/fOo", "/bAR/baz")).isTrue(); softly.assertThat(matcher.matches("/bar", "/foO/baz")).isFalse(); softly.assertThat(matcher.matches("/FOo", "/foo/baz")).isFalse(); }); }
@Override public boolean matches(String s) { int offset = 0; for (int i = 0; i < wildcardMatchers.size(); i++) { final SimpleWildcardMatcher matcher = wildcardMatchers.get(i); offset = matcher.indexOf(s, offset); if (offset == -1) { return false; } offset += matcher.matcher.length(); } return true; }
@Test void testMatchesPartitionedStringStartsWith() { final WildcardMatcher matcher = WildcardMatcher.valueOf("/foo/bar*"); assertSoftly(softly -> { softly.assertThat(matcher.matches("/foo/bar/baz", "")).isTrue(); softly.assertThat(matcher.matches("", "/foo/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/foo/bar", "/baz")).isTrue(); softly.assertThat(matcher.matches("/foo", "/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/foo", "/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/bar", "/bar/baz")).isFalse(); softly.assertThat(matcher.matches("/foo", "/foo/baz")).isFalse(); softly.assertThat(matcher.matches("/foo/foo", "/baz")).isFalse(); }); }
@Override public boolean matches(String firstPart, @Nullable String secondPart) { int offset = 0; for (int i = 0; i < wildcardMatchers.size(); i++) { final SimpleWildcardMatcher matcher = wildcardMatchers.get(i); offset = matcher.indexOf(firstPart, secondPart, offset); if (offset == -1) { return false; } offset += matcher.matcher.length(); } return true; }
@Test void testMatchesPartitionedStringStartsWith_ignoreCase() { final WildcardMatcher matcher = WildcardMatcher.valueOf("/foo/bar*"); assertSoftly(softly -> { softly.assertThat(matcher.matches("/foo/bAR/Baz", "")).isTrue(); softly.assertThat(matcher.matches("", "/foo/bAR/baz")).isTrue(); softly.assertThat(matcher.matches("/FOO/BAR", "/baz")).isTrue(); softly.assertThat(matcher.matches("/foo", "/BAR/BAZ")).isTrue(); softly.assertThat(matcher.matches("/FOO", "/bar/baz")).isTrue(); softly.assertThat(matcher.matches("/BAR", "/BAR/BAZ")).isFalse(); softly.assertThat(matcher.matches("/FOO", "/foo/baz")).isFalse(); softly.assertThat(matcher.matches("/foo/FOO", "/BAZ")).isFalse(); }); }