This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 4e9a504873e88335f9c7a7cc46bf6d686235427a Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Nov 6 08:46:53 2015 +0100 ajout d'un adaptateur Gson pour les formDto --- .../java/fr/ird/observe/services/dto/FormDto.java | 4 +++ .../observe/services/dto/gson/FormDtoAdapter.java | 38 ++++++++++++++++++++++ .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 ++ 3 files changed, 44 insertions(+) diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java index 64077af..72d6bbb 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/FormDto.java @@ -32,6 +32,10 @@ public class FormDto<R extends IdDto> extends AbstractFormDto { private static final long serialVersionUID = 1L; + public static final String PROPERTY_TYPE = "type"; + + public static final String PROPERTY_FORM = "form"; + protected final Class<R> type; protected R form; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/FormDtoAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/FormDtoAdapter.java new file mode 100644 index 0000000..67bdc08 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/FormDtoAdapter.java @@ -0,0 +1,38 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.common.collect.Lists; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.FormDtos; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ReferenceSetDto; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class FormDtoAdapter implements JsonDeserializer<FormDto<?>>{ + + @Override + public FormDto<?> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonObject = json.getAsJsonObject(); + + Class dtoType = context.deserialize(jsonObject.get(FormDto.PROPERTY_TYPE), Class.class); + + JsonElement jsonFrom = jsonObject.get(FormDto.PROPERTY_FORM); + IdDto form = context.deserialize(jsonFrom, dtoType); + + JsonElement jsonLabels = jsonObject.get(FormDto.PROPERTY_LABELS); + + ReferenceSetDto[] labels = context.deserialize(jsonLabels, ReferenceSetDto[].class); + + FormDto<?> formDto = FormDtos.newFormDto(dtoType, form, Lists.newArrayList(labels)); + + return formDto; + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index 383c93e..9ba5b93 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java @@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; @@ -94,6 +95,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(ImmutableMap.class, new ImmutableMapAdapter()); gsonBuilder.registerTypeAdapter(ReferenceDto.class, new ReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReferentialReferenceDto.class, new ReferentialReferenceDtoAdapter()); + gsonBuilder.registerTypeAdapter(FormDto.class, new FormDtoAdapter()); gsonBuilder.registerTypeAdapter(ReportVariable.class, new ReportVariableAdapter()); gsonBuilder.registerTypeAdapter(Version.class, new VersionAdapter()); gsonBuilder.enableComplexMapKeySerialization(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.