package mediabrowser.apiinteraction; import mediabrowser.apiinteraction.Response; import mediabrowser.model.logging.ILogger; import mediabrowser.model.serialization.IJsonSerializer; public class SerializedResponse<T> extends Response<String> { private IJsonSerializer jsonSerializer; private Class type; protected Response<T> innerResponse; private String url; private ILogger logger; public SerializedResponse(Response<T> innerResponse, IJsonSerializer jsonSerializer, Class type) { super(innerResponse); this.jsonSerializer = jsonSerializer; this.type = type; this.innerResponse = innerResponse; } public SerializedResponse(Response<T> innerResponse, IJsonSerializer jsonSerializer, String url, ILogger logger, Class type) { super(innerResponse); this.jsonSerializer = jsonSerializer; this.type = type; this.innerResponse = innerResponse; this.url = url; this.logger = logger; } @Override public void onResponse(String result) { if (url != null){ logger.Debug("Received response from %s", url); } try { T obj = jsonSerializer.DeserializeFromString(result, type); onSerializedResponse(obj); } catch (Exception e) { innerResponse.onError(e); } } protected void onSerializedResponse(T obj){ innerResponse.onResponse(obj); } }