Skip to content

Commit

Permalink
Add custom gson provider for Duration
Browse files Browse the repository at this point in the history
Signed-off-by: applenick <[email protected]>
  • Loading branch information
applenick committed Jun 17, 2024
1 parent 2809167 commit 7b122c7
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dev.pgm.community.network.subs;

import com.google.gson.Gson;
import dev.pgm.community.utils.gson.GsonProvider;
import java.util.logging.Logger;
import redis.clients.jedis.JedisPubSub;

Expand All @@ -15,7 +16,7 @@ public NetworkSubscriber(String channel, String networkId, Logger logger) {
this.channel = channel;
this.networkId = networkId;
this.logger = logger;
this.gson = new Gson();
this.gson = GsonProvider.get();
}

public String getNetworkId() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dev.pgm.community.network.updates;

import com.google.gson.Gson;
import dev.pgm.community.utils.gson.GsonProvider;

public abstract class NetworkUpdateBase<T> implements NetworkUpdate {

Expand All @@ -11,7 +12,7 @@ public abstract class NetworkUpdateBase<T> implements NetworkUpdate {
public NetworkUpdateBase(T item, String channel) {
this.item = item;
this.channel = channel;
this.gson = new Gson();
this.gson = GsonProvider.get();
}

@Override
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/dev/pgm/community/utils/ImportUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import dev.pgm.community.moderation.punishments.Punishment;
import dev.pgm.community.moderation.punishments.PunishmentType;
import dev.pgm.community.users.feature.UsersFeature;
import dev.pgm.community.utils.gson.GsonProvider;
import java.io.File;
import java.io.FileNotFoundException;
import java.nio.charset.Charset;
Expand All @@ -24,7 +25,7 @@

public class ImportUtils {

private static final Gson GSON = new Gson();
private static final Gson GSON = GsonProvider.get();

public static List<BukkitBanEntry> getBukkitBans() throws TextException {
File file = new File("banned-players.json");
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/dev/pgm/community/utils/gson/GsonProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package dev.pgm.community.utils.gson;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import dev.pgm.community.utils.gson.types.DurationConverter;
import java.time.Duration;

public class GsonProvider {

public static Gson get() {
return new GsonBuilder().registerTypeAdapter(Duration.class, new DurationConverter()).create();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package dev.pgm.community.utils.gson.types;

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;
import java.time.Duration;

public class DurationConverter implements JsonSerializer<Duration>, JsonDeserializer<Duration> {

@Override
public JsonElement serialize(Duration src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src.toString());
}

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

0 comments on commit 7b122c7

Please sign in to comment.