// deserialize a complex CAS from XCAS
CAS cas = CasCreationUtils.createCas(typeSystem, new TypePriorities_impl(), indexes);
InputStream serCasStream = new FileInputStream(JUnitExtension.getFile("ExampleCas/cas.xml"));
XCASDeserializer deser = new XCASDeserializer(cas.getTypeSystem());
ContentHandler deserHandler = deser.getXCASHandler(cas);
SAXParserFactory fact = SAXParserFactory.newInstance();
SAXParser parser = fact.newSAXParser();
XMLReader xmlReader = parser.getXMLReader();
xmlReader.setContentHandler(deserHandler);
xmlReader.parse(new InputSource(serCasStream));
serCasStream.close();
// now read in a TypeSystem that's a subset of those types
TypeSystemDescription partialTypeSystemDesc = UIMAFramework.getXMLParser()
.parseTypeSystemDescription(
new XMLInputSource(JUnitExtension
.getFile("ExampleCas/partialTestTypeSystem.xml")));
TypeSystem partialTypeSystem = CasCreationUtils.createCas(partialTypeSystemDesc, null, null)
.getTypeSystem();
// reserialize as XMI, filtering out anything that doesn't fit in the
// partialTypeSystem
StringWriter sw = new StringWriter();
XMLSerializer xmlSer = new XMLSerializer(sw, false);
XmiCasSerializer xmiSer = new XmiCasSerializer(partialTypeSystem);
xmiSer.serialize(cas, xmlSer.getContentHandler());
String xml = sw.getBuffer().toString();
// System.out.println(xml);
// deserialize into another CAS (which has the whole type system)
CAS cas2 = CasCreationUtils.createCas(typeSystem, new TypePriorities_impl(), indexes);
XmiCasDeserializer deser2 = new XmiCasDeserializer(cas2.getTypeSystem());
ContentHandler deserHandler2 = deser2.getXmiCasHandler(cas2);
xmlReader.setContentHandler(deserHandler2);
xmlReader.parse(new InputSource(new StringReader(xml)));
// check that types have been filtered out
Type orgType = cas2.getTypeSystem().getType("org.apache.uima.testTypeSystem.Organization");