Bug 6859 #1 Binding generator v1 refactoring
[mdsal.git] / binding / mdsal-binding-generator-api / src / main / java / org / opendaylight / mdsal / binding / model / api / type / builder / GeneratedTOBuilder.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.type.builder;
9
10 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
11 import org.opendaylight.mdsal.binding.model.api.Restrictions;
12 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
13
14 /**
15  * Generated Transfer Object Builder is interface that contains methods to build
16  * and instantiate Generated Transfer Object definition.
17  *
18  * @see GeneratedTransferObject
19  */
20 public interface GeneratedTOBuilder extends GeneratedTypeBuilderBase<GeneratedTOBuilder> {
21
22     /**
23      * Add Generated Transfer Object from which will be extended current
24      * Generated Transfer Object. <br>
25      * By definition Java does not allow multiple inheritance, hence if there is
26      * already definition of Generated Transfer Object the extending object will
27      * be overwritten by lastly added Generated Transfer Object. <br>
28      * If Generated Transfer Object is <code>null</code> the method SHOULD throw
29      * {@link IllegalArgumentException}
30      *
31      * @param genTransObj
32      *            Generated Transfer Object
33      * @return This instance of builder
34      */
35     GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj);
36
37     /**
38      * Add Property that will be part of <code>equals</code> definition. <br>
39      * If Generated Property Builder is <code>null</code> the method SHOULD
40      * throw {@link IllegalArgumentException}
41      *
42      * @param property
43      *            Generated Property Builder
44      * @return This instance of builder
45      */
46     GeneratedTOBuilder addEqualsIdentity(final GeneratedPropertyBuilder property);
47
48     /**
49      * Add Property that will be part of <code>hashCode</code> definition. <br>
50      * If Generated Property Builder is <code>null</code> the method SHOULD
51      * throw {@link IllegalArgumentException}
52      *
53      * @param property
54      *            Generated Property Builder
55      * @return This instance of builder
56      */
57     GeneratedTOBuilder addHashIdentity(final GeneratedPropertyBuilder property);
58
59     /**
60      * Add Property that will be part of <code>toString</code> definition. <br>
61      * If Generated Property Builder is <code>null</code> the method SHOULD
62      * throw {@link IllegalArgumentException}
63      *
64      * @param property
65      *            Generated Property Builder
66      * @return This instance of builder
67      */
68     GeneratedTOBuilder addToStringProperty(final GeneratedPropertyBuilder property);
69
70     void setRestrictions(Restrictions restrictions);
71
72     /**
73      * Returns instance of <code>GeneratedTransferObject</code> which data are
74      * build from the data of this builder
75      *
76      * @return generated transfer object instance
77      */
78     GeneratedTransferObject toInstance();
79
80     void setTypedef(boolean isTypedef);
81
82     /**
83      * Sets the base type for Java representation of YANG typedef
84      *
85      * @param typeDef
86      *           Type Definition
87      */
88     void setBaseType(TypeDefinition<?> typeDef);
89
90     /**
91      *
92      * @param isUnion
93      */
94     void setIsUnion(boolean isUnion);
95
96     void setIsUnionBuilder(boolean isUnionTypeBuilder);
97
98     void setSUID(GeneratedPropertyBuilder suid);
99 }