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 2007/09/07 15:35:57 UTC

svn commit: r573579 - in /incubator/uima/uimaj/trunk/uimaj-core/src: main/java/org/apache/uima/cas/ main/java/org/apache/uima/cas/impl/ main/java/org/apache/uima/jcas/cas/ test/java/org/apache/uima/cas/test/

Author: twgoetz
Date: Fri Sep  7 06:35:56 2007
New Revision: 573579

URL: http://svn.apache.org/viewvc?rev=573579&view=rev
Log:
Jira UIMA-301: make CommonArrayFS super-interface for all CAS array interfaces.

https://issues.apache.org/jira/browse/UIMA-301

Modified:
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/ArrayFSImpl.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonArrayFSImpl.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringArrayFSImpl.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
    incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/ArrayFSTest.java
    incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/StringArrayTest.java

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/ArrayFS.java Fri Sep  7 06:35:56 2007
@@ -25,7 +25,7 @@
  * 
  * 
  */
-public interface ArrayFS extends FeatureStructure {
+public interface ArrayFS extends CommonArrayFS {
 
   /**
    * Return the size of the array.

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/StringArrayFS.java Fri Sep  7 06:35:56 2007
@@ -25,7 +25,7 @@
  * 
  * 
  */
-public interface StringArrayFS extends FeatureStructure {
+public interface StringArrayFS extends CommonArrayFS {
 
   /**
    * Return the size of the array.

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/ArrayFSImpl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/ArrayFSImpl.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/ArrayFSImpl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/ArrayFSImpl.java Fri Sep  7 06:35:56 2007
@@ -27,9 +27,10 @@
  * 
  * 
  */
-public class ArrayFSImpl extends FeatureStructureImplC implements ArrayFS {
+public class ArrayFSImpl extends CommonArrayFSImpl implements ArrayFS {
 
   private ArrayFSImpl() {
+    super();
     // not used
   }
 
@@ -62,10 +63,11 @@
   }
 
   /**
-   * @see org.apache.uima.cas.ArrayFS#copyFromArray(FeatureStructure[], int, int, int)
+   * @see org.apache.uima.cas.ArrayFS#copyFromArray(FeatureStructure[], int,
+   *      int, int)
    */
   public void copyFromArray(FeatureStructure[] src, int srcOffset, int destOffset, int length)
-          throws ArrayIndexOutOfBoundsException {
+      throws ArrayIndexOutOfBoundsException {
     if ((destOffset < 0) || ((destOffset + length) > size())) {
       throw new ArrayIndexOutOfBoundsException();
     }
@@ -80,10 +82,11 @@
   }
 
   /**
-   * @see org.apache.uima.cas.ArrayFS#copyToArray(int, FeatureStructure[], int, int)
+   * @see org.apache.uima.cas.ArrayFS#copyToArray(int, FeatureStructure[], int,
+   *      int)
    */
   public void copyToArray(int srcOffset, FeatureStructure[] dest, int destOffset, int length)
-          throws ArrayIndexOutOfBoundsException {
+      throws ArrayIndexOutOfBoundsException {
     if ((srcOffset < 0) || ((srcOffset + length) > size())) {
       throw new ArrayIndexOutOfBoundsException();
     }
@@ -103,6 +106,22 @@
     FeatureStructure[] outArray = new FeatureStructure[size];
     copyToArray(0, outArray, 0, size);
     return outArray;
+  }
+
+  public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) {
+    if ((srcOffset < 0) || ((srcOffset + length) > size())) {
+      throw new ArrayIndexOutOfBoundsException();
+    }
+    final int max = srcOffset + length;
+    int valueAddr;
+    for (int i = srcOffset; i < max; i++) {
+      valueAddr = this.casImpl.ll_getRefArrayValue(this.addr, i);
+      dest[i] = this.casImpl.ll_getFSForRef(valueAddr).toString();
+    }
+  }
+
+  public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) {
+    throw new UnsupportedOperationException();
   }
 
 }

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonArrayFSImpl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonArrayFSImpl.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonArrayFSImpl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonArrayFSImpl.java Fri Sep  7 06:35:56 2007
@@ -26,6 +26,7 @@
 public abstract class CommonArrayFSImpl extends FeatureStructureImplC {
 
   protected CommonArrayFSImpl() {
+    super();
   }
 
   protected CommonArrayFSImpl(CASImpl cas, int addr) {
@@ -33,7 +34,7 @@
   }
 
   public int size() {
-    return casImpl.ll_getArraySize(addr);
+    return this.casImpl.ll_getArraySize(this.addr);
   }
 
   public abstract void copyToArray(int srcOffset, String[] dest, int destOffset, int length);

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringArrayFSImpl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringArrayFSImpl.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringArrayFSImpl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringArrayFSImpl.java Fri Sep  7 06:35:56 2007
@@ -27,7 +27,7 @@
  * 
  * 
  */
-public class StringArrayFSImpl extends FeatureStructureImplC implements StringArrayFS {
+public class StringArrayFSImpl extends CommonArrayFSImpl implements StringArrayFS {
 
   private static class StringArrayGenerator implements FSGenerator {
 

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java Fri Sep  7 06:35:56 2007
@@ -127,4 +127,23 @@
     return outArray;
   }
 
+  public void copyFromArray(String[] src, int srcOffset, int destOffset, int length)
+      throws ArrayIndexOutOfBoundsException, NumberFormatException {
+    // TODO Auto-generated method stub
+    
+  }
+
+  public void copyToArray(int srcOffset, String[] dest, int destOffset, int length)
+      throws ArrayIndexOutOfBoundsException {
+    // TODO Auto-generated method stub
+    
+  }
+
+  public String[] toStringArray() {
+    final int size = size();
+    String[] strArray = new String[size];
+    copyToArray(0, strArray, 0, size);
+    return strArray;
+  }
+
 }

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java Fri Sep  7 06:35:56 2007
@@ -110,4 +110,11 @@
   public int size() {
     return jcasType.casImpl.ll_getArraySize(addr);
   }
+
+  public String[] toStringArray() {
+    final int size = size();
+    String[] strArray = new String[size];
+    copyToArray(0, strArray, 0, size);
+    return strArray;
+  }
 }

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/ArrayFSTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/ArrayFSTest.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/ArrayFSTest.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/ArrayFSTest.java Fri Sep  7 06:35:56 2007
@@ -75,6 +75,7 @@
     }
     assertTrue(exceptionCaught);
     ArrayFS array = this.cas.createArrayFS(0);
+    assertTrue(array.size() == 0);
     assertTrue(array != null);
     assertTrue(array.size() == 0);
     exceptionCaught = false;
@@ -92,6 +93,11 @@
       array.set(0, fs1);
       array.set(1, fs2);
       array.set(2, fs3);
+      String[] stringArray = array.toStringArray();
+      assertTrue(stringArray.length == 3);
+      for (int i = 0; i < array.size(); i++) {
+	assertNotNull(stringArray[i]);
+      }
     } catch (ArrayIndexOutOfBoundsException e) {
       assertTrue(false);
     }

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/StringArrayTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/StringArrayTest.java?rev=573579&r1=573578&r2=573579&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/StringArrayTest.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/StringArrayTest.java Fri Sep  7 06:35:56 2007
@@ -84,6 +84,11 @@
     } catch (ArrayIndexOutOfBoundsException e) {
       assertTrue(false);
     }
+    String[] stringArray = array.toStringArray();
+    assertTrue(array.size() == stringArray.length);
+    for (int i = 0; i < stringArray.length; i++) {
+      assertTrue(stringArray[i].equals(array.get(i)));
+    }
     exceptionCaught = false;
     try {
       array.set(-1, "1");