Fix checkstyle warnings in yang-jmx-generator-plugin
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / ftl / model / Annotation.java
index 59368e8e498754b559096425c75eb0b45f5af058..ae5f947d2d7bab78e4d19978216686866702e9c7 100644 (file)
@@ -7,17 +7,21 @@
  */
 package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model;
 
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
-
+import java.util.Map;
+import java.util.Map.Entry;
 import org.opendaylight.controller.config.api.annotations.Description;
 import org.opendaylight.controller.config.api.annotations.RequireInterface;
 import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation;
 import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
+import org.opendaylight.yangtools.yang.binding.annotations.ModuleQName;
 import org.opendaylight.yangtools.yang.common.QName;
 
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
 public class Annotation {
     final String name;
     final List<Parameter> params;
@@ -35,6 +39,14 @@ public class Annotation {
         return params;
     }
 
+    public static Annotation createFromMap(Class<?> annotationClass, Map<String, String> parameters) {
+        List<Parameter> parameterList = new ArrayList<>();
+        for(Entry<String, String> entry: parameters.entrySet()) {
+            parameterList.add(new Parameter(entry.getKey(), entry.getValue()));
+        }
+        return new Annotation(annotationClass.getCanonicalName(), parameterList);
+    }
+
     public static Annotation createDescriptionAnnotation(String description) {
         Preconditions.checkNotNull(description,
                 "Cannot create annotation from null description");
@@ -42,22 +54,44 @@ public class Annotation {
                 Lists.newArrayList(new Parameter("value", q(description))));
     }
 
-    public static Annotation createSieAnnotation(QName qname,
-            String exportedClassName) {
-        Preconditions.checkNotNull(qname,
+    public static Annotation createModuleQNameANnotation(QName qName) {
+        Map<String, String> parameters = new HashMap<>();
+        parameters.put("namespace", q(qName.getNamespace().toString()));
+        parameters.put("revision", q(qName.getFormattedRevision()));
+        parameters.put("name", q(qName.getLocalName()));
+        return Annotation.createFromMap(ModuleQName.class, parameters);
+    }
+
+    public static Collection<Annotation> createSieAnnotations(ServiceInterfaceEntry sie){
+
+        String exportedClassName = sie.getExportedOsgiClassName();
+        Preconditions.checkNotNull(sie.getQName(),
                 "Cannot create annotation from null qname");
         Preconditions.checkNotNull(exportedClassName,
                 "Cannot create annotation from null exportedClassName");
+        List<Annotation> result = new ArrayList<>();
+        {
+            List<Parameter> params = Lists.newArrayList(new Parameter("value", q(sie.getQName().toString())));
+            params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class"));
 
-        List<Parameter> params = Lists.newArrayList(new Parameter("value", q(qname.toString())));
-        params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class"));
+            params.add(new Parameter("namespace", q(sie.getQName().getNamespace().toString())));
+            params.add(new Parameter("revision", q(sie.getQName().getFormattedRevision())));
+            params.add(new Parameter("localName", q(sie.getQName().getLocalName())));
 
-        params.add(new Parameter("namespace", q(qname.getNamespace().toString())));
-        params.add(new Parameter("revision", q(qname.getFormattedRevision())));
-        params.add(new Parameter("localName", q(qname.getLocalName())));
+            Annotation sieAnnotation = new Annotation(ServiceInterfaceAnnotation.class.getCanonicalName(), params);
+            result.add(sieAnnotation);
 
-        return new Annotation(
-                ServiceInterfaceAnnotation.class.getCanonicalName(), params);
+        }
+        {
+            List<Parameter> params = new ArrayList<>();
+            params.add(new Parameter("namespace", q(sie.getYangModuleQName().getNamespace().toString())));
+            params.add(new Parameter("revision", q(sie.getYangModuleQName().getFormattedRevision())));
+            params.add(new Parameter("name", q(sie.getYangModuleQName().getLocalName())));
+
+            Annotation moduleQNameAnnotation = new Annotation(ModuleQName.class.getCanonicalName(), params);
+            result.add(moduleQNameAnnotation);
+        }
+        return result;
     }
 
     public static Annotation createRequireIfcAnnotation(
@@ -69,7 +103,7 @@ public class Annotation {
 
     private static final String quote = "\"";
 
-    private static String q(String nullableDescription) {
+    public static String q(String nullableDescription) {
         return nullableDescription == null ? null : quote + nullableDescription
                 + quote;
     }
@@ -91,4 +125,8 @@ public class Annotation {
         }
     }
 
+    @Override
+    public String toString() {
+        return AnnotationSerializer.toString(this);
+    }
 }