This is a true bug.  I've reported it in Jira:
https://issues.apache.org/jira/browse/UIMA-3603

I've added a fix and implemented some new tests for edge cases, including this
one which was failing.  Will check it in shortly.


-Marshall

On 2/6/2014 2:16 PM, Marshall Schor wrote:
> I can reproduce this with a simple bit of top level code; the failure seems to
> depend on an unusual order of making Feature Structures, and setting up the
> DocumentAnnotation instance.
>
> I'll take a look.
>
> -Marshall
>
> On 2/6/2014 7:38 AM, Peter Klügl wrote:
>> I can fix the xmiCAS if I change the address of the DocumentAnnotation
>> to be lower than the Year...
>>
>> Peter
>>
>> Am 06.02.2014 13:23, schrieb Peter Klügl:
>>> Hi,
>>>
>>> if I open the following xmiCAS in the CAS Editor, remove the Year
>>> annotation and try to save the file, then I get the same exception. The
>>> other annotations are removable...
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <xmi:XMI xmlns:Title="http:///uima/ruta/example/Title.ecore";
>>> xmlns:cas="http:///uima/cas.ecore";
>>> xmlns:type="http:///org/apache/uima/ruta/type.ecore";
>>> xmlns:xmi="http://www.omg.org/XMI";
>>> xmlns:Author="http:///uima/ruta/example/Author.ecore";
>>> xmlns:tcas="http:///uima/tcas.ecore";
>>> xmlns:example="http:///uima/ruta/example.ecore"; xmi:version="2.0">
>>>     <cas:NULL xmi:id="0"/>
>>>     <cas:Sofa xmi:id="1" sofaNum="1" sofaID="_InitialView"
>>> mimeType="text" sofaString="Ogren, P.V., Wetzler, P.G., Bethard, S.:
>>> ClearTK: A UIMA Toolkit for Statistical Natural Language Processing. In:
>>> UIMA for NLP workshop at LREC 08. (2008)&#13;&#10;"/>
>>>     <example:Year xmi:id="8" sofa="1" begin="148" end="154"/>
>>>     <example:Author xmi:id="12" sofa="1" begin="0" end="40"/>
>>>     <example:Title xmi:id="16" sofa="1" begin="41" end="109"/>
>>>     <tcas:DocumentAnnotation xmi:id="20" sofa="1" begin="0" end="156"
>>> language="x-unspecified"/>
>>>     <cas:View sofa="1" members="8 12 16 20"/>
>>> </xmi:XMI>
>>>
>>>
>>> Peter
>>>
>>> Am 06.02.2014 12:56, schrieb Peter Klügl:
>>>> Hi,
>>>>
>>>> has anyone seen the following exception. I have no idea what can cause
>>>> this problem. (the typeCode is 0 or something causing the feats int
>>>> array to be null). I added the method that causes the problem below. It
>>>> just removes some annotations dependent of its type.
>>>>
>>>> I was thinking that the problem is caused by removing annotations that
>>>> are indexed and are the value of the feature of another indexed
>>>> annotation. However, that works for almost all types. I would assume
>>>> that this functionality would not depend on the actual type or the order
>>>> in the type system, right?
>>>>
>>>> Any ideas is greatly appreciated.
>>>>
>>>> java.lang.NullPointerException
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.enqueueFeatures(XmiCasSerializer.java:593)
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.enqueueFeaturesOfIndexed(XmiCasSerializer.java:521)
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.serialize(XmiCasSerializer.java:241)
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer$XmiCasDocSerializer.access$700(XmiCasSerializer.java:108)
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSerializer.java:1551)
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSerializer.java:1616)
>>>>     at
>>>> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSerializer.java:1567)
>>>>     at
>>>> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler.writeXmi(RerunActionHandler.java:652)
>>>>     at
>>>> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler.access$0(RerunActionHandler.java:647)
>>>>     at
>>>> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler$RerunHandlerJob.writeCleanInputFiles(RerunActionHandler.java:378)
>>>>     at
>>>> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler$RerunHandlerJob.evalRutaWithClassPathScript(RerunActionHandler.java:196)
>>>>     at
>>>> org.apache.uima.ruta.testing.ui.handlers.RerunActionHandler$RerunHandlerJob.run(RerunActionHandler.java:182)
>>>>     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
>>>>
>>>>
>>>>     private void prepareCas(CAS cas) {
>>>>       if (!includedTypes.isEmpty()) {
>>>>         // exclude all other types if there are some included types
>>>>         excludedTypes = new ArrayList<String>();
>>>>         List<Type> types =
>>>> cas.getTypeSystem().getProperlySubsumedTypes(cas.getAnnotationType());
>>>>         for (Type type : types) {
>>>>           if (!includedTypes.contains(type.getName())) {
>>>>             excludedTypes.add(type.getName());
>>>>           }
>>>>         }
>>>>       }
>>>>       if (includedTypes.isEmpty() && excludedTypes.isEmpty()) {
>>>>         // remove all annotation in default settings
>>>>         String documentText = cas.getDocumentText();
>>>>         cas.reset();
>>>>         cas.setDocumentText(documentText);
>>>>       } else {
>>>>         List<AnnotationFS> toRemove = new LinkedList<AnnotationFS>();
>>>>         AnnotationIndex<AnnotationFS> annotationIndex =
>>>> cas.getAnnotationIndex();
>>>>         for (AnnotationFS annotationFS : annotationIndex) {
>>>>           Type type = annotationFS.getType();
>>>>           String typeName = type.getName();
>>>>           if (includedTypes.contains(typeName) ||
>>>> !excludedTypes.contains(typeName)) {
>>>>             toRemove.add(annotationFS);
>>>>           }
>>>>         }
>>>>         for (AnnotationFS each : toRemove) {
>>>>           if (!cas.getDocumentAnnotation().equals(each)) {
>>>>             cas.removeFsFromIndexes(each);
>>>>           }
>>>>         }
>>>>       }
>>>>     }
>>>>
>

Reply via email to