Added NotificationListener interfaces
[yangtools.git] / code-generator / binding-model-api / src / main / java / org / opendaylight / yangtools / sal / binding / model / api / type / builder / GeneratedTOBuilder.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.sal.binding.model.api.type.builder;\r
9 \r
10 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
11 \r
12 /**\r
13  * Generated Transfer Object Builder is interface that contains methods to build\r
14  * and instantiate Generated Transfer Object definition.\r
15  * \r
16  * @see GeneratedTransferObject\r
17  */\r
18 public interface GeneratedTOBuilder extends GeneratedTypeBuilderBase<GeneratedTOBuilder> {\r
19 \r
20     /**\r
21      * Add Generated Transfer Object from which will be extended current\r
22      * Generated Transfer Object. <br>\r
23      * By definition Java does not allow multiple inheritance, hence if there is\r
24      * already definition of Generated Transfer Object the extending object will\r
25      * be overwritten by lastly added Generated Transfer Object. <br>\r
26      * If Generated Transfer Object is <code>null</code> the method SHOULD throw\r
27      * {@link IllegalArgumentException}\r
28      * \r
29      * @param genTransObj\r
30      *            Generated Transfer Object\r
31      * @return This instance of builder\r
32      */\r
33     public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj);\r
34 \r
35     /**\r
36      * Add Property that will be part of <code>equals</code> definition. <br>\r
37      * If Generated Property Builder is <code>null</code> the method SHOULD\r
38      * throw {@link IllegalArgumentException}\r
39      * \r
40      * @param property\r
41      *            Generated Property Builder\r
42      * @return This instance of builder\r
43      */\r
44     public GeneratedTOBuilder addEqualsIdentity(final GeneratedPropertyBuilder property);\r
45 \r
46     /**\r
47      * Add Property that will be part of <code>hashCode</code> definition. <br>\r
48      * If Generated Property Builder is <code>null</code> the method SHOULD\r
49      * throw {@link IllegalArgumentException}\r
50      * \r
51      * @param property\r
52      *            Generated Property Builder\r
53      * @return This instance of builder\r
54      */\r
55     public GeneratedTOBuilder addHashIdentity(final GeneratedPropertyBuilder property);\r
56 \r
57     /**\r
58      * Add Property that will be part of <code>toString</code> definition. <br>\r
59      * If Generated Property Builder is <code>null</code> the method SHOULD\r
60      * throw {@link IllegalArgumentException}\r
61      * \r
62      * @param property\r
63      *            Generated Property Builder\r
64      * @return This instance of builder\r
65      */\r
66     public GeneratedTOBuilder addToStringProperty(final GeneratedPropertyBuilder property);\r
67 \r
68     public GeneratedTransferObject toInstance();\r
69 \r
70     /**\r
71      * Set original YANG type for GeneratedTOBuilder. It is YANG type from which\r
72      * is this transport object created.\r
73      * \r
74      * @param yangType\r
75      *            YangType enum value of original YANG type\r
76      */\r
77     public void setIsUnion(boolean isUnion);\r
78 }\r