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

Richard Eckart de Castilho updated UIMA-1732:
---------------------------------------------
    Labels: Stale  (was: )

This issue is marked as "stale" due to inactivity for 5 years or longer. If no 
further activity is detected on this issue, it is scheduled be closed as 
'unresolved' in 3 months time from now (Dec 2016).

> CPM setAnalysisEngine throws IndexOutOfBounds
> ---------------------------------------------
>
>                 Key: UIMA-1732
>                 URL: https://issues.apache.org/jira/browse/UIMA-1732
>             Project: UIMA
>          Issue Type: Bug
>          Components: Collection Processing
>    Affects Versions: 2.3
>            Reporter: Marshall Schor
>            Assignee: Jerry Cwiklik
>            Priority: Minor
>              Labels: Stale
>
> A user tried to do several calls to aCPM.setAnalysisEngine(xxx).  This method 
> is set up to remove a previous AE if it exists, replacing it with the new one.
> See http://markmail.org/message/3s2w7hxb24l3czky
> There are several issues:
> The method CPMEngine removeCasProcessor(int aCasProcessorIndex) has a bad 
> bounds test, need to change
> {noformat}
>     if (aCasProcessorIndex < 0 || aCasProcessorIndex > annotatorList.size())  
> to
>     if (aCasProcessorIndex < 0 || aCasProcessorIndex >= annotatorList.size())
> {noformat} 
> The CPMEngine class uses two different collections to represent lists of 
> analysis engines:
> *  casprocessorList (an array - includes AEs and Cas Consumers)
> * annotatorList (a linked list, not sure if it has both AEs and Cas Consumers)
> The CPMImpl setAnalysisEngine seems to have set something which shows up in 
> the array from getCasProcessors call, while the "annotatorList" is not 
> updated and remains empty.
> This method:
> {noformat}
>   public void removeCasProcessor(CasProcessor aCasProcessor) { 
>     cpEngine.removeCasProcessor(0);
>   }
> {noformat}
>  
> ignores its argument, and removes the 0'th CasProcessor.  This seems wrong, 
> given the Javadoc.
> The Javadoc for setAnalysisEngine's javadoc should emphasize that this is a 
> convenience method for the common case of supporting a single AE. If it is 
> called multiple times, it will replace the first AE (if it exists) .  The 
> Javadocs should be expanded to say if you want to add multiple AEs to a pipe 
> line, to not use this method, but use addCasProcessor instead. 



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

Reply via email to