don't fill common prefix for patterns consisting of model-specific markup only (EA-71994 - assert: DefaultChooseByNameItemProvider.convertToMatchingPattern)

This commit is contained in:
peter
2015-11-26 15:56:29 +01:00
parent 0a155bda70
commit 778f5af949
2 changed files with 10 additions and 8 deletions
@@ -1365,11 +1365,8 @@ public abstract class ChooseByNameBase {
}
private void fillInCommonPrefix(@NotNull final String pattern) {
if (StringUtil.isEmpty(pattern) && !canShowListForEmptyPattern()) {
return;
}
final List<String> list = myProvider.filterNames(ChooseByNameBase.this, getNames(myCheckBox.isSelected()), pattern);
if (list.isEmpty()) return;
if (isComplexPattern(pattern)) return; //TODO: support '*'
final String oldText = getTrimmedText();
@@ -63,6 +63,8 @@ public class DefaultChooseByNameItemProvider implements ChooseByNameItemProvider
final ChooseByNameModel model = base.getModel();
String matchingPattern = convertToMatchingPattern(base, namePattern);
if (matchingPattern == null) return true;
List<MatchResult> namesList = new ArrayList<MatchResult>();
final CollectConsumer<MatchResult> collect = new SynchronizedCollectConsumer<MatchResult>(namesList);
@@ -296,8 +298,11 @@ public class DefaultChooseByNameItemProvider implements ChooseByNameItemProvider
@NotNull
@Override
public List<String> filterNames(@NotNull ChooseByNameBase base, @NotNull String[] names, @NotNull String pattern) {
pattern = convertToMatchingPattern(base, pattern);
if (pattern == null) return Collections.emptyList();
final List<String> filtered = new ArrayList<String>();
processNamesByPattern(base, names, convertToMatchingPattern(base, pattern), ProgressIndicatorProvider.getGlobalProgressIndicator(), new Consumer<MatchResult>() {
processNamesByPattern(base, names, pattern, ProgressIndicatorProvider.getGlobalProgressIndicator(), new Consumer<MatchResult>() {
@Override
public void consume(MatchResult result) {
synchronized (filtered) {
@@ -332,12 +337,12 @@ public class DefaultChooseByNameItemProvider implements ChooseByNameItemProvider
}
}
@NotNull
@Nullable
private static String convertToMatchingPattern(@NotNull ChooseByNameBase base, @NotNull String pattern) {
pattern = removeModelSpecificMarkup(base.getModel(), pattern);
if (!base.canShowListForEmptyPattern()) {
LOG.assertTrue(!pattern.isEmpty(), base);
if (!base.canShowListForEmptyPattern() && pattern.isEmpty()) {
return null;
}
return addSearchAnywherePatternDecorationIfNeeded(base, pattern);