@* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html *@ @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.formatDataForJavaDoc @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.fieldName @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.propsAsArgs @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.propsAsList @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.valueForBits @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.wrapToDocumentation @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty @import org.opendaylight.yangtools.yang.model.api.`type`.BitsTypeDefinition @(genType: GeneratedType, genTo: GeneratedTransferObject, importedNames: Map[String, String], implementsList: String, innerClasses: String, enumerations: String, constants: String, constructors: String, lengthRangeChecker: String, fields: String, allProperties: List[GeneratedProperty], propertyMethod: String, isInnerClass: Boolean) @if(genTo != null) { @{wrapToDocumentation(formatDataForJavaDoc(genType))} @annotationDeclaration() @generateClassDeclaration(isInnerClass) { @if(genTo.getSUID != null) {private static final long serialVersionUID = @{genTo.getSUID.getValue}L;} @{innerClasses} @{enumerations} @{constants} @{fields} @{lengthRangeChecker} @{constructors} @defaultInstance() @{propertyMethod} @if(genTo.isTypedef && genTo.getBaseType.isInstanceOf[BitsTypeDefinition]) { public boolean[] getValue() { return new boolean[]{ @{valueForBits(genTo.getProperties)} }; } } @generateHashCode() @generateEquals() @generateToString(genTo.getToStringIdentifiers) } } @annotationDeclaration() = { @if(genTo.getAnnotations != null) { @for(annotation <- genTo.getAnnotations) { @@@{annotation.getName} } } } @generateClassDeclaration(isInnerCLass: Boolean) = { public @{if (isInnerCLass) "static final " else if(genType.isAbstract) "abstract " else " " } class @{genType.getName} @if(genTo.getSuperType != null) { extends @{importedNames.get("superType")}} @if(!implementsList.isEmpty) { implements @{implementsList}} } @generateHashCode() = { @if(!genTo.getHashCodeIdentifiers.isEmpty) { @@Override public int hashCode() { final int prime = 31; int result = 1; @for(property <- genTo.getHashCodeIdentifiers) { @if(property.getReturnType.getName.contains("[")) { result = prime * result + @{importedNames.get("arrays")}.hashCode(@{fieldName(property)}); } else { result = prime * result + @{importedNames.get("objects")}.hashCode(@{fieldName(property)}); } } return result; } } } @generateEquals() = { @if(!genTo.getEqualsIdentifiers.isEmpty) { @@Override public boolean equals(java.lang.Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } @{genTo.getName} other = (@{genTo.getName}) obj; @for(property <- genTo.getEqualsIdentifiers) { @if(property.getReturnType.getName.contains("[")) { if (!@{importedNames.get("arrays")}.equals(@{fieldName(property)}, other.@{fieldName(property)})) } else { if (!@{importedNames.get("objects")}.equals(@{fieldName(property)}, other.@{fieldName(property)})) } { return false; } } return true; } } } @generateToString(properties: List[GeneratedProperty]) = { @if(properties != null) { @@Override public @{importedNames.get("string")} toString() { @{importedNames.get("stringBuilder")} builder = new @{importedNames.get("stringBuilder")} (@{importedNames.get("type")}.class.getSimpleName()).append(" ["); boolean first = true; @for(property <- properties) { if (@{fieldName(property)} != null) { if (first) { first = false; } else { builder.append(", "); } builder.append("@{fieldName(property)}="); @if(property.getReturnType.getName.contains("[")) { builder.append(@{importedNames.get("arrays")}.toString(@{fieldName(property)})); } else { builder.append(@{fieldName(property)}); } } } return builder.append(']').toString(); } } } @defaultInstance() = { @if(genTo.isTypedef && !allProperties.isEmpty && !genTo.isUnionType) { @if(!"org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier".equals(allProperties.get(0).getReturnType.getFullyQualifiedName)) { public static @{genTo.getName} getDefaultInstance(String defaultValue) { @if(allProperties.size > 1) { @{importedNames.get("list")}<@{importedNames.get("string")}> properties = @{importedNames.get("lists")}.newArrayList(@{propsAsArgs(allProperties)}); if (!properties.contains(defaultValue)) { throw new @{importedNames.get("illegalArgumentException")}("invalid default parameter"); } int i = 0; return new @{genTo.getName}(@propsAsList(allProperties, importedNames.get("boolean"))); } else { @if("byte[]".equals(allProperties.get(0).getReturnType.getName)) { @{importedNames.get("baseEncoding")} baseEncoding = @{importedNames.get("baseEncoding")}.base64(); return new @{genTo.getName}(baseEncoding.decode(defaultValue)); } else { @allProperties.get(0).getReturnType.getFullyQualifiedName match { case "java.lang.String" => { return new @{genTo.getName}(defaultValue); } case "java.lang.Boolean" => { return new @{genTo.getName}(@{importedNames.get("boolean")}.valueOf(defaultValue)); } case "java.lang.Byte" => { return new @{genTo.getName}(@{importedNames.get("byte")}.valueOf(defaultValue)); } case "java.lang.Short" => { return new @{genTo.getName}(@{importedNames.get("short")}.valueOf(defaultValue)); } case "java.lang.Integer" => { return new @{genTo.getName}(@{importedNames.get("integer")}.valueOf(defaultValue)); } case "java.lang.Long" => { return new @{genTo.getName}(@{importedNames.get("long")}.valueOf(defaultValue)); } case _ => { return new @{genTo.getName}(new @{allProperties.get(0).getReturnType.getName}(defaultValue)); } } } } } } } }