| Index: lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java |
| =================================================================== |
| --- lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java (revision 1211440) |
| +++ lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java (working copy) |
| @@ -28,6 +28,9 @@ |
| import org.apache.lucene.util.Bits; |
| |
| import java.io.IOException; |
| +import java.lang.reflect.Method; |
| +import java.lang.reflect.Modifier; |
| +import java.util.HashSet; |
| |
| public class TestFilterIndexReader extends LuceneTestCase { |
| |
| @@ -167,4 +170,29 @@ |
| directory.close(); |
| target.close(); |
| } |
| + |
| + public void testOverrideMethods() throws Exception { |
| + HashSet<String> methodsThatShouldNotBeOverridden = new HashSet<String>(); |
| + methodsThatShouldNotBeOverridden.add("reopen"); |
| + methodsThatShouldNotBeOverridden.add("doOpenIfChanged"); |
| + methodsThatShouldNotBeOverridden.add("clone"); |
| + boolean fail = false; |
| + for (Method m : FilterIndexReader.class.getMethods()) { |
| + int mods = m.getModifiers(); |
| + if (Modifier.isStatic(mods) || Modifier.isFinal(mods)) { |
| + continue; |
| + } |
| + Class< ? > declaringClass = m.getDeclaringClass(); |
| + String name = m.getName(); |
| + if (declaringClass != FilterIndexReader.class && declaringClass != Object.class && !methodsThatShouldNotBeOverridden.contains(name)) { |
| + System.err.println("method is not overridden by FilterIndexReader: " + name); |
| + fail = true; |
| + } else if (declaringClass == FilterIndexReader.class && methodsThatShouldNotBeOverridden.contains(name)) { |
| + System.err.println("method should not be overridden by FilterIndexReader: " + name); |
| + fail = true; |
| + } |
| + } |
| + assertFalse("FilterIndexReader overrides (or not) some problematic methods; see log above", fail); |
| + } |
| + |
| } |