package com.crossbow.gson;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.google.gson.Gson;
/**
* Wrapper around the {@link GsonRequest} for post requests. Needs to be subclassed to prevent
* java type erasure
* <code>
* <pre>
* GsonRequest request = new GsonRequest(params...){}; <-- important curly braces
* </pre>
* </code>
*/
public abstract class GsonPostRequest<T> extends GsonRequest<T> {
private final Object postBody;
public GsonPostRequest(Object postBody, Gson gson, String url, Response.Listener<T> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, gson, listener, errorListener);
this.postBody = postBody;
}
public GsonPostRequest(Object postBody, String url, Response.Listener<T> listener, Response.ErrorListener errorListener) {
this(postBody, DEFAULT_GSON, url, listener, errorListener);
}
@Override
public byte[] getBody() throws AuthFailureError {
return getGson().toJson(postBody).getBytes();
}
}