LUCENE-3420: Disable the finalness checks in TokenStream and Analyzer for implementing subclasses in different packages, where assertions are not enabled

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/branch_3x@1172228 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 1e8ac39..4f64196 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -28,6 +28,12 @@
   the number of terms of the query when rewrite(), in order to improve performance.
   (Robert Muir, Koji Sekiguchi)
 
+Test Cases
+
+* LUCENE-3420: Disable the finalness checks in TokenStream and Analyzer
+  for implementing subclasses in different packages, where assertions are not
+  enabled. (Uwe Schindler)
+
 ======================= Lucene 3.4.0 =======================
 
 Bug fixes
diff --git a/lucene/src/java/org/apache/lucene/analysis/Analyzer.java b/lucene/src/java/org/apache/lucene/analysis/Analyzer.java
index d03814f..087df77 100644
--- a/lucene/src/java/org/apache/lucene/analysis/Analyzer.java
+++ b/lucene/src/java/org/apache/lucene/analysis/Analyzer.java
@@ -48,6 +48,8 @@
   private boolean assertFinal() {
     try {
       final Class<?> clazz = getClass();
+      if (!clazz.desiredAssertionStatus())
+        return true;
       assert clazz.isAnonymousClass() ||
         (clazz.getModifiers() & (Modifier.FINAL | Modifier.PRIVATE)) != 0 ||
         (
diff --git a/lucene/src/java/org/apache/lucene/analysis/TokenStream.java b/lucene/src/java/org/apache/lucene/analysis/TokenStream.java
index e432132..d03d9ab 100644
--- a/lucene/src/java/org/apache/lucene/analysis/TokenStream.java
+++ b/lucene/src/java/org/apache/lucene/analysis/TokenStream.java
@@ -111,6 +111,8 @@
   private boolean assertFinal() {
     try {
       final Class<?> clazz = getClass();
+      if (!clazz.desiredAssertionStatus())
+        return true;
       assert clazz.isAnonymousClass() ||
         (clazz.getModifiers() & (Modifier.FINAL | Modifier.PRIVATE)) != 0 ||
         Modifier.isFinal(clazz.getMethod("incrementToken").getModifiers()) :