X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2FQNameFactory.java;h=5a8f5228619e9f80a091da123aa734fb59dcd85f;hp=002b9ff82e53eea0b62fd98d97756926a2e21bea;hb=84b8ac3b52290fe09bd8fba09f53cb45e1bc06b8;hpb=16b547fe4a083171484de9852926cc73f9705aa2 diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactory.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactory.java index 002b9ff82e..5a8f522861 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactory.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactory.java @@ -10,25 +10,28 @@ package org.opendaylight.controller.cluster.datastore.node.utils; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import org.opendaylight.yangtools.yang.common.QName; -import java.util.HashMap; -import java.util.Map; - public class QNameFactory { - private static final Map cache = new HashMap<>(); - public static QName create(String name){ - QName value = cache.get(name); - if(value == null){ - synchronized (cache){ - value = cache.get(name); - if(value == null) { - value = QName.create(name); - cache.put(name, value); + private static final int MAX_QNAME_CACHE_SIZE = 10000; + + private static LoadingCache cache = CacheBuilder.newBuilder() + .maximumSize(MAX_QNAME_CACHE_SIZE) + .softValues() + .build( + new CacheLoader() { + public QName load(String key) { + return QName.create(key); } } - } - return value; + ); + + + public static QName create(String name){ + return cache.getUnchecked(name); } }