package com.supaham.commons.serializers;
import com.supaham.commons.utils.DurationUtils;
import java.time.Duration;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import pluginbase.config.serializers.Serializer;
import pluginbase.config.serializers.SerializerSet;
/**
* A {@link Duration} serializer that simply calls {@link DurationUtils#toString(Duration,
* boolean)}, with boolean as true, in return.
*
* @since 0.1
*/
public class DurationSerializer implements Serializer<Duration> {
@Override
@Nullable
public Object serialize(@Nullable final Duration duration, @Nonnull SerializerSet serializerSet) {
if (duration == null) {
return null;
}
return DurationUtils.toString(duration, true);
}
@Override
@Nullable
public Duration deserialize(@Nullable Object serialized, @Nonnull Class wantedType,
@Nonnull SerializerSet serializerSet)
throws IllegalArgumentException {
if (serialized == null || !(serialized instanceof String)) {
return null;
}
return DurationUtils.parseDuration(serialized.toString());
}
}