package org.emfjson.mongo.tests; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import org.bson.Document; import org.eclipse.emf.common.util.URI; 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; import org.emfjson.model.ModelPackage; import org.emfjson.model.TestA; import org.emfjson.mongo.MongoHandler; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import static org.junit.Assert.assertEquals; public class MongoHandlerSaveAndLoadTest { private ResourceSet resourceSet; private MongoClient client; private MongoHandler handler; private URI testURI = URI.createURI("mongodb://localhost:27017/emfjson-test/models/model1"); @Before public void setUp() { client = new MongoClient(); handler = new MongoHandler(client); resourceSet = new ResourceSetImpl(); resourceSet.getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new JsonResourceFactory()); resourceSet.getURIConverter().getURIHandlers().add(0, handler); } @After public void tearDown() { client.getDatabase("emfjson-test").drop(); } @Test public void testSaveThenLoadNode() throws IOException { MongoCollection<Document> models = handler.getCollection(testURI); ObjectMapper mapper = new ObjectMapper(); JsonNode content_model1 = mapper.createObjectNode() .put("_id", "model1") .put("_type", "resource") .set("contents", mapper.createObjectNode() .put("eClass", EcoreUtil.getURI(ModelPackage.Literals.TEST_A).toString()) .put("stringValue", "testStringValue") .put("intValue", 1234) .put("booleanValue", true) .put("longValue", 12345678900L)); models.insertOne(Document.parse(mapper.writeValueAsString(content_model1))); Resource resource = resourceSet.createResource(testURI); resource.load(null); assertEquals(1, resource.getContents().size()); assertEquals(ModelPackage.Literals.TEST_A, resource.getContents().get(0).eClass()); TestA ta = (TestA) resource.getContents().get(0); assertEquals("testStringValue", ta.getStringValue()); assertEquals(1234, ta.getIntValue().intValue()); assertEquals(true, ta.getBooleanValue()); assertEquals(12345678900L, ta.getLongValue().longValue()); } }