You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/04/25 03:54:20 UTC
svn commit: r1589919 - in /lucene/dev/trunk/lucene: ./
analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/
analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/
Author: rmuir
Date: Fri Apr 25 01:54:19 2014
New Revision: 1589919
URL: http://svn.apache.org/r1589919
Log:
LUCENE-5559: additional argument validation for CapitalizationFilter and CodepointCountFilter
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CapitalizationFilter.java
lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CodepointCountFilter.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilter.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilter.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilterFactory.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Fri Apr 25 01:54:19 2014
@@ -106,6 +106,9 @@ Bug fixes
* LUCENE-5600: HttpClientBase did not properly consume a connection if a server
error occurred. (Christoph Kaser via Shai Erera)
+* LUCENE-5559: Add additional argument validation for CapitalizationFilter
+ and CodepointCountFilter. (Ahmet Arslan via Robert Muir)
+
======================= Lucene 4.8.0 =======================
System Requirements
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CapitalizationFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CapitalizationFilter.java?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CapitalizationFilter.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CapitalizationFilter.java Fri Apr 25 01:54:19 2014
@@ -78,6 +78,15 @@ public final class CapitalizationFilter
this.keep = keep;
this.forceFirstLetter = forceFirstLetter;
this.okPrefix = okPrefix;
+ if (minWordLength < 0) {
+ throw new IllegalArgumentException("minWordLength must be greater than or equal to zero");
+ }
+ if (maxWordCount < 1) {
+ throw new IllegalArgumentException("maxWordCount must be greater than zero");
+ }
+ if (maxTokenLength < 1) {
+ throw new IllegalArgumentException("maxTokenLength must be greater than zero");
+ }
this.minWordLength = minWordLength;
this.maxWordCount = maxWordCount;
this.maxTokenLength = maxTokenLength;
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CodepointCountFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CodepointCountFilter.java?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CodepointCountFilter.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/CodepointCountFilter.java Fri Apr 25 01:54:19 2014
@@ -46,6 +46,12 @@ public final class CodepointCountFilter
*/
public CodepointCountFilter(Version version, TokenStream in, int min, int max) {
super(version, in);
+ if (min < 0) {
+ throw new IllegalArgumentException("minimum length must be greater than or equal to zero");
+ }
+ if (min > max) {
+ throw new IllegalArgumentException("maximum length must not be greater than minimum length");
+ }
this.min = min;
this.max = max;
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilter.java?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilter.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilter.java Fri Apr 25 01:54:19 2014
@@ -18,7 +18,6 @@
package org.apache.lucene.analysis.miscellaneous;
import java.io.IOException;
-import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
@@ -31,6 +30,7 @@ import org.apache.lucene.analysis.MockTo
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.KeywordTokenizer;
import org.apache.lucene.analysis.util.CharArraySet;
+import org.junit.Test;
import static org.apache.lucene.analysis.miscellaneous.CapitalizationFilter.*;
@@ -149,4 +149,20 @@ public class TestCapitalizationFilter ex
};
checkOneTerm(a, "", "");
}
+
+ /**
+ * checking the validity of constructor arguments
+ */
+ @Test(expected = IllegalArgumentException.class)
+ public void testIllegalArguments() throws Exception {
+ new CapitalizationFilter(whitespaceMockTokenizer("accept only valid arguments"),true, null, true, null, -1 , DEFAULT_MAX_WORD_COUNT, DEFAULT_MAX_TOKEN_LENGTH);
+ }
+ @Test(expected = IllegalArgumentException.class)
+ public void testIllegalArguments1() throws Exception {
+ new CapitalizationFilter(whitespaceMockTokenizer("accept only valid arguments"),true, null, true, null, 0 , -10, DEFAULT_MAX_TOKEN_LENGTH);
+ }
+ @Test(expected = IllegalArgumentException.class)
+ public void testIllegalArguments2() throws Exception {
+ new CapitalizationFilter(whitespaceMockTokenizer("accept only valid arguments"),true, null, true, null, 0 , DEFAULT_MAX_WORD_COUNT, -50);
+ }
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilterFactory.java?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCapitalizationFilterFactory.java Fri Apr 25 01:54:19 2014
@@ -20,7 +20,6 @@ package org.apache.lucene.analysis.misce
import java.io.Reader;
import java.io.StringReader;
-import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
@@ -272,4 +271,27 @@ public class TestCapitalizationFilterFac
assertTrue(expected.getMessage().contains("Unknown parameters"));
}
}
+
+ /**
+ * Test that invalid arguments result in exception
+ */
+ public void testInvalidArguments() throws Exception {
+ for (final String arg : new String[]{"minWordLength", "maxTokenLength", "maxWordCount"}) {
+ try {
+ Reader reader = new StringReader("foo foobar super-duper-trooper");
+ TokenStream stream = whitespaceMockTokenizer(reader);
+
+ tokenFilterFactory("Capitalization",
+ "keep", "and the it BIG",
+ "onlyFirstWord", "false",
+ arg, "-3",
+ "okPrefix", "McK",
+ "forceFirstLetter", "true").create(stream);
+ fail();
+ } catch (IllegalArgumentException expected) {
+ assertTrue(expected.getMessage().contains(arg + " must be greater than or equal to zero")
+ || expected.getMessage().contains(arg + " must be greater than zero"));
+ }
+ }
+ }
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilter.java?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilter.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilter.java Fri Apr 25 01:54:19 2014
@@ -26,7 +26,7 @@ import org.apache.lucene.analysis.TokenS
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.KeywordTokenizer;
import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.TestUtil;
+import org.junit.Test;
public class TestCodepointCountFilter extends BaseTokenStreamTestCase {
public void testFilterWithPosIncr() throws Exception {
@@ -55,6 +55,11 @@ public class TestCodepointCountFilter ex
int min = TestUtil.nextInt(random(), 0, 100);
int max = TestUtil.nextInt(random(), 0, 100);
int count = text.codePointCount(0, text.length());
+ if(min>max){
+ int temp = min;
+ min = max;
+ max = temp;
+ }
boolean expected = count >= min && count <= max;
TokenStream stream = new KeywordTokenizer();
((Tokenizer)stream).setReader(new StringReader(text));
@@ -65,4 +70,12 @@ public class TestCodepointCountFilter ex
stream.close();
}
}
+
+ /**
+ * checking the validity of constructor arguments
+ */
+ @Test(expected = IllegalArgumentException.class)
+ public void testIllegalArguments() throws Exception {
+ new CodepointCountFilter(TEST_VERSION_CURRENT, whitespaceMockTokenizer("accept only valid arguments"), 4, 1);
+ }
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilterFactory.java?rev=1589919&r1=1589918&r2=1589919&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestCodepointCountFilterFactory.java Fri Apr 25 01:54:19 2014
@@ -49,4 +49,19 @@ public class TestCodepointCountFilterFac
assertTrue(expected.getMessage().contains("Unknown parameters"));
}
}
+
+ /** Test that invalid arguments result in exception */
+ public void testInvalidArguments() throws Exception {
+ try {
+ Reader reader = new StringReader("foo foobar super-duper-trooper");
+ TokenStream stream = new MockTokenizer(MockTokenizer.WHITESPACE, false);
+ ((Tokenizer)stream).setReader(reader);
+ tokenFilterFactory("CodepointCount",
+ CodepointCountFilterFactory.MIN_KEY, "5",
+ CodepointCountFilterFactory.MAX_KEY, "4").create(stream);
+ fail();
+ } catch (IllegalArgumentException expected) {
+ assertTrue(expected.getMessage().contains("maximum length must not be greater than minimum length"));
+ }
+ }
}
\ No newline at end of file