renamed @Adapt to @JsonAdapter
This commit is contained in:
parent
7f6a096030
commit
edf66083e6
|
@ -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));
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
@ -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));
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
|
@ -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;
|
Loading…
Reference in New Issue
Block a user