diff --git a/src/main/java/org/javarosa/xpath/XPathLazyNodeset.java b/src/main/java/org/javarosa/xpath/XPathLazyNodeset.java index d3faaaaeef..8a80c4d7c5 100644 --- a/src/main/java/org/javarosa/xpath/XPathLazyNodeset.java +++ b/src/main/java/org/javarosa/xpath/XPathLazyNodeset.java @@ -28,9 +28,8 @@ */ public class XPathLazyNodeset extends XPathNodeset { - //Since we're using this as a lock, we need to be very careful to ensure that each - //nodeset gets its own new object. - private Boolean evaluated = Boolean.valueOf(false); + private Object evalLock = new Object(); + private boolean evaluated = false; private final TreeReference unExpandedRef; /** @@ -43,7 +42,7 @@ public XPathLazyNodeset(TreeReference unExpandedRef, DataInstance instance, Eval private void performEvaluation() { - synchronized (evaluated) { + synchronized (evalLock) { if (evaluated) { return; } @@ -57,7 +56,7 @@ private void performEvaluation() { } } this.setReferences(nodes); - evaluated = Boolean.valueOf(true); + evaluated = true; } } @@ -69,7 +68,7 @@ private void performEvaluation() { */ @Override public Object unpack() { - synchronized (evaluated) { + synchronized (evalLock) { if (evaluated) { return super.unpack(); }