The log-statement for unmapped exceptions really prints the unmapped error
[facebook-errors] / src / main / java / de / juplo / facebook / errors / GraphApiException.java
index 31c23dc..a781c3b 100644 (file)
@@ -1,12 +1,11 @@
 package de.juplo.facebook.errors;
 
 
-import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import org.slf4j.Logger;
@@ -48,12 +47,15 @@ public class GraphApiException extends RuntimeException
       HttpHeaders headers,
       InputStream in
       )
-      throws
-        IOException,
-        JsonParseException,
-        JsonMappingException
   {
-    return create(status, headers, OBJECT_MAPPER.readValue(in, FacebookErrorMessage.class));
+    try
+    {
+      return create(status, headers, OBJECT_MAPPER.readValue(in, FacebookErrorMessage.class));
+    }
+    catch (IOException | RuntimeException e)
+    {
+      return new ErrorResponseParsingErrorException(status, headers, e);
+    }
   }
 
   public static GraphApiException create(
@@ -61,12 +63,8 @@ public class GraphApiException extends RuntimeException
       HttpHeaders headers,
       byte[] message
       )
-      throws
-        IOException,
-        JsonParseException,
-        JsonMappingException
   {
-    return create(status, headers, OBJECT_MAPPER.readValue(message, FacebookErrorMessage.class));
+    return create(status, headers, new ByteArrayInputStream(message));
   }
 
   public static GraphApiException create(
@@ -91,6 +89,7 @@ public class GraphApiException extends RuntimeException
       case 100:   return new UnsupportedGetRequestException(status, headers, error);
       case 102:   return new UserAccessTokenRequiredException(status, headers, error);
       case 104:   return new AccessTokenRequiredException(status, headers, error);
+      case 190:   return new AccessTokenExpiredException(status, headers, error);
       // 200..299: permission errors
       case 200:
       case 201:
@@ -211,8 +210,9 @@ public class GraphApiException extends RuntimeException
       case 2200:  return new CallbackVerificationFailedException(status, headers, error);
 
       default:
-        LOG.info("unmapped error: {}", error);
-        return new UnmappedErrorException(status, headers, error);
+        GraphApiException e = new UnmappedErrorException(status, headers, error);
+        LOG.info("unmapped error: {}", e.toString());
+        return e;
     }
   }