2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.binding.model.api;
10 import java.util.List;
11 import org.eclipse.jdt.annotation.NonNull;
14 * The Method Signature interface contains simplified meta model for java method definition. Each method MUST be defined
15 * by name, return type, parameters and access modifier. Additionally method MAY contain associated annotations and a
16 * comment. By contract if method does not contain any comments or annotation definitions the {@link #getComment()}
17 * SHOULD rather return empty string and {@link #getAnnotations()} SHOULD rather return empty list than {@code null}
21 * The defining Type contains the reference to Generated Type that declares Method Signature.
23 public interface MethodSignature extends TypeMember {
25 * Returns {@code true} if the method signature is defined as abstract.
28 * By default in java all method declarations in interface are defined as abstract, but the user does not need
29 * necessarily to declare abstract keyword in front of each method. The abstract methods are allowed in Class
30 * definitions but only when the class is declared as abstract.
32 * @return {@code true} if the method signature is defined as abstract.
37 * Returns {@code true} if this method is a {@code interface default} method.
39 * @return {@code true} if the method signature is defined as default.
44 * Returns the List of parameters that method declare. If the method does not contain any parameters, the method
45 * will return empty List.
47 * @return the List of parameters that method declare.
49 List<Parameter> getParameters();
52 * Return the mechanics associated with this method.
54 * @return Associated mechanics
56 @NonNull ValueMechanics getMechanics();
59 * The Parameter interface is designed to hold the information of method
60 * Parameter(s). The parameter is defined by his Name which MUST be unique
61 * as java does not allow multiple parameters with same names for one method
62 * and Type that is associated with parameter.
67 * Returns the parameter name.
69 * @return the parameter name.
74 * Returns Type that is bounded to parameter name.
76 * @return Type that is bounded to parameter name.
82 * Method return type mechanics. This is a bit of an escape hatch for various behaviors which are supported by
87 * Usual mechanics, nothing special is going on.
91 * Mechanics signaling that the method should not be returning empty collections, but rather squash tham
96 * Mechanics signaling that the method cannot legally return null. This is primarily useful for getters, where
97 * the declaration should end up having {@link NonNull} annotation attached to return type. For setters this
98 * indicates the setter should never accept a null value.