From 242a23e0843a437955a3d2a49183cec7c28f5f37 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Fri, 16 Dec 2016 08:47:33 +0100
Subject: [PATCH] - Add id to USerEvent object sent by websocket

---
 .../elasticsearch/user/model/UserEvent.java   | 11 +++++++++++
 .../user/service/UserEventService.java        | 19 ++++++++++---------
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/model/UserEvent.java b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/model/UserEvent.java
index 66c4e764..31ab24c5 100644
--- a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/model/UserEvent.java
+++ b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/model/UserEvent.java
@@ -57,6 +57,7 @@ public class UserEvent extends Record {
         return new Builder(type, code, message, params);
     }
 
+    public static final String PROPERTY_ID="id";
     public static final String PROPERTY_TYPE="type";
     public static final String PROPERTY_CODE="code";
     public static final String PROPERTY_MESSAGE="message";
@@ -67,6 +68,8 @@ public class UserEvent extends Record {
     public static final String PROPERTY_READ_SIGNATURE="readSignature";
 
 
+    private String id;
+
     private EventType type;
 
     private String recipient;
@@ -167,6 +170,14 @@ public class UserEvent extends Record {
         this.readSignature = readSignature;
     }
 
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
     @JsonIgnore
     public String toJson() {
         try {
diff --git a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java
index d43d4893..c61630e2 100644
--- a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java
+++ b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java
@@ -27,23 +27,18 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.base.Preconditions;
 import com.google.gson.JsonSyntaxException;
-import org.apache.commons.collections4.MapUtils;
 import org.duniter.core.exception.TechnicalException;
 import org.duniter.core.service.CryptoService;
 import org.duniter.core.service.MailService;
 import org.duniter.core.util.StringUtils;
 import org.duniter.core.util.crypto.CryptoUtils;
 import org.duniter.core.util.crypto.KeyPair;
-import org.duniter.core.util.websocket.WebsocketClientEndpoint;
 import org.duniter.elasticsearch.PluginSettings;
-import org.duniter.elasticsearch.exception.InvalidFormatException;
 import org.duniter.elasticsearch.exception.InvalidSignatureException;
-import org.duniter.elasticsearch.exception.NotFoundException;
 import org.duniter.elasticsearch.service.AbstractService;
 import org.duniter.elasticsearch.service.BlockchainService;
 import org.duniter.elasticsearch.threadpool.ThreadPool;
 import org.duniter.elasticsearch.user.model.UserEvent;
-import org.duniter.elasticsearch.user.model.UserEventCodes;
 import org.duniter.elasticsearch.user.model.UserProfile;
 import org.elasticsearch.action.bulk.BulkRequestBuilder;
 import org.elasticsearch.action.index.IndexResponse;
@@ -57,7 +52,8 @@ import org.elasticsearch.common.inject.Inject;
 import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.common.xcontent.XContentBuilder;
 import org.elasticsearch.common.xcontent.XContentFactory;
-import org.elasticsearch.index.query.*;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.SearchHit;
 import org.nuiton.i18n.I18n;
 
@@ -412,20 +408,25 @@ public class UserEventService extends AbstractService {
         indexEventAndNotifyListener(locale, event);
     }
 
-    private void indexEventAndNotifyListener(Locale locale, UserEvent event) {
+    private String indexEventAndNotifyListener(final Locale locale, final UserEvent event) {
         // Add new event to index
-        indexEvent(locale, event);
+        final String eventId = indexEvent(locale, event);
+
+        final UserEvent eventCopy = new UserEvent(event);
+        eventCopy.setId(eventId);
 
         // Notify listeners
         threadPool.schedule(() -> {
             synchronized (LISTENERS) {
                 LISTENERS.values().stream().forEach(listener -> {
                     if (event.getRecipient().equals(listener.getPubkey())) {
-                        listener.onEvent(event);
+                        listener.onEvent(eventCopy);
                     }
                 });
             }
         });
+
+        return eventId;
     }
 
     private void doDeleteEventsByReference(final UserEvent.Reference reference) {
-- 
GitLab