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;
10 import java.util.List;
11 import java.util.Optional;
12 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
15 * Generated Transfer Object extends {@link GeneratedType} and is designed to represent Java Class. The Generated
16 * Transfer Object contains declarations of member fields stored in List of Properties. The Generated Transfer Object
17 * can be extended by exactly ONE Generated Transfer Object as Java does not allow multiple inheritance. For retrieval
18 * of implementing Generated Types use {@link #getImplements()} method.<br>
19 * Every transfer object SHOULD contain equals, hashCode and toString definitions. For this purpose retrieve definitions
20 * through {@link #getEqualsIdentifiers ()}, {@link #getHashCodeIdentifiers()} and
21 * {@link #getToStringIdentifiers()}.
23 public interface GeneratedTransferObject extends GeneratedType {
25 GeneratedProperty getSUID();
28 * Returns the Generated Transfer Object from which this GTO is derived, or null if this GTO is not derived
29 * from a GTO -- e.g. it is either an union or it is derived from a concrete type.
31 * @return Generated Transfer Object or <code>null</code> if this GTO is not derived from another GTO.
33 GeneratedTransferObject getSuperType();
36 * Returns List of Properties that are designated to define equality for Generated Transfer Object.
38 * @return List of Properties that are designated to define equality for Generated Transfer Object.
40 List<GeneratedProperty> getEqualsIdentifiers();
43 * Returns List of Properties that are designated to define identity for Generated Transfer Object.
45 * @return List of Properties that are designated to define identity for Generated Transfer Object.
47 List<GeneratedProperty> getHashCodeIdentifiers();
50 * Returns List of Properties that will be members of toString definition for Generated Transfer Object.
52 * @return List of Properties that will be members of toString definition for Generated Transfer Object.
54 List<GeneratedProperty> getToStringIdentifiers();
59 * Returns Base type of Java representation of YANG typedef if set, otherwise it returns null.
61 * @return Base type of Java representation of YANG typedef if set, otherwise it returns null
63 TypeDefinition<?> getBaseType();
66 * Return boolean value which describe whether Generated Transfer Object was created (or not) from union YANG type.
68 * @return true value if Generated Transfer Object was created from union YANG type.
70 boolean isUnionType();
72 Restrictions getRestrictions();
74 default Optional<? extends GeneratedProperty> findProperty(final String name) {
75 final Optional<GeneratedProperty> optProp = getProperties().stream()
76 .filter(prop -> prop.getName().equals(name)).findFirst();
77 if (optProp.isPresent()) {
81 final GeneratedTransferObject parent = getSuperType();
82 return parent != null ? parent.findProperty(name) : Optional.empty();