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

View File

@ -86,7 +86,7 @@ import com.google.gson.TypeAdapter;
// Note that the above example is taken from AdaptAnnotationTest. // Note that the above example is taken from AdaptAnnotationTest.
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD}) @Target({ElementType.TYPE, ElementType.FIELD})
public @interface Adapt { public @interface JsonAdapter {
Class<? extends TypeAdapter<?>> value(); 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.Gson;
import com.google.gson.TypeAdapter; import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory; 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.ConstructorConstructor;
import com.google.gson.internal.ObjectConstructor; import com.google.gson.internal.ObjectConstructor;
import com.google.gson.reflect.TypeToken; 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. * specified class as the default type adapter.
* *
* @since 2.3 * @since 2.3
*/ */
public final class AdaptAnnotationTypeAdapterFactory implements TypeAdapterFactory { public final class JsonAdapterAnnotationTypeAdapterFactory implements TypeAdapterFactory {
private final ConstructorConstructor constructorConstructor; private final ConstructorConstructor constructorConstructor;
public AdaptAnnotationTypeAdapterFactory(ConstructorConstructor constructorConstructor) { public JsonAdapterAnnotationTypeAdapterFactory(ConstructorConstructor constructorConstructor) {
this.constructorConstructor = constructorConstructor; this.constructorConstructor = constructorConstructor;
} }
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({ "rawtypes", "unchecked" })
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) { public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
Class<? super T> clazz = targetType.getRawType(); Class<? super T> clazz = targetType.getRawType();
Adapt annotation = clazz.getAnnotation(Adapt.class); JsonAdapter annotation = clazz.getAnnotation(JsonAdapter.class);
if (annotation == null) return null; if (annotation == null) return null;
TypeAdapter adapter = getAnnotationTypeAdapter(gson, constructorConstructor, annotation); TypeAdapter adapter = getAnnotationTypeAdapter(gson, constructorConstructor, annotation);
return adapter; return adapter;
} }
static TypeAdapter<?> getAnnotationTypeAdapter(Gson gson, static TypeAdapter<?> getAnnotationTypeAdapter(Gson gson,
ConstructorConstructor constructorConstructor, Adapt annotation) { ConstructorConstructor constructorConstructor, JsonAdapter annotation) {
Class<? extends TypeAdapter<?>> adapterClass = annotation.value(); Class<? extends TypeAdapter<?>> adapterClass = annotation.value();
ObjectConstructor<? extends TypeAdapter<?>> constructor = ObjectConstructor<? extends TypeAdapter<?>> constructor =
constructorConstructor.get(TypeToken.get(adapterClass)); 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.JsonSyntaxException;
import com.google.gson.TypeAdapter; import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory; 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.annotations.SerializedName;
import com.google.gson.internal.$Gson$Types; import com.google.gson.internal.$Gson$Types;
import com.google.gson.internal.ConstructorConstructor; 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) { private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
TypeAdapter<?> adapter = gson.getAdapter(fieldType); TypeAdapter<?> adapter = gson.getAdapter(fieldType);
boolean generatedAdapter = Gson.$$Internal.isGeneratedTypeAdapter(gson, adapter); boolean generatedAdapter = Gson.$$Internal.isGeneratedTypeAdapter(gson, adapter);
if (generatedAdapter && field.isAnnotationPresent(Adapt.class)) { if (generatedAdapter && field.isAnnotationPresent(JsonAdapter.class)) {
Adapt annotation = field.getAnnotation(Adapt.class); JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
return AdaptAnnotationTypeAdapterFactory.getAnnotationTypeAdapter( return JsonAdapterAnnotationTypeAdapterFactory.getAnnotationTypeAdapter(
gson, constructorConstructor, annotation); gson, constructorConstructor, annotation);
} }
return adapter; return adapter;

View File

@ -31,14 +31,14 @@ import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer; import com.google.gson.JsonSerializer;
import com.google.gson.TypeAdapter; 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.JsonReader;
import com.google.gson.stream.JsonWriter; 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() { public void testJsonAdapterInvoked() {
Gson gson = new Gson(); Gson gson = new Gson();
@ -119,7 +119,7 @@ public final class AdaptAnnotationOnClassesTest extends TestCase {
assertFalse(json.contains("jsonAdapter")); assertFalse(json.contains("jsonAdapter"));
} }
@Adapt(A.JsonAdapter.class) @JsonAdapter(A.JsonAdapter.class)
private static class A { private static class A {
final String value; final String value;
A(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 // Note that the type is NOT TypeAdapter<ClassWithIncorrectJsonAdapter> so this
// should cause error // should cause error
@Adapt(A.JsonAdapter.class) @JsonAdapter(A.JsonAdapter.class)
private static final class ClassWithIncorrectJsonAdapter { private static final class ClassWithIncorrectJsonAdapter {
@SuppressWarnings("unused") final String value; @SuppressWarnings("unused") final String value;
ClassWithIncorrectJsonAdapter(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 // This class is used in JsonAdapter Javadoc as an example
@Adapt(UserJsonAdapter.class) @JsonAdapter(UserJsonAdapter.class)
private static class User { private static class User {
final String firstName, lastName; final String firstName, lastName;
User(String firstName, String 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.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter; 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.JsonReader;
import com.google.gson.stream.JsonWriter; 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() { public void testJsonAdapterInvoked() {
Gson gson = new Gson(); Gson gson = new Gson();
@ -65,7 +65,7 @@ public final class AdaptAnnotationOnFieldsTest extends TestCase {
} }
private static final class Gadget { private static final class Gadget {
@Adapt(PartJsonAdapter.class) @JsonAdapter(PartJsonAdapter.class)
final Part part; final Part part;
Gadget(Part part) { Gadget(Part part) {
this.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 { private static class User {
public final String name; public final String name;
private User(String name) { private User(String name) {
@ -129,7 +129,7 @@ public final class AdaptAnnotationOnFieldsTest extends TestCase {
private static final class Computer2 { private static final class Computer2 {
// overrides the JsonAdapter annotation of User with this // overrides the JsonAdapter annotation of User with this
@Adapt(UserJsonAdapter2.class) @JsonAdapter(UserJsonAdapter2.class)
final User user; final User user;
Computer2(User user) { Computer2(User user) {
this.user = user; this.user = user;