package org.emfjson; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.EcorePackage; 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.util.EcoreUtil; import org.emfjson.jackson.resource.JsonResourceFactory; /** * This example demonstrates the use of EMFJson with the EMF Resource API. * It shows how to configure a ResourceSet to read and write JSON files. */ public class Example1 { public static void main(String[] args) throws IOException { // setting up the resourceSet with resourceFactory for JSON // ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new JsonResourceFactory()); // register ecore package for standalone (outside eclipse) execution // resourceSet.getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE); // options // We indicate that we want to indent the output to // be more readable. Map<String, Object> options = new HashMap<>(); options.put(EMFJs.OPTION_INDENT_OUTPUT, true); // create a model // EPackage samplePackage = EcoreFactory.eINSTANCE.createEPackage(); samplePackage.setName("sample"); samplePackage.setNsPrefix("sample"); samplePackage.setNsURI("http://sample.org/sample"); EClass userClass = EcoreFactory.eINSTANCE.createEClass(); userClass.setName("User"); EAttribute userName = EcoreFactory.eINSTANCE.createEAttribute(); userName.setName("name"); userName.setEType(EcorePackage.Literals.ESTRING); userClass.getEStructuralFeatures().add(userName); samplePackage.getEClassifiers().add(userClass); // register the model package // resourceSet.getPackageRegistry().put(samplePackage.getNsURI(), samplePackage); // create instances // EObject u1 = EcoreUtil.create(userClass); u1.eSet(userName, "u1"); // add package and instance in a resource // Resource res = resourceSet.createResource(URI.createURI("http://sample.org/sample")); res.getContents().add(samplePackage); res.getContents().add(u1); // save it as JSON // res.save(System.out, options); } }