org.apache.uima.cas.impl

## Class XmiSerializationSharedData

- java.lang.Object
- - org.apache.uima.cas.impl.XmiSerializationSharedData

-     public class XmiSerializationSharedData
      extends Object

  A container for data that is shared between the `XmiCasSerializer` and the `XmiCasDeserializer`. This has a number of uses:
  - Consistency of xmi:id values across serializations. If you pass an `XmiSerializationSharedData` instance to the deserializer, the deserializer will store information about the incoming xmi:id values. If you then pass the same `XmiSerializationSharedData` object to the serializer when you attempt to serialize the same CAS, all of the incoming FS will be serialized using the same xmi:id value that they had when they were deserialized.
  - Support for "out-of-typesystem data". If you call the XMI deserializer with the `lenient` parameter set to true, whenever it encounters an XMI element that doesn't correspond to a type in the type system, it will populate the `XmiSerializationSharedData` with information about these elements. If you then pass the same `XmiSerializationSharedData` object to the serializer when you attempt to serialize the same CAS, these out-of-typesystem FS will be reserialized without loss of information. References between in-typesystem and out-of-typesystem FS (in either direction) are maintained as well.
  - After calling the XmiCasSerializer and passing an `XmiSerializationSharedData`, you can call the `getMaxXmiId()` method to get the maximum xmi:id value in the serialized CAS. This feature, along with the consistency of xmi:id values, allows merging multiple XMI documents into a single CAS. See TODO.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `XmiSerializationSharedData.XmiArrayElement` Data structure holding the index and the xmi:id of an array or list element that is a reference to an out-of-typesystem FS.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XmiSerializationSharedData()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addNonsharedRefToFSMapping(int nonsharedFSAddr, int fsAddr)` Add mapping between the address of FS that is the value of a non-shared multi-valued feature of a FeatureStructure.
    `void` | `addOutOfTypeSystemArrayElement(int addr, int index, int xmiId)` Records an out-of-typesystem array element in the XmiSerializationSharedData.
    `void` | `addOutOfTypeSystemAttribute(int addr, String featName, String featVal)` Records an out-of-typesystem attribute that belongs to an in-typesystem FS.
    `void` | `addOutOfTypeSystemChildElements(int addr, String featName, List<String> featVals)` Records out-of-typesystem child elements that belong to an in-typesystem FS.
    `void` | `addOutOfTypeSystemElement(org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData elemData)` Records information about an XMI element that was not an instance of any type in the type system.
    `void` | `addOutOfTypeSystemViewMember(String sofaXmiId, String memberXmiId)` Records that an out-of-typesystem XMI element should be a member of the specified view.
    `void` | `clearIdMap()` Clears the ID mapping information that was populated in previous serializations or deserializations.
    `int[]` | `getAllFsAddressesInIdMap()` Get all FS Addresses that have been added to the id map.
    `int` | `getEncompassingFS(int nonsharedFS)`
    `int` | `getFsAddrForXmiId(int xmiId)` Gets the FS address that corresponds to the given xmi:id, in the most recent serialization or deserialization.
    `int` | `getMaxXmiId()` Gets the maximum xmi:id that has been generated or read so far.
    `int[]` | `getNonsharedMulitValuedFSs()`
    `List<XmiSerializationSharedData.XmiArrayElement>` | `getOutOfTypeSystemArrayElements(int addr)` Gets information about out-of-typesystem array elements.
    `List<org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData>` | `getOutOfTypeSystemElements()` Gets a List of `XmiSerializationSharedData.OotsElementData` objects, each of which describes an incoming XMI element that did not correspond to a Type in the TypeSystem.
    `org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData` | `getOutOfTypeSystemFeatures(int addr)` Gets information about out-of-typesystem features that belong to an in-typesystem FS.
    `List<String>` | `getOutOfTypeSystemViewMembers(String sofaXmiId)` Gets a List of xmi:id's (Strings) of all out-of-typesystem XMI elements that are members of the view with the given id.
    `boolean` | `hasOutOfTypeSystemArrayElements()`
    `String` | `toString()` For debugging purposes only.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### XmiSerializationSharedData

          public XmiSerializationSharedData()

  - ### Method Detail

    - #### getMaxXmiId

          public int getMaxXmiId()

      Gets the maximum xmi:id that has been generated or read so far.
      Returns:
        the maximum xmi:id

    - #### getFsAddrForXmiId

          public int getFsAddrForXmiId(int xmiId)

      Gets the FS address that corresponds to the given xmi:id, in the most recent serialization or deserialization.
      Parameters:
        `xmiId` - an xmi:id from the most recent XMI CAS that was serialized or deserialized.
      Returns:
        the FS address of the FeatureStructure corresponding to that xmi:id, -1 if none.

    - #### clearIdMap

          public void clearIdMap()

      Clears the ID mapping information that was populated in previous serializations or deserializations. TODO: maybe a more general reset that resets other things?

    - #### addOutOfTypeSystemElement

          public void addOutOfTypeSystemElement(org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData elemData)

      Records information about an XMI element that was not an instance of any type in the type system.
      Parameters:
        `elemData` - information about the out-of-typesystem XMI element

    - #### getOutOfTypeSystemElements

          public List<org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData> getOutOfTypeSystemElements()

      Gets a List of `XmiSerializationSharedData.OotsElementData` objects, each of which describes an incoming XMI element that did not correspond to a Type in the TypeSystem.
      Returns:
        List of `XmiSerializationSharedData.OotsElementData` objects

    - #### addOutOfTypeSystemViewMember

          public void addOutOfTypeSystemViewMember(String sofaXmiId,
                                                   String memberXmiId)

      Records that an out-of-typesystem XMI element should be a member of the specified view.
      Parameters:
        `sofaXmiId` - xmi:id of a Sofa
        `memberXmiId` - xmi:id of an out-of-typesystem element that should be a member of the view for the given Sofa

    - #### getOutOfTypeSystemViewMembers

          public List<String> getOutOfTypeSystemViewMembers(String sofaXmiId)

      Gets a List of xmi:id's (Strings) of all out-of-typesystem XMI elements that are members of the view with the given id.
      Parameters:
        `sofaXmiId` - xmi:id of a Sofa
      Returns:
        List of xmi:id's of members of the view for the given Sofa.

    - #### addOutOfTypeSystemAttribute

          public void addOutOfTypeSystemAttribute(int addr,
                                                  String featName,
                                                  String featVal)

      Records an out-of-typesystem attribute that belongs to an in-typesystem FS. This will be added to the attributes when that FS is reserialized.
      Parameters:
        `addr` - CAS address of the FS
        `featName` - name of the feature
        `featVal` - value of the feature, as a string

    - #### addOutOfTypeSystemChildElements

          public void addOutOfTypeSystemChildElements(int addr,
                                                      String featName,
                                                      List<String> featVals)

      Records out-of-typesystem child elements that belong to an in-typesystem FS. These will be added to the child elements when that FS is reserialized.
      Parameters:
        `addr` - CAS address of the FS
        `featName` - name of the feature (element tag name)
        `featVals` - values of the feature, as a List of strings

    - #### getOutOfTypeSystemFeatures

          public org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData getOutOfTypeSystemFeatures(int addr)

      Gets information about out-of-typesystem features that belong to an in-typesystem FS.
      Parameters:
        `addr` - CAS address of the FS
      Returns:
        object containing information about out-of-typesystem features (both attributes and child elements)

    - #### getAllFsAddressesInIdMap

          public int[] getAllFsAddressesInIdMap()

      Get all FS Addresses that have been added to the id map.
      Returns:
        an array containing all the FS addresses

    - #### getOutOfTypeSystemArrayElements

          public List<XmiSerializationSharedData.XmiArrayElement> getOutOfTypeSystemArrayElements(int addr)

      Gets information about out-of-typesystem array elements.
      Parameters:
        `addr` - the CAS address of an FSArray
      Returns:
        a List of `XmiSerializationSharedData.XmiArrayElement` objects, each of which holds the index and xmi:id of an array element that is a reference to an out-of-typesystem FS.

    - #### hasOutOfTypeSystemArrayElements

          public boolean hasOutOfTypeSystemArrayElements()

    - #### addOutOfTypeSystemArrayElement

          public void addOutOfTypeSystemArrayElement(int addr,
                                                     int index,
                                                     int xmiId)

      Records an out-of-typesystem array element in the XmiSerializationSharedData.
      Parameters:
        `addr` - CAS address of FSArray
        `index` - index into array
        `xmiId` - xmi:id of the out-of-typesystem element that is the value at the given index

    - #### addNonsharedRefToFSMapping

          public void addNonsharedRefToFSMapping(int nonsharedFSAddr,
                                                 int fsAddr)

      Add mapping between the address of FS that is the value of a non-shared multi-valued feature of a FeatureStructure.
      Parameters:
        `nonsharedFSAddr` - - fs address of non-shared multi-valued feature value
        `fsAddr` - - fs address of encompassing featurestructure

    - #### getNonsharedMulitValuedFSs

          public int[] getNonsharedMulitValuedFSs()

      Returns:
        the non-shared featureId to FS Id key set

    - #### getEncompassingFS

          public int getEncompassingFS(int nonsharedFS)

      Parameters:
        `nonsharedFS` - an id of a nonsharedFS
      Returns:
        the int handle to the encompassing FS or -1 if not found

    - #### toString

          public String toString()

      For debugging purposes only.
      Overrides:
        `toString` in class `Object`

Copyright © 2006–2021 The Apache Software Foundation. All rights reserved.