Index: /home/dnaber/workspace/LuceneSVN/src/java/org/apache/lucene/store/RAMDirectory.java =================================================================== --- /home/dnaber/workspace/LuceneSVN/src/java/org/apache/lucene/store/RAMDirectory.java (Revision 171375) +++ /home/dnaber/workspace/LuceneSVN/src/java/org/apache/lucene/store/RAMDirectory.java (Arbeitskopie) @@ -30,7 +30,7 @@ * * @version $Id$ */ -public final class RAMDirectory extends Directory { +public final class RAMDirectory extends Directory implements Cloneable { Hashtable files = new Hashtable(); /** Constructs an empty {@link Directory}. */ @@ -191,4 +191,17 @@ /** Closes the store to future operations. */ public final void close() { } + + public Object clone() { + RAMDirectory clone = new RAMDirectory(); + // *deep* copy files. + for (java.util.Iterator it = files.entrySet().iterator(); it.hasNext();) { + java.util.Map.Entry entry = (java.util.Map.Entry) it.next(); + String name = (String) entry.getKey(); + RAMFile file = (RAMFile) entry.getValue(); + clone.files.put(new String(name), file.clone()); + } + return clone; + } + } Index: /home/dnaber/workspace/LuceneSVN/src/java/org/apache/lucene/store/RAMFile.java =================================================================== --- /home/dnaber/workspace/LuceneSVN/src/java/org/apache/lucene/store/RAMFile.java (Revision 171375) +++ /home/dnaber/workspace/LuceneSVN/src/java/org/apache/lucene/store/RAMFile.java (Arbeitskopie) @@ -18,8 +18,17 @@ import java.util.Vector; -class RAMFile { +class RAMFile implements Cloneable { Vector buffers = new Vector(); long length; long lastModified = System.currentTimeMillis(); + + public Object clone() { + RAMFile clone = new RAMFile(); + clone.buffers = (Vector)buffers.clone(); + clone.length = length; + clone.lastModified = lastModified; + return clone; + } + }