uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Eckart de Castilho (JIRA)" <...@uima.apache.org>
Subject [jira] [Commented] (UIMA-5115) uv3 select() api for iterators and streams over CAS contents
Date Sun, 25 Sep 2016 08:26:20 GMT

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

Richard Eckart de Castilho commented on UIMA-5115:
--------------------------------------------------

Ok, so here is my argument...

If we infer the return type by the variable to which it is bound, we can happily do this:

{code}
SelectFSs<Token> selector = jcas.select().type("my.Token");
{code}

But we cannot do these:

{code}
1 | List<AnnotationFS> selector = jcas.select().type("my.Token").asList()
2 | doSomethingWith(jcas.select().type("my.Token"));
{code}

In case 1, we would have to introduce an additional signature of asList() which would interfere
with the normal typesafe one (i.e. once returning the generic type of SelectFSs and once obtaining
the generic type from the variable to which the result is assigned). So the List cannot have
the generic type AnnotationFS, but would need to use FeatureStructure or would require casting.

In case 2, Java is not smart enough to infer the generic type from the argument of "doSomethingWith"
and we would have to resort to type casting. So doSomethingWith could not accept an AnnotationFS
 but would have to be able to operate on a FeatureStructure.

{code}
1 | List<AnnotationFS> selector = (List<AnnotationFS) (List) jcas.select().type("my.Token").asList()
2 | doSomethingWith((List<AnnotationFS) (List) jcas.select().type("my.Token"));
{code}

With the following signatures, that ugly casting problem is resolved:

{code}
1 | List<AnnotationFS> selector = jcas.select().type("my.Token", AnnotationFS.class).asList()
2 | doSomethingWith(jcas.select().type("my.Token", AnnotationFS.class));
{code}



> uv3 select() api for iterators and streams over CAS contents
> ------------------------------------------------------------
>
>                 Key: UIMA-5115
>                 URL: https://issues.apache.org/jira/browse/UIMA-5115
>             Project: UIMA
>          Issue Type: New Feature
>          Components: Core Java Framework
>            Reporter: Marshall Schor
>            Priority: Minor
>             Fix For: 3.0.0SDKexp
>
>
> Design and implement a select() API based on uimaFIT's select, integrated well with Java
8 concepts.  Initial discussions in UIMA-1524.  Wiki with diagram: https://cwiki.apache.org/confluence/display/UIMA/UV3+Iterator+support



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

Mime
View raw message