37 lines
1.3 KiB
Java
37 lines
1.3 KiB
Java
package com.esotericsoftware.kryo.serializers;
|
|
|
|
import c.d.b.a.a;
|
|
import com.esotericsoftware.kryo.Kryo;
|
|
import com.esotericsoftware.kryo.KryoException;
|
|
import com.esotericsoftware.kryo.Serializer;
|
|
import com.esotericsoftware.kryo.io.Input;
|
|
import com.esotericsoftware.kryo.io.Output;
|
|
public class EnumNameSerializer extends Serializer<Enum> {
|
|
private final Class<? extends Enum> enumType;
|
|
private final Serializer stringSerializer;
|
|
|
|
public EnumNameSerializer(Kryo kryo, Class<? extends Enum> cls) {
|
|
this.enumType = cls;
|
|
this.stringSerializer = kryo.getSerializer(String.class);
|
|
setImmutable(true);
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.Serializer
|
|
public Enum read(Kryo kryo, Input input, Class<Enum> cls) {
|
|
String str = (String) kryo.readObject(input, String.class, this.stringSerializer);
|
|
try {
|
|
return Enum.valueOf(this.enumType, str);
|
|
} catch (IllegalArgumentException e) {
|
|
StringBuilder K = a.K("Invalid name for enum \"");
|
|
K.append(this.enumType.getName());
|
|
K.append("\": ");
|
|
K.append(str);
|
|
throw new KryoException(K.toString(), e);
|
|
}
|
|
}
|
|
|
|
public void write(Kryo kryo, Output output, Enum r4) {
|
|
kryo.writeObject(output, r4.name(), this.stringSerializer);
|
|
}
|
|
}
|