[ 
https://issues.apache.org/jira/browse/UIMA-6382?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard Eckart de Castilho updated UIMA-6382:
---------------------------------------------
    Description: 
The {{CasCreationUtils}} class is the way of creating new CAS instances, but 
its signatures are becoming a bit unwieldy. E.g. we have a 
{{CasCreationUtils.createCas()}} to create a CAS without any type system 
definition and we have a {{CasCreationUtils.createCas(tsd, null, null, null)}} 
to create one with a type system definition and nothing really in between.

In would propose investigating a builder-like approach where we could write 
something like:

{code}
CAS cas = CAS.builder().withTypeSystem(tsd).build();

CAS cas = CAS.builder()
   .withDefinition(CasDefinition)
   .withTypeSystem(tsd)
   .withTypePriorities(...)
   .withFsIndexes(...)
   .addAnalysisEngineDescription(...) // can be called multiple times
   .addMetaDataObject(...) // can be called multiple times
   .withResourceManager(...)
   .withProperties(...)
   .withProperty(...)
   .build();
{code}


  was:
The {{CasCreationUtils}} class is the way of creating new CAS instances, but 
its signatures are becoming a bit unwieldy. E.g. we have a 
{{CasCreationUtils.createCas()}} to create a CAS without any type system 
definition and we have a {{CasCreationUtils.createCas(tsd, null, null, null)}} 
to create one with a type system definition and nothing really in between.

In would propose investigating a builder-like approach where we could write 
something like:

```
CAS cas = CAS.builder().withTypeSystem(tsd).build();

CAS cas = CAS.builder()
   .withDefinition(CasDefinition)
   .withTypeSystem(tsd)
   .withTypePriorities(...)
   .withFsIndexes(...)
   .addAnalysisEngineDescription(...) // can be called multiple times
   .addMetaDataObject(...) // can be called multiple times
   .withResourceManager(...)
   .withProperties(...)
   .withProperty(...)
   .build();
```


> Better alternative for CasCreationUtils
> ---------------------------------------
>
>                 Key: UIMA-6382
>                 URL: https://issues.apache.org/jira/browse/UIMA-6382
>             Project: UIMA
>          Issue Type: New Feature
>          Components: Core Java Framework
>            Reporter: Richard Eckart de Castilho
>            Priority: Minor
>
> The {{CasCreationUtils}} class is the way of creating new CAS instances, but 
> its signatures are becoming a bit unwieldy. E.g. we have a 
> {{CasCreationUtils.createCas()}} to create a CAS without any type system 
> definition and we have a {{CasCreationUtils.createCas(tsd, null, null, 
> null)}} to create one with a type system definition and nothing really in 
> between.
> In would propose investigating a builder-like approach where we could write 
> something like:
> {code}
> CAS cas = CAS.builder().withTypeSystem(tsd).build();
> CAS cas = CAS.builder()
>    .withDefinition(CasDefinition)
>    .withTypeSystem(tsd)
>    .withTypePriorities(...)
>    .withFsIndexes(...)
>    .addAnalysisEngineDescription(...) // can be called multiple times
>    .addMetaDataObject(...) // can be called multiple times
>    .withResourceManager(...)
>    .withProperties(...)
>    .withProperty(...)
>    .build();
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to