in repository/service/src/main/java/org/apache/karaf/cave/repository/service/bundlerepository/SimpleFilter.java [416:471]
public static boolean compareSubstring(List<String> pieces, String s) {
// Walk the pieces to match the string
// There are implicit stars between each piece,
// and the first and last pieces might be "" to anchor the match.
// assert (pieces.length > 1)
// minimal case is <string>*<string>
boolean result = true;
int len = pieces.size();
// Special case, if there is only one piece, then
// we must perform an equality test.
if (len == 1) {
return s.equals(pieces.get(0));
}
// Otherwise, check whether the pieces match
// the specified string.
int index = 0;
for (int i = 0; i < len; i++) {
String piece = pieces.get(i);
// If this is the first piece, then make sure the
// string starts with it.
if (i == 0) {
if (!s.startsWith(piece)) {
result = false;
break;
}
}
// If this is the last piece, then make sure the
// string ends with it.
if (i == (len - 1)) {
result = s.endsWith(piece) && (s.length() >= (index + piece.length()));
break;
}
// If this is neither the first or last piece, then
// make sure the string contains it.
if ((i > 0) && (i < (len - 1))) {
index = s.indexOf(piece, index);
if (index < 0) {
result = false;
break;
}
}
// Move string index beyond the matching piece.
index += piece.length();
}
return result;
}