Skip to content

Commit

Permalink
Java model TypeAdapter write method should not use delegateAdapter.
Browse files Browse the repository at this point in the history
  • Loading branch information
RicoYao committed Jul 26, 2019
1 parent 102d645 commit 4124671
Show file tree
Hide file tree
Showing 8 changed files with 307 additions and 49 deletions.
41 changes: 36 additions & 5 deletions Examples/Java/Sources/Board.java
Original file line number Diff line number Diff line change
Expand Up @@ -457,17 +457,17 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {

public static class BoardTypeAdapter extends TypeAdapter<Board> {

final private TypeAdapter<Board> delegateTypeAdapter;

final private TypeAdapter<Date> dateTypeAdapter;
final private TypeAdapter<Image> imageTypeAdapter;
final private TypeAdapter<Map<String, Integer>> map_String__Integer_TypeAdapter;
final private TypeAdapter<Map<String, String>> map_String__String_TypeAdapter;
final private TypeAdapter<Set<User>> set_User_TypeAdapter;
final private TypeAdapter<String> stringTypeAdapter;

final private TypeAdapter<boolean[]> bitsTypeAdapter;

public BoardTypeAdapter(Gson gson, BoardTypeAdapterFactory factory, TypeToken typeToken) {
this.delegateTypeAdapter = gson.getDelegateAdapter(factory, typeToken);
this.bitsTypeAdapter = gson.getAdapter(new TypeToken<boolean[]>(){}).nullSafe();
this.dateTypeAdapter = gson.getAdapter(Date.class).nullSafe();
this.imageTypeAdapter = gson.getAdapter(Image.class).nullSafe();
this.map_String__Integer_TypeAdapter = gson.getAdapter(new TypeToken<Map<String, Integer>>(){}).nullSafe();
Expand All @@ -478,8 +478,39 @@ public BoardTypeAdapter(Gson gson, BoardTypeAdapterFactory factory, TypeToken ty

@Override
public void write(JsonWriter writer, Board value) throws IOException {
writer.setSerializeNulls(false);
this.delegateTypeAdapter.write(writer, value);
writer.beginObject();
if (value.getUidIsSet()) {
stringTypeAdapter.write(writer.name("id"), value.uid);
}
if (value.getContributorsIsSet()) {
set_User_TypeAdapter.write(writer.name("contributors"), value.contributors);
}
if (value.getCountsIsSet()) {
map_String__Integer_TypeAdapter.write(writer.name("counts"), value.counts);
}
if (value.getCreatedAtIsSet()) {
dateTypeAdapter.write(writer.name("created_at"), value.createdAt);
}
if (value.getCreatorIsSet()) {
map_String__String_TypeAdapter.write(writer.name("creator"), value.creator);
}
if (value.getCreatorURLIsSet()) {
stringTypeAdapter.write(writer.name("creator_url"), value.creatorURL);
}
if (value.getDescriptionIsSet()) {
stringTypeAdapter.write(writer.name("description"), value.description);
}
if (value.getImageIsSet()) {
imageTypeAdapter.write(writer.name("image"), value.image);
}
if (value.getNameIsSet()) {
stringTypeAdapter.write(writer.name("name"), value.name);
}
if (value.getUrlIsSet()) {
stringTypeAdapter.write(writer.name("url"), value.url);
}
bitsTypeAdapter.write(writer.name("_bits"), value._bits);
writer.endObject();
}

@Override
Expand Down
119 changes: 114 additions & 5 deletions Examples/Java/Sources/Everything.java
Original file line number Diff line number Diff line change
Expand Up @@ -1489,8 +1489,6 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {

public static class EverythingTypeAdapter extends TypeAdapter<Everything> {

final private TypeAdapter<Everything> delegateTypeAdapter;

final private TypeAdapter<Boolean> booleanTypeAdapter;
final private TypeAdapter<Date> dateTypeAdapter;
final private TypeAdapter<Double> doubleTypeAdapter;
Expand Down Expand Up @@ -1525,8 +1523,10 @@ public static class EverythingTypeAdapter extends TypeAdapter<Everything> {
final private TypeAdapter<String> stringTypeAdapter;
final private TypeAdapter<User> userTypeAdapter;

final private TypeAdapter<boolean[]> bitsTypeAdapter;

public EverythingTypeAdapter(Gson gson, EverythingTypeAdapterFactory factory, TypeToken typeToken) {
this.delegateTypeAdapter = gson.getDelegateAdapter(factory, typeToken);
this.bitsTypeAdapter = gson.getAdapter(new TypeToken<boolean[]>(){}).nullSafe();
this.booleanTypeAdapter = gson.getAdapter(Boolean.class).nullSafe();
this.dateTypeAdapter = gson.getAdapter(Date.class).nullSafe();
this.doubleTypeAdapter = gson.getAdapter(Double.class).nullSafe();
Expand Down Expand Up @@ -1564,8 +1564,117 @@ public EverythingTypeAdapter(Gson gson, EverythingTypeAdapterFactory factory, Ty

@Override
public void write(JsonWriter writer, Everything value) throws IOException {
writer.setSerializeNulls(false);
this.delegateTypeAdapter.write(writer, value);
writer.beginObject();
if (value.getArrayPropIsSet()) {
list_Object_TypeAdapter.write(writer.name("array_prop"), value.arrayProp);
}
if (value.getBooleanPropIsSet()) {
booleanTypeAdapter.write(writer.name("boolean_prop"), value.booleanProp);
}
if (value.getCharEnumIsSet()) {
everythingCharEnumTypeAdapter.write(writer.name("char_enum"), value.charEnum);
}
if (value.getDatePropIsSet()) {
dateTypeAdapter.write(writer.name("date_prop"), value.dateProp);
}
if (value.getIntEnumIsSet()) {
everythingIntEnumTypeAdapter.write(writer.name("int_enum"), value.intEnum);
}
if (value.getIntPropIsSet()) {
integerTypeAdapter.write(writer.name("int_prop"), value.intProp);
}
if (value.getListPolymorphicValuesIsSet()) {
list_Object_TypeAdapter.write(writer.name("list_polymorphic_values"), value.listPolymorphicValues);
}
if (value.getListWithListAndOtherModelValuesIsSet()) {
list_List_User__TypeAdapter.write(writer.name("list_with_list_and_other_model_values"), value.listWithListAndOtherModelValues);
}
if (value.getListWithMapAndOtherModelValuesIsSet()) {
list_Map_String__User__TypeAdapter.write(writer.name("list_with_map_and_other_model_values"), value.listWithMapAndOtherModelValues);
}
if (value.getListWithObjectValuesIsSet()) {
list_String_TypeAdapter.write(writer.name("list_with_object_values"), value.listWithObjectValues);
}
if (value.getListWithOtherModelValuesIsSet()) {
list_User_TypeAdapter.write(writer.name("list_with_other_model_values"), value.listWithOtherModelValues);
}
if (value.getListWithPrimitiveValuesIsSet()) {
list_Integer_TypeAdapter.write(writer.name("list_with_primitive_values"), value.listWithPrimitiveValues);
}
if (value.getMapPolymorphicValuesIsSet()) {
map_String__EverythingMapPolymorphicValues_TypeAdapter.write(writer.name("map_polymorphic_values"), value.mapPolymorphicValues);
}
if (value.getMapPropIsSet()) {
map_String__Object_TypeAdapter.write(writer.name("map_prop"), value.mapProp);
}
if (value.getMapWithListAndOtherModelValuesIsSet()) {
map_String__List_User__TypeAdapter.write(writer.name("map_with_list_and_other_model_values"), value.mapWithListAndOtherModelValues);
}
if (value.getMapWithMapAndOtherModelValuesIsSet()) {
map_String__Map_String__Object__TypeAdapter.write(writer.name("map_with_map_and_other_model_values"), value.mapWithMapAndOtherModelValues);
}
if (value.getMapWithObjectValuesIsSet()) {
map_String__String_TypeAdapter.write(writer.name("map_with_object_values"), value.mapWithObjectValues);
}
if (value.getMapWithOtherModelValuesIsSet()) {
map_String__User_TypeAdapter.write(writer.name("map_with_other_model_values"), value.mapWithOtherModelValues);
}
if (value.getMapWithPrimitiveValuesIsSet()) {
map_String__Integer_TypeAdapter.write(writer.name("map_with_primitive_values"), value.mapWithPrimitiveValues);
}
if (value.getNsintegerEnumIsSet()) {
everythingNsintegerEnumTypeAdapter.write(writer.name("nsinteger_enum"), value.nsintegerEnum);
}
if (value.getNsuintegerEnumIsSet()) {
everythingNsuintegerEnumTypeAdapter.write(writer.name("nsuinteger_enum"), value.nsuintegerEnum);
}
if (value.getNumberPropIsSet()) {
doubleTypeAdapter.write(writer.name("number_prop"), value.numberProp);
}
if (value.getOtherModelPropIsSet()) {
userTypeAdapter.write(writer.name("other_model_prop"), value.otherModelProp);
}
if (value.getPolymorphicPropIsSet()) {
everythingPolymorphicPropTypeAdapter.write(writer.name("polymorphic_prop"), value.polymorphicProp);
}
if (value.getSetPropIsSet()) {
set_Object_TypeAdapter.write(writer.name("set_prop"), value.setProp);
}
if (value.getSetPropWithOtherModelValuesIsSet()) {
set_User_TypeAdapter.write(writer.name("set_prop_with_other_model_values"), value.setPropWithOtherModelValues);
}
if (value.getSetPropWithPrimitiveValuesIsSet()) {
set_Integer_TypeAdapter.write(writer.name("set_prop_with_primitive_values"), value.setPropWithPrimitiveValues);
}
if (value.getSetPropWithValuesIsSet()) {
set_String_TypeAdapter.write(writer.name("set_prop_with_values"), value.setPropWithValues);
}
if (value.getShortEnumIsSet()) {
everythingShortEnumTypeAdapter.write(writer.name("short_enum"), value.shortEnum);
}
if (value.getStringEnumIsSet()) {
everythingStringEnumTypeAdapter.write(writer.name("string_enum"), value.stringEnum);
}
if (value.getStringPropIsSet()) {
stringTypeAdapter.write(writer.name("string_prop"), value.stringProp);
}
if (value.getTypeIsSet()) {
stringTypeAdapter.write(writer.name("type"), value.type);
}
if (value.getUnsignedCharEnumIsSet()) {
everythingUnsignedCharEnumTypeAdapter.write(writer.name("unsigned_char_enum"), value.unsignedCharEnum);
}
if (value.getUnsignedIntEnumIsSet()) {
everythingUnsignedIntEnumTypeAdapter.write(writer.name("unsigned_int_enum"), value.unsignedIntEnum);
}
if (value.getUnsignedShortEnumIsSet()) {
everythingUnsignedShortEnumTypeAdapter.write(writer.name("unsigned_short_enum"), value.unsignedShortEnum);
}
if (value.getUriPropIsSet()) {
stringTypeAdapter.write(writer.name("uri_prop"), value.uriProp);
}
bitsTypeAdapter.write(writer.name("_bits"), value._bits);
writer.endObject();
}

@Override
Expand Down
20 changes: 15 additions & 5 deletions Examples/Java/Sources/Image.java
Original file line number Diff line number Diff line change
Expand Up @@ -214,21 +214,31 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {

public static class ImageTypeAdapter extends TypeAdapter<Image> {

final private TypeAdapter<Image> delegateTypeAdapter;

final private TypeAdapter<Integer> integerTypeAdapter;
final private TypeAdapter<String> stringTypeAdapter;

final private TypeAdapter<boolean[]> bitsTypeAdapter;

public ImageTypeAdapter(Gson gson, ImageTypeAdapterFactory factory, TypeToken typeToken) {
this.delegateTypeAdapter = gson.getDelegateAdapter(factory, typeToken);
this.bitsTypeAdapter = gson.getAdapter(new TypeToken<boolean[]>(){}).nullSafe();
this.integerTypeAdapter = gson.getAdapter(Integer.class).nullSafe();
this.stringTypeAdapter = gson.getAdapter(String.class).nullSafe();
}

@Override
public void write(JsonWriter writer, Image value) throws IOException {
writer.setSerializeNulls(false);
this.delegateTypeAdapter.write(writer, value);
writer.beginObject();
if (value.getHeightIsSet()) {
integerTypeAdapter.write(writer.name("height"), value.height);
}
if (value.getUrlIsSet()) {
stringTypeAdapter.write(writer.name("url"), value.url);
}
if (value.getWidthIsSet()) {
integerTypeAdapter.write(writer.name("width"), value.width);
}
bitsTypeAdapter.write(writer.name("_bits"), value._bits);
writer.endObject();
}

@Override
Expand Down
14 changes: 9 additions & 5 deletions Examples/Java/Sources/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -142,19 +142,23 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {

public static class ModelTypeAdapter extends TypeAdapter<Model> {

final private TypeAdapter<Model> delegateTypeAdapter;

final private TypeAdapter<String> stringTypeAdapter;

final private TypeAdapter<boolean[]> bitsTypeAdapter;

public ModelTypeAdapter(Gson gson, ModelTypeAdapterFactory factory, TypeToken typeToken) {
this.delegateTypeAdapter = gson.getDelegateAdapter(factory, typeToken);
this.bitsTypeAdapter = gson.getAdapter(new TypeToken<boolean[]>(){}).nullSafe();
this.stringTypeAdapter = gson.getAdapter(String.class).nullSafe();
}

@Override
public void write(JsonWriter writer, Model value) throws IOException {
writer.setSerializeNulls(false);
this.delegateTypeAdapter.write(writer, value);
writer.beginObject();
if (value.getUidIsSet()) {
stringTypeAdapter.write(writer.name("id"), value.uid);
}
bitsTypeAdapter.write(writer.name("_bits"), value._bits);
writer.endObject();
}

@Override
Expand Down
62 changes: 57 additions & 5 deletions Examples/Java/Sources/Pin.java
Original file line number Diff line number Diff line change
Expand Up @@ -720,8 +720,6 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {

public static class PinTypeAdapter extends TypeAdapter<Pin> {

final private TypeAdapter<Pin> delegateTypeAdapter;

final private TypeAdapter<Board> boardTypeAdapter;
final private TypeAdapter<Date> dateTypeAdapter;
final private TypeAdapter<Image> imageTypeAdapter;
Expand All @@ -734,8 +732,10 @@ public static class PinTypeAdapter extends TypeAdapter<Pin> {
final private TypeAdapter<PinInStock> pinInStockTypeAdapter;
final private TypeAdapter<String> stringTypeAdapter;

final private TypeAdapter<boolean[]> bitsTypeAdapter;

public PinTypeAdapter(Gson gson, PinTypeAdapterFactory factory, TypeToken typeToken) {
this.delegateTypeAdapter = gson.getDelegateAdapter(factory, typeToken);
this.bitsTypeAdapter = gson.getAdapter(new TypeToken<boolean[]>(){}).nullSafe();
this.boardTypeAdapter = gson.getAdapter(Board.class).nullSafe();
this.dateTypeAdapter = gson.getAdapter(Date.class).nullSafe();
this.imageTypeAdapter = gson.getAdapter(Image.class).nullSafe();
Expand All @@ -751,8 +751,60 @@ public PinTypeAdapter(Gson gson, PinTypeAdapterFactory factory, TypeToken typeTo

@Override
public void write(JsonWriter writer, Pin value) throws IOException {
writer.setSerializeNulls(false);
this.delegateTypeAdapter.write(writer, value);
writer.beginObject();
if (value.getAttributionIsSet()) {
map_String__String_TypeAdapter.write(writer.name("attribution"), value.attribution);
}
if (value.getAttributionObjectsIsSet()) {
list_PinAttributionObjects_TypeAdapter.write(writer.name("attribution_objects"), value.attributionObjects);
}
if (value.getBoardIsSet()) {
boardTypeAdapter.write(writer.name("board"), value.board);
}
if (value.getColorIsSet()) {
stringTypeAdapter.write(writer.name("color"), value.color);
}
if (value.getCountsIsSet()) {
map_String__Integer_TypeAdapter.write(writer.name("counts"), value.counts);
}
if (value.getCreatedAtIsSet()) {
dateTypeAdapter.write(writer.name("created_at"), value.createdAt);
}
if (value.getCreatorIsSet()) {
map_String__User_TypeAdapter.write(writer.name("creator"), value.creator);
}
if (value.getDescriptionIsSet()) {
stringTypeAdapter.write(writer.name("description"), value.description);
}
if (value.getUidIsSet()) {
stringTypeAdapter.write(writer.name("id"), value.uid);
}
if (value.getImageIsSet()) {
imageTypeAdapter.write(writer.name("image"), value.image);
}
if (value.getInStockIsSet()) {
pinInStockTypeAdapter.write(writer.name("in_stock"), value.inStock);
}
if (value.getLinkIsSet()) {
stringTypeAdapter.write(writer.name("link"), value.link);
}
if (value.getMediaIsSet()) {
map_String__String_TypeAdapter.write(writer.name("media"), value.media);
}
if (value.getNoteIsSet()) {
stringTypeAdapter.write(writer.name("note"), value.note);
}
if (value.getTagsIsSet()) {
list_Map_String__Object__TypeAdapter.write(writer.name("tags"), value.tags);
}
if (value.getUrlIsSet()) {
stringTypeAdapter.write(writer.name("url"), value.url);
}
if (value.getVisualSearchAttrsIsSet()) {
map_String__Object_TypeAdapter.write(writer.name("visual_search_attrs"), value.visualSearchAttrs);
}
bitsTypeAdapter.write(writer.name("_bits"), value._bits);
writer.endObject();
}

@Override
Expand Down
Loading

0 comments on commit 4124671

Please sign in to comment.