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/02 21:33:58 UTC
svn commit: r1712144 -
/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java
Author: schor
Date: Mon Nov 2 20:33:58 2015
New Revision: 1712144
URL: http://svn.apache.org/viewvc?rev=1712144&view=rev
Log:
[UIMA-4679] add better error checking for missing setters/getters
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=1712144&r1=1712143&r2=1712144&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 2 20:33:58 2015
@@ -52,6 +52,7 @@ import org.apache.uima.cas.function.JCas
import org.apache.uima.cas.function.JCas_setter_int;
import org.apache.uima.cas.function.JCas_setter_long;
import org.apache.uima.cas.function.JCas_setter_short;
+import org.apache.uima.jcas.cas.AnnotationBase;
import org.apache.uima.jcas.cas.Sofa;
import org.apache.uima.jcas.cas.TOP;
import org.apache.uima.util.Misc;
@@ -124,7 +125,10 @@ public class FSClassRegistry {
private static final MethodType fsGeneratorType = methodType(FeatureStructureImplC.class, TypeImpl.class, CASImpl.class);
private static final MethodType fsGeneratorArrayType = methodType(FeatureStructureImplC.class, TypeImpl.class, CASImpl.class, int.class);
-
+
+ // must preceed first (static) use
+ static private ThreadLocal<ArrayList<Exception>> errorSet = new ThreadLocal<ArrayList<Exception>>();
+
public static class GetterSetter {
final Object getter;
final Object setter;
@@ -171,8 +175,6 @@ public class FSClassRegistry {
reportErrors();
}
-
- static private ThreadLocal<ArrayList<Exception>> errorSet = new ThreadLocal<ArrayList<Exception>>();
// the loaded JCas cover classes, generators, setters, and getters. index is typecode; value is JCas cover class which may belong to a supertype.
private final JCasClassInfo[] jcasClassesInfo;
@@ -367,7 +369,10 @@ public class FSClassRegistry {
: (JCas_setter_generic<?>) callSite.getTarget().invokeExact();
}
} catch (NoSuchMethodException e) {
- if (jcasClass == Sofa.class && !isGetter) {return null;} // this one case is ok, setters blocked for sofa
+ if ((jcasClass == Sofa.class && !isGetter) ||
+ (jcasClass == AnnotationBase.class && !isGetter)) {
+ return null;
+ }
// report missing setter or getter
CASException casEx = new CASException(CASException.JCAS_FEATURENOTFOUND_ERROR,
jcasClass.getName(),