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 2018/07/03 19:36:29 UTC

svn commit: r1835015 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src: main/java/org/apache/uima/cas/ main/java/org/apache/uima/cas/impl/ main/resources/org/apache/uima/ test/java/org/apache/uima/cas/impl/ test/java/org/apache/uima/cas/test/

Author: schor
Date: Tue Jul  3 19:36:29 2018
New Revision: 1835015

URL: http://svn.apache.org/viewvc?rev=1835015&view=rev
Log:
[UIMA-5740] new check in getFeatureStructure API to insure feature is a fs. 

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCompare.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java?rev=1835015&r1=1835014&r2=1835015&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Tue Jul  3 19:36:29 2018
@@ -50,6 +50,11 @@ public class CASRuntimeException extends
 	public static final String INAPPROP_RANGE = "INAPPROP_RANGE";
 	
 	/**
+	 * Wrong access method "getFeatureValue" for a feature "{0}" in a FeatureStructure with type "{1}" whose range is "{2}" which is not a featureStructure.
+	 */
+	public static final String INAPPROP_RANGE_NOT_FS = "INAPPROP_RANGE_NOT_FS";
+	
+	/**
 	 * Setting a reference value "{0}" from a string is not supported.
 	 */
 	 public static final String SET_REF_FROM_STRING_NOT_SUPPORTED = "SET_REF_FROM_STRING_NOT_SUPPORTED";

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java?rev=1835015&r1=1835014&r2=1835015&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java Tue Jul  3 19:36:29 2018
@@ -36,7 +36,6 @@ import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.SofaFS;
 import org.apache.uima.cas.Type;
-import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.impl.SlotKinds.SlotKind;
 import org.apache.uima.internal.util.Misc;
 import org.apache.uima.jcas.JCas;
@@ -836,6 +835,7 @@ public class FeatureStructureImplC imple
   @Override
   public TOP getFeatureValue(Feature feat) {
     if (IS_ENABLE_RUNTIME_FEATURE_VALIDATION) _Check_feature_defined_for_this_type(feat);
+    _check_feature_range_is_FeatureStructure(feat, this);
     return _getFeatureValueNc((FeatureImpl) feat);
   }
   
@@ -1677,6 +1677,14 @@ public class FeatureStructureImplC imple
     }
   }
   
+  private void _check_feature_range_is_FeatureStructure(Feature feat, FeatureStructureImplC fs) {
+    Type range = feat.getRange();
+    if (range.isPrimitive()) {
+      throw new CASRuntimeException(CASRuntimeException.INAPPROP_RANGE_NOT_FS,
+          feat.getName(), fs.getType().getName(), feat.getRange().getName() );
+    }
+  }
+  
 //  private void featureValidation(Feature feat, Object x) {
 //    featureValidation(feat);
 //    if (feat.getRange())

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?rev=1835015&r1=1835014&r2=1835015&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Tue Jul  3 19:36:29 2018
@@ -542,6 +542,7 @@ INAPPROP_TYPE = Expected value of type "
 INAPPROP_FEAT = Feature "{0}" is not defined for type "{1}".
 INAPPROP_FEAT_X = Feature is not defined for type.
 INAPPROP_RANGE = Trying to access value of feature "{0}" as "{1}", but range of feature is "{2}".
+INAPPROP_RANGE_NOT_FS = Wrong access method "getFeatureValue" for a feature "{0}" in a FeatureStructure with type "{1}" whose range is "{2}" which is not a featureStructure.
 SET_REF_FROM_STRING_NOT_SUPPORTED = Setting a reference value "{0}" from a string is not supported.
 PRIMITIVE_VAL_FEAT = Trying to access value of feature "{0}" as feature structure, but is primitive type.
 TYPESYSTEM_NOT_LOCKED = Error accessing type system: the type system has not been committed.

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCompare.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCompare.java?rev=1835015&r1=1835014&r2=1835015&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCompare.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCompare.java Tue Jul  3 19:36:29 2018
@@ -107,6 +107,14 @@ public class XmiCompare {
       if (args == null || args.length == 0) {
         d1 = Paths.get("some-explicit-coded-path/uv2-out-some-suffix");
         d2 = Paths.get("some-explicit-coded-path/uv2-out-some-other-suffix");
+        d1 = Paths.get("c:/a/t/ipd2018/uv2-out-b4-2");
+//        d2 = Paths.get("c:/a/t/ipd2018/uv2-out-b4");
+//        d1 = Paths.get("c:/a/t/ipd2018/uv2-out-measAnnot-fsiter-2c-getSurroundSent");
+        d2 = Paths.get("c:/a/t/ipd2018/uv2-out-measAnnot-fsiter-2d-getSurroundSent-partial");
+        
+        d1 = Paths.get("c:/a/t/ipd2018/uv2-out-b4");
+        d1 = Paths.get("c:/a/t/ipd2018/uv2-out-jp-merge-outer");
+        d2 = Paths.get("c:/a/t/ipd2018/uv2-out-jp-merge");
 
         
 //        skip = 725;  // optional skip amount

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java?rev=1835015&r1=1835014&r2=1835015&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java Tue Jul  3 19:36:29 2018
@@ -364,11 +364,12 @@ public class FeatureStructureTest extend
 		}
 		assertTrue(caughtExc);
 		
+		// a "getter" test, not "setter" test, on purpose
     caughtExc = false;
     try {
       token.getFeatureValue(this.startFeature);
     } catch (CASRuntimeException e) {
-      assertTrue(e.getMessageKey().equals(CASRuntimeException.INAPPROP_RANGE));
+      assertTrue(e.getMessageKey().equals(CASRuntimeException.INAPPROP_RANGE_NOT_FS));
       caughtExc = true;
     }
     assertTrue(caughtExc);