From 296daf6535d61ffaae27ea7485cf025d3abbb70b Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Mon, 3 May 2021 19:32:19 +0200 Subject: [PATCH] MID-7030: Fixed thread safety in AbstractLazy Signed-off-by: Tony Tkacik --- .../java/com/evolveum/axiom/concepts/AbstractLazy.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/infra/axiom/src/main/java/com/evolveum/axiom/concepts/AbstractLazy.java b/infra/axiom/src/main/java/com/evolveum/axiom/concepts/AbstractLazy.java index f901fdac12b..bd852ee2fce 100644 --- a/infra/axiom/src/main/java/com/evolveum/axiom/concepts/AbstractLazy.java +++ b/infra/axiom/src/main/java/com/evolveum/axiom/concepts/AbstractLazy.java @@ -8,20 +8,21 @@ public abstract class AbstractLazy { - private Object value; + private volatile Object value; AbstractLazy(Object supplier) { value = supplier; } T unwrap() { - if (value instanceof Lazy.Supplier) { + Object val = this.value; + if (val instanceof Lazy.Supplier) { //noinspection unchecked - value = ((Lazy.Supplier) value).get(); + this.value = ((Lazy.Supplier) val).get(); return unwrap(); } //noinspection unchecked - return (T) value; + return (T) val; } @Override