2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.mdsal.binding.model.api.type.builder;
10 import org.eclipse.jdt.annotation.NonNull;
11 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
12 import org.opendaylight.mdsal.binding.model.api.Restrictions;
13 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
16 * Generated Transfer Object Builder is interface that contains methods to build
17 * and instantiate Generated Transfer Object definition.
19 * @see GeneratedTransferObject
21 public interface GeneratedTOBuilder extends GeneratedTypeBuilderBase<GeneratedTOBuilder> {
24 * Add Generated Transfer Object from which will be extended current Generated Transfer Object.<br>
25 * By definition Java does not allow multiple inheritance, hence if there is already a definition
26 * of an Generated Transfer Object the extending object will be overwritten by lastly added Generated Transfer
28 * If Generated Transfer Object is <code>null</code> the method SHOULD throw {@link IllegalArgumentException}
30 * @param genTransObj Generated Transfer Object
31 * @return This instance of builder
33 GeneratedTOBuilder setExtendsType(GeneratedTransferObject genTransObj);
36 * Add Property that will be part of <code>equals</code> definition. <br>
37 * If Generated Property Builder is <code>null</code> the method SHOULD
38 * throw {@link IllegalArgumentException}
40 * @param property Generated Property Builder
41 * @return This instance of builder
43 GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property);
46 * Add Property that will be part of <code>hashCode</code> definition. <br>
47 * If Generated Property Builder is <code>null</code> the method SHOULD
48 * throw {@link IllegalArgumentException}
50 * @param property Generated Property Builder
51 * @return This instance of builder
53 GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property);
56 * Add Property that will be part of <code>toString</code> definition. <br>
57 * If Generated Property Builder is <code>null</code> the method SHOULD
58 * throw {@link IllegalArgumentException}
60 * @param property Generated Property Builder
61 * @return This instance of builder
63 GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property);
65 void setRestrictions(Restrictions restrictions);
68 * Returns instance of <code>GeneratedTransferObject</code> which data are build from the data of this builder.
70 * @return generated transfer object instance
72 @NonNull GeneratedTransferObject build();
74 void setTypedef(boolean isTypedef);
77 * Sets the base type for Java representation of YANG typedef.
79 * @param typeDef Type Definition
81 void setBaseType(TypeDefinition<?> typeDef);
86 * Sets the union flag.
88 * @param isUnion true if the result is a union type.
90 void setIsUnion(boolean isUnion);
92 void setSUID(GeneratedPropertyBuilder suid);