Register runtime type adapters using the proper factory-specific APIs.
This commit is contained in:
parent
4cb1b88115
commit
bcaf56079c
|
@ -19,6 +19,7 @@ package com.google.gson.typeadapters;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.JsonParseException;
|
import com.google.gson.JsonParseException;
|
||||||
|
import com.google.gson.TypeAdapterFactory;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
|
@ -28,7 +29,7 @@ public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
BillingInstrument.class)
|
BillingInstrument.class)
|
||||||
.registerSubtype(CreditCard.class);
|
.registerSubtype(CreditCard.class);
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(BillingInstrument.class, rta)
|
.registerTypeAdapterFactory(rta)
|
||||||
.create();
|
.create();
|
||||||
|
|
||||||
CreditCard original = new CreditCard("Jesse", 234);
|
CreditCard original = new CreditCard("Jesse", 234);
|
||||||
|
@ -41,11 +42,11 @@ public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRuntimeTypeIsBaseType() {
|
public void testRuntimeTypeIsBaseType() {
|
||||||
RuntimeTypeAdapterFactory<BillingInstrument> rta = RuntimeTypeAdapterFactory.of(
|
TypeAdapterFactory rta = RuntimeTypeAdapterFactory.of(
|
||||||
BillingInstrument.class)
|
BillingInstrument.class)
|
||||||
.registerSubtype(BillingInstrument.class);
|
.registerSubtype(BillingInstrument.class);
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(BillingInstrument.class, rta)
|
.registerTypeAdapterFactory(rta)
|
||||||
.create();
|
.create();
|
||||||
|
|
||||||
BillingInstrument original = new BillingInstrument("Jesse");
|
BillingInstrument original = new BillingInstrument("Jesse");
|
||||||
|
@ -115,10 +116,10 @@ public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDeserializeMissingTypeField() {
|
public void testDeserializeMissingTypeField() {
|
||||||
Object billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class)
|
TypeAdapterFactory billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class)
|
||||||
.registerSubtype(CreditCard.class);
|
.registerSubtype(CreditCard.class);
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(BillingInstrument.class, billingAdapter)
|
.registerTypeAdapterFactory(billingAdapter)
|
||||||
.create();
|
.create();
|
||||||
try {
|
try {
|
||||||
gson.fromJson("{ownerName:'Jesse'}", BillingInstrument.class);
|
gson.fromJson("{ownerName:'Jesse'}", BillingInstrument.class);
|
||||||
|
@ -128,10 +129,10 @@ public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDeserializeMissingSubtype() {
|
public void testDeserializeMissingSubtype() {
|
||||||
Object billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class)
|
TypeAdapterFactory billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class)
|
||||||
.registerSubtype(BankTransfer.class);
|
.registerSubtype(BankTransfer.class);
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(BillingInstrument.class, billingAdapter)
|
.registerTypeAdapterFactory(billingAdapter)
|
||||||
.create();
|
.create();
|
||||||
try {
|
try {
|
||||||
gson.fromJson("{type:'CreditCard',ownerName:'Jesse'}", BillingInstrument.class);
|
gson.fromJson("{type:'CreditCard',ownerName:'Jesse'}", BillingInstrument.class);
|
||||||
|
@ -141,10 +142,10 @@ public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSerializeMissingSubtype() {
|
public void testSerializeMissingSubtype() {
|
||||||
Object billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class)
|
TypeAdapterFactory billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class)
|
||||||
.registerSubtype(BankTransfer.class);
|
.registerSubtype(BankTransfer.class);
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(BillingInstrument.class, billingAdapter)
|
.registerTypeAdapterFactory(billingAdapter)
|
||||||
.create();
|
.create();
|
||||||
try {
|
try {
|
||||||
gson.toJson(new CreditCard("Jesse", 456), BillingInstrument.class);
|
gson.toJson(new CreditCard("Jesse", 456), BillingInstrument.class);
|
||||||
|
@ -154,10 +155,10 @@ public final class RuntimeTypeAdapterFactoryTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSerializeCollidingTypeFieldName() {
|
public void testSerializeCollidingTypeFieldName() {
|
||||||
Object billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class, "cvv")
|
TypeAdapterFactory billingAdapter = RuntimeTypeAdapterFactory.of(BillingInstrument.class, "cvv")
|
||||||
.registerSubtype(CreditCard.class);
|
.registerSubtype(CreditCard.class);
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(BillingInstrument.class, billingAdapter)
|
.registerTypeAdapterFactory(billingAdapter)
|
||||||
.create();
|
.create();
|
||||||
try {
|
try {
|
||||||
gson.toJson(new CreditCard("Jesse", 456), BillingInstrument.class);
|
gson.toJson(new CreditCard("Jesse", 456), BillingInstrument.class);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user