diff --git a/modules/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java b/modules/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java index 8c485cb..0ae9f3c 100644 --- a/modules/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java +++ b/modules/analysis/common/src/java/org/apache/lucene/analysis/charfilter/MappingCharFilter.java @@ -51,6 +51,11 @@ public class MappingCharFilter extends BaseCharFilter { } @Override + protected int correct(int currentOff) { + return super.correct(currentOff); + } + + @Override public int read() throws IOException { while(true) { if (replacement != null && charPointer < replacement.length()) { @@ -79,11 +84,15 @@ public class MappingCharFilter extends BaseCharFilter { } private int nextChar() throws IOException { - nextCharCounter++; if (buffer != null && !buffer.isEmpty()) { + nextCharCounter++; return buffer.removeFirst().charValue(); } - return input.read(); + int nextChar = input.read(); + if (nextChar != -1) { + nextCharCounter++; + } + return nextChar; } private void pushChar(int c) { @@ -112,6 +121,8 @@ public class MappingCharFilter extends BaseCharFilter { if (result == null) { pushChar(chr); } + } else { + } } if (result == null && map.normStr != null) { diff --git a/modules/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestMappingCharFilter.java b/modules/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestMappingCharFilter.java index fa77b40..a29674c 100644 --- a/modules/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestMappingCharFilter.java +++ b/modules/analysis/common/src/test/org/apache/lucene/analysis/charfilter/TestMappingCharFilter.java @@ -30,7 +30,6 @@ import org.apache.lucene.analysis.MockTokenizer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.util._TestUtil; -import org.junit.Ignore; public class TestMappingCharFilter extends BaseTokenStreamTestCase { @@ -194,8 +193,8 @@ public class TestMappingCharFilter extends BaseTokenStreamTestCase { int numRounds = RANDOM_MULTIPLIER * 10000; checkRandomData(random, analyzer, numRounds); } - - @Ignore("wrong finalOffset: https://issues.apache.org/jira/browse/LUCENE-3971") + + //@Ignore("wrong finalOffset: https://issues.apache.org/jira/browse/LUCENE-3971") public void testFinalOffsetSpecialCase() throws Exception { final NormalizeCharMap map = new NormalizeCharMap(); map.add("t", ""); @@ -219,7 +218,7 @@ public class TestMappingCharFilter extends BaseTokenStreamTestCase { checkAnalysisConsistency(random, analyzer, false, text); } - @Ignore("wrong finalOffset: https://issues.apache.org/jira/browse/LUCENE-3971") + //@Ignore("wrong finalOffset: https://issues.apache.org/jira/browse/LUCENE-3971") public void testRandomMaps() throws Exception { for (int i = 0; i < 100; i++) { final NormalizeCharMap map = randomMap();