BUG-1792: share QNames in both cases
[controller.git] / opendaylight / md-sal / sal-netconf-connector / src / main / java / org / opendaylight / controller / sal / connect / netconf / listener / NetconfSessionCapabilities.java
index 1a7d90e9c0ad1d9424da229b29eef9ebf7c9b6a4..2642116927cde25de425d8de95884cb5d0ae3b57 100644 (file)
@@ -7,8 +7,8 @@ import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
-
 import com.google.common.collect.Sets;
+
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
@@ -119,6 +119,10 @@ public final class NetconfSessionCapabilities {
         return fromStrings(session.getServerCapabilities());
     }
 
+    private static final QName cachedQName(String namespace, String revision, String moduleName) {
+        return QName.cachedReference(QName.create(namespace, revision, moduleName));
+    }
+
     public static NetconfSessionCapabilities fromStrings(final Collection<String> capabilities) {
         final Set<QName> moduleBasedCaps = new HashSet<>();
         final Set<String> nonModuleCaps = Sets.newHashSet(capabilities);
@@ -138,7 +142,7 @@ public final class NetconfSessionCapabilities {
 
             String revision = REVISION_PARAM.from(queryParams);
             if (revision != null) {
-                moduleBasedCaps.add(QName.create(namespace, revision, moduleName));
+                moduleBasedCaps.add(cachedQName(namespace, revision, moduleName));
                 nonModuleCaps.remove(capability);
                 continue;
             }
@@ -158,7 +162,7 @@ public final class NetconfSessionCapabilities {
             }
 
             // FIXME: do we really want to continue here?
-            moduleBasedCaps.add(QName.create(namespace, revision, moduleName));
+            moduleBasedCaps.add(cachedQName(namespace, revision, moduleName));
             nonModuleCaps.remove(capability);
         }