Author: schor
Date: Thu Jun  9 19:09:54 2016
New Revision: 1747582

URL: http://svn.apache.org/viewvc?rev=1747582&view=rev
Log:
[UIMA-4674] Remove "implements Comparable<FeatureStructure>" from 
FeatureStructureImplC, because some user-written JCas classes might be defined 
with implements Comparable<Foo>, and Java complains if there are two of these 
with different types. Change all spots which depended on this to reference an 
explicit common comparator.  

Modified:
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/AllFSs.java
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/AllFSs.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/AllFSs.java?rev=1747582&r1=1747581&r2=1747582&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/AllFSs.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/AllFSs.java
 Thu Jun  9 19:09:54 2016
@@ -67,7 +67,7 @@ class AllFSs {
   }
     
   ArrayList<TOP> getAllFSsSorted() {
-    Collections.sort(toBeScanned);
+    Collections.sort(toBeScanned, FeatureStructureImplC::compare);
     return toBeScanned;
   }
   

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java?rev=1747582&r1=1747581&r2=1747582&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
 Thu Jun  9 19:09:54 2016
@@ -2740,7 +2740,7 @@ public class BinaryCasSerDes6 implements
 //        : ((Set<TOP>)fssx).stream();
 
     final int[] context = {0, 0};  
-    fss.sorted()
+    fss.sorted(FeatureStructureImplC::compare)
       .forEachOrdered(fs -> {
         // skip write if typemapping, and target type isn't there
 //          if (fs._id == 199) { 

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java?rev=1747582&r1=1747581&r2=1747582&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java
 Thu Jun  9 19:09:54 2016
@@ -184,9 +184,9 @@ public class CommonSerDesSequential {
   void setHeapEnd(int heapEnd) { this.heapEnd = heapEnd; }
   
   private void merge() {
-    Collections.sort(pending);
+    Collections.sort(pending, FeatureStructureImplC::compare);
     sortedFSs.addAll(pending);
     pending.clear();
-    Collections.sort(sortedFSs);
+    Collections.sort(sortedFSs, FeatureStructureImplC::compare);
   }
 }

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java?rev=1747582&r1=1747581&r2=1747582&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
 Thu Jun  9 19:09:54 2016
@@ -70,7 +70,7 @@ import org.apache.uima.jcas.impl.JCasImp
  *     -- can't be static - may be multiple type systems in use
  * 
  */
-public class FeatureStructureImplC implements FeatureStructure, Cloneable, 
Comparable<FeatureStructure> {
+public class FeatureStructureImplC implements FeatureStructure, Cloneable {
 
   // note: these must be enabled to make the test cases work
   public static final String DISABLE_RUNTIME_FEATURE_VALIDATION = 
"uima.disable_runtime_feature_validation";
@@ -1177,16 +1177,6 @@ public class FeatureStructureImplC imple
     Misc.internalError();
     return null;  // needed to avoid compile error
   }
-
-  
-  /* (non-Javadoc)
-   * Supports "natural" compare order based on id values
-   * @see java.lang.Comparable#compareTo(java.lang.Object)
-   */
-  @Override
-  public int compareTo(FeatureStructure o) {
-    return Integer.compare(this._id, o.id());
-  }
   
   protected boolean _inSetSortedIndex() { return (_flags & 
IN_SET_SORTED_INDEX) != 0;}
   protected void _setInSetSortedIndexed() { _flags |= IN_SET_SORTED_INDEX; }
@@ -1403,5 +1393,8 @@ public class FeatureStructureImplC imple
     _typeImpl = ti;
   }
   
+  public static int compare(FeatureStructureImplC a, FeatureStructureImplC b) {
+    return Integer.compare(a._id, b._id);
+  }
 
 }
\ No newline at end of file

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java?rev=1747582&r1=1747581&r2=1747582&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java
 Thu Jun  9 19:09:54 2016
@@ -112,8 +112,8 @@ public class FSBagIndexTest extends Test
       r.add(it.get());
       it.moveToNext();
     }
-    Collections.sort(r);
-    Arrays.sort(ns);
+    Collections.sort(r, FeatureStructureImplC::compare);
+    Arrays.sort(ns, FeatureStructureImplC::compare);
     assertTrue(Arrays.equals(ns, r.toArray()));
     assertFalse(it.isValid());
   }


Reply via email to