renamed @Adapt to @JsonAdapter

This commit is contained in:
Inderjeet Singh 2014-03-26 17:59:54 +00:00
parent 7f6a096030
commit edf66083e6
6 changed files with 25 additions and 25 deletions

View File

@ -23,7 +23,7 @@ import com.google.gson.internal.Streams;
import com.google.gson.internal.bind.ArrayTypeAdapter;
import com.google.gson.internal.bind.CollectionTypeAdapterFactory;
import com.google.gson.internal.bind.DateTypeAdapter;
import com.google.gson.internal.bind.AdaptAnnotationTypeAdapterFactory;
import com.google.gson.internal.bind.JsonAdapterAnnotationTypeAdapterFactory;
import com.google.gson.internal.bind.JsonTreeReader;
import com.google.gson.internal.bind.JsonTreeWriter;
import com.google.gson.internal.bind.MapTypeAdapterFactory;
@ -249,7 +249,7 @@ public final class Gson {
// type adapters for composite and user-defined types
factories.add(new CollectionTypeAdapterFactory(constructorConstructor));
factories.add(new MapTypeAdapterFactory(constructorConstructor, complexMapKeySerialization));
factories.add(new AdaptAnnotationTypeAdapterFactory(constructorConstructor));
factories.add(new JsonAdapterAnnotationTypeAdapterFactory(constructorConstructor));
factories.add(new ReflectiveTypeAdapterFactory(
constructorConstructor, fieldNamingPolicy, excluder));

View File

@ -86,7 +86,7 @@ import com.google.gson.TypeAdapter;
// Note that the above example is taken from AdaptAnnotationTest.
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface Adapt {
public @interface JsonAdapter {
Class<? extends TypeAdapter<?>> value();

View File

@ -19,36 +19,36 @@ 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.annotations.Adapt;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.internal.ConstructorConstructor;
import com.google.gson.internal.ObjectConstructor;
import com.google.gson.reflect.TypeToken;
/**
* Given a type T, looks for the annotation {@link Adapt} and uses an instance of the
* Given a type T, looks for the annotation {@link JsonAdapter} and uses an instance of the
* specified class as the default type adapter.
*
* @since 2.3
*/
public final class AdaptAnnotationTypeAdapterFactory implements TypeAdapterFactory {
public final class JsonAdapterAnnotationTypeAdapterFactory implements TypeAdapterFactory {
private final ConstructorConstructor constructorConstructor;
public AdaptAnnotationTypeAdapterFactory(ConstructorConstructor constructorConstructor) {
public JsonAdapterAnnotationTypeAdapterFactory(ConstructorConstructor constructorConstructor) {
this.constructorConstructor = constructorConstructor;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
Class<? super T> clazz = targetType.getRawType();
Adapt annotation = clazz.getAnnotation(Adapt.class);
JsonAdapter annotation = clazz.getAnnotation(JsonAdapter.class);
if (annotation == null) return null;
TypeAdapter adapter = getAnnotationTypeAdapter(gson, constructorConstructor, annotation);
return adapter;
}
static TypeAdapter<?> getAnnotationTypeAdapter(Gson gson,
ConstructorConstructor constructorConstructor, Adapt annotation) {
ConstructorConstructor constructorConstructor, JsonAdapter annotation) {
Class<? extends TypeAdapter<?>> adapterClass = annotation.value();
ObjectConstructor<? extends TypeAdapter<?>> constructor =
constructorConstructor.get(TypeToken.get(adapterClass));

View File

@ -27,7 +27,7 @@ import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.annotations.Adapt;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.internal.$Gson$Types;
import com.google.gson.internal.ConstructorConstructor;
@ -104,9 +104,9 @@ public final class ReflectiveTypeAdapterFactory implements TypeAdapterFactory {
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
TypeAdapter<?> adapter = gson.getAdapter(fieldType);
boolean generatedAdapter = Gson.$$Internal.isGeneratedTypeAdapter(gson, adapter);
if (generatedAdapter && field.isAnnotationPresent(Adapt.class)) {
Adapt annotation = field.getAnnotation(Adapt.class);
return AdaptAnnotationTypeAdapterFactory.getAnnotationTypeAdapter(
if (generatedAdapter && field.isAnnotationPresent(JsonAdapter.class)) {
JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
return JsonAdapterAnnotationTypeAdapterFactory.getAnnotationTypeAdapter(
gson, constructorConstructor, annotation);
}
return adapter;

View File

@ -31,14 +31,14 @@ import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.Adapt;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
/**
* Functional tests for the {@link com.google.gson.annotations.Adapt} annotation on classes.
* Functional tests for the {@link com.google.gson.annotations.JsonAdapter} annotation on classes.
*/
public final class AdaptAnnotationOnClassesTest extends TestCase {
public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
public void testJsonAdapterInvoked() {
Gson gson = new Gson();
@ -119,7 +119,7 @@ public final class AdaptAnnotationOnClassesTest extends TestCase {
assertFalse(json.contains("jsonAdapter"));
}
@Adapt(A.JsonAdapter.class)
@JsonAdapter(A.JsonAdapter.class)
private static class A {
final String value;
A(String value) {
@ -143,7 +143,7 @@ public final class AdaptAnnotationOnClassesTest extends TestCase {
}
// Note that the type is NOT TypeAdapter<ClassWithIncorrectJsonAdapter> so this
// should cause error
@Adapt(A.JsonAdapter.class)
@JsonAdapter(A.JsonAdapter.class)
private static final class ClassWithIncorrectJsonAdapter {
@SuppressWarnings("unused") final String value;
ClassWithIncorrectJsonAdapter(String value) {
@ -152,7 +152,7 @@ public final class AdaptAnnotationOnClassesTest extends TestCase {
}
// This class is used in JsonAdapter Javadoc as an example
@Adapt(UserJsonAdapter.class)
@JsonAdapter(UserJsonAdapter.class)
private static class User {
final String firstName, lastName;
User(String firstName, String lastName) {

View File

@ -23,14 +23,14 @@ import junit.framework.TestCase;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.Adapt;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
/**
* Functional tests for the {@link com.google.gson.annotations.Adapt} annotation on fields.
* Functional tests for the {@link com.google.gson.annotations.JsonAdapter} annotation on fields.
*/
public final class AdaptAnnotationOnFieldsTest extends TestCase {
public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
public void testJsonAdapterInvoked() {
Gson gson = new Gson();
@ -65,7 +65,7 @@ public final class AdaptAnnotationOnFieldsTest extends TestCase {
}
private static final class Gadget {
@Adapt(PartJsonAdapter.class)
@JsonAdapter(PartJsonAdapter.class)
final Part part;
Gadget(Part part) {
this.part = part;
@ -96,7 +96,7 @@ public final class AdaptAnnotationOnFieldsTest extends TestCase {
}
}
@Adapt(UserJsonAdapter.class)
@JsonAdapter(UserJsonAdapter.class)
private static class User {
public final String name;
private User(String name) {
@ -129,7 +129,7 @@ public final class AdaptAnnotationOnFieldsTest extends TestCase {
private static final class Computer2 {
// overrides the JsonAdapter annotation of User with this
@Adapt(UserJsonAdapter2.class)
@JsonAdapter(UserJsonAdapter2.class)
final User user;
Computer2(User user) {
this.user = user;