You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by tw...@apache.org on 2009/07/27 07:54:39 UTC
svn commit: r798030 - in
/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima:
cas/impl/FSRBTIndex.java cas/impl/FSRBTSetIndex.java
internal/util/rb_trees/CompIntArrayRBT.java
internal/util/rb_trees/IntArrayRBT.java
Author: twgoetz
Date: Mon Jul 27 05:54:39 2009
New Revision: 798030
URL: http://svn.apache.org/viewvc?rev=798030&view=rev
Log:
UIMA-1352: fix the fix. Revert findKey() back to its old behavior of returning a tree node, not a key. Add API to get at the key of a node. Use that new API in the find() method of the set index.
https://issues.apache.org/jira/browse/UIMA-1352
Modified:
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTIndex.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTSetIndex.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/CompIntArrayRBT.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBT.java
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTIndex.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTIndex.java?rev=798030&r1=798029&r2=798030&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTIndex.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTIndex.java Mon Jul 27 05:54:39 2009
@@ -96,7 +96,7 @@
public FeatureStructure find(FeatureStructure fs) {
final FeatureStructureImpl fsi = (FeatureStructureImpl) fs;
- final int resultAddr = this.tree.findKey(fsi.getAddress());
+ final int resultAddr = this.tree.getKeyForNode(this.tree.findKey(fsi.getAddress()));
if (resultAddr > 0) {
return fsi.getCASImpl().createFS(resultAddr);
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTSetIndex.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTSetIndex.java?rev=798030&r1=798029&r2=798030&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTSetIndex.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSRBTSetIndex.java Mon Jul 27 05:54:39 2009
@@ -69,7 +69,7 @@
public FeatureStructure find(FeatureStructure fs) {
LowLevelCAS llc = fs.getCAS().getLowLevelCAS();
final int addr = llc.ll_getFSRef(fs);
- final int resultAddr = this.tree.findKey(addr);
+ final int resultAddr = this.tree.getKeyForNode(this.tree.findKey(addr));
if (resultAddr > 0) {
return llc.ll_getFSForRef(resultAddr);
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/CompIntArrayRBT.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/CompIntArrayRBT.java?rev=798030&r1=798029&r2=798030&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/CompIntArrayRBT.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/CompIntArrayRBT.java Mon Jul 27 05:54:39 2009
@@ -156,7 +156,7 @@
} else if (cv > 0) {
node = this.right[node];
} else {
- return this.key[node];
+ return node;
}
}
// node == NIL
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBT.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBT.java?rev=798030&r1=798029&r2=798030&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBT.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBT.java Mon Jul 27 05:54:39 2009
@@ -354,6 +354,10 @@
this.parent = grow(this.parent, initialSize);
this.color = grow(this.color, initialSize);
}
+
+ public int getKeyForNode(final int node) {
+ return this.key[node];
+ }
protected int treeInsert(int k) {
int x = this.root;
@@ -587,13 +591,16 @@
// return (node == (next - 1));
// }
+ /**
+ * Find the first node such that k <= key[node].
+ */
public int findKey(int k) {
int node = this.root;
while (node != NIL) {
if (k < this.key[node]) {
node = this.left[node];
} else if (k == this.key[node]) {
- return this.key[node];
+ return node;
} else {
node = this.right[node];
}