MDSAL-292: Binding v2 - Pattern attribute ignored for leaf-list/leaf
[mdsal.git] / binding2 / mdsal-binding2-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / javav2 / java / api / generator / renderers / BaseRenderer.java
index a35676bfa77e133242d8f2f3f30ed9a4ea45e01a..a246fc67d3ec44ecda8989673c984955f737e59c 100644 (file)
@@ -9,15 +9,19 @@
 package org.opendaylight.mdsal.binding.javav2.java.api.generator.renderers;
 
 import static com.google.common.base.Preconditions.checkArgument;
+import static org.opendaylight.mdsal.binding.javav2.util.BindingMapping.PATTERN_CONSTANT_NAME;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import org.apache.commons.text.StringEscapeUtils;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.javav2.generator.util.Types;
 import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil;
@@ -38,6 +42,10 @@ public abstract class BaseRenderer {
 
     private final GeneratedType type;
     private final Map<String, String> importMap;
+    /**
+     * list of all imported names for template
+     */
+    private final Map<String, String> importedNames = new HashMap<>();
 
     protected BaseRenderer(final GeneratedType type) {
         this.type = Preconditions.checkNotNull(type);
@@ -54,6 +62,10 @@ public abstract class BaseRenderer {
         return type;
     }
 
+    protected Map<String, String> getImportedNames() {
+        return importedNames;
+    }
+
     protected String getFromImportMap(@NonNull final String typeName) {
         return importMap.get(typeName);
     }
@@ -246,36 +258,6 @@ public abstract class BaseRenderer {
         return null;
     }
 
-    //FIXME: this should be deprecated in favor of contantsTemplate
-    /**
-     * @param constant constant to emit
-     * @return string with constant wrapped in code
-     */
-    protected String emitConstant(final Constant constant) {
-        final StringBuilder sb = new StringBuilder();
-        final Object value = constant.getValue();
-        sb.append("public static final ")
-                .append(importedName(constant.getType()))
-                .append(' ')
-                .append(constant.getName())
-                .append(" = ");
-        if (value instanceof QName) {
-            final QName qname = (QName) value;
-            sb.append(QName.class.getName()).append(".create(\"").append(qname.getNamespace()).append("\", ");
-            final Optional<Revision> rev = qname.getRevision();
-            if (rev.isPresent()) {
-                sb.append('"').append(rev.get()).append('"');
-            } else {
-                sb.append("null");
-            }
-            sb.append(", \"").append(qname.getLocalName()).append("\").intern()");
-        } else {
-            sb.append(value);
-        }
-        sb.append(";\n");
-        return sb.toString();
-    }
-
     /**
      * Generates the string with all actual type parameters from
      *