Commit 1ce365d8df83521ee64f88375d89f7f1719b96f0
Committed by
GitHub
1 parent
4b0aae89
Improvements RestJsonConverter (#2452)
* Improvements RestJsonConverter * Refactored RestJsonConverter
Showing
3 changed files
with
23 additions
and
8 deletions
@@ -93,6 +93,7 @@ public class BaseRuleChainTransactionService implements RuleChainTransactionServ | @@ -93,6 +93,7 @@ public class BaseRuleChainTransactionService implements RuleChainTransactionServ | ||
93 | TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration); | 93 | TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration); |
94 | int queueSize = queue.size(); | 94 | int queueSize = queue.size(); |
95 | if (queueSize >= finalQueueSize) { | 95 | if (queueSize >= finalQueueSize) { |
96 | + log.trace("Queue has no space: {}", transactionTask); | ||
96 | executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!"); | 97 | executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!"); |
97 | } else { | 98 | } else { |
98 | addMsgToQueues(queue, transactionTask); | 99 | addMsgToQueues(queue, transactionTask); |
@@ -250,9 +250,9 @@ actors: | @@ -250,9 +250,9 @@ actors: | ||
250 | error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}" | 250 | error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}" |
251 | transaction: | 251 | transaction: |
252 | # Size of queues which store messages for transaction rule nodes | 252 | # Size of queues which store messages for transaction rule nodes |
253 | - queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:20}" | 253 | + queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:15000}" |
254 | # Time in milliseconds for transaction to complete | 254 | # Time in milliseconds for transaction to complete |
255 | - duration: "${ACTORS_RULE_TRANSACTION_DURATION:15000}" | 255 | + duration: "${ACTORS_RULE_TRANSACTION_DURATION:60000}" |
256 | statistics: | 256 | statistics: |
257 | # Enable/disable actor statistics | 257 | # Enable/disable actor statistics |
258 | enabled: "${ACTORS_STATISTICS_ENABLED:true}" | 258 | enabled: "${ACTORS_STATISTICS_ENABLED:true}" |
@@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; | @@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; | ||
22 | import org.thingsboard.server.common.data.kv.BasicTsKvEntry; | 22 | import org.thingsboard.server.common.data.kv.BasicTsKvEntry; |
23 | import org.thingsboard.server.common.data.kv.BooleanDataEntry; | 23 | import org.thingsboard.server.common.data.kv.BooleanDataEntry; |
24 | import org.thingsboard.server.common.data.kv.DoubleDataEntry; | 24 | import org.thingsboard.server.common.data.kv.DoubleDataEntry; |
25 | +import org.thingsboard.server.common.data.kv.JsonDataEntry; | ||
25 | import org.thingsboard.server.common.data.kv.KvEntry; | 26 | import org.thingsboard.server.common.data.kv.KvEntry; |
26 | import org.thingsboard.server.common.data.kv.LongDataEntry; | 27 | import org.thingsboard.server.common.data.kv.LongDataEntry; |
27 | import org.thingsboard.server.common.data.kv.StringDataEntry; | 28 | import org.thingsboard.server.common.data.kv.StringDataEntry; |
@@ -73,15 +74,28 @@ public class RestJsonConverter { | @@ -73,15 +74,28 @@ public class RestJsonConverter { | ||
73 | if (!value.isObject()) { | 74 | if (!value.isObject()) { |
74 | if (value.isBoolean()) { | 75 | if (value.isBoolean()) { |
75 | return new BooleanDataEntry(key, value.asBoolean()); | 76 | return new BooleanDataEntry(key, value.asBoolean()); |
76 | - } else if (value.isDouble()) { | ||
77 | - return new DoubleDataEntry(key, value.asDouble()); | ||
78 | - } else if (value.isLong()) { | ||
79 | - return new LongDataEntry(key, value.asLong()); | ||
80 | - } else { | 77 | + } else if (value.isNumber()) { |
78 | + return parseNumericValue(key, value); | ||
79 | + } else if (value.isTextual()) { | ||
81 | return new StringDataEntry(key, value.asText()); | 80 | return new StringDataEntry(key, value.asText()); |
81 | + } else { | ||
82 | + throw new RuntimeException(CAN_T_PARSE_VALUE + value); | ||
82 | } | 83 | } |
83 | } else { | 84 | } else { |
84 | - throw new RuntimeException(CAN_T_PARSE_VALUE + value); | 85 | + return new JsonDataEntry(key, value.toString()); |
86 | + } | ||
87 | + } | ||
88 | + | ||
89 | + private static KvEntry parseNumericValue(String key, JsonNode value) { | ||
90 | + if (value.isFloatingPointNumber()) { | ||
91 | + return new DoubleDataEntry(key, value.asDouble()); | ||
92 | + } else { | ||
93 | + try { | ||
94 | + long longValue = Long.parseLong(value.toString()); | ||
95 | + return new LongDataEntry(key, longValue); | ||
96 | + } catch (NumberFormatException e) { | ||
97 | + throw new IllegalArgumentException("Big integer values are not supported!"); | ||
98 | + } | ||
85 | } | 99 | } |
86 | } | 100 | } |
87 | } | 101 | } |