package org.nuxeo.mule;
import java.util.Calendar;
import org.junit.Assert;
import org.junit.Test;
import org.nuxeo.ecm.automation.client.model.Blob;
import org.nuxeo.ecm.automation.client.model.PropertyMap;
import org.nuxeo.ecm.automation.client.model.StringBlob;
import org.nuxeo.mule.mapper.MapUnmangler;
import org.nuxeo.mule.mapper.MuleTranslatedMap;
public class TestMappingHack {
@Test
public void testPrefixEscape() {
String titleValue1 = "title1";
Calendar dateValue1 = Calendar.getInstance();
Blob blobValue1 = new StringBlob("Blob1");
String[] arrayValue1 = new String[]{"toto", "titi"};
// init map using Nuxeo interface name system
MuleTranslatedMap nxMap = new MuleTranslatedMap();
nxMap.put("dc:title", titleValue1);
nxMap.put("dc:created", dateValue1);
nxMap.put("file:content", blobValue1);
nxMap.put("dc:contributors", arrayValue1);
// verify access from prefixed names
Assert.assertEquals(titleValue1, nxMap.get("dc:title"));
Assert.assertEquals(dateValue1, nxMap.get("dc:created"));
Assert.assertEquals(blobValue1, nxMap.get("file:content"));
Assert.assertEquals(arrayValue1, nxMap.get("dc:contributors"));
// verify access from Mule names
Assert.assertEquals(titleValue1, nxMap.get("dc__title"));
Assert.assertEquals(dateValue1, nxMap.get("dc__created"));
Assert.assertEquals(blobValue1, nxMap.get("file__content"));
Assert.assertEquals(arrayValue1, nxMap.get("dc__contributors"));
//verify write back
String titleValue2 = "title2";
Calendar dateValue2 = Calendar.getInstance();
Blob blobValue2 = new StringBlob("Blob2");
String[] arrayValue2 = new String[]{"tata", "titi"};
nxMap.put("dc__title", titleValue2);
nxMap.put("dc__created", dateValue2);
nxMap.put("file__content", blobValue2);
nxMap.put("dc__contributors", arrayValue2);
// verify access from prefixed names
Assert.assertEquals(titleValue2, nxMap.get("dc:title"));
Assert.assertEquals(dateValue2, nxMap.get("dc:created"));
Assert.assertEquals(blobValue2, nxMap.get("file:content"));
Assert.assertEquals(arrayValue2, nxMap.get("dc:contributors"));
// verify access from Mule names
Assert.assertEquals(titleValue2, nxMap.get("dc__title"));
Assert.assertEquals(dateValue2, nxMap.get("dc__created"));
Assert.assertEquals(blobValue2, nxMap.get("file__content"));
Assert.assertEquals(arrayValue2, nxMap.get("dc__contributors"));
// check unmangle
nxMap.put("ecm:type", "type");
nxMap.put("ecm:id", "uid");
PropertyMap map2 = MapUnmangler.unMangle(nxMap);
Assert.assertTrue(map2.getKeys().contains("dc:title"));
Assert.assertTrue(map2.getKeys().contains("dc:created"));
Assert.assertTrue(map2.getKeys().contains("file:content"));
Assert.assertTrue(map2.getKeys().contains("dc:contributors"));
Assert.assertFalse(map2.getKeys().contains("ecm:id"));
}
}