package org.emfjson; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.emfjson.jackson.JacksonOptions; import org.emfjson.jackson.module.EMFModule; import org.emfjson.jackson.resource.JsonResource; import org.emfjson.jackson.resource.JsonResourceFactory; import org.emfjson.model.Address; import org.emfjson.model.ModelFactory; import org.emfjson.model.User; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; /** * This example demonstrates how to use UUIDs generated by the resource, as ids to * identify objects within a resource. * */ public class Example3 { public static void main(String[] args) throws JsonProcessingException { final ObjectMapper mapper = new ObjectMapper(); final ResourceSet resourceSet = new ResourceSetImpl(); // Tell the resource to use UUIDs resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new JsonResourceFactory() { @Override public Resource createResource(URI uri) { return new JsonResource(uri) { protected boolean useUUIDs() { return true; } }; } }); // Tell serializer to add _id fields mapper.registerModule(new EMFModule(resourceSet, new JacksonOptions.Builder() .withID(true) .build())); User u1 = ModelFactory.eINSTANCE.createUser(); User u2 = ModelFactory.eINSTANCE.createUser(); User u3 = ModelFactory.eINSTANCE.createUser(); Address a1 = ModelFactory.eINSTANCE.createAddress(); a1.setCity("Prague"); u1.getAddresses().add(a1); u1.setName("Bart"); u2.setName("Kenny"); u3.setName("Kyle"); u1.getFriends().add(u2); u1.getFriends().add(u3); u2.getFriends().add(u1); resourceSet.createResource(URI.createURI("user-1")).getContents().add(u1); resourceSet.createResource(URI.createURI("user-2")).getContents().add(u2); resourceSet.createResource(URI.createURI("user-3")).getContents().add(u3); System.out.println(mapper.writeValueAsString(u1)); System.out.println(mapper.writeValueAsString(u2)); System.out.println(mapper.writeValueAsString(u3)); } }