/**
*
* March 2013
*
* Copyright (c) 2013 by Cisco Systems, Inc.
* All rights reserved.
*/
package org.opendaylight.controller.sal.binding.model.api.type.builder;
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.Type;
/**
* Method Signature Builder serves solely for building Method Signature and
* returning the new
instance of Method Signature.
*
* By definition of {@link MethodSignature} the Method in java MUST contain
* Name, Return Type and Access Modifier. By default the Access Modifier can
* be set to public. The Method Signature builder does not contain method for
* addName due to enforce reason that MethodSignatureBuilder SHOULD be
* instantiated only once with defined method name.
*
* The methods as {@link #addAnnotation(String, String)} and {@link #setComment(String)}
* can be used as optional because not all methods MUST contain annotation or
* comment definitions.
*
*
* @see MethodSignature
*/
public interface MethodSignatureBuilder extends TypeMemberBuilder {
/**
* Sets the flag for declaration of method as abstract or non abstract. If the flag isAbstract == true
* The instantiated Method Signature MUST have return value for {@link org.opendaylight.controller.sal.binding
* .model.api.MethodSignature#isAbstract()} also equals to true
.
*
* @param isAbstract is abstract flag
*/
public void setAbstract(boolean isAbstract);
/**
* Adds Parameter into the List of method parameters. Neither the Name or
* Type of parameter can be null
.
*
*
* In case that any of parameters are defined as null
the
* method SHOULD throw an {@link IllegalArgumentException}
*
* @param type Parameter Type
* @param name Parameter Name
*/
public void addParameter(final Type type, final String name);
/**
* Returns new
immutable instance of Method Signature.
*
* The definingType
param cannot be null
. The
* every method in Java MUST be declared and defined inside the scope of
* class
or interface
definition. In case that
* defining Type will be passed as null
reference the method
* SHOULD thrown {@link IllegalArgumentException}.
*
* @param definingType Defining Type of Method Signature
* @return new
immutable instance of Method Signature.
*/
public MethodSignature toInstance(final Type definingType);
}