Enable checkstyle in mdsal-binding-generator-api
[mdsal.git] / binding / mdsal-binding-generator-api / src / main / java / org / opendaylight / mdsal / binding / model / api / GeneratedTransferObject.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.binding.model.api;
9
10 import java.util.List;
11 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
12
13 /**
14  * Generated Transfer Object extends {@link GeneratedType} and is designed to represent Java Class. The Generated
15  * Transfer Object contains declarations of member fields stored in List of Properties. The Generated Transfer Object
16  * can be extended by exactly ONE Generated Transfer Object as Java does not allow multiple inheritance. For retrieval
17  * of implementing Generated Types use {@link #getImplements()} method.<br>
18  * Every transfer object SHOULD contain equals, hashCode and toString definitions. For this purpose retrieve definitions
19  * through {@link #getEqualsIdentifiers ()}, {@link #getHashCodeIdentifiers()} and
20  * {@link #getToStringIdentifiers()}.
21  */
22 public interface GeneratedTransferObject extends GeneratedType {
23
24     GeneratedProperty getSUID();
25
26     /**
27      * Returns the Generated Transfer Object from which this GTO is derived, or null if this GTO is not derived
28      * from a GTO -- e.g. it is either an union or it is derived from a concrete type.
29      *
30      * @return Generated Transfer Object or <code>null</code> if this GTO is not derived from another GTO.
31      */
32     GeneratedTransferObject getSuperType();
33
34     /**
35      * Returns List of Properties that are designated to define equality for Generated Transfer Object.
36      *
37      * @return List of Properties that are designated to define equality for Generated Transfer Object.
38      */
39     List<GeneratedProperty> getEqualsIdentifiers();
40
41     /**
42      * Returns List of Properties that are designated to define identity for Generated Transfer Object.
43      *
44      * @return List of Properties that are designated to define identity for Generated Transfer Object.
45      */
46     List<GeneratedProperty> getHashCodeIdentifiers();
47
48     /**
49      * Returns List of Properties that will be members of toString definition for Generated Transfer Object.
50      *
51      * @return List of Properties that will be members of toString definition for Generated Transfer Object.
52      */
53     List<GeneratedProperty> getToStringIdentifiers();
54
55     boolean isTypedef();
56
57     /**
58      * Returns Base type of Java representation of YANG typedef if set, otherwise it returns null.
59      *
60      * @return Base type of Java representation of YANG typedef if set, otherwise it returns null
61      */
62     TypeDefinition<?> getBaseType();
63
64     /**
65      * Return boolean value which describe whether Generated Transfer Object was created (or not) from union YANG type.
66      *
67      * @return true value if Generated Transfer Object was created from union YANG type.
68      */
69     boolean isUnionType();
70
71     boolean isUnionTypeBuilder();
72
73     Restrictions getRestrictions();
74 }