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

Eddie Epstein closed UIMA-1965.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 2.3.1SDK

The behavior of ignoring any operations on pre-existing FS dates back to the 
original implementation of parallel flows which used full XmiCas replies from 
delegates. 

> XMI Delta CAS Serialization doesn't work when preexisting FS is indexed in a 
> new View
> -------------------------------------------------------------------------------------
>
>                 Key: UIMA-1965
>                 URL: https://issues.apache.org/jira/browse/UIMA-1965
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>    Affects Versions: 2.3
>            Reporter: Adam Lally
>            Assignee: Eddie Epstein
>             Fix For: 2.3.1SDK
>
>
> I think I ran into a problem with XMI delta CAS serialization.  Here's my use 
> case:  I start with a CAS that has a FeatureStructure (not annotation) 
> indexed in the InitialView.  I want to send this to a remote service, wihch 
> will create a new view and add the exisitng FeatureStructure to the indexes 
> of that view.  With delta XMI CAS serialization, this does not seem to work.  
> The FeatureStructure is not present in the indexes of the new view.
> Here is a unit test (to be added to XmiCasDeserializerTest.java) that 
> illustrates the problem:
>   public void testDeltaCasIndexExistingFsInNewView() throws Exception {
>     CAS cas1 = CasCreationUtils.createCas(typeSystem, new 
> TypePriorities_impl(),
>             indexes);
>     CAS cas2 = CasCreationUtils.createCas(typeSystem, new 
> TypePriorities_impl(),
>             indexes);
>     cas1.setDocumentText("This is a test document in the initial view");
>     Type referentType = 
> cas1.getTypeSystem().getType("org.apache.uima.testTypeSystem.Referent");
>     FeatureStructure fs1 = cas1.createFS(referentType);
>     cas1.getIndexRepository().addFS(fs1);
>     
>     //serialize complete  
>     XmiSerializationSharedData sharedData = new XmiSerializationSharedData();
>     String xml = serialize(cas1, sharedData);
>     System.out.println(xml);
>     int maxOutgoingXmiId = sharedData.getMaxXmiId();
>     
>     //deserialize into cas2
>     XmiSerializationSharedData sharedData2 = new 
> XmiSerializationSharedData();      
>     this.deserialize(xml, cas2, sharedData2, true, -1);
>     CasComparer.assertEquals(cas1, cas2);
>     
>     //create Marker, add/modify fs and serialize in delta xmi format.
>     Marker marker = cas2.createMarker();
>     
>     //create View
>     CAS view = cas2.createView("NewView");
>     //add FS to index
>     Type referentType2 = 
> cas2.getTypeSystem().getType("org.apache.uima.testTypeSystem.Referent");
>     Iterator<FeatureStructure> fsIter = 
> cas2.getIndexRepository().getAllIndexedFS(referentType2);
>     while (fsIter.hasNext()) {
>       FeatureStructure fs = fsIter.next();
>       view.getIndexRepository().addFS(fs);
>     }
>     AnnotationFS cas2newAnnot = 
> view.createAnnotation(cas2.getAnnotationType(), 6, 8);
>     view.getIndexRepository().addFS(cas2newAnnot);
>     
>     // serialize cas2 in delta format 
>     String deltaxml1 = serialize(cas2, sharedData2, marker);
>     System.out.println(deltaxml1);
>     
>     //deserialize delta xmi into cas1
>     this.deserialize(deltaxml1, cas1, sharedData, true, maxOutgoingXmiId, 
> AllowPreexistingFS.allow);
>     
>     //check that new View contains the FS 
>     CAS deserView = cas1.getView("NewView");
>     Iterator<FeatureStructure> deserFsIter = 
> deserView.getIndexRepository().getAllIndexedFS(referentType);
>     assertTrue(deserFsIter.hasNext());
>   }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to