Index: src/test/org/apache/lucene/index/TestIndexWriter.java =================================================================== --- src/test/org/apache/lucene/index/TestIndexWriter.java (revision 592113) +++ src/test/org/apache/lucene/index/TestIndexWriter.java (working copy) @@ -1607,7 +1607,7 @@ // Just intercepts all merges & verifies that we are never // merging a segment with >= 20 (maxMergeDocs) docs - private class MyMergeScheduler implements MergeScheduler { + private class MyMergeScheduler extends MergeScheduler { synchronized public void merge(IndexWriter writer) throws CorruptIndexException, IOException { Index: src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java =================================================================== --- src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (revision 592113) +++ src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (working copy) @@ -31,7 +31,7 @@ * having to create and manage application level * threads. */ -public class ConcurrentMergeScheduler implements MergeScheduler { +public class ConcurrentMergeScheduler extends MergeScheduler { private int mergeThreadPriority = -1; Index: src/java/org/apache/lucene/index/MergePolicy.java =================================================================== --- src/java/org/apache/lucene/index/MergePolicy.java (revision 592113) +++ src/java/org/apache/lucene/index/MergePolicy.java (working copy) @@ -52,7 +52,7 @@ * LogByteSizeMergePolicy}.

*/ -public interface MergePolicy { +public abstract class MergePolicy { /** OneMerge provides the information necessary to perform * an individual primitive merge operation, resulting in @@ -152,7 +152,7 @@ /** Exception thrown if there are any problems while * executing a merge. */ - public class MergeException extends RuntimeException { + public static class MergeException extends RuntimeException { public MergeException(String message) { super(message); } @@ -171,9 +171,9 @@ * @param segmentInfos the total set of segments in the index * @param writer IndexWriter instance */ - MergeSpecification findMerges(SegmentInfos segmentInfos, - IndexWriter writer) - throws CorruptIndexException, IOException; + abstract MergeSpecification findMerges(SegmentInfos segmentInfos, + IndexWriter writer) + throws CorruptIndexException, IOException; /** * Determine what set of merge operations are necessary in @@ -190,26 +190,26 @@ * SegmentInfo instances that must be merged away. This * may be a subset of all SegmentInfos. */ - MergeSpecification findMergesForOptimize(SegmentInfos segmentInfos, - IndexWriter writer, - int maxSegmentCount, - Set segmentsToOptimize) - throws CorruptIndexException, IOException; + abstract MergeSpecification findMergesForOptimize(SegmentInfos segmentInfos, + IndexWriter writer, + int maxSegmentCount, + Set segmentsToOptimize) + throws CorruptIndexException, IOException; /** * Release all resources for the policy. */ - void close(); + abstract void close(); /** * Returns true if a newly flushed (not from merge) * segment should use the compound file format. */ - boolean useCompoundFile(SegmentInfos segments, SegmentInfo newSegment); + abstract boolean useCompoundFile(SegmentInfos segments, SegmentInfo newSegment); /** * Returns true if the doc store files should use the * compound file format. */ - boolean useCompoundDocStore(SegmentInfos segments); + abstract boolean useCompoundDocStore(SegmentInfos segments); } Index: src/java/org/apache/lucene/index/LogMergePolicy.java =================================================================== --- src/java/org/apache/lucene/index/LogMergePolicy.java (revision 592113) +++ src/java/org/apache/lucene/index/LogMergePolicy.java (working copy) @@ -37,7 +37,7 @@ * file(s) for the segment.

*/ -public abstract class LogMergePolicy implements MergePolicy { +public abstract class LogMergePolicy extends MergePolicy { /** Defines the allowed range of log(size) for each * level. A level is computed by taking the max segment Index: src/java/org/apache/lucene/index/SerialMergeScheduler.java =================================================================== --- src/java/org/apache/lucene/index/SerialMergeScheduler.java (revision 592113) +++ src/java/org/apache/lucene/index/SerialMergeScheduler.java (working copy) @@ -21,7 +21,7 @@ /** A {@link MergeScheduler} that simply does each merge * sequentially, using the current thread. */ -public class SerialMergeScheduler implements MergeScheduler { +public class SerialMergeScheduler extends MergeScheduler { /** Just do the merges in sequence. We do this * "synchronized" so that even if the application is using Index: src/java/org/apache/lucene/index/MergeScheduler.java =================================================================== --- src/java/org/apache/lucene/index/MergeScheduler.java (revision 592113) +++ src/java/org/apache/lucene/index/MergeScheduler.java (working copy) @@ -24,13 +24,13 @@ * selected by a {@link MergePolicy}. The default * MergeScheduler is {@link ConcurrentMergeScheduler}. */ -public interface MergeScheduler { +public abstract class MergeScheduler { /** Run the merges provided by {@link IndexWriter#getNextMerge()}. */ - void merge(IndexWriter writer) + abstract void merge(IndexWriter writer) throws CorruptIndexException, IOException; /** Close this MergeScheduler. */ - void close() + abstract void close() throws CorruptIndexException, IOException; }