From 667ff49d238cede923f276885b4b64d6d43ba6e8 Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Wed, 1 Jun 2022 11:17:24 +0800 Subject: [PATCH] support graalvm issue #386 --- .../java/com/alibaba/fastjson2/JSONPath.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/alibaba/fastjson2/JSONPath.java b/core/src/main/java/com/alibaba/fastjson2/JSONPath.java index 2897c520cd..b5288f9f6a 100644 --- a/core/src/main/java/com/alibaba/fastjson2/JSONPath.java +++ b/core/src/main/java/com/alibaba/fastjson2/JSONPath.java @@ -4671,7 +4671,7 @@ static final class RandomIndexSegment extends Segment { public static final RandomIndexSegment INSTANCE = new RandomIndexSegment(); - Random random = new Random(); + Random random; @Override public void accept(JSONReader jsonReader, Context context) { @@ -4692,6 +4692,11 @@ public void accept(JSONReader jsonReader, Context context) { } } + // lazy init for graalvm + if (random == null) { + random = new Random(); + } + int index = Math.abs(random.nextInt()) % array.size(); context.value = array.get(index); context.eval = true; @@ -4749,6 +4754,11 @@ public void accept(JSONReader jsonReader, Context context) { array.add(val); } + // lazy init for graalvm + if (random == null) { + random = new Random(); + } + int index = Math.abs(random.nextInt()) % array.size(); context.value = array.get(index); context.eval = true; @@ -4766,6 +4776,11 @@ public void eval(Context context) { return; } + // lazy init for graalvm + if (random == null) { + random = new Random(); + } + int randomIndex = Math.abs(random.nextInt()) % list.size(); context.value = list.get(randomIndex); context.eval = true; @@ -4778,6 +4793,11 @@ public void eval(Context context) { return; } + // lazy init for graalvm + if (random == null) { + random = new Random(); + } + int randomIndex = random.nextInt() % array.length; context.value = array[randomIndex]; context.eval = true;