diff --git a/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillApiError.java b/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillApiError.java index 97bbbc2..56708af 100644 --- a/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillApiError.java +++ b/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillApiError.java @@ -100,6 +100,13 @@ public static final class MandrillError { private String status, name, message; private Integer code; + public MandrillError(String status, String name, String message, Integer code) { + this.status = status; + this.name = name; + this.message = message; + this.code = code; + } + /** * @return The error status returned by the Mandrill API. */ diff --git a/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillRequestDispatcher.java b/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillRequestDispatcher.java index a5cf0da..b61e454 100644 --- a/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillRequestDispatcher.java +++ b/src/main/java/com/microtripit/mandrillapp/lutung/model/MandrillRequestDispatcher.java @@ -5,24 +5,28 @@ import java.io.IOException; import java.io.InputStream; -import java.net.*; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.ProxySelector; +import java.net.URI; import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; -import com.microtripit.mandrillapp.lutung.logging.Logger; -import com.microtripit.mandrillapp.lutung.logging.LoggerFactory; -import com.microtripit.mandrillapp.lutung.model.MandrillApiError.MandrillError; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreProtocolPNames; -import org.apache.http.util.EntityUtils; import org.apache.http.params.HttpConnectionParams; +import com.google.gson.JsonSyntaxException; +import com.microtripit.mandrillapp.lutung.logging.Logger; +import com.microtripit.mandrillapp.lutung.logging.LoggerFactory; +import com.microtripit.mandrillapp.lutung.model.MandrillApiError.MandrillError; + /** * @author rschreijer * @since Feb 21, 2013 @@ -88,8 +92,17 @@ public static final T execute(final RequestModel requestModel, } else { // ==> compile mandrill error! final String e = IOUtils.toString(responseInputStream); - final MandrillError error = LutungGsonUtils.getGson() + MandrillError error = null; + try { + error = LutungGsonUtils.getGson() .fromJson(e, MandrillError.class); + } catch (Throwable ex) { + error = new MandrillError("Invalid Error Format", + "Invalid Error Format", + e, + status.getStatusCode()); + } + throw new MandrillApiError( "Unexpected http status in response: " +status.getStatusCode()+ " ("