Skip to content

Commit 2644901

Browse files
Added serializer/deserializer for invitables
1 parent c69de38 commit 2644901

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

src/main/java/com/robinpowered/sdk/RobinServiceFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import com.robinpowered.sdk.credential.Credential;
77
import com.robinpowered.sdk.exception.RobinExceptionHandler;
88
import com.robinpowered.sdk.model.Account;
9+
import com.robinpowered.sdk.model.Invitable;
910
import com.robinpowered.sdk.model.Urn;
1011
import com.robinpowered.sdk.model.adapter.AccountReferenceAdapter;
12+
import com.robinpowered.sdk.model.adapter.InvitableAdapter;
1113
import com.robinpowered.sdk.model.adapter.JodaDateTimeAdapter;
1214
import com.robinpowered.sdk.model.adapter.RobinTypeAdapterFactory;
1315
import com.robinpowered.sdk.model.adapter.UrnAdapter;
@@ -60,6 +62,7 @@ protected Converter getResponseDataConverter() {
6062
// Set our naming policy to transform underscores <-> camelCase
6163
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
6264
.registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter())
65+
.registerTypeAdapter(Invitable.class, new InvitableAdapter())
6366
.registerTypeAdapterFactory(new RobinTypeAdapterFactory())
6467
.registerTypeAdapter(Urn.class, new UrnAdapter())
6568
.registerTypeHierarchyAdapter(Account.Reference.class, new AccountReferenceAdapter())
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.robinpowered.sdk.model.adapter;
2+
3+
import com.google.gson.JsonDeserializationContext;
4+
import com.google.gson.JsonDeserializer;
5+
import com.google.gson.JsonElement;
6+
import com.google.gson.JsonObject;
7+
import com.google.gson.JsonParseException;
8+
import com.google.gson.JsonSerializationContext;
9+
import com.google.gson.JsonSerializer;
10+
import com.robinpowered.sdk.model.Invitable;
11+
import com.robinpowered.sdk.model.Invitee;
12+
13+
import java.lang.reflect.Type;
14+
15+
/**
16+
* Handles adapting {@link Invitable} from string representations.
17+
*/
18+
public class InvitableAdapter implements JsonDeserializer<Invitable>, JsonSerializer<Invitable> {
19+
20+
/**
21+
* Build an InvitableAdapter
22+
*/
23+
public InvitableAdapter() {
24+
}
25+
26+
@Override
27+
public Invitable deserialize(
28+
JsonElement json,
29+
Type typeOfT,
30+
JsonDeserializationContext context
31+
) throws JsonParseException {
32+
33+
JsonObject object = json.getAsJsonObject();
34+
boolean isInvitation = object.has("email") && !object.has("id");
35+
boolean isInivtee = object.has("email")
36+
&& object.has("id");
37+
38+
if (isInvitation) {
39+
return context.deserialize(object, Invitee.Invitation.class);
40+
} else if (isInivtee) {
41+
return context.deserialize(object, Invitee.class);
42+
}
43+
44+
return null;
45+
}
46+
47+
@Override
48+
public JsonElement serialize(Invitable invitable, Type typeOfSrc, JsonSerializationContext context) {
49+
return context.serialize(invitable);
50+
}
51+
}

0 commit comments

Comments
 (0)