/** * * 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); }