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 + } + } }