You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2008/05/17 10:12:09 UTC
svn commit: r657320 -
/lucene/java/trunk/src/test/org/apache/lucene/index/TestPayloads.java
Author: mikemccand
Date: Sat May 17 01:12:09 2008
New Revision: 657320
URL: http://svn.apache.org/viewvc?rev=657320&view=rev
Log:
fix intermittant failure when random byte sequence creates invalid UTF16 string
Modified:
lucene/java/trunk/src/test/org/apache/lucene/index/TestPayloads.java
Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestPayloads.java?rev=657320&r1=657319&r2=657320&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/index/TestPayloads.java Sat May 17 01:12:09 2008
@@ -20,6 +20,7 @@
import java.io.File;
import java.io.IOException;
import java.io.Reader;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -27,6 +28,7 @@
import java.util.Random;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.UnicodeUtil;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
@@ -510,8 +512,7 @@
int freq = tp.freq();
for (int i = 0; i < freq; i++) {
tp.nextPosition();
- String s = new String(tp.getPayload(new byte[5], 0));
- assertEquals(s, terms.term().text);
+ assertEquals(pool.bytesToString(tp.getPayload(new byte[5], 0)), terms.term().text);
}
}
tp.close();
@@ -526,17 +527,18 @@
private byte[] payload;
private boolean first;
private ByteArrayPool pool;
-
+ private String term;
PoolingPayloadTokenStream(ByteArrayPool pool) {
this.pool = pool;
payload = pool.get();
generateRandomData(payload);
+ term = pool.bytesToString(payload);
first = true;
}
public Token next() throws IOException {
if (!first) return null;
- Token t = new Token(new String(payload), 0, 0);
+ Token t = new Token(term, 0, 0);
t.setPayload(new Payload(payload));
return t;
}
@@ -557,6 +559,18 @@
}
}
+ private UnicodeUtil.UTF8Result utf8Result = new UnicodeUtil.UTF8Result();
+
+ synchronized String bytesToString(byte[] bytes) {
+ String s = new String(bytes);
+ UnicodeUtil.UTF16toUTF8(s, 0, s.length(), utf8Result);
+ try {
+ return new String(utf8Result.result, 0, utf8Result.length, "UTF-8");
+ } catch (UnsupportedEncodingException uee) {
+ return null;
+ }
+ }
+
synchronized byte[] get() {
return (byte[]) pool.remove(0);
}