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(); } } }