package rocks.inspectit.shared.cs.storage.serializer.impl; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.serializers.DefaultSerializers.EnumSerializer; import rocks.inspectit.shared.cs.cmr.service.IServerStatusService.ServerStatus; /** * Special type of {@link EnumSerializer} for the {@link ServerStatus} enumeration so that key of * server status can also be transmitted. * * @author Ivan Senic * */ public class ServerStatusSerializer extends EnumSerializer { /** * Default constructor. */ public ServerStatusSerializer() { super(ServerStatus.class); } /** * {@inheritDoc} */ @SuppressWarnings("rawtypes") @Override public void write(Kryo kryo, Output output, Enum serverStatus) { super.write(kryo, output, serverStatus); if (serverStatus instanceof ServerStatus) { output.writeString(((ServerStatus) serverStatus).getRegistrationIdsValidationKey()); } } /** * {@inheritDoc} */ @SuppressWarnings("rawtypes") @Override public Enum read(Kryo kryo, Input input, Class<Enum> clazz) { Enum serverStatus = super.read(kryo, input, clazz); if (serverStatus instanceof ServerStatus) { String key = input.readString(); ((ServerStatus) serverStatus).setRegistrationIdsValidationKey(key); } return serverStatus; } }