You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2013/03/14 18:33:42 UTC

svn commit: r1456567 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/core/ lucene/core/src/java/org/apache/lucene/index/ lucene/core/src/test/org/apache/lucene/index/ lucene/test-framework/ lucene/test-framework/src/java/org/apache/lucene/index/

Author: jpountz
Date: Thu Mar 14 17:33:42 2013
New Revision: 1456567

URL: http://svn.apache.org/r1456567
Log:
LUCENE-4833: Make IndexWriterConfig setters throw an exception when passed null if null is not a valid value (merged from r1456564).

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
    lucene/dev/branches/branch_4x/lucene/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java

Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1456567&r1=1456566&r2=1456567&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Thu Mar 14 17:33:42 2013
@@ -20,6 +20,11 @@ Changes in backwards compatibility polic
 * LUCENE-4642: Remove Tokenizer's and subclasses' ctors taking
   AttributeSource. (Renaud Delbru, Uwe Schindler, Steve Rowe)
 
+* LUCENE-4833: IndexWriterConfig used to use LogByteSizeMergePolicy when
+  calling setMergePolicy(null) although the default merge policy is
+  TieredMergePolicy. IndexWriterConfig setters now throw an exception when
+  passed null if null is not a valid value.
+
 New Features
 
 * LUCENE-4815: DrillSideways now allows more than one FacetRequest per

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java?rev=1456567&r1=1456566&r2=1456567&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java Thu Mar 14 17:33:42 2013
@@ -23,7 +23,6 @@ import org.apache.lucene.analysis.Analyz
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.index.DocumentsWriterPerThread.IndexingChain;
 import org.apache.lucene.index.IndexWriter.IndexReaderWarmer;
-import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.util.InfoStream;
 import org.apache.lucene.util.PrintStreamInfoStream;
@@ -167,6 +166,9 @@ public final class IndexWriterConfig ext
    * 
    * <p>Only takes effect when IndexWriter is first created. */
   public IndexWriterConfig setOpenMode(OpenMode openMode) {
+    if (openMode == null) {
+      throw new IllegalArgumentException("openMode must not be null");
+    }
     this.openMode = openMode;
     return this;
   }
@@ -188,13 +190,15 @@ public final class IndexWriterConfig ext
    * like NFS that do not support "delete on last close" semantics, which
    * Lucene's "point in time" search normally relies on.
    * <p>
-   * <b>NOTE:</b> the deletion policy cannot be null. If <code>null</code> is
-   * passed, the deletion policy will be set to the default.
+   * <b>NOTE:</b> the deletion policy cannot be null.
    *
    * <p>Only takes effect when IndexWriter is first created. 
    */
   public IndexWriterConfig setIndexDeletionPolicy(IndexDeletionPolicy delPolicy) {
-    this.delPolicy = delPolicy == null ? new KeepOnlyLastCommitDeletionPolicy() : delPolicy;
+    if (delPolicy == null) {
+      throw new IllegalArgumentException("indexDeletionPolicy must not be null");
+    }
+    this.delPolicy = delPolicy;
     return this;
   }
 
@@ -221,12 +225,14 @@ public final class IndexWriterConfig ext
   /**
    * Expert: set the {@link Similarity} implementation used by this IndexWriter.
    * <p>
-   * <b>NOTE:</b> the similarity cannot be null. If <code>null</code> is passed,
-   * the similarity will be set to the default implementation (unspecified).
+   * <b>NOTE:</b> the similarity cannot be null.
    *
    * <p>Only takes effect when IndexWriter is first created. */
   public IndexWriterConfig setSimilarity(Similarity similarity) {
-    this.similarity = similarity == null ? IndexSearcher.getDefaultSimilarity() : similarity;
+    if (similarity == null) {
+      throw new IllegalArgumentException("similarity must not be null");
+    }
+    this.similarity = similarity;
     return this;
   }
 
@@ -239,12 +245,14 @@ public final class IndexWriterConfig ext
    * Expert: sets the merge scheduler used by this writer. The default is
    * {@link ConcurrentMergeScheduler}.
    * <p>
-   * <b>NOTE:</b> the merge scheduler cannot be null. If <code>null</code> is
-   * passed, the merge scheduler will be set to the default.
+   * <b>NOTE:</b> the merge scheduler cannot be null.
    *
    * <p>Only takes effect when IndexWriter is first created. */
   public IndexWriterConfig setMergeScheduler(MergeScheduler mergeScheduler) {
-    this.mergeScheduler = mergeScheduler == null ? new ConcurrentMergeScheduler() : mergeScheduler;
+    if (mergeScheduler == null) {
+      throw new IllegalArgumentException("mergeScheduler must not be null");
+    }
+    this.mergeScheduler = mergeScheduler;
     return this;
   }
 
@@ -273,12 +281,14 @@ public final class IndexWriterConfig ext
    * Expert: {@link MergePolicy} is invoked whenever there are changes to the
    * segments in the index. Its role is to select which merges to do, if any,
    * and return a {@link MergePolicy.MergeSpecification} describing the merges.
-   * It also selects merges to do for forceMerge. (The default is
-   * {@link LogByteSizeMergePolicy}.
+   * It also selects merges to do for forceMerge.
    *
    * <p>Only takes effect when IndexWriter is first created. */
   public IndexWriterConfig setMergePolicy(MergePolicy mergePolicy) {
-    this.mergePolicy = mergePolicy == null ? new LogByteSizeMergePolicy() : mergePolicy;
+    if (mergePolicy == null) {
+      throw new IllegalArgumentException("mergePolicy must not be null");
+    }
+    this.mergePolicy = mergePolicy;
     return this;
   }
 
@@ -290,7 +300,7 @@ public final class IndexWriterConfig ext
    */
   public IndexWriterConfig setCodec(Codec codec) {
     if (codec == null) {
-      throw new NullPointerException();
+      throw new IllegalArgumentException("codec must not be null");
     }
     this.codec = codec;
     return this;
@@ -379,7 +389,10 @@ public final class IndexWriterConfig ext
    *
    * <p>Only takes effect when IndexWriter is first created. */
   IndexWriterConfig setIndexingChain(IndexingChain indexingChain) {
-    this.indexingChain = indexingChain == null ? DocumentsWriterPerThread.defaultIndexingChain : indexingChain;
+    if (indexingChain == null) {
+      throw new IllegalArgumentException("indexingChain must not be null");
+    }
+    this.indexingChain = indexingChain;
     return this;
   }
 
@@ -397,6 +410,9 @@ public final class IndexWriterConfig ext
    * @see #setRAMBufferSizeMB(double)
    */
   IndexWriterConfig setFlushPolicy(FlushPolicy flushPolicy) {
+    if (flushPolicy == null) {
+      throw new IllegalArgumentException("flushPolicy must not be null");
+    }
     this.flushPolicy = flushPolicy;
     return this;
   }
@@ -485,7 +501,10 @@ public final class IndexWriterConfig ext
   
   /** Convenience method that uses {@link PrintStreamInfoStream} */
   public IndexWriterConfig setInfoStream(PrintStream printStream) {
-    return setInfoStream(printStream == null ? InfoStream.NO_OUTPUT : new PrintStreamInfoStream(printStream));
+    if (printStream == null) {
+      throw new IllegalArgumentException("printStream must not be null");
+    }
+    return setInfoStream(new PrintStreamInfoStream(printStream));
   }
   
   @Override

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java?rev=1456567&r1=1456566&r2=1456567&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java Thu Mar 14 17:33:42 2013
@@ -231,30 +231,46 @@ public class TestIndexWriterConfig exten
     assertEquals(KeepOnlyLastCommitDeletionPolicy.class, conf.getIndexDeletionPolicy().getClass());
     conf.setIndexDeletionPolicy(new SnapshotDeletionPolicy(null));
     assertEquals(SnapshotDeletionPolicy.class, conf.getIndexDeletionPolicy().getClass());
-    conf.setIndexDeletionPolicy(null);
-    assertEquals(KeepOnlyLastCommitDeletionPolicy.class, conf.getIndexDeletionPolicy().getClass());
+    try {
+      conf.setIndexDeletionPolicy(null);
+      fail();
+    } catch (IllegalArgumentException e) {
+      // ok
+    }
 
     // Test MergeScheduler
     assertEquals(ConcurrentMergeScheduler.class, conf.getMergeScheduler().getClass());
     conf.setMergeScheduler(new SerialMergeScheduler());
     assertEquals(SerialMergeScheduler.class, conf.getMergeScheduler().getClass());
-    conf.setMergeScheduler(null);
-    assertEquals(ConcurrentMergeScheduler.class, conf.getMergeScheduler().getClass());
+    try {
+      conf.setMergeScheduler(null);
+      fail();
+    } catch (IllegalArgumentException e) {
+      // ok
+    }
 
     // Test Similarity: 
     // we shouldnt assert what the default is, just that its not null.
     assertTrue(IndexSearcher.getDefaultSimilarity() == conf.getSimilarity());
     conf.setSimilarity(new MySimilarity());
     assertEquals(MySimilarity.class, conf.getSimilarity().getClass());
-    conf.setSimilarity(null);
-    assertTrue(IndexSearcher.getDefaultSimilarity() == conf.getSimilarity());
+    try {
+      conf.setSimilarity(null);
+      fail();
+    } catch (IllegalArgumentException e) {
+      // ok
+    }
 
     // Test IndexingChain
     assertTrue(DocumentsWriterPerThread.defaultIndexingChain == conf.getIndexingChain());
     conf.setIndexingChain(new MyIndexingChain());
     assertEquals(MyIndexingChain.class, conf.getIndexingChain().getClass());
-    conf.setIndexingChain(null);
-    assertTrue(DocumentsWriterPerThread.defaultIndexingChain == conf.getIndexingChain());
+    try {
+      conf.setIndexingChain(null);
+      fail();
+    } catch (IllegalArgumentException e) {
+      // ok
+    }
 
     try {
       conf.setMaxBufferedDeleteTerms(0);
@@ -324,8 +340,12 @@ public class TestIndexWriterConfig exten
     assertEquals(TieredMergePolicy.class, conf.getMergePolicy().getClass());
     conf.setMergePolicy(new LogDocMergePolicy());
     assertEquals(LogDocMergePolicy.class, conf.getMergePolicy().getClass());
-    conf.setMergePolicy(null);
-    assertEquals(LogByteSizeMergePolicy.class, conf.getMergePolicy().getClass());
+    try {
+      conf.setMergePolicy(null);
+      fail();
+    } catch (IllegalArgumentException e) {
+      // ok
+    }
   }
 
   public void testLiveChangeToCFS() throws Exception {

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java?rev=1456567&r1=1456566&r2=1456567&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java Thu Mar 14 17:33:42 2013
@@ -33,6 +33,7 @@ import org.apache.lucene.document.Stored
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.FieldInfo.IndexOptions;
+import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.store.Directory;
 
@@ -270,7 +271,7 @@ class DocHelper {
    */ 
   public static SegmentInfoPerCommit writeDoc(Random random, Directory dir, Analyzer analyzer, Similarity similarity, Document doc) throws IOException {
     IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig( /* LuceneTestCase.newIndexWriterConfig(random, */ 
-        TEST_VERSION_CURRENT, analyzer).setSimilarity(similarity));
+        TEST_VERSION_CURRENT, analyzer).setSimilarity(similarity == null ? IndexSearcher.getDefaultSimilarity() : similarity));
     //writer.setUseCompoundFile(false);
     writer.addDocument(doc);
     writer.commit();