/**
*
* March 2013
*
* Copyright (c) 2013 by Cisco Systems, Inc.
* All rights reserved.
*/
package org.opendaylight.yangtools.sal.binding.model.api.type.builder;
import org.opendaylight.yangtools.sal.binding.model.api.MethodSignature;
import org.opendaylight.yangtools.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 MethodSignature#isAbstract()}
* also equals to true
.
*
* @param isAbstract
* is abstract flag
*/
MethodSignatureBuilder 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
*/
MethodSignatureBuilder 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.
*/
MethodSignature toInstance(final Type definingType);
}