X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjava%2Fapi%2Fgenerator%2FBuilderTemplate.xtend;h=14b77a06fdef05b464a54ae4310ac8b26cbc51bc;hb=c7da6941c5e7f46e189cc85a8b4eb66ba8551f70;hp=698d0b0fafaa1cc3e8e24d320e70c6965afa1248;hpb=e792b360ebb151a974f17048a1ee9c6f6611841f;p=mdsal.git diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend index 698d0b0faf..14b77a06fd 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend @@ -19,7 +19,7 @@ import java.util.HashSet import java.util.List import java.util.Map import java.util.Set -import java.util.regex.Pattern +import org.opendaylight.mdsal.binding.model.api.AnnotationType import org.opendaylight.mdsal.binding.model.api.GeneratedProperty import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject import org.opendaylight.mdsal.binding.model.api.GeneratedType @@ -31,7 +31,6 @@ import org.opendaylight.mdsal.binding.model.util.Types import org.opendaylight.mdsal.binding.spec.naming.BindingMapping import org.opendaylight.yangtools.concepts.Builder import org.opendaylight.yangtools.yang.binding.AugmentationHolder -import org.opendaylight.yangtools.yang.binding.CodeHelpers import org.opendaylight.yangtools.yang.binding.DataObject /** @@ -66,6 +65,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { */ override body() ''' «wrapToDocumentation(formatDataForJavaDoc(targetType))» + «targetType.annotations.generateDeprecatedAnnotation» public class «type.name» implements «Builder.importedName»<«targetType.importedName»> { «generateFields(false)» @@ -90,7 +90,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { «generateSetters» - @«Override.importedName» + @«OVERRIDE.importedName» public «targetType.name» build() { return new «type.enclosedTypes.get(0).importedName»(this); } @@ -99,6 +99,14 @@ class BuilderTemplate extends AbstractBuilderTemplate { } ''' + override generateDeprecatedAnnotation(AnnotationType ann) { + val forRemoval = ann.getParameter("forRemoval") + if (forRemoval !== null) { + return "@" + DEPRECATED.importedName + "(forRemoval = " + forRemoval.value + ")" + } + return "@" + SUPPRESS_WARNINGS.importedName + "(\"deprecation\")" + } + /** * Generate default constructor and constructor for every implemented interface from uses statements. */ @@ -155,7 +163,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { «FOR impl : targetType.getAllIfcs» «generateIfCheck(impl, done)» «ENDFOR» - «CodeHelpers.importedName».validValue(isValidArg, arg, "«targetType.getAllIfcs.toListOfNames»"); + «CODEHELPERS.importedName».validValue(isValidArg, arg, "«targetType.getAllIfcs.toListOfNames»"); } «ENDIF» «ENDIF» @@ -246,12 +254,13 @@ class BuilderTemplate extends AbstractBuilderTemplate { «IF c.getName.startsWith(TypeConstants.PATTERN_CONSTANT_NAME)» «val cValue = c.value as Map» «val String fieldSuffix = c.getName.substring(TypeConstants.PATTERN_CONSTANT_NAME.length)» + «val jurPatternRef = JUR_PATTERN.importedName» «IF cValue.size == 1» «val firstEntry = cValue.entrySet.iterator.next» - private static final «Pattern.importedName» «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «Pattern.importedName».compile("«firstEntry.key.escapeJava»"); + private static final «jurPatternRef» «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «jurPatternRef».compile("«firstEntry.key.escapeJava»"); private static final String «Constants.MEMBER_REGEX_LIST»«fieldSuffix» = "«firstEntry.value.escapeJava»"; «ELSE» - private static final «Pattern.importedName»[] «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «CodeHelpers.importedName».compilePatterns(«ImmutableList.importedName».of( + private static final «jurPatternRef»[] «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «CODEHELPERS.importedName».compilePatterns(«ImmutableList.importedName».of( «FOR v : cValue.keySet SEPARATOR ", "»"«v.escapeJava»"«ENDFOR»)); private static final String[] «Constants.MEMBER_REGEX_LIST»«fieldSuffix» = { « FOR v : cValue.values SEPARATOR ", "»"«v.escapeJava»"«ENDFOR» }; @@ -262,6 +271,16 @@ class BuilderTemplate extends AbstractBuilderTemplate { «ENDFOR» ''' + def private generateSetter(GeneratedProperty field) { + val returnType = field.returnType + if (returnType instanceof ParameterizedType) { + if (Types.isListType(returnType)) { + return generateListSetter(field, returnType.actualTypeArguments.get(0)) + } + } + return generateSimpleSetter(field, returnType) + } + def private generateListSetter(GeneratedProperty field, Type actualType) ''' «val restrictions = restrictionsForSetter(actualType)» «IF restrictions !== null» @@ -275,13 +294,13 @@ class BuilderTemplate extends AbstractBuilderTemplate { } } «ENDIF» - this.«field.fieldName.toString» = values; + this.«field.fieldName» = values; return this; } ''' - def private generateSetter(GeneratedProperty field, Type actualType) ''' + def private generateSimpleSetter(GeneratedProperty field, Type actualType) ''' «val restrictions = restrictionsForSetter(actualType)» «IF restrictions !== null» @@ -295,7 +314,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { «checkArgument(field, restrictions, actualType, "value")» } «ENDIF» - this.«field.fieldName.toString» = value; + this.«field.fieldName» = value; return this; } «val uintType = UINT_TYPES.get(field.returnType)» @@ -305,19 +324,16 @@ class BuilderTemplate extends AbstractBuilderTemplate { * Utility migration setter. * * @param value field value in legacy type - * @deprecated Use {#link «setterName»(«field.returnType.importedName»)} instead. + * @return this builder + * @deprecated Use {#link «setterName»(«field.returnType.importedJavadocName»)} instead. */ @Deprecated(forRemoval = true) public «type.getName» «setterName»(final «uintType.importedName» value) { - return «setterName»(«CodeHelpers.importedName».compatUint(value)); + return «setterName»(«CODEHELPERS.importedName».compatUint(value)); } «ENDIF» ''' - private def Type getActualType(ParameterizedType ptype) { - return ptype.getActualTypeArguments.get(0) - } - /** * Template method which generates setter methods * @@ -331,16 +347,13 @@ class BuilderTemplate extends AbstractBuilderTemplate { } «ENDIF» «FOR property : properties» - «IF property.returnType instanceof ParameterizedType && Types.isListType(property.returnType)» - «generateListSetter(property, getActualType(property.returnType as ParameterizedType))» - «ELSE» - «generateSetter(property, property.returnType)» - «ENDIF» + «generateSetter(property)» «ENDFOR» «IF augmentType !== null» «val augmentTypeRef = augmentType.importedName» - public «type.name» add«AUGMENTATION_FIELD_UPPER»(«Class.importedName» augmentationType, «augmentTypeRef» augmentationValue) { + «val jlClassRef = CLASS.importedName» + public «type.name» add«AUGMENTATION_FIELD_UPPER»(«jlClassRef» augmentationType, «augmentTypeRef» augmentationValue) { if (augmentationValue == null) { return remove«AUGMENTATION_FIELD_UPPER»(augmentationType); } @@ -353,7 +366,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { return this; } - public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«Class.importedName» augmentationType) { + public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«jlClassRef» augmentationType) { if (this.«AUGMENTATION_FIELD» instanceof «HashMap.importedName») { this.«AUGMENTATION_FIELD».remove(augmentationType); } @@ -415,9 +428,9 @@ class BuilderTemplate extends AbstractBuilderTemplate { } private def generateAugmentation() ''' - @«SuppressWarnings.importedName»({ "unchecked", "checkstyle:methodTypeParameterName"}) - public E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«Class.importedName» augmentationType) { - return (E$$) «AUGMENTATION_FIELD».get(«CodeHelpers.importedName».nonNullValue(augmentationType, "augmentationType")); + @«SUPPRESS_WARNINGS.importedName»({ "unchecked", "checkstyle:methodTypeParameterName"}) + public E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«CLASS.importedName» augmentationType) { + return (E$$) «AUGMENTATION_FIELD».get(«CODEHELPERS.importedName».nonNullValue(augmentationType, "augmentationType")); } ''' @@ -436,7 +449,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { return ''' if (base instanceof «augmentationHolderRef») { @SuppressWarnings("unchecked") - «Map.importedName»<«Class.importedName», «augmentTypeRef»> aug =((«augmentationHolderRef»<«typeRef»>) base).augmentations(); + «JU_MAP.importedName»<«CLASS.importedName», «augmentTypeRef»> aug =((«augmentationHolderRef»<«typeRef»>) base).augmentations(); if (!aug.isEmpty()) { this.«AUGMENTATION_FIELD» = new «hashMapRef»<>(aug); }