X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.simulator.toolkit%2Fsrc%2Forg%2Fsimantics%2Fsimulator%2Ftoolkit%2FStandardNodeManager.java;h=e09b3136e6307c7750f81f2ab1271ed340e4a2b4;hb=3c17e1a55c108f120808016dd5e4d3893c29c0e8;hp=8f1d1cf53c9c2a0c29ce8a6fbefd499128646df7;hpb=8c8283a01e63980527d605936286747006bea601;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardNodeManager.java b/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardNodeManager.java index 8f1d1cf53..e09b3136e 100644 --- a/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardNodeManager.java +++ b/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardNodeManager.java @@ -13,6 +13,7 @@ package org.simantics.simulator.toolkit; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -46,12 +47,12 @@ import gnu.trove.set.hash.THashSet; * * @author Antti Villberg */ -public abstract class StandardNodeManager> implements NodeManager { +public class StandardNodeManager> implements NodeManager { private static final Logger LOGGER = LoggerFactory.getLogger(StandardNodeManager.class); - private final Node root; - private final StandardRealm realm; + protected final Node root; + protected final StandardRealm realm; static final Binding NO_BINDING = new VariantBinding() { @@ -115,7 +116,7 @@ public abstract class StandardNodeManager valueCache = new THashMap<>(); + protected THashMap valueCache = new THashMap<>(); protected THashMap> listeners = new THashMap<>(); AtomicBoolean fireNodeListenersScheduled = new AtomicBoolean(false); @@ -193,7 +194,10 @@ public abstract class StandardNodeManager references) throws NodeManagerException { + if(references.size() > 0) { + for(Node n : references) { + valueCache.remove(n); + } + } + updateValueInner(node, value, binding); + fireNodeListenersSync(); + } + + //Update the value of the node helper method + private void updateValueInner(Node node, Object value, Binding binding) throws NodeManagerException { checkThreadAccess(); Binding targetBinding = realm.getEngine().getEngineBinding(node); if(binding.equals(targetBinding)) { @@ -341,7 +364,6 @@ public abstract class StandardNodeManager getClassifications(Node node) throws NodeManagerException { + return Collections.emptySet(); + } + } \ No newline at end of file