From 22bf887a55a8007f72f2a0b4b9bfa34fafa377fb Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Tue, 21 Jun 2016 19:16:37 +0200
Subject: [PATCH]  - Fix market/registry record storage  - Disable CORS

---
 .../elasticsearch/action/RestModule.java      | 10 ++++----
 .../elasticsearch/node/DuniterNode.java       | 23 ++++++++++++-------
 .../service/BlockchainService.java            | 17 +++++++-------
 .../elasticsearch/service/MarketService.java  |  2 +-
 .../service/RegistryService.java              |  6 +++++
 .../src/test/es-home/config/elasticsearch.yml |  6 ++---
 ...ceTest.java => BlockchainServiceTest.java} |  7 +++---
 7 files changed, 41 insertions(+), 30 deletions(-)
 rename duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/{blockchain/BlockIndexerServiceTest.java => BlockchainServiceTest.java} (96%)

diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java
index 99578540..fdbff9e2 100644
--- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java
+++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/action/RestModule.java
@@ -33,13 +33,11 @@ import org.elasticsearch.common.inject.Module;
 public class RestModule extends AbstractModule implements Module {
 
     @Override protected void configure() {
-        //bind(RestCurrencyIndexAction.class).asEagerSingleton();
-
+        bind(RestCurrencyIndexAction.class).asEagerSingleton();
         bind(RestMarketRecordIndexAction.class).asEagerSingleton();
+        bind(RestRegistryRecordIndexAction.class).asEagerSingleton();
 
-        //bind(RestRegistryRecordIndexAction.class).asEagerSingleton();
-
-        //bind(RestSecurityGetChallengeAction.class).asEagerSingleton();
-        //bind(RestSecurityAuthAction.class).asEagerSingleton();
+        bind(RestSecurityGetChallengeAction.class).asEagerSingleton();
+        bind(RestSecurityAuthAction.class).asEagerSingleton();
     }
 }
\ No newline at end of file
diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java
index e3cef1a0..752f4c7c 100644
--- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java
+++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/node/DuniterNode.java
@@ -17,20 +17,23 @@ import org.elasticsearch.common.settings.Settings;
 public class DuniterNode extends AbstractLifecycleComponent<DuniterNode> {
 
     private final PluginSettings pluginSettings;
+    private final ThreadPool threadPool;
+    private final Injector injector;
 
     @Inject
     public DuniterNode(Settings settings, PluginSettings pluginSettings, ThreadPool threadPool, final Injector injector) {
         super(settings);
         this.pluginSettings = pluginSettings;
+        this.threadPool = threadPool;
+        this.injector = injector;
 
-        threadPool.scheduleOnStarted(() -> {
-            createIndices(injector);
-        });
     }
 
     @Override
     protected void doStart() {
-
+        threadPool.scheduleOnStarted(() -> {
+            createIndices();
+        });
     }
 
     @Override
@@ -43,14 +46,14 @@ public class DuniterNode extends AbstractLifecycleComponent<DuniterNode> {
 
     }
 
-    protected void createIndices(Injector injector) {
-        if (logger.isInfoEnabled()) {
-            logger.info("Creating Duniter indices...");
-        }
+    protected void createIndices() {
 
         boolean reloadIndices = pluginSettings.reloadIndices();
         Peer peer = pluginSettings.checkAndGetPeer();
         if (reloadIndices) {
+            if (logger.isInfoEnabled()) {
+                logger.info("Reloading all Duniter indices...");
+            }
             injector.getInstance(RegistryService.class)
                     .deleteIndex()
                     .createIndexIfNotExists()
@@ -65,6 +68,10 @@ public class DuniterNode extends AbstractLifecycleComponent<DuniterNode> {
                     .indexLastBlocks(peer);
         }
         else {
+            if (logger.isInfoEnabled()) {
+                logger.info("Checking Duniter indices...");
+            }
+
             injector.getInstance(RegistryService.class).createIndexIfNotExists();
 
             injector.getInstance(MarketService.class).createIndexIfNotExists();
diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java
index 1840ccf6..7d654954 100644
--- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java
+++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java
@@ -84,7 +84,7 @@ public class BlockchainService extends AbstractService {
     private static final int SYNC_MISSING_BLOCK_MAX_RETRY = 5;
 
     private BlockchainRemoteService blockchainRemoteService;
-    //private CurrencyRegistryService currencyRegistryService;
+    private RegistryService registryService;
 
     private Gson gson;
 
@@ -97,6 +97,11 @@ public class BlockchainService extends AbstractService {
         });
     }
 
+    @Inject
+    public void setRegistryService(RegistryService registryService) {
+        this.registryService = registryService;
+    }
+
     public BlockchainService indexLastBlocks(Peer peer) {
         return indexLastBlocks(peer, new ProgressionModelImpl());
     }
@@ -124,13 +129,9 @@ public class BlockchainService extends AbstractService {
                     currencyName, pluginSettings.getNodeBmaHost(), pluginSettings.getNodeBmaPort()));
 
             // Create index blockchain if need
-            // FIXME: avoid circular dependency
-            //currencyRegistryService.createIndexIfNotExists();
-
-            //Currency currency = currencyRegistryService.getCurrencyById(currencyName);
-            //if (currency == null) {
-            //    currencyRegistryService.indexCurrencyFromPeer(peer);
-            //}
+            if (!registryService.isCurrencyExists(currencyName)) {
+                registryService.indexCurrencyFromPeer(peer);
+            }
 
             // Check if index exists
             createIndexIfNotExists(currencyName);
diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java
index 393b06eb..1b9ea799 100644
--- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java
+++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java
@@ -187,7 +187,7 @@ public class MarketService extends AbstractService {
 
     public void fillRecordCategories() {
         if (logger.isDebugEnabled()) {
-            logger.debug(String.format("[%s/%s] fill data", INDEX, RECORD_CATEGORY_TYPE));
+            logger.debug(String.format("[%s/%s] Fill data", INDEX, RECORD_CATEGORY_TYPE));
         }
 
         // Insert categories
diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java
index 009a031a..c3324b96 100644
--- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java
+++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java
@@ -44,6 +44,7 @@ import org.duniter.core.client.service.bma.WotRemoteService;
 import org.duniter.core.exception.TechnicalException;
 import org.duniter.core.service.CryptoService;
 import org.duniter.core.util.ObjectUtils;
+import org.duniter.core.util.StringUtils;
 import org.duniter.elasticsearch.PluginSettings;
 import org.duniter.elasticsearch.exception.AccessDeniedException;
 import org.duniter.elasticsearch.exception.DuplicateIndexIdException;
@@ -168,6 +169,11 @@ public class RegistryService extends AbstractService {
         return this;
     }
 
+    public boolean isCurrencyExists(String currencyName) {
+        String pubkey = getSenderPubkeyByCurrencyId(currencyName);
+        return !StringUtils.isEmpty(pubkey);
+    }
+
     /**
      *
      * @param recordJson
diff --git a/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml b/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml
index 24bd0f68..e82fb87e 100644
--- a/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml
+++ b/duniter4j-elasticsearch/src/test/es-home/config/elasticsearch.yml
@@ -57,8 +57,8 @@ cluster.name: duniter4j-elasticsearch
 # Set a custom port for HTTP:
 #
 # http.port: 9200
-#http.port: 9200
-http.cors.enabled: true
+
+http.cors.enabled: false
 #
 # For more information, see the documentation at:
 # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
@@ -105,6 +105,6 @@ duniter.host: cgeek.fr
 duniter.port: 9330
 
 duniter.string.analyzer: french
-duniter.indices.reload: true
+#duniter.indices.reload: true
 
 #duniter.dev.enable: true
\ No newline at end of file
diff --git a/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/blockchain/BlockIndexerServiceTest.java b/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/BlockchainServiceTest.java
similarity index 96%
rename from duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/blockchain/BlockIndexerServiceTest.java
rename to duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/BlockchainServiceTest.java
index dde01c73..70d1553b 100644
--- a/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/blockchain/BlockIndexerServiceTest.java
+++ b/duniter4j-elasticsearch/src/test/java/org/duniter/elasticsearch/service/BlockchainServiceTest.java
@@ -1,4 +1,4 @@
-package org.duniter.elasticsearch.service.blockchain;
+package org.duniter.elasticsearch.service;
 
 /*
  * #%L
@@ -28,16 +28,15 @@ import org.duniter.core.client.model.bma.BlockchainBlock;
 import org.duniter.core.client.model.local.Peer;
 import org.duniter.core.client.service.bma.BlockchainRemoteService;
 import org.duniter.elasticsearch.TestResource;
-import org.duniter.elasticsearch.service.BlockchainService;
 import org.junit.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
-public class BlockIndexerServiceTest {
+public class BlockchainServiceTest {
 
-	private static final Logger log = LoggerFactory.getLogger(BlockIndexerServiceTest.class);
+	private static final Logger log = LoggerFactory.getLogger(BlockchainServiceTest.class);
 
 	@ClassRule
 	public static final TestResource resource = TestResource.create();
-- 
GitLab