branch feature/8143-blobGsonAdapter created (now b3b6cc5)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8143-blobGsonAdapter in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at b3b6cc5 creation d'un adapteur pour le type blob (see #8124). This branch includes the following new commits: new b3b6cc5 creation d'un adapteur pour le type blob (see #8124). The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit b3b6cc50a55eaedab5572ab1e59cc3128a96324a Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Sat Mar 19 08:09:58 2016 +0100 creation d'un adapteur pour le type blob (see #8124). -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8143-blobGsonAdapter in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit b3b6cc50a55eaedab5572ab1e59cc3128a96324a Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Sat Mar 19 08:09:58 2016 +0100 creation d'un adapteur pour le type blob (see #8124). --- .../ird/observe/services/dto/gson/BlobAdapter.java | 57 ++++++++++++++++++++++ .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + 2 files changed, 59 insertions(+) diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/BlobAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/BlobAdapter.java new file mode 100644 index 0000000..762e28c --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/BlobAdapter.java @@ -0,0 +1,57 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import javax.sql.rowset.serial.SerialBlob; +import java.lang.reflect.Type; +import java.sql.Blob; +import java.sql.SQLException; +import java.util.Base64; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class BlobAdapter implements JsonSerializer<Blob>, JsonDeserializer<Blob> { + + @Override + public Blob deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + + String blob64 = json.getAsString(); + + byte[] bytes = Base64.getDecoder().decode(blob64); + + + try { + SerialBlob blob = new SerialBlob(bytes); + + return blob; + + } catch (SQLException e) { + throw new JsonParseException("could not create blob ", e); + } + + } + + @Override + public JsonElement serialize(Blob src, Type typeOfSrc, JsonSerializationContext context) { + try { + + byte[] bytes = src.getBytes(1, (int) src.length()); + + Base64.Encoder encoder = Base64.getEncoder(); + + String blob64 = encoder.encodeToString(bytes); + + return new JsonPrimitive(blob64); + + } catch (SQLException e) { + throw new JsonParseException("could not read blob ", e); + } + } +} 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 6d84326..bd6b380 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 @@ -40,6 +40,7 @@ import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; import org.nuiton.version.Version; +import java.sql.Blob; import java.sql.Timestamp; import java.util.Date; @@ -95,6 +96,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(Timestamp.class, new DateAdapter()); gsonBuilder.registerTypeAdapter(java.sql.Date.class, new DateAdapter()); gsonBuilder.registerTypeAdapter(Class.class, new ClassAdapter()); + gsonBuilder.registerTypeAdapter(Blob.class, new BlobAdapter()); gsonBuilder.registerTypeAdapter(ImmutableList.class, new ImmutableListAdapter()); gsonBuilder.registerTypeAdapter(ImmutableSet.class, new ImmutableSetAdapter()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm