mirror of https://github.com/apache/lucene.git
LUCENE-2220: Fix stack overflow when calling deprecated CharArraySet.copy()
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@900152 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7c0cb27edd
commit
98175aacc7
|
@ -387,7 +387,7 @@ public class CharArraySet extends AbstractSet<Object> {
|
||||||
public static CharArraySet copy(final Set<?> set) {
|
public static CharArraySet copy(final Set<?> set) {
|
||||||
if(set == EMPTY_SET)
|
if(set == EMPTY_SET)
|
||||||
return EMPTY_SET;
|
return EMPTY_SET;
|
||||||
return (set instanceof CharArraySet) ? copy((CharArraySet) set) : copy(Version.LUCENE_30, set);
|
return copy(Version.LUCENE_30, set);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -321,6 +321,50 @@ public class TestCharArraySet extends LuceneTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testCopyCharArraySetBWCompat() {
|
||||||
|
CharArraySet setIngoreCase = new CharArraySet(Version.LUCENE_CURRENT, 10, true);
|
||||||
|
CharArraySet setCaseSensitive = new CharArraySet(Version.LUCENE_CURRENT, 10, false);
|
||||||
|
|
||||||
|
List<String> stopwords = Arrays.asList(TEST_STOP_WORDS);
|
||||||
|
List<String> stopwordsUpper = new ArrayList<String>();
|
||||||
|
for (String string : stopwords) {
|
||||||
|
stopwordsUpper.add(string.toUpperCase());
|
||||||
|
}
|
||||||
|
setIngoreCase.addAll(Arrays.asList(TEST_STOP_WORDS));
|
||||||
|
setIngoreCase.add(Integer.valueOf(1));
|
||||||
|
setCaseSensitive.addAll(Arrays.asList(TEST_STOP_WORDS));
|
||||||
|
setCaseSensitive.add(Integer.valueOf(1));
|
||||||
|
|
||||||
|
CharArraySet copy = CharArraySet.copy(setIngoreCase);
|
||||||
|
CharArraySet copyCaseSens = CharArraySet.copy(setCaseSensitive);
|
||||||
|
|
||||||
|
assertEquals(setIngoreCase.size(), copy.size());
|
||||||
|
assertEquals(setCaseSensitive.size(), copy.size());
|
||||||
|
|
||||||
|
assertTrue(copy.containsAll(stopwords));
|
||||||
|
assertTrue(copy.containsAll(stopwordsUpper));
|
||||||
|
assertTrue(copyCaseSens.containsAll(stopwords));
|
||||||
|
for (String string : stopwordsUpper) {
|
||||||
|
assertFalse(copyCaseSens.contains(string));
|
||||||
|
}
|
||||||
|
// test adding terms to the copy
|
||||||
|
List<String> newWords = new ArrayList<String>();
|
||||||
|
for (String string : stopwords) {
|
||||||
|
newWords.add(string+"_1");
|
||||||
|
}
|
||||||
|
copy.addAll(newWords);
|
||||||
|
|
||||||
|
assertTrue(copy.containsAll(stopwords));
|
||||||
|
assertTrue(copy.containsAll(stopwordsUpper));
|
||||||
|
assertTrue(copy.containsAll(newWords));
|
||||||
|
// new added terms are not in the source set
|
||||||
|
for (String string : newWords) {
|
||||||
|
assertFalse(setIngoreCase.contains(string));
|
||||||
|
assertFalse(setCaseSensitive.contains(string));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the static #copy() function with a CharArraySet as a source
|
* Test the static #copy() function with a CharArraySet as a source
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue