Here is a sample code that creates an empty instance of MOF and reads in an XMI containing some MOF metamodel:
// get the default repository
MDRepository repository = MDRManager.getDefault().getDefaultRepository();
// start a write transaction
boolean fail = true;
repository.beginTrans(true);
try {
// create a new MOF extent
RefPackage mof = repository.createExtent("MyMOFExtent");
// create an XMIReader
XMIReader reader = XMIReaderFactory.getDefault().createXMIReader();
// read the document
reader.read(new File("myxmifile.xmi").toURL().toString(), mof);
// everything succeeded => set fail flag to false
fail = false;
} catch (Exception e) {
System.out.println("Fatal error reading XMI.");
e.printStackTrace();
} finally {
// commit/rollback the transaction
repository.endTrans(fail);
}
// get the default repository
MDRepository repository = MDRManager.getDefault().getDefaultRepository();
// declare an output stream
FileOutputStream out = null;
// start a read-only transaction
repository.beginTrans(false);
try {
// get the extent
RefPackage mof = repository.getExtent("MyMOFExtent");
// create an XMIWriter
XMIWriter writer = XMIWriterFactory.getDefault().createXMIWriter();
// open a stream
out = new FileOutputStream("myxmifile.xml");
// export the document (default version of XMI = 1.2)
writer.write(out, mof, null);
} catch (Exception e) {
System.out.println("Fatal error reading XMI.");
e.printStackTrace();
} finally {
// release the transaction
repository.endTrans();
// close the stream if necessary
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}