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

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

I just noticed you have introduced a Runnable_withException:

{noformat}
@FunctionalInterface
public interface Runnable_withException {
  void run() throws Exception;
}
{noformat}

What also seems to work (quickly hacked this up in Eclipse) is using a generic 
type for the exception which avoids having to throw/catch `Exception` and 
allows catching *one* more specific exception.

{noformat}
  public static class X {
    public <E extends Exception> void 
withFsMapping(Runnable_withGenericException<E> runnable) throws E {
      // ...
    }
  }
  
  @FunctionalInterface
  public interface Runnable_withGenericException<E extends Exception> {
    void run() throws E;
  }
  
  {
    X x = new X();
    try {
      x.withFsMapping(() -> {
        // Next line throws FileNotFoundException
        new FileInputStream("");
      });
    }
    catch (FileNotFoundException e) {
      // Here we can catch the FNFE
    }
  }
{noformat}

> uv3 support CAS deserialization subsequent low level access
> -----------------------------------------------------------
>
>                 Key: UIMA-5662
>                 URL: https://issues.apache.org/jira/browse/UIMA-5662
>             Project: UIMA
>          Issue Type: Improvement
>          Components: Core Java Framework
>    Affects Versions: 3.0.0SDK-beta
>            Reporter: Marshall Schor
>            Assignee: Marshall Schor
>            Priority: Minor
>             Fix For: 3.0.0SDK
>
>
> Some users depend 1) constant v2-ids for FSs preserved in deserialization and 
> serialization, and 2) low level cas API access to these.
> V3 normally doesn't maintain tables linking ids to FSs, as these (unless weak 
> refs are used) prevent GC of unreachable FSs.
> Based on a mode, set by -Duima.deserialize_perserve_ids, and also 
> controllable by new config option per deserialize call, alter the 
> deserialization for those deserializers which know about v2 ids, to put these 
> into the map used for low-level CAS access, using the actual v2 ids, and 
> change the v3 next available id for future new FSs to be 1 beyond the end.
> The -Duima.deserialize-preserve_ids global setting is needed to handle the 
> use case of some annotators using low-level APIs, when part of a pipeline is 
> "remoted". 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to