264447ab0ad927b8f9891684c736daf9db9bbd59
[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
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 public interface GeneratedTransferObject extends GeneratedType {
26
27     GeneratedProperty getSUID();
28
29     /**
30      * Returns the Generated Transfer Object from which this GTO is derived, or
31      * null if this GTO is not derived from a GTO -- e.g. it is either an union
32      * or it is derived from a concrete type.
33      *
34      * @return Generated Transfer Object or <code>null</code> if this GTO is
35      *         not derived from another GTO.
36      */
37     GeneratedTransferObject getSuperType();
38
39     /**
40      * Returns List of Properties that are designated to define equality for
41      * Generated Transfer Object.
42      *
43      * @return List of Properties that are designated to define equality for
44      *         Generated Transfer Object.
45      */
46     List<GeneratedProperty> getEqualsIdentifiers();
47
48     /**
49      * Returns List of Properties that are designated to define identity for
50      * Generated Transfer Object.
51      *
52      * @return List of Properties that are designated to define identity for
53      *         Generated Transfer Object.
54      */
55     List<GeneratedProperty> getHashCodeIdentifiers();
56
57     /**
58      * Returns List of Properties that will be members of toString definition
59      * for Generated Transfer Object.
60      *
61      * @return List of Properties that will be members of toString definition
62      *         for Generated Transfer Object.
63      */
64     List<GeneratedProperty> getToStringIdentifiers();
65
66     boolean isTypedef();
67
68     /**
69      * Returns Base type of Java representation of YANG typedef if set, otherwise it returns null
70      *
71      * @return Base type of Java representation of YANG typedef if set, otherwise it returns null
72      */
73     TypeDefinition<?> getBaseType();
74
75     /**
76      * Return boolean value which describe whether Generated Transfer Object
77      * was/wasn't created from union YANG type.
78      *
79      * @return true value if Generated Transfer Object was created from union
80      *         YANG type.
81      */
82     boolean isUnionType();
83
84     boolean isUnionTypeBuilder();
85
86     Restrictions getRestrictions();
87 }