This fixes QName.cachedReference() to lookup
QNameModule.cachedReference(), so we get maximum QNameModule sharing.
Change-Id: I7234a1da4429c36db2ccaeade1a0c423a94aa006
Signed-off-by: Robert Varga <rovarga@cisco.com>
* @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);
}
/**