X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fplugin%2Fftl%2Fmodel%2FAnnotation.java;h=ae5f947d2d7bab78e4d19978216686866702e9c7;hp=59368e8e498754b559096425c75eb0b45f5af058;hb=69011f0833c2d383536c2ac61f2b0edc83d119e9;hpb=404d4fc52adf17bad6b53aaeedf59d1db85780bc diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Annotation.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Annotation.java index 59368e8e49..ae5f947d2d 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Annotation.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Annotation.java @@ -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 params; @@ -35,6 +39,14 @@ public class Annotation { return params; } + public static Annotation createFromMap(Class annotationClass, Map parameters) { + List parameterList = new ArrayList<>(); + for(Entry 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 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 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 result = new ArrayList<>(); + { + List params = Lists.newArrayList(new Parameter("value", q(sie.getQName().toString()))); + params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class")); - List 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 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); + } }