Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.8.1SDK
-
None
Description
A user reports the following problem:
- an inner aggregate (IA) is contained within an outer aggregate (OA)
- the OA has a sofa mapping specifying that initial view be mapped to "my_view" (MV).
- IA has components A1 and A2, plus a flow controller (IA_FC).
A1 and A2 correctly receive MV as the cas view, via sofa mapping. However, IA_FC does not - it receives the _InitialView.
When an aggregate is set up, there are two sofa mappings to consider; one is the calling context's sofa mapping (if any) up to that point; and then there is the aggregate's own sofa mapping from its descriptor. This 2nd sofa mapping specifies, for each delegate, a set of sofa mappings. In addition to mapping for delegates, it can also contain a mapping for the flow controller.
The intended operation is to set up sub-contexts for each delegate or flow controller, that has the merge of the calling context's sofa mapping and any mapping specified for the component. This merge is done, for example, in UimaContext_ImplBase method "createChild". This logic is missing for the analogous creation of the context for the flow controller. The fix is to (a) pull out this bit of merge logic into a subroutine, and do it in both the creation of the Annotator context, as well as the Flow controller context.
Test the fix to see if it fixes uima-as use case (if uima-as has this same issue).