diff --git a/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java b/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java index 556079f676d2e40019e93adad7086fd2be0d2f51..fd0433f5b26392970e4b947811409e94ee87be1b 100644 --- a/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java +++ b/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java @@ -66,22 +66,20 @@ public class MapperDAO { public boolean updateConfiguration(String mapperId, Serializable mapper, int expirationTime) { PersistedMapper m = loadForUpdate(mapperId); - if(m == null) { - return false; - } - - String configuration = XStreamHelper.createXStreamInstance().toXML(mapper); - m.setXmlConfiguration(configuration); - Date currentDate = new Date(); - m.setLastModified(currentDate); - if(expirationTime > 0) { - Calendar cal = Calendar.getInstance(); - cal.setTime(currentDate); - cal.add(Calendar.SECOND, expirationTime); - m.setExpirationDate(cal.getTime()); + if(m != null) { + String configuration = XStreamHelper.createXStreamInstance().toXML(mapper); + m.setXmlConfiguration(configuration); + Date currentDate = new Date(); + m.setLastModified(currentDate); + if(expirationTime > 0) { + Calendar cal = Calendar.getInstance(); + cal.setTime(currentDate); + cal.add(Calendar.SECOND, expirationTime); + m.setExpirationDate(cal.getTime()); + } + dbInstance.getCurrentEntityManager().merge(m); } - - dbInstance.getCurrentEntityManager().merge(m); + dbInstance.commit(); return true; } diff --git a/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java b/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java index 0a4a5afb92394bfce6be05761b9b581c332732f1..d146813a5437cf882c55d41992f7de8381dc0657 100644 --- a/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java +++ b/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java @@ -51,8 +51,8 @@ public class PersistedMapper implements CreateInfo, ModifiedInfo, Persistable { private static final long serialVersionUID = 7297417374497607347L; @Id - @GeneratedValue(generator = "system-uuid") - @GenericGenerator(name = "system-uuid", strategy = "hilo") + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "hilo") @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) private Long key; diff --git a/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java b/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java index 4c8e209237b717e32a2210b340f7301f41fb4043..f4f7c4b4cc61803db9153193a074e1f2b037b656 100644 --- a/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java +++ b/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java @@ -28,6 +28,7 @@ import org.junit.Test; import org.olat.core.commons.persistence.DB; import org.olat.core.dispatcher.mapper.manager.MapperDAO; import org.olat.core.dispatcher.mapper.model.PersistedMapper; +import org.olat.core.util.xml.XStreamHelper; import org.olat.test.OlatTestCase; import org.springframework.beans.factory.annotation.Autowired; @@ -76,6 +77,61 @@ public class MapperDAOTest extends OlatTestCase { Assert.assertEquals(sessionId, loadedMapper.getOriginalSessionId()); } + @Test + public void testLoadMapper_serializade() { + //create a mapper + String mapperId = UUID.randomUUID().toString(); + String sessionId = UUID.randomUUID().toString().substring(0, 32); + PersistentMapper sMapper = new PersistentMapper("mapper-to-persist"); + PersistedMapper pMapper = mapperDao.persistMapper(sessionId, mapperId, sMapper, -1); + Assert.assertNotNull(pMapper); + dbInstance.commitAndCloseSession(); + + //load the mapper + PersistedMapper loadedMapper = mapperDao.loadByMapperId(mapperId); + Assert.assertNotNull(loadedMapper); + Assert.assertEquals(pMapper, loadedMapper); + Assert.assertEquals(mapperId, loadedMapper.getMapperId()); + + Object objReloaded = XStreamHelper.createXStreamInstance().fromXML(pMapper.getXmlConfiguration()); + Assert.assertTrue(objReloaded instanceof PersistentMapper); + PersistentMapper sMapperReloaded = (PersistentMapper)objReloaded; + Assert.assertEquals("mapper-to-persist", sMapperReloaded.getKey()); + } + + @Test + public void testUpdateMapper_serializade() { + //create a mapper + String mapperId = UUID.randomUUID().toString(); + String sessionId = UUID.randomUUID().toString().substring(0, 32); + PersistentMapper sMapper = new PersistentMapper("mapper-to-persist-bis"); + PersistedMapper pMapper = mapperDao.persistMapper(sessionId, mapperId, sMapper, -1); + Assert.assertNotNull(pMapper); + dbInstance.commitAndCloseSession(); + + //load the mapper + PersistedMapper loadedMapper = mapperDao.loadByMapperId(mapperId); + Assert.assertNotNull(loadedMapper); + Object objReloaded = XStreamHelper.createXStreamInstance().fromXML(pMapper.getXmlConfiguration()); + Assert.assertTrue(objReloaded instanceof PersistentMapper); + PersistentMapper sMapperReloaded = (PersistentMapper)objReloaded; + Assert.assertEquals("mapper-to-persist-bis", sMapperReloaded.getKey()); + + //update + PersistentMapper sMapper2 = new PersistentMapper("mapper-to-update"); + boolean updated = mapperDao.updateConfiguration(mapperId, sMapper2, -1); + Assert.assertTrue(updated); + dbInstance.commitAndCloseSession(); + + //load the updated mapper + PersistedMapper loadedMapper2 = mapperDao.loadByMapperId(mapperId); + Assert.assertNotNull(loadedMapper2); + Object objReloaded2 = XStreamHelper.createXStreamInstance().fromXML(loadedMapper2.getXmlConfiguration()); + Assert.assertTrue(objReloaded2 instanceof PersistentMapper); + PersistentMapper sMapperReloaded2 = (PersistentMapper)objReloaded2; + Assert.assertEquals("mapper-to-update", sMapperReloaded2.getKey()); + } + @Test public void testDeleteMapperByMapper() throws Exception { //create mappers