From 556acf462bad3f68e740daf44f59a5812764fc51 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Wed, 5 Jul 2017 12:56:08 +0200
Subject: [PATCH] Add a log (warn) to find the origin of issuer #17

---
 .../core/client/model/bma/BlockchainBlocks.java   | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java
index 1aace464..e13204ad 100644
--- a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java
+++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java
@@ -23,10 +23,11 @@ package org.duniter.core.client.model.bma;
  */
 
 import org.duniter.core.util.Preconditions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.math.BigInteger;
 import java.util.*;
-import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -38,6 +39,8 @@ import java.util.stream.IntStream;
  */
 public final class BlockchainBlocks {
 
+    private static final Logger log = LoggerFactory.getLogger(BlockchainBlocks.class);
+
     public static final Pattern SIG_PUBKEY_PATTERN = Pattern.compile("SIG\\(([^)]+)\\)");
 
     public static final Pattern TX_INPUT_CONDITION_FUNCTION = Pattern.compile("(SIG|XHX)\\(([^)]+)\\)");
@@ -112,10 +115,20 @@ public final class BlockchainBlocks {
         Preconditions.checkNotNull(tx);
 
         final Map<Integer, List<String>> inputIssuers = getInputIssuers(tx);
+        if (inputIssuers == null || inputIssuers.size() == 0) {
+            log.warn("Invalid block TX: no issuer found ! ", tx.toString());
+        }
 
         return IntStream.range(0, tx.getInputs().length)
                 .mapToObj(i -> {
                     TxInput txInput = parseInput(tx.getInputs()[i]);
+                    if (txInput == null) {
+                        log.warn(String.format("Invalid block TX: unable to parse inputs: %s", i, tx.getInputs()[i]));
+                        txInput = new TxInput();
+                        txInput.amount = 0;
+                        txInput.unitbase = 0;
+                        txInput.type = "T";
+                    }
                     txInput.issuers = inputIssuers.get(i);
                     return txInput;
                 })
-- 
GitLab