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=541c28a0c5b203f953f32130488f9fcf1dc4fdab;hp=59368e8e498754b559096425c75eb0b45f5af058;hb=20a32e6459fd1e27e7669bf1ebc7742b96787b94;hpb=cf000a86e871a4acf98cf15ba31ce140e6c0f262 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..541c28a0c5 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,22 +7,27 @@ */ 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; +import org.opendaylight.yangtools.yang.common.Revision; public class Annotation { final String name; final List params; - public Annotation(String name, List params) { + public Annotation(final String name, final List params) { this.name = name; this.params = params; } @@ -35,33 +40,64 @@ public class Annotation { return params; } - public static Annotation createDescriptionAnnotation(String description) { + public static Annotation createFromMap(final Class annotationClass, final 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(final String description) { Preconditions.checkNotNull(description, "Cannot create annotation from null description"); return new Annotation(Description.class.getCanonicalName(), Lists.newArrayList(new Parameter("value", q(description)))); } - public static Annotation createSieAnnotation(QName qname, - String exportedClassName) { - Preconditions.checkNotNull(qname, + public static Annotation createModuleQNameANnotation(final QName qName) { + Map parameters = new HashMap<>(); + parameters.put("namespace", q(qName.getNamespace().toString())); + parameters.put("revision", q(qName.getRevision().map(Revision::toString).orElse(null))); + parameters.put("name", q(qName.getLocalName())); + return Annotation.createFromMap(ModuleQName.class, parameters); + } + + public static Collection createSieAnnotations(final 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")); + params.add(new Parameter("registerToOsgi", Boolean.toString(sie.isRegisterToOsgi()))); + params.add(new Parameter("namespace", q(sie.getQName().getNamespace().toString()))); + params.add(new Parameter("revision", q(sie.getQName().getRevision().map(Revision::toString).orElse(null)))); + params.add(new Parameter("localName", q(sie.getQName().getLocalName()))); + + Annotation sieAnnotation = new Annotation(ServiceInterfaceAnnotation.class.getCanonicalName(), params); + result.add(sieAnnotation); - List params = Lists.newArrayList(new Parameter("value", q(qname.toString()))); - params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class")); - - 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()))); - - 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().getRevision() + .map(Revision::toString).orElse(null)))); + 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( - ServiceInterfaceEntry sie) { + final ServiceInterfaceEntry sie) { String reqIfc = sie.getFullyQualifiedName() + ".class"; return new Annotation(RequireInterface.class.getCanonicalName(), Lists.newArrayList(new Parameter("value", reqIfc))); @@ -69,15 +105,14 @@ public class Annotation { private static final String quote = "\""; - private static String q(String nullableDescription) { - return nullableDescription == null ? null : quote + nullableDescription - + quote; + public static String q(final String nullableDescription) { + return nullableDescription == null ? null : quote + nullableDescription + quote; } public static class Parameter { private final String key, value; - public Parameter(String key, String value) { + public Parameter(final String key, final String value) { this.key = key; this.value = value; } @@ -91,4 +126,8 @@ public class Annotation { } } + @Override + public String toString() { + return AnnotationSerializer.toString(this); + } }