Merge "BUG-1793: make sure we cache QNameModule"
authorTony Tkacik <ttkacik@cisco.com>
Thu, 11 Sep 2014 09:10:20 +0000 (09:10 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 11 Sep 2014 09:10:20 +0000 (09:10 +0000)
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java

index 5d2563d683c78f6cee5606fdbedc9b7052f9c760..18969403d01d0f6c663814170d6653fd2128eacb 100644 (file)
@@ -80,7 +80,18 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      * @return Cached instance, according to {@link ObjectCache} policy.
      */
     public static QName cachedReference(final QName qname) {
-        return CACHE.getReference(qname);
+        // We also want to make sure we keep the QNameModule cached
+        final QNameModule myMod = qname.getModule();
+        final QNameModule cacheMod = QNameModule.cachedReference(myMod);
+
+        final QName what;
+        if (cacheMod == myMod) {
+            what = qname;
+        } else {
+            what = QName.create(cacheMod, qname.localName);
+        }
+
+        return CACHE.getReference(what);
     }
 
     /**