/* * Copyright (c) 2017 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.binding.javav2.model.api; import com.google.common.annotations.Beta; import java.util.List; /** * The Method Signature interface contains simplified meta model for java method * definition. Each method MUST be defined by name, return type, parameters and * access modifier.
* Additionally method MAY contain associated annotations and comment. By * contract if method does not contain any comments or annotation definitions * the {@link #getComment()} SHOULD rather return empty string and * {@link #getAnnotations()} SHOULD rather return empty list than * null values.
* The defining Type contains the reference to Generated Type that declares * Method Signature. */ @Beta public interface MethodSignature extends TypeMember { /** * Returns true if the method signature is defined as abstract.
* By default in java all method declarations in interface are defined as * abstract, but the user don't need necessary to declare abstract keyword * in front of each method.
* The abstract methods are allowed in Class definitions but only when the * class is declared as abstract. * * @return true if the method signature is defined as abstract. */ boolean isAbstract(); /** * Returns the List of parameters that method declare. If the method does * not contain any parameters, the method will return empty List. * * @return the List of parameters that method declare. */ List getParameters(); /** * The Parameter interface is designed to hold the information of method * Parameter(s). The parameter is defined by his Name which MUST be unique * as java does not allow multiple parameters with same names for one method * and Type that is associated with parameter. */ interface Parameter { /** * Returns the parameter name. * * @return the parameter name. */ String getName(); /** * Returns Type that is bounded to parameter name. * * @return Type that is bounded to parameter name. */ Type getType(); } }