package com.google.gson.internal.bind;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.internal.StringMap;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public final class ObjectTypeAdapter extends TypeAdapter<Object>
{
public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory()
{
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
if (type.getRawType() == Object.class) {
return new ObjectTypeAdapter(gson, null);
}
return null;
}
};
private final Gson gson;
private ObjectTypeAdapter(Gson gson) {
this.gson = gson;
}
public Object read(JsonReader in) throws IOException {
JsonToken token = in.peek();
switch (2.$SwitchMap$com$google$gson$stream$JsonToken[token.ordinal()]) {
case 1:
List list = new ArrayList();
in.beginArray();
while (in.hasNext()) {
list.add(read(in));
}
in.endArray();
return list;
case 2:
Map map = new StringMap();
in.beginObject();
while (in.hasNext()) {
map.put(in.nextName(), read(in));
}
in.endObject();
return map;
case 3:
return in.nextString();
case 4:
return Double.valueOf(in.nextDouble());
case 5:
return Boolean.valueOf(in.nextBoolean());
case 6:
in.nextNull();
return null;
}
throw new IllegalStateException();
}
public void write(JsonWriter out, Object value) throws IOException
{
if (value == null) {
out.nullValue();
return;
}
TypeAdapter typeAdapter = this.gson.getAdapter(value.getClass());
if ((typeAdapter instanceof ObjectTypeAdapter)) {
out.beginObject();
out.endObject();
return;
}
typeAdapter.write(out, value);
}
}