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