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());
}