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];
       }