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 2015/11/30 06:03:35 UTC

svn commit: r1717173 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java

Author: schor
Date: Mon Nov 30 05:03:35 2015
New Revision: 1717173

URL: http://svn.apache.org/viewvc?rev=1717173&view=rev
Log:
[UIMA-4679] use get declared field when getting the typeIndexID

Modified:
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java?rev=1717173&r1=1717172&r2=1717173&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java Mon Nov 30 05:03:35 2015
@@ -201,11 +201,15 @@ public class FSClassRegistry {
      * copy in built-ins
      */
     for (int i = 0; i < jcasClassesInfoForBuiltins.length; i++) {
-      
-      JCasClassInfo jci;
-      jcasClassesInfo[i] = jci = jcasClassesInfoForBuiltins[i];
+  
+      JCasClassInfo jci = jcasClassesInfoForBuiltins[i];
+      jcasClassesInfo[i] = jci;
       if (jci != null) {
-        ts.setJCasRegisteredType(Misc.getStaticIntField(getJCasClass(i), "typeIndexID"), ts.getTypeForCode(i));
+        int v = Misc.getStaticIntField(getJCasClass(i), "typeIndexID");
+        // v is negative if not found, which is the case for types like FloatList (these can't be instantiated)
+        if (v >= 0) {
+          ts.setJCasRegisteredType(v, ts.getTypeForCode(i));
+        }
       }
     }
      
@@ -248,7 +252,7 @@ public class FSClassRegistry {
   private ArrayList<FeatureImpl> getFeatureFromJFRI(TypeSystemImpl ts, TypeImpl ti, ArrayList<FeatureImpl> collector) {
     Class<?> clazz = getJCasClass(ti.getCode());
     for (FeatureImpl fi : ti.getMergedStaticFeaturesIntroducedByThisType()) {
-      int indexJFRI = Misc.getStaticIntField(clazz, "_FI_" + fi.getShortName());
+      int indexJFRI = Misc.getStaticIntFieldNoInherit(clazz, "_FI_" + fi.getShortName());
       if (indexJFRI != Integer.MIN_VALUE) {  // that value is code for not found
         fi.registryIndex = indexJFRI;
         Misc.setWithExpand(collector, indexJFRI, fi);
@@ -276,7 +280,10 @@ public class FSClassRegistry {
       clazz = maybeLoadJCas(ti.getName(), ti.getClass().getClassLoader()); 
       if (null != clazz && TOP.class.isAssignableFrom(clazz)) {
         jcasClassInfo = createJCasClassInfo(clazz, ti); 
-        ts.setJCasRegisteredType(Misc.getStaticIntField(clazz, "typeIndexID"), ti);
+        int i = Misc.getStaticIntFieldNoInherit(clazz, "typeIndexID");
+        if (i >= 0) {
+          ts.setJCasRegisteredType(i, ti);
+        }
       }
       jcasClassesInfo[typecode] = jcasClassInfo;  // sets new one or default one
     }