2 * Copyright (c) 2016 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
9 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.formatDataForJavaDoc
10 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.fieldName
11 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.propsAsArgs
12 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.propsAsList
13 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.valueForBits
14 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.wrapToDocumentation
15 @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject
16 @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType
17 @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty
18 @import org.opendaylight.yangtools.yang.model.api.`type`.BitsTypeDefinition
20 @(genType: GeneratedType, genTo: GeneratedTransferObject, importedNames: Map[String, String], implementsList: String,
21 innerClasses: String, enumerations: String, constants: String, constructors: String, lengthRangeChecker: String,
22 fields: String, allProperties: List[GeneratedProperty], propertyMethod: String, isInnerClass: Boolean)
24 @{wrapToDocumentation(formatDataForJavaDoc(genType))}
25 @annotationDeclaration()
26 @generateClassDeclaration(isInnerClass)
28 @if(genTo.getSUID != null) {private static final long serialVersionUID = @{genTo.getSUID.getValue}L;}
41 @if(genTo.isTypedef && genTo.getBaseType.isInstanceOf[BitsTypeDefinition]) {
42 public boolean[] getValue() {
44 @{valueForBits(genTo.getProperties)}
53 @generateToString(genTo.getToStringIdentifiers)
57 @annotationDeclaration() = {
58 @if(genTo.getAnnotations != null) {
59 @for(annotation <- genTo.getAnnotations) {
60 @@@{annotation.getName}
65 @generateClassDeclaration(isInnerCLass: Boolean) = {
66 public @{if (isInnerCLass) "static final "
67 else if(genType.isAbstract) "abstract "
70 class @{genType.getName}
71 @if(genTo.getSuperType != null) { extends @{importedNames.get("superType")}}
72 @if(!implementsList.isEmpty) { implements @{implementsList}}
75 @generateHashCode() = {
76 @if(!genTo.getHashCodeIdentifiers.isEmpty) {
78 public int hashCode() {
81 @for(property <- genTo.getHashCodeIdentifiers) {
82 @if(property.getReturnType.getName.contains("[")) {
83 result = prime * result + @{importedNames.get("arrays")}.hashCode(@{fieldName(property)});
85 result = prime * result + @{importedNames.get("objects")}.hashCode(@{fieldName(property)});
94 @if(!genTo.getEqualsIdentifiers.isEmpty) {
96 public boolean equals(java.lang.Object obj) {
103 if (getClass() != obj.getClass()) {
106 @{genTo.getName} other = (@{genTo.getName}) obj;
107 @for(property <- genTo.getEqualsIdentifiers) {
108 @if(property.getReturnType.getName.contains("[")) {
109 if (!@{importedNames.get("arrays")}.equals(@{fieldName(property)}, other.@{fieldName(property)}))
111 if (!@{importedNames.get("objects")}.equals(@{fieldName(property)}, other.@{fieldName(property)}))
122 @generateToString(properties: List[GeneratedProperty]) = {
123 @if(properties != null) {
125 public @{importedNames.get("string")} toString() {
126 @{importedNames.get("stringBuilder")} builder = new @{importedNames.get("stringBuilder")} (@{importedNames.get("type")}.class.getSimpleName()).append(" [");
127 boolean first = true;
129 @for(property <- properties) {
130 if (@{fieldName(property)} != null) {
134 builder.append(", ");
136 builder.append("@{fieldName(property)}=");
137 @if(property.getReturnType.getName.contains("[")) {
138 builder.append(@{importedNames.get("arrays")}.toString(@{fieldName(property)}));
140 builder.append(@{fieldName(property)});
144 return builder.append(']').toString();
149 @defaultInstance() = {
150 @if(genTo.isTypedef && !allProperties.isEmpty && !genTo.isUnionType) {
151 @if(!"org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier".equals(allProperties.get(0).getReturnType.getFullyQualifiedName)) {
152 public static @{genTo.getName} getDefaultInstance(String defaultValue) {
153 @if(allProperties.size > 1) {
154 @{importedNames.get("list")}<@{importedNames.get("string")}> properties = @{importedNames.get("lists")}.newArrayList(@{propsAsArgs(allProperties)});
155 if (!properties.contains(defaultValue)) {
156 throw new @{importedNames.get("illegalArgumentException")}("invalid default parameter");
159 return new @{genTo.getName}(@propsAsList(allProperties, importedNames.get("boolean")));
161 @if("byte[]".equals(allProperties.get(0).getReturnType.getName)) {
162 @{importedNames.get("baseEncoding")} baseEncoding = @{importedNames.get("baseEncoding")}.base64();
163 return new @{genTo.getName}(baseEncoding.decode(defaultValue));
165 @allProperties.get(0).getReturnType.getFullyQualifiedName match {
166 case "java.lang.String" => {
167 return new @{genTo.getName}(defaultValue);
169 case "java.lang.Boolean" => {
170 return new @{genTo.getName}(@{importedNames.get("boolean")}.valueOf(defaultValue));
172 case "java.lang.Byte" => {
173 return new @{genTo.getName}(@{importedNames.get("byte")}.valueOf(defaultValue));
175 case "java.lang.Short" => {
176 return new @{genTo.getName}(@{importedNames.get("short")}.valueOf(defaultValue));
178 case "java.lang.Integer" => {
179 return new @{genTo.getName}(@{importedNames.get("integer")}.valueOf(defaultValue));
181 case "java.lang.Long" => {
182 return new @{genTo.getName}(@{importedNames.get("long")}.valueOf(defaultValue));
185 return new @{genTo.getName}(new @{allProperties.get(0).getReturnType.getName}(defaultValue));