X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2FQNameFactory.java;h=a0d8a311f7c32fc0ec23fc7bda455cba78fa36cc;hb=refs%2Fchanges%2F29%2F84729%2F1;hp=5c465e0e6f51602b16217dc06f9a505a62bdbd00;hpb=d250ac02439472cc36b07f1d30510ef2ae467407;p=controller.git 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 5c465e0e6f..a0d8a311f7 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 @@ -14,12 +14,14 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import java.net.URI; import java.util.Objects; +import java.util.concurrent.ExecutionException; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; public final class QNameFactory { private static final class StringQName implements Immutable { @@ -151,6 +153,13 @@ public final class QNameFactory { return key.toQNameModule().intern(); } }); + private static final LoadingCache NODEID_CACHE = CacheBuilder.newBuilder() + .maximumSize(MAX_QNAME_CACHE_SIZE).weakValues().build(new CacheLoader() { + @Override + public NodeIdentifier load(final ModuleQName key) throws ExecutionException { + return NodeIdentifier.create(QNAME_CACHE.get(key)); + } + }); private QNameFactory() { @@ -172,4 +181,9 @@ public final class QNameFactory { public static QNameModule createModule(final String namespace, final @Nullable String revision) { return MODULE_CACHE.getUnchecked(new StringModule(namespace, revision)); } + + public static @NonNull NodeIdentifier getNodeIdentifier(final QNameModule module, final String localName) + throws ExecutionException { + return NODEID_CACHE.get(new ModuleQName(module, localName)); + } }