/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.client;
import org.apache.commons.lang.StringUtils;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.jboss.resteasy.client.ClientResponse;
import org.xdi.oxauth.model.error.IErrorType;
/**
* @author Yuriy Zabrovarnyy
* @version 0.9, 09/10/2012
*/
public abstract class BaseResponseWithErrors<T extends IErrorType> extends BaseResponse {
// private static final Logger LOG = Logger.getLogger(BaseResponseWithErrors.class);
private T errorType;
private String errorDescription;
private String errorUri;
public BaseResponseWithErrors() {
super();
}
public BaseResponseWithErrors(ClientResponse<String> clientResponse) {
super(clientResponse);
final String entity = getEntity();
if (StringUtils.isNotBlank(entity)) {
injectErrorIfExistSilently(entity);
}
}
public String getErrorDescription() {
return errorDescription;
}
public void setErrorDescription(String p_errorDescription) {
errorDescription = p_errorDescription;
}
public T getErrorType() {
return errorType;
}
public void setErrorType(T p_errorType) {
errorType = p_errorType;
}
public String getErrorUri() {
return errorUri;
}
public void setErrorUri(String p_errorUri) {
errorUri = p_errorUri;
}
public abstract T fromString(String p_str);
public void injectDataFromJson(String p_json) {
}
public void injectErrorIfExistSilently(JSONObject jsonObj) throws JSONException {
if (jsonObj.has("error")) {
errorType = fromString(jsonObj.getString("error"));
}
if (jsonObj.has("error_description")) {
errorDescription = jsonObj.getString("error_description");
}
if (jsonObj.has("error_uri")) {
errorUri = jsonObj.getString("error_uri");
}
}
public void injectErrorIfExistSilently(String p_entity) {
try {
injectErrorIfExistSilently(new JSONObject(p_entity));
} catch (JSONException e) {
// ignore : it's ok to skip exception because entity string can be json array or just trash
}
}
}