package com.jsoniter;
import com.jsoniter.spi.Decoder;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
class ReflectionEnumDecoder implements Decoder{
private final Map<Slice, Object> enumMap = new HashMap<Slice, Object>();
private Class clazz;
public ReflectionEnumDecoder(Class clazz) {
this.clazz = clazz;
for (Object e : clazz.getEnumConstants()) {
enumMap.put(Slice.make(e.toString()), e);
}
}
@Override
public Object decode(JsonIterator iter) throws IOException {
if (iter.readNull()) {
return null;
}
Slice slice = IterImpl.readSlice(iter);
Object e = enumMap.get(slice);
if (e == null) {
throw iter.reportError("ReflectionEnumDecoder", slice + " is not valid enum for " + clazz);
}
return e;
}
}