X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fosgi%2FYangStoreServiceImpl.java;h=5840c9dbd14d1aa3b3fe050d079e426d8ec21f20;hb=97942010558a4b3e242b66607c1f62742a29e00f;hp=1102f342bd054f879c1ce06dc25071f629b506bd;hpb=721b580748cb93b3dac952ff1f111d0ab0da0c79;p=controller.git diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java index 1102f342bd..5840c9dbd1 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.netconf.confignetconfconnector.osgi; +import java.lang.ref.SoftReference; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import javax.annotation.concurrent.GuardedBy; @@ -15,7 +16,7 @@ import javax.annotation.concurrent.GuardedBy; public class YangStoreServiceImpl implements YangStoreService { private final SchemaContextProvider service; @GuardedBy("this") - private YangStoreSnapshotImpl cache = null; + private SoftReference cache = new SoftReference<>(null); public YangStoreServiceImpl(SchemaContextProvider service) { this.service = service; @@ -23,16 +24,18 @@ public class YangStoreServiceImpl implements YangStoreService { @Override public synchronized YangStoreSnapshotImpl getYangStoreSnapshot() throws YangStoreException { - if (cache == null) { - cache = new YangStoreSnapshotImpl(service.getSchemaContext()); + YangStoreSnapshotImpl yangStoreSnapshot = cache.get(); + if (yangStoreSnapshot == null) { + yangStoreSnapshot = new YangStoreSnapshotImpl(service.getSchemaContext()); + cache = new SoftReference<>(yangStoreSnapshot); } - return cache; + return yangStoreSnapshot; } /** * Called when schema context changes, invalidates cache. */ public synchronized void refresh() { - cache = null; + cache.clear(); } }