This is an automated email from the git hooks/post-receive script. New commit to branch feature/7608 in repository observe. See http://git.codelutin.com/observe.git commit fbf7f97d5cbe6291ed757158a18c626b7b7613d4 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Oct 21 15:23:51 2015 +0200 conserver dans le referenceDto toutes les propriétées mêmes celles null --- .../builder/EntityToReferenceDtoBuilder.java | 25 ++++++++-------- .../EntityToReferentialReferenceDtoBuilder.java | 28 ++++++++++-------- ...EntityToReferentialReferenceDtoBuilderTest.java | 33 ++++++++++++++++++++++ 3 files changed, 63 insertions(+), 23 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java index bc97a46..518f155 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferenceDtoBuilder.java @@ -58,7 +58,7 @@ public class EntityToReferenceDtoBuilder<E extends TopiaEntity, D extends IdDto> Preconditions.checkNotNull(binder, "EntityToReferenceBinder<" + entityType.getName() + ", " + dtoType.getName() + "> not found."); - Map<String, Object> entityProperties = binder.obtainProperties(entity); + Map<String, Object> entityProperties = binder.obtainProperties(entity, true); Set<String> propertyNames = entityProperties.keySet(); ReferenceDto<D> result = ReferenceDtos.newReferenceDto(dtoType, propertyNames); @@ -67,21 +67,24 @@ public class EntityToReferenceDtoBuilder<E extends TopiaEntity, D extends IdDto> String propertyName = entry.getKey(); Object propertyValue = entry.getValue(); - if (propertyValue instanceof ReferenceEntity) { + if (propertyValue != null) { - ReferenceEntity referentialEntity = (ReferenceEntity) propertyValue; - Class referenceDtoType = ObserveServiceTopia.getDtoType(referentialEntity.getClass()); - propertyValue = EntityToReferentialReferenceDtoBuilder.build(referenceDtoType, referentialLocale, referentialEntity); + if (propertyValue instanceof ReferenceEntity) { - } else if (propertyValue instanceof TopiaEntity) { + ReferenceEntity referentialEntity = (ReferenceEntity) propertyValue; + Class referenceDtoType = ObserveServiceTopia.getDtoType(referentialEntity.getClass()); + propertyValue = EntityToReferentialReferenceDtoBuilder.build(referenceDtoType, referentialLocale, referentialEntity); - TopiaEntity topiaEntity = (TopiaEntity) propertyValue; - Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); - propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + } else if (propertyValue instanceof TopiaEntity) { - } + TopiaEntity topiaEntity = (TopiaEntity) propertyValue; + Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); + propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + + } - result.setPropertyValue(propertyName, (Serializable) propertyValue); + result.setPropertyValue(propertyName, (Serializable) propertyValue); + } } result.setId(entity.getTopiaId()); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java index ae69b55..64261be 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java @@ -66,7 +66,7 @@ public class EntityToReferentialReferenceDtoBuilder<E extends ReferenceEntity, D Binder<E, D> binder = ObserveDtoBinders.newEntityToReferenceBinder(entityType, dtoType); Preconditions.checkNotNull(binder, "EntityToReferenceBinder<" + entityType.getName() + ", " + dtoType.getName() + "> not found."); - Map<String, Object> entityProperties = binder.obtainProperties(entity); + Map<String, Object> entityProperties = binder.obtainProperties(entity, true); Set<String> propertyNames = entityProperties.keySet(); ReferentialReferenceDto<D> result = ReferentialReferenceDtos.newReferentialReferenceDto(dtoType, referentialLocale, propertyNames); @@ -75,23 +75,27 @@ public class EntityToReferentialReferenceDtoBuilder<E extends ReferenceEntity, D String propertyName = entry.getKey(); Object propertyValue = entry.getValue(); - if (propertyValue instanceof ReferenceEntity) { + if (propertyValue != null) { - ReferenceEntity referentialEntity = (ReferenceEntity) propertyValue; - Class referenceDtoType = ObserveServiceTopia.getDtoType(referentialEntity.getClass()); - propertyValue = EntityToReferentialReferenceDtoBuilder.build(referenceDtoType, referentialLocale, referentialEntity); + if (propertyValue instanceof ReferenceEntity) { - } else if (propertyValue instanceof TopiaEntity) { + ReferenceEntity referentialEntity = (ReferenceEntity) propertyValue; + Class referenceDtoType = ObserveServiceTopia.getDtoType(referentialEntity.getClass()); + propertyValue = EntityToReferentialReferenceDtoBuilder.build(referenceDtoType, referentialLocale, referentialEntity); - TopiaEntity topiaEntity = (TopiaEntity) propertyValue; - Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); - propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + } else if (propertyValue instanceof TopiaEntity) { - } else { - propertyValue = transform(propertyValue); + TopiaEntity topiaEntity = (TopiaEntity) propertyValue; + Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); + propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + + } else { + propertyValue = transform(propertyValue); + } + + result.setPropertyValue(referentialLocale, propertyName, (Serializable) propertyValue); } - result.setPropertyValue(referentialLocale, propertyName, (Serializable) propertyValue); } result.setId(entity.getTopiaId()); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java index c64795b..2f01251 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java @@ -54,4 +54,37 @@ public class EntityToReferentialReferenceDtoBuilderTest { } + @Test + public void testCopyWithNullProperty() { + + Program program = new ProgramImpl(); + program.setCode("code"); + program.setNeedComment(true); + program.setStatus(ReferenceStatus.enabled); + program.setLabel1("label1"); + program.setLabel2("label2"); + program.setLabel3("label3"); + program.setLabel4("label4"); + program.setLabel5("label5"); + program.setLabel6("label6"); + program.setLabel7("label7"); + program.setLabel8("label8"); + program.setTopiaId("Program1"); + program.setStartDate(DateUtil.createDate(1, 1, 1)); + program.setEndDate(DateUtil.createDate(1, 1, 2)); + program.setGearType(null); + program.setTargetDiscardsObservation(1); + + ReferentialReferenceDto<ProgramDto> referenceProgramDto = EntityToReferentialReferenceDtoBuilder.build(ProgramDto.class, ReferentialLocale.FR, program); + + // On vérife que le program a bien été copié et que la propriété a null est toujour presente + + Assert.assertEquals(program.getTopiaId(), referenceProgramDto.getId()); + Assert.assertEquals(program.getCode(), referenceProgramDto.getPropertyValue(ProgramDto.PROPERTY_CODE)); + Assert.assertEquals(program.getLabel2(), referenceProgramDto.getPropertyValue("label")); + Assert.assertNull(referenceProgramDto.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE)); + + + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.