--- chandlerdb/persistence/LuceneContainer.py	2008-03-30 21:45:24.000000000 -0600
+++ chandlerdb/persistence/LuceneContainer.py.new	2009-04-11 21:19:29.000000000 -0600
@@ -20,7 +20,7 @@
     QueryParser, IndexReader, IndexWriter, IndexSearcher, Term, TermQuery, \
     JavaError, MatchAllDocsQuery, BooleanQuery, BooleanClause, Hit, \
     StringReader, PythonDirectory, PythonIndexOutput, PythonIndexInput, \
-    PythonLock, PythonHitCollector, initVM, CLASSPATH, IOException
+    PythonLock, PythonHitCollector, initVM, CLASSPATH, IOException, JArray
 initVM(CLASSPATH, maxstack='2m')
 
 from chandlerdb.util.c import UUID
@@ -67,7 +67,7 @@
         self.stream.seek(pos)
 
     def flushBuffer(self, buffer):
-        self.stream.write(buffer)
+        self.stream.write(''.join(buffer))
         self.stream.flush()
 
 class DbIndexInput(PythonIndexInput):
@@ -78,6 +78,7 @@
         self.stream = stream
         directory._streams.append(self)
         self.directory = directory
+	self.isClone = clone
 
     def length(self):
         return long(self.stream.length)
@@ -88,12 +89,14 @@
 
     def close(self):
         if self.directory is not None:
-            self.stream.close()
+	    if not self.isClone:
+            	self.stream.close()
+	    
             self.directory = None
 
     def readInternal(self, length, pos):
         self.stream.seek(pos)
-        return self.stream.read(length)
+        return JArray('byte')(self.stream.read(length))
 
     def seekInternal(self, pos):
         self.stream.seek(pos)
@@ -113,7 +116,7 @@
         self._locks.clear()
 
     def createOutput(self, name):
-        return DbIndexOutput(self, self.fileContainer.createFile(name))
+	return DbIndexOutput(self, self.fileContainer.createFile(name))
 
     def deleteFile(self, name):
         if self.fileContainer.fileExists(name):
@@ -140,7 +143,7 @@
 
     def openInput(self, name, bufferSize=0):
         try:
-            stream = self.fileContainer.openFile(name)
+	    stream = self.fileContainer.openFile(name)
         except RepositoryError:
             raise JavaError, IOException(name)
         return DbIndexInput(self, stream, bufferSize)
