2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model;
10 import java.util.List;
12 import org.opendaylight.controller.config.api.annotations.Description;
13 import org.opendaylight.controller.config.api.annotations.RequireInterface;
14 import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation;
15 import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
16 import org.opendaylight.yangtools.yang.common.QName;
18 import com.google.common.base.Preconditions;
19 import com.google.common.collect.Lists;
21 public class Annotation {
23 final List<Parameter> params;
25 public Annotation(String name, List<Parameter> params) {
30 public String getName() {
34 public List<Parameter> getParams() {
38 public static Annotation createDescriptionAnnotation(String description) {
39 Preconditions.checkNotNull(description,
40 "Cannot create annotation from null description");
41 return new Annotation(Description.class.getCanonicalName(),
42 Lists.newArrayList(new Parameter("value", q(description))));
45 public static Annotation createSieAnnotation(QName qname,
46 String exportedClassName) {
47 Preconditions.checkNotNull(qname,
48 "Cannot create annotation from null qname");
49 Preconditions.checkNotNull(exportedClassName,
50 "Cannot create annotation from null exportedClassName");
52 List<Parameter> params = Lists.newArrayList(new Parameter("value", q(qname.toString())));
53 params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class"));
55 params.add(new Parameter("namespace", q(qname.getNamespace().toString())));
56 params.add(new Parameter("revision", q(qname.getFormattedRevision())));
57 params.add(new Parameter("localName", q(qname.getLocalName())));
59 return new Annotation(
60 ServiceInterfaceAnnotation.class.getCanonicalName(), params);
63 public static Annotation createRequireIfcAnnotation(
64 ServiceInterfaceEntry sie) {
65 String reqIfc = sie.getFullyQualifiedName() + ".class";
66 return new Annotation(RequireInterface.class.getCanonicalName(),
67 Lists.newArrayList(new Parameter("value", reqIfc)));
70 private static final String quote = "\"";
72 private static String q(String nullableDescription) {
73 return nullableDescription == null ? null : quote + nullableDescription
77 public static class Parameter {
78 private final String key, value;
80 public Parameter(String key, String value) {
85 public String getKey() {
89 public String getValue() {