Skip to content

Commit 346c65a

Browse files
committed
Add support for byte arrays serialized as base64 string
1 parent 8fdea01 commit 346c65a

File tree

16 files changed

+727
-235
lines changed

16 files changed

+727
-235
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.servicestack.client;
2+
3+
import java.util.Base64;
4+
5+
public class ByteArray {
6+
public static byte[] parse(String base64) {
7+
return Base64.getDecoder().decode(base64);
8+
}
9+
public static String toString(byte[] bytes) {
10+
return Base64.getEncoder().encodeToString(bytes);
11+
}
12+
}

src/AndroidClient/android/src/main/java/net/servicestack/client/DateTime.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ public class DateTime {
66
public static Date parse(String date) {
77
return Utils.parseDate(date);
88
}
9+
public static String toString(Date date) {
10+
return Utils.toJsonDate(date);
11+
}
912
}

src/AndroidClient/android/src/main/java/net/servicestack/client/Guid.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ public class Guid {
66
public static UUID parse(String guid) {
77
return Utils.fromGuidString(guid);
88
}
9+
public static String toString(UUID uuid) {
10+
return Utils.toGuidString(uuid);
11+
}
912
}

src/AndroidClient/android/src/main/java/net/servicestack/client/JsonSerializers.java

Lines changed: 16 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,82 +3,46 @@
33

44
package net.servicestack.client;
55

6-
import com.google.gson.Gson;
7-
import com.google.gson.JsonDeserializationContext;
8-
import com.google.gson.JsonDeserializer;
9-
import com.google.gson.JsonElement;
10-
import com.google.gson.JsonParseException;
11-
import com.google.gson.JsonPrimitive;
12-
import com.google.gson.JsonSerializationContext;
13-
import com.google.gson.JsonSerializer;
14-
import com.google.gson.TypeAdapter;
15-
import com.google.gson.TypeAdapterFactory;
6+
import com.google.gson.*;
167
import com.google.gson.reflect.TypeToken;
178
import com.google.gson.stream.JsonReader;
189
import com.google.gson.stream.JsonToken;
1910
import com.google.gson.stream.JsonWriter;
2011

2112
import java.io.IOException;
22-
import java.lang.reflect.Type;
23-
import java.util.Date;
24-
import java.util.HashMap;
25-
import java.util.Locale;
26-
import java.util.Map;
27-
import java.util.UUID;
13+
import java.util.*;
2814

2915
public class JsonSerializers {
3016
public static JsonSerializer<Date> getDateSerializer(){
31-
return new JsonSerializer<Date>() {
32-
@Override
33-
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
34-
return src == null ? null : new JsonPrimitive(Utils.toJsonDate(src));
35-
}
36-
};
17+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(Utils.toJsonDate(src));
3718
}
3819

3920
public static JsonDeserializer<Date> getDateDeserializer(){
40-
return new JsonDeserializer<Date>() {
41-
@Override
42-
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
43-
return json == null ? null : Utils.parseDate(json.getAsString());
44-
}
45-
};
21+
return (json, typeOfT, context) -> json == null ? null : Utils.parseDate(json.getAsString());
4622
}
4723

4824
public static JsonSerializer<TimeSpan> getTimeSpanSerializer(){
49-
return new JsonSerializer<TimeSpan>() {
50-
@Override
51-
public JsonElement serialize(TimeSpan src, Type typeOfSrc, JsonSerializationContext context) {
52-
return src == null ? null : new JsonPrimitive(src.toXsdDuration());
53-
}
54-
};
25+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(src.toXsdDuration());
5526
}
5627

5728
public static JsonDeserializer<TimeSpan> getTimeSpanDeserializer(){
58-
return new JsonDeserializer<TimeSpan>() {
59-
@Override
60-
public TimeSpan deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
61-
return json == null ? null : TimeSpan.parse(json.getAsString());
62-
}
63-
};
29+
return (json, typeOfT, context) -> json == null ? null : TimeSpan.parse(json.getAsString());
6430
}
6531

6632
public static JsonSerializer<UUID> getGuidSerializer(){
67-
return new JsonSerializer<UUID>() {
68-
@Override
69-
public JsonElement serialize(UUID src, Type typeOfSrc, JsonSerializationContext context) {
70-
return src == null ? null : new JsonPrimitive(Utils.toGuidString(src));
71-
}
72-
};
33+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(Utils.toGuidString(src));
7334
}
7435

7536
public static JsonDeserializer<UUID> getGuidDeserializer(){
76-
return new JsonDeserializer<UUID>() {
77-
@Override
78-
public UUID deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
79-
return json == null ? null : Utils.fromGuidString(json.getAsString());
80-
}
81-
};
37+
return (json, typeOfT, context) -> json == null ? null : Utils.fromGuidString(json.getAsString());
38+
}
39+
40+
public static JsonSerializer<byte[]> getByteArraySerializer(){
41+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(Base64.getEncoder().encodeToString(src));
42+
}
43+
44+
public static JsonDeserializer<byte[]> getByteArrayDeserializer(){
45+
return (json, typeOfT, context) -> json == null ? null : Base64.getDecoder().decode(json.getAsString());
8246
}
8347

8448
public static class CaseInsensitiveEnumTypeAdapterFactory implements TypeAdapterFactory {

src/AndroidClient/android/src/main/java/net/servicestack/client/JsonServiceClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ public GsonBuilder getGsonBuilder() {
9191
.registerTypeAdapter(TimeSpan.class, JsonSerializers.getTimeSpanSerializer())
9292
.registerTypeAdapter(TimeSpan.class, JsonSerializers.getTimeSpanDeserializer())
9393
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidSerializer())
94-
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidDeserializer());
94+
.registerTypeAdapter(UUID.class, JsonSerializers.getGuidDeserializer())
95+
.registerTypeAdapter(byte[].class, JsonSerializers.getByteArraySerializer())
96+
.registerTypeAdapter(byte[].class, JsonSerializers.getByteArrayDeserializer());
9597
}
9698

9799
public Gson getGson() {

src/AndroidClient/android/src/main/java/net/servicestack/client/TimeSpan.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@ public static TimeSpan parse(String xsdDuration){
194194
return new TimeSpan(interval);
195195
}
196196

197+
public static String toString(TimeSpan timeSpan) {
198+
return timeSpan.toXsdDuration();
199+
}
200+
197201
@Override
198202
public boolean equals(Object o) {
199203
if (this == o) return true;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.servicestack.client;
2+
3+
import java.util.Base64;
4+
5+
public class ByteArray {
6+
public static byte[] parse(String base64) {
7+
return Base64.getDecoder().decode(base64);
8+
}
9+
public static String toString(byte[] bytes) {
10+
return Base64.getEncoder().encodeToString(bytes);
11+
}
12+
}

src/AndroidClient/client/src/main/java/net/servicestack/client/DateTime.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ public class DateTime {
66
public static Date parse(String date) {
77
return Utils.parseDate(date);
88
}
9+
public static String toString(Date date) {
10+
return Utils.toJsonDate(date);
11+
}
912
}

src/AndroidClient/client/src/main/java/net/servicestack/client/Guid.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ public class Guid {
66
public static UUID parse(String guid) {
77
return Utils.fromGuidString(guid);
88
}
9+
public static String toString(UUID uuid) {
10+
return Utils.toGuidString(uuid);
11+
}
912
}

src/AndroidClient/client/src/main/java/net/servicestack/client/JsonSerializers.java

Lines changed: 16 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,82 +3,46 @@
33

44
package net.servicestack.client;
55

6-
import com.google.gson.Gson;
7-
import com.google.gson.JsonDeserializationContext;
8-
import com.google.gson.JsonDeserializer;
9-
import com.google.gson.JsonElement;
10-
import com.google.gson.JsonParseException;
11-
import com.google.gson.JsonPrimitive;
12-
import com.google.gson.JsonSerializationContext;
13-
import com.google.gson.JsonSerializer;
14-
import com.google.gson.TypeAdapter;
15-
import com.google.gson.TypeAdapterFactory;
6+
import com.google.gson.*;
167
import com.google.gson.reflect.TypeToken;
178
import com.google.gson.stream.JsonReader;
189
import com.google.gson.stream.JsonToken;
1910
import com.google.gson.stream.JsonWriter;
2011

2112
import java.io.IOException;
22-
import java.lang.reflect.Type;
23-
import java.util.Date;
24-
import java.util.HashMap;
25-
import java.util.Locale;
26-
import java.util.Map;
27-
import java.util.UUID;
13+
import java.util.*;
2814

2915
public class JsonSerializers {
3016
public static JsonSerializer<Date> getDateSerializer(){
31-
return new JsonSerializer<Date>() {
32-
@Override
33-
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
34-
return src == null ? null : new JsonPrimitive(Utils.toJsonDate(src));
35-
}
36-
};
17+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(Utils.toJsonDate(src));
3718
}
3819

3920
public static JsonDeserializer<Date> getDateDeserializer(){
40-
return new JsonDeserializer<Date>() {
41-
@Override
42-
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
43-
return json == null ? null : Utils.parseDate(json.getAsString());
44-
}
45-
};
21+
return (json, typeOfT, context) -> json == null ? null : Utils.parseDate(json.getAsString());
4622
}
4723

4824
public static JsonSerializer<TimeSpan> getTimeSpanSerializer(){
49-
return new JsonSerializer<TimeSpan>() {
50-
@Override
51-
public JsonElement serialize(TimeSpan src, Type typeOfSrc, JsonSerializationContext context) {
52-
return src == null ? null : new JsonPrimitive(src.toXsdDuration());
53-
}
54-
};
25+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(src.toXsdDuration());
5526
}
5627

5728
public static JsonDeserializer<TimeSpan> getTimeSpanDeserializer(){
58-
return new JsonDeserializer<TimeSpan>() {
59-
@Override
60-
public TimeSpan deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
61-
return json == null ? null : TimeSpan.parse(json.getAsString());
62-
}
63-
};
29+
return (json, typeOfT, context) -> json == null ? null : TimeSpan.parse(json.getAsString());
6430
}
6531

6632
public static JsonSerializer<UUID> getGuidSerializer(){
67-
return new JsonSerializer<UUID>() {
68-
@Override
69-
public JsonElement serialize(UUID src, Type typeOfSrc, JsonSerializationContext context) {
70-
return src == null ? null : new JsonPrimitive(Utils.toGuidString(src));
71-
}
72-
};
33+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(Utils.toGuidString(src));
7334
}
7435

7536
public static JsonDeserializer<UUID> getGuidDeserializer(){
76-
return new JsonDeserializer<UUID>() {
77-
@Override
78-
public UUID deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
79-
return json == null ? null : Utils.fromGuidString(json.getAsString());
80-
}
81-
};
37+
return (json, typeOfT, context) -> json == null ? null : Utils.fromGuidString(json.getAsString());
38+
}
39+
40+
public static JsonSerializer<byte[]> getByteArraySerializer(){
41+
return (src, typeOfSrc, context) -> src == null ? null : new JsonPrimitive(Base64.getEncoder().encodeToString(src));
42+
}
43+
44+
public static JsonDeserializer<byte[]> getByteArrayDeserializer(){
45+
return (json, typeOfT, context) -> json == null ? null : Base64.getDecoder().decode(json.getAsString());
8246
}
8347

8448
public static class CaseInsensitiveEnumTypeAdapterFactory implements TypeAdapterFactory {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy