/* * Copyright (c) 2016 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.mdsal.binding2.model.api.type.builder; import com.google.common.annotations.Beta; import java.util.List; import org.opendaylight.mdsal.binding2.model.api.AnnotationType; import org.opendaylight.mdsal.binding2.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 */ @Beta 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. * @throws IllegalArgumentException if packageName and/or name is null */ 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 * @throws IllegalArgumentException if paramName and/or value is null */ 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 * @throws IllegalArgumentException if paramName and/or any of values is null */ 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. */ AnnotationType toInstance(); }