You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ds...@apache.org on 2014/12/19 18:03:22 UTC
svn commit: r1646796 - in /lucene/dev/branches/branch_5x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/util/
lucene/core/src/test/org/apache/lucene/analysis/
lucene/core/src/test/org/apache/lucene/util/
Author: dsmiley
Date: Fri Dec 19 17:03:21 2014
New Revision: 1646796
URL: http://svn.apache.org/r1646796
Log:
LUCENE-6121: QueryBuilder put 2nd reset() to where it was, and add test to ensure no double-reset if there is no term attribute.
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/lucene/ (props changed)
lucene/dev/branches/branch_5x/lucene/core/ (props changed)
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/QueryBuilder.java
lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java
lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/QueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/QueryBuilder.java?rev=1646796&r1=1646795&r2=1646796&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/QueryBuilder.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/QueryBuilder.java Fri Dec 19 17:03:21 2014
@@ -200,8 +200,8 @@ public class QueryBuilder {
int numTokens = 0;
int positionCount = 0;
boolean severalTokensAtSamePosition = false;
- boolean hasMoreTokens = false;
-
+ boolean hasMoreTokens = false;
+
try (TokenStream source = analyzer.tokenStream(field, queryText)) {
buffer = new CachingTokenFilter(source);
buffer.reset();
@@ -225,19 +225,25 @@ public class QueryBuilder {
} catch (IOException e) {
// ignore
}
-
- // rewind the buffer stream
- buffer.reset();//will never through on subsequent reset calls
}
} catch (IOException e) {
throw new RuntimeException("Error analyzing query text", e);
}
+ // rewind the buffer stream
+ try {
+ if (numTokens > 0) {
+ buffer.reset();//will never throw; the buffer is cached
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
BytesRef bytes = termAtt == null ? null : termAtt.getBytesRef();
- if (numTokens == 0)
+ if (numTokens == 0) {
return null;
- else if (numTokens == 1) {
+ } else if (numTokens == 1) {
try {
boolean hasNext = buffer.incrementToken();
assert hasNext == true;
Modified: lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java?rev=1646796&r1=1646795&r2=1646796&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java Fri Dec 19 17:03:21 2014
@@ -120,6 +120,7 @@ public class TestCachingTokenFilter exte
}
public void testDoubleResetFails() throws IOException {
+ assumeTrue("We want MockAnalyzer to detect double-reset", TEST_ASSERTS_ENABLED);
Analyzer analyzer = new MockAnalyzer(random());
final TokenStream input = analyzer.tokenStream("field", "abc");
CachingTokenFilter buffer = new CachingTokenFilter(input);
Modified: lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java?rev=1646796&r1=1646795&r2=1646796&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java Fri Dec 19 17:03:21 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.util;
import java.io.IOException;
import java.io.Reader;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -355,4 +356,32 @@ public class TestQueryBuilder extends Lu
expected.setSlop(3);
assertEquals(expected, builder.createPhraseQuery("field", "ä¸å½", 3));
}
+
+ public void testNoTermAttribute() {
+ //Can't use MockTokenizer because it adds TermAttribute and we don't want that
+ Analyzer analyzer = new Analyzer() {
+ @Override
+ protected TokenStreamComponents createComponents(String fieldName) {
+ return new TokenStreamComponents(
+ new Tokenizer() {
+ boolean wasReset = false;
+ @Override
+ public void reset() throws IOException {
+ super.reset();
+ assertFalse(wasReset);
+ wasReset = true;
+ }
+
+ @Override
+ public boolean incrementToken() throws IOException {
+ assertTrue(wasReset);
+ return false;
+ }
+ }
+ );
+ }
+ };
+ QueryBuilder builder = new QueryBuilder(analyzer);
+ assertNull(builder.createBooleanQuery("field", "whatever"));
+ }
}