You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2007/05/01 21:44:26 UTC

svn commit: r534214 - in /incubator/uima/uimaj/trunk/uimaj-core/src: main/java/org/apache/uima/jcas/cas/AnnotationBase.java test/java/org/apache/uima/cas/test/JcasSofaTest.java

Author: alally
Date: Tue May  1 12:44:25 2007
New Revision: 534214

URL: http://svn.apache.org/viewvc?view=rev&rev=534214
Log:
Fix AnnotationBase.getSofa()
UIMA-389: https://issues.apache.org/jira/browse/UIMA-389

Modified:
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java
    incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java?view=diff&rev=534214&r1=534213&r2=534214
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java Tue May  1 12:44:25 2007
@@ -62,7 +62,8 @@
   public SofaFS getSofa() {
     if (AnnotationBase_Type.featOkTst && ((AnnotationBase_Type) jcasType).casFeat_sofa == null)
       this.jcasType.jcas.throwFeatMissing("sofa", "uima.tcas.Annotation");
-    return (SofaFS) jcasType.ll_cas.ll_getFSForRef(addr);
+    return (SofaFS) jcasType.ll_cas.ll_getFSForRef(
+            jcasType.ll_cas.ll_getRefValue(addr, ((AnnotationBase_Type)jcasType).casFeatCode_sofa));
   }
 
   public CAS getView() {

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java?view=diff&rev=534214&r1=534213&r2=534214
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java Tue May  1 12:44:25 2007
@@ -27,14 +27,17 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
+import java.util.Iterator;
 import java.util.StringTokenizer;
 
 import junit.framework.TestCase;
 
+import org.apache.uima.UIMAFramework;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIndex;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.SofaFS;
+import org.apache.uima.cas.SofaID;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.admin.CASFactory;
 import org.apache.uima.cas.admin.CASMgr;
@@ -58,8 +61,10 @@
 import org.apache.uima.jcas.cas.Sofa;
 import org.apache.uima.jcas.tcas.Annotation;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.resource.metadata.impl.TypeSystemDescription_impl;
 import org.apache.uima.test.junit_extension.JUnitExtension;
 import org.apache.uima.util.CasCreationUtils;
+import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.XMLSerializer;
 import org.xml.sax.SAXException;
 
@@ -462,6 +467,46 @@
     } catch (Exception e) {
       JUnitExtension.handleException(e);
     }
+  }
+  
+  public void testIndexTwice() throws Exception {
+    try {
+      CAS newCas = CasCreationUtils.createCas(new TypeSystemDescription_impl(), null, null);
+      JCas newJCas = newCas.getJCas();
+      CAS view = newCas.createView("DetaggedView");
+      view.getJCas();
+
+      Annotation annot = new Annotation(newJCas);
+      annot.addToIndexes();
+      
+      Iterator annotIter = newJCas.getAnnotationIndex(Annotation.type).iterator();
+      Annotation annot2 = (Annotation)annotIter.next();
+      assertEquals(annot, annot2);
+      assertEquals(annot2.getSofa(), annot2.getCASImpl().getSofa());
+      
+      annot2.addToIndexes();
+    }
+    catch (Exception e) {
+      JUnitExtension.handleException(e);      
+    }    
+  }
+  
+  public void testGetSofa() throws Exception {
+    try {
+      File typeSystemFile = JUnitExtension.getFile("ExampleCas/testTypeSystem.xml");
+      TypeSystemDescription typeSystem = UIMAFramework.getXMLParser().parseTypeSystemDescription(
+              new XMLInputSource(typeSystemFile));
+      CAS newCas = CasCreationUtils.createCas(typeSystem, null, null);
+      File xcasFile = JUnitExtension.getFile("ExampleCas/multiSofaCas.xml"); 
+      XCASDeserializer.deserialize(new FileInputStream(xcasFile), newCas);
+      JCas newJCas = newCas.getJCas();
+      
+      SofaID sofaId = new SofaID_impl("EnglishDocument");
+      JCas view = newJCas.getView(newJCas.getSofa(sofaId));
+    }
+    catch (Exception e) {
+      JUnitExtension.handleException(e);      
+    }      
   }
 
   public static void main(String[] args) {