From 429d8ed2d62789190ef3238e0c47e076fd072a4b Mon Sep 17 00:00:00 2001 From: "everywhere.z" Date: Wed, 11 Jan 2023 17:59:12 +0800 Subject: [PATCH] =?UTF-8?q?enhancement=20#I6A2FI=20=E5=A2=9E=E5=BC=BASlot?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E7=9A=84=E5=AD=98=E5=82=A8=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=9C=A8=E5=A4=9A=E7=BA=BF=E7=A8=8B=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E7=BB=84=E4=BB=B6=E7=BC=96=E6=8E=92=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E5=8F=AF=E8=83=BD=E9=80=A0=E6=88=90=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yomahub/liteflow/slot/Slot.java | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java index 0425e161f..065639b05 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java @@ -10,6 +10,7 @@ package com.yomahub.liteflow.slot; import cn.hutool.core.collection.ConcurrentHashSet; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.exception.NoSuchContextBeanException; import com.yomahub.liteflow.exception.NullParamException; import com.yomahub.liteflow.flow.entity.CmpStep; @@ -52,6 +53,8 @@ public class Slot{ private static final String WHILE_PREFIX = "_while_"; + private static final String ITERATOR_PREFIX = "_iterator_"; + private static final String BREAK_PREFIX = "_break_"; private static final String NODE_INPUT_PREFIX = "_input_"; @@ -89,6 +92,16 @@ public class Slot{ return metaDataMap.containsKey(key); } + private void putThreadMetaDataMap(String key, T t){ + String threadKey = StrUtil.format("{}_{}", key, Thread.currentThread().getName()); + putMetaDataMap(threadKey, t); + } + + private T getThreadMetaData(String key){ + String threadKey = StrUtil.format("{}_{}", key, Thread.currentThread().getName()); + return (T)metaDataMap.get(threadKey); + } + private void putMetaDataMap(String key, T t) { if (ObjectUtil.isNull(t)) { //data slot is a ConcurrentHashMap, so null value will trigger NullPointerException @@ -197,43 +210,51 @@ public class Slot{ } public void setSwitchResult(String key, T t){ - putMetaDataMap(SWITCH_NODE_PREFIX + key, t); + putThreadMetaDataMap(SWITCH_NODE_PREFIX + key, t); } public T getSwitchResult(String key){ - return (T) metaDataMap.get(SWITCH_NODE_PREFIX + key); + return getThreadMetaData(SWITCH_NODE_PREFIX + key); } public void setIfResult(String key, boolean result){ - putMetaDataMap(IF_NODE_PREFIX + key, result); + putThreadMetaDataMap(IF_NODE_PREFIX + key, result); } public boolean getIfResult(String key){ - return (boolean) metaDataMap.get(IF_NODE_PREFIX + key); + return getThreadMetaData(IF_NODE_PREFIX + key); } public void setForResult(String key, int forCount){ - putMetaDataMap(FOR_PREFIX + key, forCount); + putThreadMetaDataMap(FOR_PREFIX + key, forCount); } public int getForResult(String key){ - return (int) metaDataMap.get(FOR_PREFIX + key); + return getThreadMetaData(FOR_PREFIX + key); } public void setWhileResult(String key, boolean whileFlag){ - putMetaDataMap(WHILE_PREFIX + key, whileFlag); + putThreadMetaDataMap(WHILE_PREFIX + key, whileFlag); } public boolean getWhileResult(String key){ - return (boolean) metaDataMap.get(WHILE_PREFIX + key); + return getThreadMetaData(WHILE_PREFIX + key); } public void setBreakResult(String key, boolean breakFlag){ - putMetaDataMap(BREAK_PREFIX + key, breakFlag); + putThreadMetaDataMap(BREAK_PREFIX + key, breakFlag); } public boolean getBreakResult(String key){ - return (boolean) metaDataMap.get(BREAK_PREFIX + key); + return getThreadMetaData(BREAK_PREFIX + key); + } + + public void setIteratorResult(String key, Iterator it){ + putThreadMetaDataMap(ITERATOR_PREFIX + key, it); + } + + public Iterator getIteratorResult(String key){ + return getThreadMetaData(ITERATOR_PREFIX + key); } /**