The easiest place to create a test case is on Jira.  Open a Jira
bug for UIMA, and you can attach the test case.  When you do that,
please check the box that says something like, ok to include in
Apache code (so we can check it in and use it as regression test).

Groovy, hm.  Never used it before.  If it doesn't take me more than
5 min to set up in Eclipse, and I can still debug, not a problem ;-)

--Thilo

Philip Ogren wrote:
> Yes.  I will throw one together.  Would you mind if I used Groovy for
> this - or is that going to be annoying?  Let me know.  Also, from an
> earlier email I saw on this list it seems that attachments are a
> problem.  Is there some place where I could directly load a test case?
> 
> In the mean time, here is a work around I just put together (I'm still
> unit testing the code that uses this - so I'm not certain this is bug
> free):
> 
>    public static FSIterator getWindowIterator(JCas jCas, Annotation
> windowAnnotation, Type type)
>    {
>        ConstraintFactory constraintFactory = jCas.getConstraintFactory();
>              FeaturePath beginFeaturePath = jCas.createFeaturePath();
>        beginFeaturePath.addFeature(type.getFeatureByBaseName("begin"));
>        FSIntConstraint intConstraint =
> constraintFactory.createIntConstraint();
>        intConstraint.geq(windowAnnotation.getBegin());
>        FSMatchConstraint beginConstraint =
> constraintFactory.embedConstraint(beginFeaturePath, intConstraint);
> 
>        FeaturePath endFeaturePath = jCas.createFeaturePath();
>        endFeaturePath.addFeature(type.getFeatureByBaseName("end"));
>        intConstraint = constraintFactory.createIntConstraint();
>        intConstraint.leq(windowAnnotation.getEnd());
>        FSMatchConstraint endConstraint =
> constraintFactory.embedConstraint(endFeaturePath, intConstraint);
> 
>        FSMatchConstraint windowConstraint =
> constraintFactory.and(beginConstraint,endConstraint);
>        FSIndex windowIndex = jCas.getAnnotationIndex(type);
>        FSIterator windowIterator =
> jCas.createFilteredIterator(windowIndex.iterator(), windowConstraint);
> 
>        return windowIterator;
>    }
> 
> 
> 
> Thilo Goetz wrote:
>> That's a bug.  The underlying implementation of the two
>> iterator types you mention is totally different, hence
>> you see this only in one of them.  Any chance you could
>> provide a self-contained test case that exhibits this?
>>
>> --Thilo
>>
>> Philip Ogren wrote:
>>  
>>> I am having difficulty with using the FSIterator returned by the
>>> AnnotationIndex.subiterator(AnnotationFS) method.
>>> The following is a code fragment:
>>>
>>> AnnotationIndex annotationIndex = jCas.getAnnotationIndex(tokenType);
>>> FSIterator tokenIterator =
>>> annotationIndex.subiterator(sentenceAnnotation);
>>> annotationIterator.moveTo(tokenAnnotation);
>>>
>>>
>>> Here is the relevant portion of the stack trace:
>>>
>>>     java.lang.ClassCastException: edu.colorado.cslr.dessert.types.Token
>>>     at java.util.Collections.indexedBinarySearch(Unknown Source)
>>>     at java.util.Collections.binarySearch(Unknown Source)
>>>     at org.apache.uima.cas.impl.Subiterator.moveTo(Subiterator.java:224)
>>>
>>>
>>> If I change the second line to the following, then I do not have any
>>> problems with an exception being thrown.
>>>
>>> FSIterator tokenIterator = annotationIndex.iterator();
>>>
>>>
>>> Is this a bug or some misunderstanding on my part of how subiterator
>>> should work?
>>>
>>> Thanks,
>>> Philip
>>>     
>>
>>
>>   
> 

Reply via email to