From 4d7d0e3e2c62f9d041af4b6a90cd1888c3c3706e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Est=C3=A9banez?= Date: Thu, 2 Aug 2018 13:55:35 +0200 Subject: [PATCH] [IMP] Better error handling when loading records --- .../java/com/odoojava/api/ObjectAdapter.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/odoojava/api/ObjectAdapter.java b/src/main/java/com/odoojava/api/ObjectAdapter.java index 447b921..eb114d2 100644 --- a/src/main/java/com/odoojava/api/ObjectAdapter.java +++ b/src/main/java/com/odoojava/api/ObjectAdapter.java @@ -670,11 +670,28 @@ private void importDataV7(RowCollection rows, Object[][] importRows) throws XmlR if (results.get("ids") instanceof Boolean) { // There was an error. ids is false and not an Object[] - Map[] messages = (Map[]) results.get("messages"); - String errorString = Arrays.stream(messages) // NOSONAR - .flatMap(m -> m.entrySet().stream()) - .map(e -> String.join(":", e.getKey(), e.getValue().toString())) - .collect(Collectors.joining("\n")); + boolean std_method = true; + String errorString = "Unknown Error!"; + try { + Map[] messages = (Map[]) results.get("messages"); + errorString = Arrays.stream(messages) // NOSONAR + .flatMap(m -> m.entrySet().stream()) + .map(e -> String.join(":", e.getKey(), e.getValue().toString())) + .collect(Collectors.joining("\n")); + } catch (Exception e) { + std_method = false; + } + + if (!std_method) { + Object[] messages = (Object[]) results.get("messages"); + if (messages != null && messages.length > 0) { + Object object = messages[0]; + if (object instanceof Map) { + Map map = (Map) object; + errorString = map.get("message").toString(); + } + } + } throw new OdooApiException(errorString); }