BUG-1794: use QName.cachedReference in static references 11/11011/1
authorRobert Varga <rovarga@cisco.com>
Wed, 10 Sep 2014 19:31:26 +0000 (21:31 +0200)
committerRobert Varga <rovarga@cisco.com>
Wed, 10 Sep 2014 19:31:26 +0000 (21:31 +0200)
When we emit generated classes, we add a static final reference to a
QName created via the usual string factory method. This leads to
less-than-optimal string sharing, so we go through a cachedReference
initializer to make sure we get maximum resource sharing.

Change-Id: Id75286410be4883736164c504dd6cb8f9d26383a
Signed-off-by: Robert Varga <rovarga@cisco.com>
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/TransformerGenerator.xtend

index 473c8e644c0749ad757c7f06b8578c3d4fd01fdc..1a9914828a8b2891a69fbca4adafde56f97d11cf 100644 (file)
@@ -1435,7 +1435,7 @@ class TransformerGenerator extends AbstractTransformerGenerator {
     private def staticQNameField(CtClass it, QName node, SourceCodeGenerator sourceGenerator) {
         val field = new CtField(ctQName, "QNAME", it);
         field.modifiers = PUBLIC + FINAL + STATIC;
-        val code = '''«QName.asCtClass.name».create("«node.namespace»","«node.formattedRevision»","«node.localName»")'''
+        val code = '''«QName.asCtClass.name».cachedReference(«QName.asCtClass.name».create("«node.namespace»","«node.formattedRevision»","«node.localName»"))'''
         addField(field, code )
 
         sourceGenerator.appendField( field, code );