package com.ibm.devworks.sample; /** * This class provides methods to serialize the Ecore-based model and * the model instance. * * @author Nidhi Singh, Rohit Babbar */ import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.XMLResource; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl; public class DynamicModelSerializer { public void serializeModelInstance(EObject bookStoreEObject, boolean isSchemaLocationPresent) { ResourceSet resourceSet = new ResourceSetImpl(); // Register XML Factory implementation to handle .xml files resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap() .put("xml", new XMLResourceFactoryImpl()); // Create empty resource with the given URI Resource resource = resourceSet.createResource(URI .createURI("./target/bookStore.xml")); // Add bookStoreObject to contents list of the resource resource.getContents().add(bookStoreEObject); Map options = new HashMap(); options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); try { // Save the resource if (isSchemaLocationPresent == true) resource.save(options); else resource.save(null); } catch (IOException e) { e.printStackTrace(); } } public void serializeMetaModel(EPackage bookStoreEPackage) { ResourceSet resourceSet = new ResourceSetImpl(); // Register XML Factory implementation to handle .ecore files resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap() .put("ecore", new XMLResourceFactoryImpl()); // Create empty resource with the given URI Resource resource = resourceSet.createResource(URI .createURI("./target/bookStore.ecore")); // Add bookStoreEPackage to contents list of the resource resource.getContents().add(bookStoreEPackage); try { // Save the resource resource.save(null); } catch (IOException e) { e.printStackTrace(); } } }