Package org.apache.uima.jcas
Class JCasRegistry
java.lang.Object
org.apache.uima.jcas.JCasRegistry
Maintains a registry of JCas cover classes that have been loaded in order to be able to assign a
unique low-value positive int index to each loaded JCas class. Note that the same JCas class
loaded under two different class loaders may get two different numbers.
The internals maintain a weak reference to the loaded class in order to allow the index value to
be reused if the associated JCas class is garbaged collected.
This could happen if the JCas classes are loaded under a class loader which is a child of the
class loader of this framework class, and that child classloader later gets GC'd.
The register method is called from JCas cover class static initialization and returns the unique
index value for this class.
The associated int index is used in a lookup on a jcas registry array associated with a particular
type system, to get the associated Type. This supports the use cases of
- different type systems being used with the same loaded JCas classes, either
-- sequentially by a single instance of UIMA or
-- multiple instances of pipelines running in one JVM each with different type systems
-
Method Summary
Modifier and TypeMethodDescriptiongetClassForIndex
(int aIndex) Used for error message: When a particular loaded type system is missing the type that corresponds to a loaded JCas class (perhaps that class was loaded when another type system was being used, or it was just referred to in Java code (which causes it to be loaded) then the error message uses this to get the class to be able to print the class name Gets the JCas cover class for a given index.static boolean
getFeatOkTst
(String fullyQualTypeName) For a particular type, return true if that type should have run-time checking for use of fields defined in the JCas Model which are not present in the CAS.static int
NOT CURRENTLY USED Gets the number of cover classes that have been registered.static int
Registers a JCas cover class with this registry.
-
Method Details
-
register
Registers a JCas cover class with this registry. The registry will assign it a unique index, which is then used by the cover-class to identify itself to the JCas implementation. Before adding the class to the array list, see if there are any "free" slots in the array list- Parameters:
aJCasCoverClass
- the class to register- Returns:
- the unique index value for this class.
-
getFeatOkTst
For a particular type, return true if that type should have run-time checking for use of fields defined in the JCas Model which are not present in the CAS. If false, all fields in the JCas must be in the CAS type system at instantiation time, or an exception is thrown; this allows the runtime to skip this test.This is reserved for future use; it currently always returns true.
- Parameters:
fullyQualTypeName
- fully qualified type name- Returns:
- true if that type should have run-time checking for use of fields defined in the JCas Model which are not present in the CAS. If false, all fields in the JCas must be in the CAS type system at instantiation time, or an exception is thrown; this allows the runtime to skip this test.
-
getNumberOfRegisteredClasses
public static int getNumberOfRegisteredClasses()NOT CURRENTLY USED Gets the number of cover classes that have been registered.- Returns:
- the number of registered JCas cover classes
-
getClassForIndex
Used for error message: When a particular loaded type system is missing the type that corresponds to a loaded JCas class (perhaps that class was loaded when another type system was being used, or it was just referred to in Java code (which causes it to be loaded) then the error message uses this to get the class to be able to print the class name Gets the JCas cover class for a given index.- Parameters:
aIndex
- the index- Returns:
- the JCas cover class that was assigned the value
aIndex
during its registration,null
if none.
-