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