/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.sal.binding.model.api.type.builder; import java.util.List; import org.opendaylight.controller.sal.binding.model.api.AnnotationType; import org.opendaylight.controller.sal.binding.model.api.Type; /** * Annotation Type Builder Interface serves for creation and instantiation of * immutable copy of Annotation Type. The Annotation Type Builder extends * from {@link Type} interface. The Annotation Type contains set of methods * which are capable to provide information about other Annotation Types and * Annotation Parameters. * * @see AnnotationType */ public interface AnnotationTypeBuilder extends Type { /** * The method creates new AnnotationTypeBuilder containing specified * package name an annotation name. *
* Neither the package name or annotation name can contain * null references. In case that * any of parameters contains null the method SHOULD thrown * {@link IllegalArgumentException} * * @param packageName Package Name of Annotation Type * @param name Name of Annotation Type * @return new instance of Annotation Type Builder. */ public AnnotationTypeBuilder addAnnotation(final String packageName, final String name); /** * Adds the parameter into List of parameters for Annotation Type. *
* If there is already stored parameter with the same name as the new * parameter, the value of the old one will be simply overwritten by the * newer parameter. *
* Neither the param name or value can contain * null references. In case that * any of parameters contains null the method SHOULD thrown * {@link IllegalArgumentException} * * @param paramName Parameter Name * @param value Parameter Value * @return true if the parameter has been successfully * assigned for Annotation Type */ public boolean addParameter(final String paramName, String value); /** * Adds the parameter with specified List of parameter values into List of * parameters for Annotation Type. *
* If there is already stored parameter with the same name as the new * parameter, the value of the old one will be simply overwritten by the * newer parameter. *
* Neither the param name or value can contain * null references. In case that * any of parameters contains null the method SHOULD thrown * {@link IllegalArgumentException} * * @param paramName Parameter Name * @param values List of Values bounded to Parameter Name * @return true if the parameter has been successfully * assigned for Annotation Type */ public boolean addParameters(final String paramName, List values); /** * Returns new immutable instance of Annotation Type * with values assigned in current instance of Annotation Type Builder. *
* The return Annotation Type instance is immutable thus no additional * modification to Annotation Type Builder will have an impact to * instantiated Annotation Type. *
* For this purpose call this method after * all additions are complete. * * @return new immutable instance of Annotation Type. */ public AnnotationType toInstance(); }