--- LuceneTrunkFreshPull/src/java/org/apache/lucene/index/ParallelReader.java	2006-04-21 13:48:58.000000000 -1000
+++ LuceneTrunk/src/java/org/apache/lucene/index/ParallelReader.java	2006-05-01 20:55:38.000000000 -1000
@@ -118,7 +118,7 @@
   // delete in all readers
   protected void doDelete(int n) throws IOException {
     for (int i = 0; i < readers.size(); i++) {
-      ((IndexReader)readers.get(i)).doDelete(n);
+      ((IndexReader)readers.get(i)).deleteDocument(n);
     }
     hasDeletions = true;
   }
@@ -126,7 +126,7 @@
   // undeleteAll in all readers
   protected void doUndeleteAll() throws IOException {
     for (int i = 0; i < readers.size(); i++) {
-      ((IndexReader)readers.get(i)).doUndeleteAll();
+      ((IndexReader)readers.get(i)).undeleteAll();
     }
     hasDeletions = false;
   }
@@ -162,25 +189,32 @@
 
   public TermFreqVector getTermFreqVector(int n, String field)
     throws IOException {
-    return ((IndexReader)fieldToReader.get(field)).getTermFreqVector(n, field);
+    IndexReader reader = ((IndexReader)fieldToReader.get(field));
+    return reader==null ? null : reader.getTermFreqVector(n, field);
   }
 
   public boolean hasNorms(String field) throws IOException {
-    return ((IndexReader)fieldToReader.get(field)).hasNorms(field);
+    IndexReader reader = ((IndexReader)fieldToReader.get(field));
+    return reader==null ? false : reader.hasNorms(field);
   }
 
   public byte[] norms(String field) throws IOException {
-    return ((IndexReader)fieldToReader.get(field)).norms(field);
+    IndexReader reader = ((IndexReader)fieldToReader.get(field));
+    return reader==null ? null : reader.norms(field);
   }
 
   public void norms(String field, byte[] result, int offset)
     throws IOException {
-     ((IndexReader)fieldToReader.get(field)).norms(field, result, offset);
+    IndexReader reader = ((IndexReader)fieldToReader.get(field));
+    if (reader!=null)
+      reader.norms(field, result, offset);
   }
 
   protected void doSetNorm(int n, String field, byte value)
     throws IOException {
-    ((IndexReader)fieldToReader.get(field)).doSetNorm(n, field, value);
+    IndexReader reader = ((IndexReader)fieldToReader.get(field));
+    if (reader!=null)
+      reader.doSetNorm(n, field, value);
   }
 
   public TermEnum terms() throws IOException {
@@ -192,7 +226,8 @@
   }
 
   public int docFreq(Term term) throws IOException {
-    return ((IndexReader)fieldToReader.get(term.field())).docFreq(term);
+    IndexReader reader = ((IndexReader)fieldToReader.get(term.field()));
+    return reader==null ? 0 : reader.docFreq(term);
   }
 
   public TermDocs termDocs(Term term) throws IOException {
@@ -231,7 +266,7 @@
     }
     return fieldSet;
   }
-
+  
   private class ParallelTermEnum extends TermEnum {
     private String field;
     private TermEnum termEnum;
@@ -244,11 +279,13 @@
     
     public ParallelTermEnum(Term term) throws IOException {
       field = term.field();
-      termEnum = ((IndexReader)fieldToReader.get(field)).terms(term);
+      IndexReader reader = ((IndexReader)fieldToReader.get(field));
+      if (reader!=null)
+        termEnum = reader.terms(term);
     }
     
     public boolean next() throws IOException {
-      if (field == null)
+      if (termEnum == null)
         return false;
 
       boolean next = termEnum.next();
@@ -270,9 +307,24 @@
         
     }
 
-    public Term term() { return termEnum.term(); }
-    public int docFreq() { return termEnum.docFreq(); }
-    public void close() throws IOException { termEnum.close(); }
+    public Term term() {
+      if (termEnum==null)
+        return null;
+      
+      return termEnum.term();
+    }
+    
+    public int docFreq() {
+      if (termEnum==null)
+        return 0;
+      
+      return termEnum.docFreq();
+    }
+    
+    public void close() throws IOException {
+      if (termEnum!=null)
+        termEnum.close();
+    }
 
   }
 
@@ -287,24 +339,40 @@
     public int freq() { return termDocs.freq(); }
 
     public void seek(Term term) throws IOException {
-      termDocs = ((IndexReader)fieldToReader.get(term.field())).termDocs(term);
+      IndexReader reader = ((IndexReader)fieldToReader.get(term.field()));
+      if (reader!=null)
+        termDocs = reader.termDocs(term);
     }
 
     public void seek(TermEnum termEnum) throws IOException {
       seek(termEnum.term());
     }
 
-    public boolean next() throws IOException { return termDocs.next(); }
+    public boolean next() throws IOException {
+      if (termDocs==null)
+        return false;
+      
+      return termDocs.next();
+    }
 
     public int read(final int[] docs, final int[] freqs) throws IOException {
+      if (termDocs==null)
+        return 0;
+      
       return termDocs.read(docs, freqs);
     }
 
     public boolean skipTo(int target) throws IOException {
+      if (termDocs==null)
+        return false;
+      
       return termDocs.skipTo(target);
     }
 
-    public void close() throws IOException { termDocs.close(); }
+    public void close() throws IOException {
+      if (termDocs!=null)
+        termDocs.close();
+    }
 
   }
 
@@ -315,11 +383,13 @@
     public ParallelTermPositions(Term term) throws IOException { seek(term); }
 
     public void seek(Term term) throws IOException {
-      termDocs = ((IndexReader)fieldToReader.get(term.field()))
-        .termPositions(term);
+      IndexReader reader = ((IndexReader)fieldToReader.get(term.field()));
+      if (reader!=null)
+        termDocs = reader.termPositions(term);
     }
 
     public int nextPosition() throws IOException {
+      // It is an error to call this if there is no next position, e.g. if termDocs==null
       return ((TermPositions)termDocs).nextPosition();
     }
 
