From c76a219a7d8de3adbd3bcd594f4294dd22d599f5 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Tue, 8 Jan 2019 13:07:09 +0100
Subject: [PATCH] [fix] Error on user/profile document : string value for
 'time' cause an synchro error - fix #37

---
 .../synchro/AbstractSynchroAction.java              | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java
index a94411bd..4a6c53d3 100644
--- a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java
+++ b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java
@@ -523,7 +523,18 @@ public abstract class AbstractSynchroAction extends AbstractService implements S
                 }
 
                 // Check version
-                Number existingVersion = ((Number) existingFields.get(versionFieldName));
+                Number existingVersion = null;
+                Object versionObj = existingFields.get(versionFieldName);
+                if (versionObj != null) {
+                    if (versionObj instanceof String) {
+                        existingVersion = Long.parseLong((String) versionObj);
+                    } else if (versionObj instanceof Number) {
+                        existingVersion = ((Number) versionObj);
+                    } else {
+                        throw new InvalidFormatException(String.format("Invalid document: '%s' should be a long, but found: %s", versionFieldName, versionObj));
+                    }
+                }
+
                 boolean doUpdate = (existingVersion == null || version > existingVersion.longValue());
 
                 if (doUpdate) {
-- 
GitLab