Return-Path:
Delivered-To: apmail-lucene-java-commits-archive@www.apache.org
Received: (qmail 30241 invoked from network); 15 Mar 2009 23:25:01 -0000
Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2)
by minotaur.apache.org with SMTP; 15 Mar 2009 23:25:01 -0000
Received: (qmail 72829 invoked by uid 500); 15 Mar 2009 23:25:01 -0000
Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org
Received: (qmail 72797 invoked by uid 500); 15 Mar 2009 23:25:00 -0000
Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm
Precedence: bulk
List-Help:
List-Unsubscribe:
List-Post:
List-Id:
Reply-To: java-dev@lucene.apache.org
Delivered-To: mailing list java-commits@lucene.apache.org
Received: (qmail 72784 invoked by uid 99); 15 Mar 2009 23:25:00 -0000
Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136)
by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Mar 2009 16:25:00 -0700
X-ASF-Spam-Status: No, hits=-2000.0 required=10.0
tests=ALL_TRUSTED
X-Spam-Check-By: apache.org
Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4)
by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Mar 2009 23:25:00 +0000
Received: by eris.apache.org (Postfix, from userid 65534)
id D4795238896B; Sun, 15 Mar 2009 23:24:39 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: svn commit: r754789 - in /lucene/java/trunk/src:
java/org/apache/lucene/document/Field.java
test/org/apache/lucene/document/TestDocument.java
Date: Sun, 15 Mar 2009 23:24:39 -0000
To: java-commits@lucene.apache.org
From: mikemccand@apache.org
X-Mailer: svnmailer-1.0.8
Message-Id: <20090315232439.D4795238896B@eris.apache.org>
X-Virus-Checked: Checked by ClamAV on apache.org
Author: mikemccand
Date: Sun Mar 15 23:24:39 2009
New Revision: 754789
URL: http://svn.apache.org/viewvc?rev=754789&view=rev
Log:
LUCENE-1564: don't let Field.setValue switch between binary & non-binary fields
Modified:
lucene/java/trunk/src/java/org/apache/lucene/document/Field.java
lucene/java/trunk/src/test/org/apache/lucene/document/TestDocument.java
Modified: lucene/java/trunk/src/java/org/apache/lucene/document/Field.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/document/Field.java?rev=754789&r1=754788&r2=754789&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/document/Field.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/document/Field.java Sun Mar 15 23:24:39 2009
@@ -207,16 +207,28 @@
* href="http://wiki.apache.org/lucene-java/ImproveIndexingSpeed">ImproveIndexingSpeed
* for details.
*/
public void setValue(String value) {
+ if (isBinary) {
+ throw new IllegalArgumentException("cannot set a String value on a binary field");
+ }
fieldsData = value;
}
/** Expert: change the value of this field. See setValue(String). */
public void setValue(Reader value) {
+ if (isBinary) {
+ throw new IllegalArgumentException("cannot set a Reader value on a binary field");
+ }
+ if (isStored) {
+ throw new IllegalArgumentException("cannot set a Reader value on a stored field");
+ }
fieldsData = value;
}
/** Expert: change the value of this field. See setValue(String). */
public void setValue(byte[] value) {
+ if (!isBinary) {
+ throw new IllegalArgumentException("cannot set a byte[] value on a non-binary field");
+ }
fieldsData = value;
binaryLength = value.length;
binaryOffset = 0;
@@ -224,6 +236,9 @@
/** Expert: change the value of this field. See setValue(String). */
public void setValue(byte[] value, int offset, int length) {
+ if (!isBinary) {
+ throw new IllegalArgumentException("cannot set a byte[] value on a non-binary field");
+ }
fieldsData = value;
binaryLength = length;
binaryOffset = offset;
@@ -232,6 +247,12 @@
/** Expert: change the value of this field. See setValue(String). */
public void setValue(TokenStream value) {
+ if (isBinary) {
+ throw new IllegalArgumentException("cannot set a TokenStream value on a binary field");
+ }
+ if (isStored) {
+ throw new IllegalArgumentException("cannot set a TokenStream value on a stored field");
+ }
fieldsData = value;
}
Modified: lucene/java/trunk/src/test/org/apache/lucene/document/TestDocument.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/document/TestDocument.java?rev=754789&r1=754788&r2=754789&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/document/TestDocument.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/document/TestDocument.java Sun Mar 15 23:24:39 2009
@@ -260,4 +260,23 @@
dir.close();
assertEquals("did not see all IDs", 7, result);
}
+
+ public void testFieldSetValueChangeBinary() {
+ Field field1 = new Field("field1", new byte[0],
+ Field.Store.YES);
+ Field field2 = new Field("field2", "",
+ Field.Store.YES, Field.Index.ANALYZED);
+ try {
+ field1.setValue("abc");
+ fail("did not hit expected exception");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+ try {
+ field2.setValue(new byte[0]);
+ fail("did not hit expected exception");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+ }
}