You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by "Adam Lally (JIRA)" <de...@uima.apache.org> on 2010/12/06 04:58:10 UTC
[jira] Created: (UIMA-1965) XMI Delta CAS Serialization doesn't
work when preexisting FS is indexed in a new View
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
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.
[jira] Closed: (UIMA-1965) XMI Delta CAS Serialization doesn't work
when preexisting FS is indexed in a new View
Posted by "Eddie Epstein (JIRA)" <de...@uima.apache.org>.
[ 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.
[jira] Assigned: (UIMA-1965) XMI Delta CAS Serialization doesn't
work when preexisting FS is indexed in a new View
Posted by "Eddie Epstein (JIRA)" <de...@uima.apache.org>.
[ https://issues.apache.org/jira/browse/UIMA-1965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eddie Epstein reassigned UIMA-1965:
-----------------------------------
Assignee: Eddie Epstein
> 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
>
> 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.