Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.0.1SDK
-
None
Description
UIMA allows multiple pipelines having multiple type systems to be run under one single class loader. Sometimes these type systems have somewhat different versions. When JCas is used (within one class loader) there can only be one instance of the JCas class definition. The implementation attempts to make variations work, but missed one:
The following use case is throwing an exception, but should be supported:
Given:
- JCas class S defining feature F
- JCas class T having S as its super class
- Type system defining Uima Type S with feature F
When this is committed, the JCas classes are loaded; and the "slot" for feature F is allocated in S.
Now have another type system defined with UIMA Type T having feature F, and supertype S.
This was throwing an exception. This might occur in practice when a slot is migrated from a subtype to a supertype in some (but not all) instances of type system definitions being run (typically in different UIMA pipelines, running together in one JVM within one class loader).
Have this work, by setting the slot offset for this type be the slot for F defined in the SuperType S.