[ 
https://issues.apache.org/jira/browse/UIMA-4299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14375209#comment-14375209
 ] 

Marshall Schor commented on UIMA-4299:
--------------------------------------

The AnnotationIndex has a method, tree, which returns a tree of annotations.  
If the AnnotationIndex is type restricted, then there's a design choice.  The 
design is such that all the children will come from the AnnotationIndex<T> 
where T is a subtype of Annotation.  However, the current design allows the 
"top most" Annotation at the root of the tree to be of any type that's a 
subtype of Annotation. 

In doing the generics, this shows up as having the argument for the top level 
annotation be of type <T> (the type of the restricted index) or of type 
AnnotationFS - which is the supertype of all Annotations.

This also affects the type of the returned tree - it either contains just 
things of T or its subtypes, or it contains that for all elements except the 
root, which could be of any AnnotationFS type or subtype.

I guess in the interest of backwards compatibility, I thinking of this 
approach:  allow AnnotationFS for the argument, and define the resulting tree 
to be of type AnnotationTree<T> where the T represents the type that subsumes 
all of the items in the tree **except** the root.



> improve generics for UIMA indexes and iterators
> -----------------------------------------------
>
>                 Key: UIMA-4299
>                 URL: https://issues.apache.org/jira/browse/UIMA-4299
>             Project: UIMA
>          Issue Type: Improvement
>          Components: Core Java Framework
>    Affects Versions: 2.7.0SDK
>            Reporter: Marshall Schor
>            Priority: Minor
>             Fix For: 2.7.1SDK
>
>
> When the JCas is being used, there are Java classes for UIMA types.  
> Each index definition is associated with a top-most type in the type 
> hierarchy.
> Indexes are used to create iterators of various kinds; some of these 
> iterators are defined within classes which implement Iterable.  
> Add generic mechanisms to the Indexes and iterators to support Iterables 
> whose elements are JCas types. 
> Update the APIs that get indexes over particular types to allow specifying 
> those types by the type class, and use this for generic typing, so casts are 
> not necessary for user code.
> Make the generics work also when JCas is not in use.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to