Merge "BUG-2829: make static QName field hold a cached reference"
authorTony Tkacik <ttkacik@cisco.com>
Mon, 16 Mar 2015 07:13:14 +0000 (07:13 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 16 Mar 2015 07:13:14 +0000 (07:13 +0000)
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java

index d9796236ed5aeb4db543ba5728bd30885f40124d..8403a44a82689460f58d7bee6fb9f8cd973c2830 100644 (file)
@@ -25,7 +25,6 @@ import static org.opendaylight.yangtools.binding.generator.util.Types.typeForCla
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNode;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeInSchemaContext;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule;
-
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
@@ -108,6 +107,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
     private static final Splitter COLON_SPLITTER = Splitter.on(':');
     private static final Splitter BSDOT_SPLITTER = Splitter.on("\\.");
     private static final char NEW_LINE = '\n';
+    private static final String QNAME_FQCN = QName.class.getName();
 
     /**
      * Constant with the concrete name of identifier.
@@ -653,7 +653,9 @@ public class BindingGeneratorImpl implements BindingGenerator {
 
     private static Constant qnameConstant(final GeneratedTypeBuilderBase<?> toBuilder, final String constantName,
             final QName name) {
-        final StringBuilder sb = new StringBuilder("org.opendaylight.yangtools.yang.common.QName");
+        final StringBuilder sb = new StringBuilder(QNAME_FQCN);
+        sb.append(".cachedReference(");
+        sb.append(QNAME_FQCN);
         sb.append(".create(");
         sb.append('"');
         sb.append(name.getNamespace());
@@ -661,7 +663,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
         sb.append(name.getFormattedRevision());
         sb.append("\",\"");
         sb.append(name.getLocalName());
-        sb.append("\");");
+        sb.append("\"))");
 
         return toBuilder.addConstant(typeForClass(QName.class), constantName, sb.toString());
     }