Skip to content

Commit

Permalink
Add SaleToAcquirerDataSerializer deserialisation (#1038)
Browse files Browse the repository at this point in the history
  • Loading branch information
scriptease authored Jun 2, 2023
1 parent 0b42a82 commit d0c8591
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 8 deletions.
23 changes: 19 additions & 4 deletions src/main/java/com/adyen/model/terminal/SaleToAcquirerData.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,18 @@
*/
package com.adyen.model.terminal;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Map;
import java.util.Objects;

import org.apache.commons.codec.binary.Base64;

import com.adyen.model.applicationinfo.ApplicationInfo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.codec.binary.Base64;

import java.util.Map;
import java.util.Objects;

public class SaleToAcquirerData {

Expand Down Expand Up @@ -229,4 +234,14 @@ public String toBase64() {
String json = PRETTY_PRINT_GSON.toJson(this);
return new String(Base64.encodeBase64(json.getBytes()));
}

public static SaleToAcquirerData fromBase64(String base64) {
byte[] decoded = Base64.decodeBase64(base64);
try (Reader reader = new InputStreamReader(new ByteArrayInputStream(decoded))) {
return PRETTY_PRINT_GSON.fromJson(reader, SaleToAcquirerData.class);
}
catch (IOException e) {
throw new IllegalStateException(e);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
package com.adyen.serializer;

import java.lang.reflect.Type;

import com.adyen.model.terminal.SaleToAcquirerData;
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 java.lang.reflect.Type;

public class SaleToAcquirerDataSerializer implements JsonSerializer<SaleToAcquirerData> {
public class SaleToAcquirerDataSerializer implements
JsonSerializer<SaleToAcquirerData>,
JsonDeserializer<SaleToAcquirerData> {

public JsonElement serialize(SaleToAcquirerData saleToAcquirerData, Type typeOfSrc, JsonSerializationContext context) {
@Override
public JsonElement serialize(SaleToAcquirerData saleToAcquirerData, Type typeOfSrc,
JsonSerializationContext context) {
return new JsonPrimitive(saleToAcquirerData.toBase64());
}

@Override
public SaleToAcquirerData deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
return SaleToAcquirerData.fromBase64(json.getAsString());
}
}

0 comments on commit d0c8591

Please sign in to comment.