[Java] Make generated models Parcelable for okhttp-gson if the -DparcelableModel=true option is provided.

This commit is contained in:
Griffin Schneider
2016-07-07 12:13:56 -04:00
committed by wing328
parent ed4200f5c6
commit 1aeceead99
4 changed files with 56 additions and 2 deletions

View File

@@ -8,6 +8,8 @@ import {{import}};
{{/imports}}
{{#serializableModel}}import java.io.Serializable;{{/serializableModel}}
{{#parcelableModel}}import android.os.Parcelable;
import android.os.Parcel;{{/parcelableModel}}
{{#models}}
{{#model}}
{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{>pojo}}{{/isEnum}}

View File

@@ -3,7 +3,7 @@
*/{{#description}}
@ApiModel(description = "{{{description}}}"){{/description}}
{{>generatedAnnotation}}
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} {
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#parcelableModel}}implements Parcelable{{#serializableModel}}, Serializable{{/serializableModel}}{{/parcelableModel}}{{#serializableModel}}implements Serializable{{/serializableModel}} {
{{#vars}}
{{#isEnum}}
{{^isContainer}}
@@ -119,4 +119,46 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali
}
return o.toString().replace("\n", "\n ");
}
{{#parcelableModel}}
public void writeToParcel(Parcel out, int flags) {
{{#parent}} super.writeToParcel(out, flags); {{/parent}} {{#vars}}
out.writeValue({{name}});
{{/vars}}
}
public {{classname}}() {
super();
}
{{classname}}(Parcel in) {
{{#parent}} super(in); {{/parent}}
{{#vars}}
{{#isContainer}}
{{#complexType}}
{{name}} = ({{{datatypeWithEnum}}})in.readValue({{complexType}}.class.getClassLoader());
{{/complexType}}
{{^complexType}}
{{name}} = ({{{datatypeWithEnum}}})in.readValue(null);
{{/complexType}}
{{/isContainer}}
{{^isContainer}}
{{name}} = ({{{datatypeWithEnum}}})in.readValue(null);
{{/isContainer}}
{{/vars}}
}
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<{{classname}}> CREATOR = new Parcelable.Creator<{{classname}}>() {
public {{classname}} createFromParcel(Parcel in) {
return new {{classname}}(in);
}
public {{classname}}[] newArray(int size) {
return new {{classname}}[size];
}
};
{{/parcelableModel}}
}