You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2017/07/07 21:47:33 UTC
svn commit: r1801235 -
/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java
Author: schor
Date: Fri Jul 7 21:47:33 2017
New Revision: 1801235
URL: http://svn.apache.org/viewvc?rev=1801235&view=rev
Log:
[UIMA-5483] support for empty linear type order
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java?rev=1801235&r1=1801234&r2=1801235&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java Fri Jul 7 21:47:33 2017
@@ -64,9 +64,11 @@ public class LinearTypeOrderBuilderImpl
private boolean hashCodeComputed = false;
private int computedHashCode;
+
+ private final boolean isEmptyTypeOrder;
- private TotalTypeOrder(String[] typeList, TypeSystem ts) throws CASException {
- this(encodeTypeList(typeList, ts), ts);
+ private TotalTypeOrder(String[] typeList, TypeSystem ts, boolean isEmpty) throws CASException {
+ this(encodeTypeList(typeList, ts), ts, isEmpty);
}
private static int[] encodeTypeList(String[] typeList, TypeSystem ts) throws CASException {
@@ -89,7 +91,7 @@ public class LinearTypeOrderBuilderImpl
* @param typeList the list of ordered types
* @param ts the type system
*/
- private TotalTypeOrder(int[] typeList, TypeSystem ts) {
+ private TotalTypeOrder(int[] typeList, TypeSystem ts, boolean isEmpty) {
super();
TypeSystemImpl tsi = (TypeSystemImpl) ts;
this.order = typeList;
@@ -102,6 +104,7 @@ public class LinearTypeOrderBuilderImpl
for (int i = 0; i < this.order.length; i++) {
this.typeCodeToOrder[this.order[i]] = (short)i;
}
+ this.isEmptyTypeOrder = isEmpty;
}
@@ -121,7 +124,7 @@ public class LinearTypeOrderBuilderImpl
// Look-up.
@Override
public boolean lessThan(Type t1, Type t2) {
- return lessThan(((TypeImpl) t1).getCode(), ((TypeImpl) t2).getCode());
+ return lessThan(((TypeImpl) t1).getCode(), ((TypeImpl) t2).getCode());
// return this.lt[((TypeImpl) t1).getCode()].get(((TypeImpl) t2)
// .getCode());
}
@@ -129,7 +132,6 @@ public class LinearTypeOrderBuilderImpl
@Override
public boolean lessThan(int t1, int t2) {
return this.typeCodeToOrder[t1] < this.typeCodeToOrder[t2];
-
// return this.lt[t1].get(t2);
}
@@ -161,15 +163,21 @@ public class LinearTypeOrderBuilderImpl
TotalTypeOrder other = (TotalTypeOrder) obj;
if (hashCode() != other.hashCode()) {
return false;
- }
+ }
if (!Arrays.equals(order, other.order)) {
return false;
}
return true;
}
+ @Override
+ public boolean isEmptyTypeOrder() {
+ return isEmptyTypeOrder;
+ }
+
}
+
private class Node extends GraphNode {
private Node(Object o) {
@@ -347,7 +355,7 @@ public class LinearTypeOrderBuilderImpl
* @return -
*/
public static LinearTypeOrder createTypeOrder(int[] typeList, TypeSystem ts) {
- return new TotalTypeOrder(typeList, ts);
+ return new TotalTypeOrder(typeList, ts, false);
}
@Override
@@ -407,30 +415,31 @@ public class LinearTypeOrderBuilderImpl
boolean doIn = true;
boolean doOut = true;
for (Iterator<Type> ni = typesToModify.iterator(); ni.hasNext();) {
- type = ni.next();
- String typeName = type.getName();
- final Node n = this.order.getNode(typeName);
- if (doIn && (nIn != null)) {
- if (n.inRank() == 0) {
- n.addAllPredecessors(nIn.getAllPredecessors());
- } else {
- doIn = false; // when going up the tree, when you find one
- // filled in, stop
- }
- }
- if (doOut && (nOut != null)) {
- if (n.outRank() == 0) {
- n.addAllSuccessors(nOut.getAllSuccessors());
- } else {
- doOut = false;
- }
- }
+ type = ni.next();
+ String typeName = type.getName();
+ final Node n = this.order.getNode(typeName);
+ if (doIn && (nIn != null)) {
+ if (n.inRank() == 0) {
+ n.addAllPredecessors(nIn.getAllPredecessors());
+ } else {
+ doIn = false; // when going up the tree, when you find one
+ // filled in, stop
+ }
+ }
+ if (doOut && (nOut != null)) {
+ if (n.outRank() == 0) {
+ n.addAllSuccessors(nOut.getAllSuccessors());
+ } else {
+ doOut = false;
+ }
+ }
}
} // for all types
}
@Override
public LinearTypeOrder getOrder() throws CASException {
+ int origOrderSize = order.size();
addInheritanceTypes();
Node inRank0Nodes = new Node("");
Graph g = this.order.copy(inRank0Nodes);
@@ -451,7 +460,7 @@ public class LinearTypeOrderBuilderImpl
// for (int i = 0; i < totalOrder.length; i++) {
// System.out.println(" " + totalOrder[i]);
// }
- return new TotalTypeOrder(totalOrder, this.ts);
+ return new TotalTypeOrder(totalOrder, this.ts, origOrderSize == 0);
}
}