package example.server.store; 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.util.EcoreUtil; import javax.inject.Inject; import java.io.IOException; import java.net.URISyntaxException; public class SampleStore implements ModelStore { @Inject ResourceSet resourceSet; @Override public Resource get(String id) throws IOException { Resource resource = resource(id); resource.load(null); return resource; } @Override public java.net.URI save(String id, Resource resource) throws IOException, URISyntaxException { if (resource.getResourceSet() == null) { resourceSet.getResources().add(resource); } resource.setURI(URI.createURI("http://resources/" + id)); resource.save(null); return new java.net.URI(resource.getURI().toString()); } @Override public void delete(String id) throws Exception { Resource resource = resource(id); resource.delete(null); } public Resource resource(String id) { try { return resourceSet.getResource(URI.createURI("http://resources/" + id), true); } catch (Exception e) { return resourceSet.getResource(URI.createURI("http://resources/" + id), false); } } public java.net.URI create() throws IOException, URISyntaxException { String uuid = EcoreUtil.generateUUID(); Resource resource = resource(uuid); resource.save(null); return new java.net.URI(resource.getURI().toString()); } }