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

Marshall Schor resolved UIMA-5588.
----------------------------------
    Resolution: Fixed
      Assignee: Marshall Schor

> uv3: NPE during deserialization under certain circumstances
> -----------------------------------------------------------
>
>                 Key: UIMA-5588
>                 URL: https://issues.apache.org/jira/browse/UIMA-5588
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>    Affects Versions: 3.0.0SDK-beta
>            Reporter: Richard Eckart de Castilho
>            Assignee: Marshall Schor
>
> This was previously thought to be covered by UIMA-5586 - however, the problem 
> remains after the order of the deserialization had been fixed in UIMA-5586.
> When deserializing some binary CAS formats, there is a NPE in certain cases. 
> Here is an example that might serve for reproduction:
> {noformat}
>     @Test
>     public void test6LenientPlainUima() throws Exception
>     {
>         CAS source = JCasFactory.createJCas().getCas();
>         CAS target = JCasFactory.createJCas().getCas();
>         new DocumentMetaData(source.getJCas(), 0, 0).addToIndexes();
>         @SuppressWarnings("resource")
>         ByteArrayOutputStream bos = new ByteArrayOutputStream();
>         CasIOUtils.save(source, bos, COMPRESSED_FILTERED);
>         bos.close();
>         
>         CasIOUtils.load(new ByteArrayInputStream(bos.toByteArray()), target);
>     }
> {noformat}
> Mind this is a minimal code for reproduction. The same happens when 
> deserializing within the context of an initialized AnalysisEngine.
> The NPE only seems to be thrown when the `DocumentMetaData` is added via JCas:
> {noformat}
> java.lang.NullPointerException
>       at org.apache.uima.cas.impl.CASImpl.getView(CASImpl.java:2224)
>       at 
> org.apache.uima.cas.impl.BinaryCasSerDes6.deserializeAfterVersion(BinaryCasSerDes6.java:1892)
>       at 
> org.apache.uima.cas.impl.BinaryCasSerDes.reinit(BinaryCasSerDes.java:595)
>       at org.apache.uima.util.CasIOUtils.load(CasIOUtils.java:382)
>       at org.apache.uima.util.CasIOUtils.load(CasIOUtils.java:313)
>       at org.apache.uima.util.CasIOUtils.load(CasIOUtils.java:237)
>         ...
> {noformat}
> I have set up a similar test using only the plain CAS API which seems to work 
> fine:
> {noformat}
>     @Test
>     public void test6LenientPlainUima2() throws Exception
>     {
>         TypeSystemDescription tsd = new TypeSystemDescription_impl();
>         TypeDescription td = tsd.addType("DocumentMetaData", "", 
> CAS.TYPE_NAME_DOCUMENT_ANNOTATION);
>         td.addFeature("feat", "", CAS.TYPE_NAME_STRING);
>         
>         CAS source = CasCreationUtils.createCas(tsd, null, null, null);
>         CAS target = CasCreationUtils.createCas(tsd, null, null, null);
>         AnnotationFS dmd = source
>                 
> .createAnnotation(source.getTypeSystem().getType("DocumentMetaData"), 0, 0);
>         source.addFsToIndexes(dmd);
>         assertEquals("DocumentMetaData", 
> source.getDocumentAnnotation().getType().getName());
>         @SuppressWarnings("resource")
>         ByteArrayOutputStream bos = new ByteArrayOutputStream();
>         CasIOUtils.save(source, bos, COMPRESSED_FILTERED);
>         bos.close();
>         
>         CasIOUtils.load(new ByteArrayInputStream(bos.toByteArray()), target);
>     }
> {noformat}



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

Reply via email to